## Unfinished ideas

* Read out tmux session / window / panel names (or, for panels/windows, the names of programs running) and pass them to rofi for it to show them and allow 'tabbing' to them a-la Alt-Tab windows

## Implementables

### styler

* [x] styler should be able to present a list of all installed packages/processors/themes
* [ ] styler should have an additional display for each application that a theme is available
* [x] use same style for processors as for packages
* [x] enable downloading
  * [x] from github / link > user inputs author/repo and it automatically downloads package/processor (decided by name)
  * [x] so, `styler download chriskempson/base16-vim` will automatically clone into package directory
* [x] `styler download marty-oehme/yabam16-vim` will automatically clone into processor directory
  * [x] `styler download someone/any-string-here` should also automatically download into processor dir, but print a warning
* [ ] enable suggestion of missing packages when downloading processors
  * [ ] some processors contain `readonly dependency=("author/package")` format to make sure they run against the right package
  * [ ] when this is the case and the package does not exist, warn the user or propose to automatically download the package
* [ ] enable suggestion of processors/packages when running empty download
  * [ ] `styler download` should suggest some processors to download (i.e. applications), and either suggest packages or make use of the previous suggestion and have them automatically suggested when installing the processor
* [x] enable switch for theme switching/permanent theming through styler
  * [x] styler should, by default, only *switch* applications to the new theme but not make the theme default
  * [x] when invoked with saving switch, the processors should make sure that the theme will be the default theme for the next run of the application
  * [x] perhaps styler should invoke processors with additional "switch" "save" first variable being passed, which they will use to differentiate
* [ ] enable shell completion for themes
* [ ] read configuration from configrc file (containing processors/packages to download, applications to set?)
* [ ] Bug: duplicate processors mess it up
* [ ] Find out which *applications* will be styled (perhaps grep comparison of processors/packages and if both have an application name, display this)
* [ ] Feature: styler processor calling could be extended for a post-hook, which would be run after setting the new themes. So, it could work like `processor variables "switch"`, `processor variables "set"`, `processor variables "post"`, to have these hooks. Hooks could even be extended to switch_pre, switch, switch_post, set_pre, set, set_post; though perhaps YAGNI.
* [ ] Feature: add `get` option, where you can input an app/processor and it displays its current theme; or do `get` without argument to display it for each app/processor?
* [ ] a better way to set a processor and package which should target an app
  * [ ] packages do not know about styler (and shouldn't), processors *do*, processors should carry the information of which packages they can be used for, and should recommend package installation on download
* [ ] the process workflow/lifecycle:
  * [ ] styler gathers all processors (with some algorithm deciding which takes precedence for applications)
  * [ ] the processors carry dependencies on packages, styler ensures these are met
  * [ ] styler sources the processes and calls, in order
    * [ ] set_pre   -- called before any process sets themes
    * [ ] set       -- called for each processor in turn
    * [ ] set_post  -- called after each processor sets themes
    * [ ] theme_pre -- called before each processor switches themes
    * [ ] theme     -- called for each processor in turn
    * [ ] theme_post-- called after each processor switches themes

### processors

* [x] shell should set shell colors even when invoked through rofi
  * [x] shell should set it for *all* terminals, not just the one it ran it (through pgrep?)
* [ ] shell should be able to save the colorscheme permanently
* [x] qutebrowser should be able to save the colorscheme permanently
* [x] vim should actually save the colorscheme, not just the name of it?
