Releases: pvsr/qbpm
2.2: configurable XDG application name
config.toml supports application_name for generated XDG desktop files
- defaults to
{profile_name} (qutebrowser profile), you may want just{profile_name} qbpm desktopcan be used to replace existing desktop files
There's no release 2.1 because I pushed that tag prematurely and decided to tag a new release.
2.0: config
Config file support
qbpm now reads configuration options from a config file at $XDG_CONFIG_HOME/qbpm/config.toml. The default config can be viewed with qbpm config default and installed with qbpm config default > "$(qbpm config path)".
Supported options
Several options support interpolation of variables like the profile name, which are documented in the default config file.
config_py_template
Controls the contents of config.py in new profiles.
symlink_autoconfig
Symlink qutebrowser's autoconfig.yml in new profiles.
profile_directory and qutebrowser_config_directory
Equivalent to --profile-dir and --qutebrowser-config-dir .
generate_desktop_file and desktop_file_directory
Whether to generate XDG desktop entries for the profiles and where to put them.
menu and menu_prompt
Equivalent to qbpm choose's --menu, and the text of prompt that is shown in most menus.
Other changes
- support for symlinking
autoconfig.ymlin addition to or instead of sourcingconfig.py qbpm new --overwrite: back up existing config files by moving to e.g.config.py.bakqbpm newnow supports--desktop-filein addition to--no-desktop-fileto support overriding the value from configcontrib/qbpm.desktop: addMimeTypeandKeywords, fix incorrect formatting ofCategories- macOS: fix detection of qutebrowser binary in
/Applications - tests for config, which means more tests for most parts of the codebase
And last but not least, the --help text is slightly wider to avoid awkward line breaks. Before:
Usage: qbpm new [OPTIONS] PROFILE_NAME [HOME_PAGE]
Create a new profile.
Options:
-C, --qutebrowser-config-dir DIRECTORY
Location of the qutebrowser config to
inherit from.
-l, --launch Launch the profile.
-f, --foreground If --launch is set, run qutebrowser in the
foreground.
--no-desktop-file Do not generate an XDG desktop entry for the
profile.
--overwrite Replace the current profile configuration if
it exists.
-h, --help Show this message and exit.
After:
Usage: qbpm new [OPTIONS] PROFILE_NAME [HOME_PAGE]
Create a new profile.
Options:
-C, --qutebrowser-config-dir DIRECTORY
Location of the qutebrowser config to source.
-l, --launch Launch the profile.
-f, --foreground If --launch is set, run qutebrowser in the foreground.
--desktop-file / --no-desktop-file
Generate an XDG desktop entry for the profile.
--overwrite Replace the current profile configuration if it exists.
-h, --help Show this message and exit.
Much better, right?
Full Changelog: 1.0...2.0
qbpm v1.0
1.0!
Over the last three and a half years I've been going back and forth on whether I should implement a config system and/or icon support before officially releasing qbpm 1.0. In the meantime though there have been a lot of smaller improvements to qbpm, particularly in error handling, documentation, and testing, so I decided to finally put an end to the scope creep and cut a 1.0 release without any headline features. Instead this should considered a long-overdue polish and stabilization release, with the new stuff coming in future releases, hopefully in the not-too-distant future!
Highlights
qbpm is on PyPI now, so running qbpm can be as simple as uvx qbpm!
Features
qbpm edit PROFILE_NAME: open the profile'sconfig.pyin your default editor ($VISUAL/$EDITOR)new/from-session: add-C/--qutebrowser-config-dirto source config files from arbitrary locationschoose: built in support for many more menus- notably it's now possible to use
fzf - check
$DISPLAYand$WAYLAND_DISPLAYto decide which menu to use by default
- notably it's now possible to use
choose: include aqutebrowserentry to launch qutebrowser without any profiles
Improvements
new/from-session: check for qutebrowser config in more locations (improves macOS support)- generated
.desktopfiles more closely match qutebrowser's - improve shell completions for fish
- add generated shell completions for bash and zsh
Internal
- the codebase is almost entirely statically typed
- more tests, especially for
choose - adopt pyproject.toml
- automatically publish releases to PyPI using gh-action-pypi-publish
- switch to click for command line parsing
- replace pyxdg with xdg-base-dirs and custom
.desktopfile generation
Other
- wrote a man page
- qbpm might work on windows now, but I can't test for myself. Bug reports are welcome if you try it out and run into problems
qbpm chooseprobably won't be able to find a menu though
- better handling of edge cases, errors, and bad inputs in general
See the changelog for more.
Roadmap
v2.0
Support for a config file (~/.config/qbpm/config.toml) to configure the template used to generate config.py, default menu for choose, and other settings.
v3.0
Support downloading website favicons to use as application icons and in qbpm choose (for menus that support rofi's extended dmenu spec).
v1.0-rc3
Mostly refactors.
Changelog:
- breaking: stop sourcing files from
~/.config/qutebrowser/conf.d/- this was undocumented, nonstandard, and didn't work as well as it could
- switch to
pyproject.toml - hopefully use the right qutebrowser dirs on Windows
choose: addqutebrowsermenu item for the main qutebrowser profile- added
-Cargument to support referencing qutebrowser configs other than the one in ~/.config - added
click-generated completions for bash and zsh - added option support to fish completions
- removed
--createfromqbpm launch - make generated
.desktopfiles match qutebrowser's more closely
Full Changelog: 1.0-rc2...1.0-rc3
v1.0-rc2
- moved argument handling to click
qbpm launch's -n/--new renamed to -c/--create- choose: try fzf if no graphical launchers are available
Full Changelog: 1.0-rc1...1.0-rc2
v1.0-rc1
Full Changelog: 0.6...1.0-rc1