A theme manager for linux, currently focusing on i3. Supports multiple different configuration files, and is fast and portable. Upstream now hosted at sr.ht. You can find ravenlib there as well, if you're looking to add to or build off of the core features.
I'm very happy to take pull requests and bug reports, but I'm migrating to sr.ht, and I would prefer it if you would put issues into the todo.sr.ht tracker and send patches/pull requests to the mailing list. There's a guide for submitting patches here. Issues and pull requests will still remain open, but sr.ht is preferred.
git clone https://git.sr.ht/~nicohman/raven && cd raven
cargo install --path . --force
The following packages are required for their relevant options:
Rofi is used in the default config and is recommended. You can also add a custom rofi theme with the
Sublime Text 3 :
raven help for a list of available commands:
raven nicohman <email@example.com> A theme manager and switcher for desktop linux USAGE: raven <SUBCOMMAND> FLAGS: -h, --help Prints help information -V, --version Prints version information SUBCOMMANDS: add Add option to current theme cycle Control cycle daemon delete Delete a theme edit Edit theme help Prints this message or the help of the given subcommand(s) info Print info about the theme being currently edited install Install a theme from ThemeHub repo load Load a complete theme manage Manage online themes menu Show theme menu modify Open the currently edited themes's option in $EDITOR new Create a new theme refresh Load last loaded theme rm Remove an option from edited theme
A main config file is placed in ~/.config/raven/config.json, which has the following options:
polybar: Array of strings, which decideds what bars are run with polybar. The size of the array should be the same as your monitor number monitors : The number of monitors currently in use menu_command: A command that, when raven menu is run, will be piped a list of theme names through STDIN and expects a theme name from STDOUT last: The last theme raven loaded editing: The theme you are currently editing host: The URL of the ravenserver host to use. By default, [https://demenses.net](https://demenses.net)
To configure a theme, start off by creating it with
raven new [theme]. You'll automatically start editing that theme. Run
raven add [option] [file] to add a specific option. This will copy the indicated file to raven's registry, and run/reload/copy it when the edited theme is loaded or refreshed. Run
raven rm [option] to remove an option from a theme. Available options are:
base_ files allow splitting the config from the cosmetics on the options with [base_] For example if you place an i3 config named base_i3 in ~/.config/raven, the contents of i3 for a theme will be appended to it instead of being run on their own. This allows you to have a central config for keyboard shortcuts, and have cosmetics only be stored in the theme.
The lemonbar option should be a shell script that runs lemonbar(s). They will automatically be killed just like polybars when the theme is changed or reloaded.
As many polybars as you have monitors will be started. The names of the bars themselves should be configured in
config.json. The default is ["main", "other"]. If you're sharing your themes with others, it is recommended that you leave the polybar monitor name blank, so that it automatically adapts to other monitor names.
With the cycle command you can control a daemon that will automatically cycle through all of your configured themes. You need to edit
~/.config/raven/time and place the number of seconds there should be between each cycle into that file in order to use it.
Plain text containing
sublt/<filename>.<extension> (which you must create on your theme folder) or the name of an already installed theme (e.g
Extensions: st_tmtheme (
.tmTheme), st_scs (
.sublime-color-scheme) and st_subltheme (