35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# Symconf
|
|
`symconf` is a CLI tool for managing local application configuration. It implements a
|
|
general model that supports dynamically switching/reloading themes for any application,
|
|
and makes it easy to templatize your config files.
|
|
|
|
## Quick example
|
|
The single command `symconf config -m dark -s gruvbox` indicates a dark mode preference and
|
|
that the `gruvbox` palette should be used. In this example, invoking this command kicks
|
|
off several app-specific process to update the system state:
|
|
|
|
- **GTK**: reacts to the mode setting and sets `prefer-dark` system-wide, changing general
|
|
GTK-responsive applications like Firefox (and subsequently websites that are responsive to
|
|
`prefers-color-scheme`)
|
|
- **kitty**: theme template is re-generated using the dark `gruvbox` palette, and `kitty`
|
|
processes are sent a message to live reload the new config
|
|
- **neovim**: a `vim` theme file is generated from the `gruvbox` palette, and running
|
|
instances of `neovim` are sent a message to re-source this theme
|
|
- **waybar**: bar styles are updated to match the mode setting
|
|
- **sway**: the background color and window borders are dynamically set to base `gruvbox`
|
|
colors, and `swaymsg reload` is called
|
|
- **fzf**: a palette-dependent theme is re-generated for `gruvbox` colors and re-exported
|
|
- **rofi**: launcher text and highlight colors are set according to mode
|
|
|
|
# Behavior
|
|
It uses a simple operational model that symlinks centralized config files to their
|
|
expected locations across one's system. This central config directory can then be version
|
|
controlled, and app config files can be updated in one place.
|
|
|
|
`symconf` also facilitates dynamically setting system and application themes. You can
|
|
create themed variants of your config files, and `symconf` will "swap out" the matching
|
|
theme config files for registered apps and running config reloading scripts.
|
|
|
|
# Usage
|
|
See more in [USAGE](/USAGE.md)
|