Raven is a rust-based theme manager for linux desktops. It works by defining multiple different 'options', like a polybar configuration, or a wallpaper, and then loads them into sequence when asked to. Even if you're not using a full-on DE, and instead opting for the more minimal WM like i3 or bspwm, you can still get a coherent theme that affects pretty much everything you do. There's a complete list of options available in the README of raven.

#raven

#Description
#Sections

Raven has a few different moving parts.

  • Ravenserver is an online server that people can upload themes to using the command-line tool and later download them. The main instance is hosted here, so go check it out! More themes are always appreciated.

  • Raven is the command-line tool that you use to manage and load the themes, but it is just an interface to

  • Ravenlib, which handles all of the heavy-lifting with themes

  • Graven is an alpha-stage GUI version of raven, which I am very open to feedback on.

#Installation and Usage
#Installation and Dependencies

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://git.sr.ht/~nicohman/raven && cd raven

cargo install --path . --force

You can also download a binary built from the latest git commit at my website.

The following packages are required for their relevant options:

  • New option suggestions are very welcome!
#Usage

raven help for a list of available commands:

raven
nicohman <nicohman@demenses.net>
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
#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
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:

  • poly (Polybar)
  • i3 [base_i3] (i3 config)
  • xres (Xresources)
  • xres_m ( Xresources, to be merged)
  • pywal (an image file that will be used as the pywal base)
  • wall (Feh wallpaper)
  • ncmpcpp (ncmpcpp config file)
  • termite (Termite config)
  • script (An arbitrary executable file that will be run when this theme is loaded)
  • bspwm [base_bspwm] (bspwm config)
  • rofi (A rofi theme that will be copied to ~/.config/rofi/theme.rasi)
  • ranger (rc.conf)
  • lemonbar (A shell script that should spawn your lemonbar)
  • openbox [base_rc.xml] (rc.xml)
  • dunst [base_dunst] (dunstrc)
  • st_tmtheme
  • st_scs
  • st_subltheme
  • vscode (Plain text containing the name of an already installed VSCode theme.)

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.

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

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

#Sublime Text 3

Plain text containing sublt/<filename>.<extension> (which you must create on your theme folder) or the name of an already installed theme (e.g DA.sublime-theme)

Extensions: st_tmtheme (.tmTheme), st_scs (.sublime-color-scheme) and st_subltheme (.sublime-theme)

#Specific Documentation
  • Ravenserver has specific API docs available here, if you want to develop your own client for it or something similar.

  • Docs.rs has documentation for ravenlib, which is useful for either your own projects or contributing.

#Contributing

I'm very happen to take issues and pull requests. Please submit patches to the mailing list, and bug reports to the issue tracker. I will still accept either one on github, however.

About this wiki

commit e48bb3a456eb674f958fa602a00aa2e2aba7c3db
Author: nicohman <None>
Date:   2019-06-30T00:15:53+00:00

Update ravenserver docs for ravenserver-rs
Clone this wiki
https://git.sr.ht/~nicohman/raven (read-only)
git@git.sr.ht:~nicohman/raven (read/write)