# Raven
A theme manager for linux, currently focusing on i3. Supports multiple different configuration files, and is fast and portable.
## Installation
All you technically require is [cargo](https://github.com/rust-lang/cargo) to be installed.
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:
+ [Feh](https://github.com/derf/feh): `wall`
+ [Polybar](https://github.com/jaagr/polybar): `poly`
+ [Termite](https://github.com/thestinger/termite/): `termite`
+ [i3](https://github.com/i3/i3): `wm`
+ [Ranger](https://github.com/ranger/ranger) : `ranger`
+ [Lemonbar](https://github.com/ranger/ranger) : `lemonbar`
+ [Ncmpcpp](https://github.com/arybczak/ncmpcpp) : `ncmpcpp`
You can also download a prebuilt binary from [here](https://github.com/nicohman/raven/releases)
## 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]
modify [option] : open the currently edited themes's [option] in $EDITOR
add [option] [file] : add option to 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, which has two options:
```
window_manager: |[window manager in use. Currently only i3 is supported.]|
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)
+ termite(Termite config)
+ wm(window manager config)
+ wall(Wallpaper)
+ xres(Xresources)
+ xres\_m(Xresources, to be merged)
+ ranger(rc.conf)
+ lemonbar(A shell script that should spawn your lemonbar)
+ ncmpcpp(ncmpcpp connfig file)
If you place an i3 config named base\_i3 in ~/.config/raven, the contents of wm 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
Up to two polybars will be started, depending on how many monitors you have configured. The bars should be named, in order: `main` and `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.