···11-# `qpm`, a Qutebrowser Profile Manager
11+# `qpm`: Qutebrowser Profile Manager
2233[](https://builds.sr.ht/~pvsr/qpm?)
4455-[Qutebrowser](https://github.com/qutebrowser/qutebrowser) is the best web
66-browser out there, but it doesn't handle huge numbers of open tabs very well
77-when it comes to memory usage and UI. I even found myself restarting qutebrowser
88-in order to free up memory pretty often. This is a tool I wrote to make it
99-easier to split my many, many open tabs between separate qutebrowser instances,
1010-all sharing the same config file.
55+[Qutebrowser](https://github.com/qutebrowser/qutebrowser) is by farthe best web
66+browser available, but if you're the type of person who accumulates a huge
77+number of open tabs, you'll quickly notice two deficiencies: the tab bar becomes
88+a lot less useful once it starts to overflow horizontally, and memory usage gets
99+a bit out of control if you leave the browser open 24/7; I even find myself
1010+restarting qutebrowser to free up memory from time to time on machines with less
1111+RAM. Unfortunately I've also noticed poor performance with multiple windows
1212+open<sup>[1](#footnote1)</sup>, which is annoying on its own and also means I
1313+can't split my tabs between multiple windows to improve the tab bar experience.
1414+So, inspired by qutebrowser's idea of sessions and Firefox's profile manager, I
1515+wrote `qpm` in order to better organize my mess of tabs by dividing them between
1616+separate qutebrowser instances, all sharing the same config file.
11171212-## Disclaimer
1313-This is alpha-quality software with no test suite and minimal manual testing.
1414-Even though it doesn't do anything too dangerous to the filesystem, there is
1515-always the risk that it will delete or mangle your data.
1818+<a name="footnote1">1</a>: For the record, based on other issues in the past I
1919+suspect this is a rendering bug in QtWebEngine, not qutebrowser itself.
16201721## Examples
1822···2529the active window, then run: `qpm from-session profile-name`
26302731I find it helpful to have a dedicated profile for each of my programming
2828-projects, so I keep a profile in the project dir, using
3232+projects, so I keep a profile in the project dir, using:
2933`qpm -P ~/dev/qpm new profile` and `qpm -P ~/dev/qpm launch profile`
30343535+Arguments that `qpm` doesn't recognize will be passed to qutebrowser, so you can
3636+do stuff like:
3737+`qpm launch python docs.python.org --target window --loglevel info`
3838+3939+## Disclaimer
4040+This is alpha-quality software. Even though it doesn't do anything particularly
4141+dangerous to the filesystem, there is always the risk that it will mangle your
4242+data.
4343+3144## Future work
3232-- Config file for default profile directory and more
3345- More shared config and data (configurable)
3446- Generated binaries and `.desktop` files
3547- The ability to delete profiles (need tests first!)
···3850- Source `autoconfig.yml` instead of `config.py`
3951- Customizable config sourcing for those who like to split their config into
4052 multiple files
5353+- Bundled config file optimized for single-site browsing
5454+- `qpm.conf` to configure the features above
41554256## Known limitations
4357- If your config relies on `config.configdir` to dynamically source other config
4444- files (I may be the only person who does this), `qpm`-created profiles may not
4545- result in exactly the same configuration as your main profile. There are
4646- plenty of workarounds, such as hardcoding your main config dir instead of
4747- using `config.configdir`.
5858+ files (I may be the only person who does this), those config files will not be
5959+ present in `qpm`-created profiles There are plenty of workarounds, such as
6060+ hardcoding your main config dir instead of using `config.configdir`.