Raven

A theme manager for linux, currently focusing on i3. Supports multiple different configuration files, and is fast and portable.

Example

A gif showing raven working

Installation

All you technically require is cargo to be installed. You can install from crates.io by running cargo install raventhemer, or by building manually:

Run:

git clone https://github.com/nicohman/raven.git && cd raven

cargo build --release

sudo cp targets/release/raven /usr/bin/raven

The following packages are required for their relevant options:

You can also download a prebuilt binary from here

Usage

raven help for a list of available commands: Commands: help : show this screen load [theme] : load a complete theme new [theme] : create a new theme delete [theme] : delete a theme refresh : load last loaded theme edit [theme] : initialize editing [theme] import [archive] : import an exported theme export [theme] : export target theme to a tarball modify [option] : open the currently edited themes's [option] in $EDITOR add [option] [file] : add option to current theme cycle {{check|start|stop}} : manage theme cycling daemon rm [option] : remove option from current theme info : print info about the theme being currently edited menu : show theme menu

Configuration

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

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:

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. This also applies for a file named base_rc.xml, for openbox.

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.

Polybar bar names

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"]

Cycle themes

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 inbetween each cycle into that file in order to use it.