# caelestia-cli The main control script for the Caelestia dotfiles.
External dependencies - [`libnotfy`](https://gitlab.gnome.org/GNOME/libnotify) - sending notifications - [`swappy`](https://github.com/jtheoof/swappy) - screenshot editor - [`grim`](https://gitlab.freedesktop.org/emersion/grim) - taking screenshots - [`dart-sass`](https://github.com/sass/dart-sass) - discord theming - [`app2unit`](https://github.com/Vladimir-csp/app2unit) - launching apps - [`wl-clipboard`](https://github.com/bugaevc/wl-clipboard) - copying to clipboard - [`slurp`](https://github.com/emersion/slurp) - selecting an area - [`gpu-screen-recorder`](https://git.dec05eba.com/gpu-screen-recorder/about) - screen recording - `glib2` - closing notifications - [`cliphist`](https://github.com/sentriz/cliphist) - clipboard history - [`fuzzel`](https://codeberg.org/dnkl/fuzzel) - clipboard history/emoji picker
## Installation ### Arch linux The CLI is available from the AUR as `caelestia-cli`. You can install it with an AUR helper like [`yay`](https://github.com/Jguer/yay) or manually downloading the PKGBUILD and running `makepkg -si`. A package following the latest commit also exists as `caelestia-cli-git`. This is bleeding edge and likely to be unstable/have bugs. Regular users are recommended to use the stable package (`caelestia-cli`). ### Nix You can run the CLI directly via `nix run`: ```sh nix run github:caelestia-dots/cli ``` Or add it to your system configuration: ```nix { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; caelestia-cli = { url = "github:caelestia-dots/cli"; inputs.nixpkgs.follows = "nixpkgs"; }; }; } ``` The package is available as `caelestia-cli.packages..default`, which can be added to your `environment.systemPackages`, `users.users..packages`, `home.packages` if using home-manager, or a devshell. The CLI can then be used via the `caelestia` command. > [!TIP] > The default package does not have the shell enabled by default, which is required for full functionality. > To enable the shell, use the `with-shell` package. This is the recommended installation method, as > the CLI exposes the shell via the `shell` subcommand, meaning there is no need for the shell package > to be exposed. For home-manager, you can also use the Caelestia's home manager module (explained in [configuring](https://github.com/caelestia-dots/shell?tab=readme-ov-file#home-manager-module)) that installs and configures the shell and the CLI. ### Manual installation Install all [dependencies](#dependencies), then install [`python-build`](https://github.com/pypa/build), [`python-installer`](https://github.com/pypa/installer), [`python-hatch`](https://github.com/pypa/hatch) and [`python-hatch-vcs`](https://github.com/ofek/hatch-vcs). e.g. via an AUR helper (yay) ```sh yay -S libnotify swappy grim dart-sass app2unit wl-clipboard slurp gpu-screen-recorder glib2 cliphist fuzzel python-build python-installer python-hatch python-hatch-vcs ``` Now, clone the repo, `cd` into it, build the wheel via `python -m build --wheel` and install it via `python -m installer dist/*.whl`. Then, to install the `fish` completions, copy the `completions/caelestia.fish` file to `/usr/share/fish/vendor_completions.d/caelestia.fish`. ```sh git clone https://github.com/caelestia-dots/cli.git cd cli python -m build --wheel sudo python -m installer dist/*.whl sudo cp completions/caelestia.fish /usr/share/fish/vendor_completions.d/caelestia.fish ``` ## Usage All subcommands/options can be explored via the help flag. ``` $ caelestia -h usage: caelestia [-h] [-v] COMMAND ... Main control script for the Caelestia dotfiles options: -h, --help show this help message and exit -v, --version print the current version subcommands: valid subcommands COMMAND the subcommand to run shell start or message the shell toggle toggle a special workspace scheme manage the colour scheme screenshot take a screenshot record start a screen recording clipboard open clipboard history emoji emoji/glyph utilities wallpaper manage the wallpaper resizer window resizer daemon ``` ## Configuring All configuration options are in `~/.config/caelestia/cli.json`.
Example configuration ```json { "record": { "extraArgs": [] }, "theme": { "enableTerm": true, "enableHypr": true, "enableDiscord": true, "enableSpicetify": true, "enableFuzzel": true, "enableBtop": true, "enableGtk": true, "enableQt": true }, "toggles": { "communication": { "discord": { "enable": true, "match": [{ "class": "discord" }], "command": ["discord"], "move": true }, "whatsapp": { "enable": true, "match": [{ "class": "whatsapp" }], "move": true } }, "music": { "spotify": { "enable": true, "match": [{ "class": "Spotify" }, { "initialTitle": "Spotify" }, { "initialTitle": "Spotify Free" }], "command": ["spicetify", "watch", "-s"], "move": true }, "feishin": { "enable": true, "match": [{ "class": "feishin" }], "move": true } }, "sysmon": { "btop": { "enable": true, "match": [{ "class": "btop", "title": "btop", "workspace": { "name": "special:sysmon" } }], "command": ["foot", "-a", "btop", "-T", "btop", "fish", "-C", "exec btop"] } }, "todo": { "todoist": { "enable": true, "match": [{ "class": "Todoist" }], "command": ["todoist"], "move": true } } } } ```