[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74044":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},74044,"shell","caelestia-dots\u002Fshell","caelestia-dots","A fluid, morphing shell for your Linux desktop","",null,"QML",9912,668,42,161,0,82,166,535,246,114.48,"GNU General Public License v3.0",false,"main",true,[27,28,29,30,31,32,33,34,35],"caelestia","dotfiles","hyprland","hyprland-rice","linux","qt6","quickshell","rice","wayland","2026-06-12 04:01:12","\u003Ch1 align=center>caelestia-shell\u003C\u002Fh1>\n\n\u003Cdiv align=center>\n\n![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fcaelestia-dots\u002Fshell?style=for-the-badge&labelColor=101418&color=9ccbfb)\n![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fcaelestia-dots\u002Fshell?style=for-the-badge&labelColor=101418&color=b9c8da)\n![GitHub repo size](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Frepo-size\u002Fcaelestia-dots\u002Fshell?style=for-the-badge&labelColor=101418&color=d3bfe6)\n[![Ko-Fi donate](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdonate-kofi?style=for-the-badge&logo=ko-fi&logoColor=ffffff&label=ko-fi&labelColor=101418&color=f16061&link=https%3A%2F%2Fko-fi.com%2Fsoramane)](https:\u002F\u002Fko-fi.com\u002Fsoramane)\n[![Discord invite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fjson?url=https%3A%2F%2Fdiscordapp.com%2Fapi%2Finvites%2FBGDCFCmMBk%3Fwith_counts%3Dtrue&query=approximate_member_count&style=for-the-badge&logo=discord&logoColor=ffffff&label=discord&labelColor=101418&color=96f1f1&link=https%3A%2F%2Fdiscord.gg%2FBGDCFCmMBk)](https:\u002F\u002Fdiscord.gg\u002FBGDCFCmMBk)\n\n\u003C\u002Fdiv>\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F0840f496-575c-4ca6-83a8-87bb01a85c5f\n\n## Components\n\n-   Widgets: [`Quickshell`](https:\u002F\u002Fquickshell.outfoxxed.me)\n-   Window manager: [`Hyprland`](https:\u002F\u002Fhyprland.org)\n-   Dots: [`caelestia`](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots)\n\n## Installation\n\n> [!NOTE]\n> This repo is for the desktop shell of the caelestia dots. If you want installation instructions\n> for the entire dots, head to [the main repo](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fcaelestia) instead.\n\n### Arch linux\n\n> [!NOTE]\n> If you want to make your own changes\u002Ftweaks to the shell do NOT edit the files installed by the AUR\n> package. Instead, follow the instructions in the [manual installation section](#manual-installation).\n\nThe shell is available from the AUR as `caelestia-shell`. You can install it with an AUR helper\nlike [`yay`](https:\u002F\u002Fgithub.com\u002FJguer\u002Fyay) or manually downloading the PKGBUILD and running `makepkg -si`.\n\nA package following the latest commit also exists as `caelestia-shell-git`. This is bleeding edge\nand likely to be unstable\u002Fhave bugs. Regular users are recommended to use the stable package\n(`caelestia-shell`).\n\n### Nix\n\nYou can run the shell directly via `nix run`:\n\n```sh\nnix run github:caelestia-dots\u002Fshell\n```\n\nOr add it to your system configuration:\n\n```nix\n{\n  inputs = {\n    nixpkgs.url = \"github:nixos\u002Fnixpkgs\u002Fnixos-unstable\";\n\n    caelestia-shell = {\n      url = \"github:caelestia-dots\u002Fshell\";\n      inputs.nixpkgs.follows = \"nixpkgs\";\n    };\n  };\n}\n```\n\nThe package is available as `caelestia-shell.packages.\u003Csystem>.default`, which can be added to your\n`environment.systemPackages`, `users.users.\u003Cusername>.packages`, `home.packages` if using home-manager,\nor a devshell. The shell can then be run via `caelestia-shell`.\n\n> [!TIP]\n> The default package does not have the CLI enabled by default, which is required for full funcionality.\n> To enable the CLI, use the `with-cli` package.\n\nFor home-manager, you can also use the Caelestia's home manager module (explained in [configuring](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fshell?tab=readme-ov-file#home-manager-module)) that installs and configures the shell and the CLI.\n\n### Manual installation\n\nDependencies:\n\n-   [`caelestia-cli`](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fcli)\n-   [`quickshell-git`](https:\u002F\u002Fquickshell.outfoxxed.me) - this has to be the git version, not the latest tagged version\n-   [`ddcutil`](https:\u002F\u002Fgithub.com\u002Frockowitz\u002Fddcutil)\n-   [`brightnessctl`](https:\u002F\u002Fgithub.com\u002FHummer12007\u002Fbrightnessctl)\n-   [`app2unit`](https:\u002F\u002Fgithub.com\u002FVladimir-csp\u002Fapp2unit)\n-   [`libcava`](https:\u002F\u002Fgithub.com\u002FLukashonakV\u002Fcava)\n-   [`networkmanager`](https:\u002F\u002Fnetworkmanager.dev)\n-   [`lm-sensors`](https:\u002F\u002Fgithub.com\u002Flm-sensors\u002Flm-sensors)\n-   [`fish`](https:\u002F\u002Fgithub.com\u002Ffish-shell\u002Ffish-shell)\n-   [`aubio`](https:\u002F\u002Fgithub.com\u002Faubio\u002Faubio)\n-   [`libpipewire`](https:\u002F\u002Fpipewire.org)\n-   `glibc`\n-   `qt6-declarative`\n-   `gcc-libs`\n-   [`material-symbols`](https:\u002F\u002Ffonts.google.com\u002Ficons)\n-   [`caskaydia-cove-nerd`](https:\u002F\u002Fwww.nerdfonts.com\u002Ffont-downloads)\n-   [`swappy`](https:\u002F\u002Fgithub.com\u002Fjtheoof\u002Fswappy)\n-   [`libqalculate`](https:\u002F\u002Fgithub.com\u002FQalculate\u002Flibqalculate)\n-   [`bash`](https:\u002F\u002Fwww.gnu.org\u002Fsoftware\u002Fbash)\n-   `qt6-base`\n-   `qt6-declarative`\n\nBuild dependencies:\n\n-   [`cmake`](https:\u002F\u002Fcmake.org)\n-   [`ninja`](https:\u002F\u002Fgithub.com\u002Fninja-build\u002Fninja)\n\nTo install the shell manually, install all dependencies and clone this repo to `$XDG_CONFIG_HOME\u002Fquickshell\u002Fcaelestia`.\nThen simply build and install using `cmake`.\n\n```sh\ncd $XDG_CONFIG_HOME\u002Fquickshell\ngit clone https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fshell.git caelestia\n\ncd caelestia\ncmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=\u002F\ncmake --build build\nsudo cmake --install build\n```\n\n> [!TIP]\n> You can customise the installation location via the `cmake` flags `INSTALL_LIBDIR`, `INSTALL_QMLDIR` and\n> `INSTALL_QSCONFDIR` for the libraries (the beat detector), QML plugin and Quickshell config directories\n> respectively. If changing the library directory, remember to set the `CAELESTIA_LIB_DIR` environment\n> variable to the custom directory when launching the shell.\n>\n> e.g. installing to `~\u002F.config\u002Fquickshell\u002Fcaelestia` for easy local changes:\n>\n> ```sh\n> mkdir -p ~\u002F.config\u002Fquickshell\u002Fcaelestia\n> cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=\u002F -DINSTALL_QSCONFDIR=~\u002F.config\u002Fquickshell\u002Fcaelestia\n> cmake --build build\n> sudo cmake --install build\n> sudo chown -R $USER ~\u002F.config\u002Fquickshell\u002Fcaelestia\n> ```\n\n## Usage\n\nThe shell can be started via the `caelestia shell -d` command or `qs -c caelestia`.\nIf the entire caelestia dots are installed, the shell will be autostarted on login\nvia an `exec-once` in the hyprland config.\n\n### Shortcuts\u002FIPC\n\nAll keybinds are accessible via Hyprland [global shortcuts](https:\u002F\u002Fwiki.hyprland.org\u002FConfiguring\u002FBinds\u002F#dbus-global-shortcuts).\nIf using the entire caelestia dots, the keybinds are already configured for you.\nOtherwise, [this file](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fcaelestia\u002Fblob\u002Fmain\u002Fhypr\u002Fhyprland\u002Fkeybinds.conf#L1-L39)\ncontains an example on how to use global shortcuts.\n\nAll IPC commands can be accessed via `caelestia shell ...`. For example\n\n```sh\ncaelestia shell mpris getActive trackTitle\n```\n\nThe list of IPC commands can be shown via `caelestia shell -s`:\n\n```\n$ caelestia shell -s\ntarget drawers\n  function toggle(drawer: string): void\n  function list(): string\ntarget notifs\n  function clear(): void\ntarget lock\n  function lock(): void\n  function unlock(): void\n  function isLocked(): bool\ntarget mpris\n  function playPause(): void\n  function getActive(prop: string): string\n  function next(): void\n  function stop(): void\n  function play(): void\n  function list(): string\n  function pause(): void\n  function previous(): void\ntarget picker\n  function openFreeze(): void\n  function open(): void\ntarget wallpaper\n  function set(path: string): void\n  function get(): string\n  function list(): string\n```\n\n### PFP\u002FWallpapers\n\nThe profile picture for the dashboard is read from the file `~\u002F.face`, so to set\nit you can copy your image to there or set it via the dashboard.\n\nThe wallpapers for the wallpaper switcher are read from `~\u002FPictures\u002FWallpapers`\nby default. To change it, change the wallpapers path in `~\u002F.config\u002Fcaelestia\u002Fshell.json`.\n\nTo set the wallpaper, you can use the command `caelestia wallpaper`. Use `caelestia wallpaper -h` for more info about\nthe command.\n\n## Updating\n\nIf installed via the AUR package, simply update your system (e.g. using `yay`).\n\nIf installed manually, you can update by running `git pull` in `$XDG_CONFIG_HOME\u002Fquickshell\u002Fcaelestia`.\n\n```sh\ncd $XDG_CONFIG_HOME\u002Fquickshell\u002Fcaelestia\ngit pull\n```\n\n## Configuring\n\nAll configuration options should be put in `~\u002F.config\u002Fcaelestia\u002Fshell.json`. This file is _not_ created by\ndefault, you must create it manually. Options that you omit from the config file will use their default\nvalues.\n\n### Per-monitor configuration\n\nYou can configure options per-monitor in `~\u002F.config\u002Fcaelestia\u002Fmonitors\u002F\u003Cscreen-name>\u002Fshell.json`. Options\nset in this file will **override** the respective options in the global config. Otherwise, the options will\nuse their values from the global config.\n\nFor example, to disable the bar on DP-1:\n\n**`~\u002F.config\u002Fcaelestia\u002Fmonitors\u002FDP-1\u002Fshell.json`**\n\n```json\n{\n    \"bar\": {\n        \"persistent\": false\n    }\n}\n```\n\n> [!NOTE]\n> Not all options are respect per-monitor overrides. Most notably, the following options will only read\n> from the global config, and ignore the respective option in per-monitor config files.\n>\n> \u003Cdetails>\u003Csummary>Ignored options\u003C\u002Fsummary>\n>\n> - `appearance` (`anim`, `transparency`)\n> - `general` (`logo`, `apps`, `idle`, `battery`)\n> - `bar.workspaces` (`perMonitorWorkspaces`, `specialWorkspaceIcons`, `windowIcons`)\n> - `bar.tray` (`iconSubs`, `hiddenIcons`)\n> - `dashboard` (`mediaUpdateInterval`, `resourceUpdateInterval`)\n> - `launcher` (`specialPrefix`, `actionPrefix`, `enableDangerousActions`, `vimKeybinds`,\n>   `favouriteApps`, `hiddenApps`, `actions`)\n> - `launcher.useFuzzy` (`apps`, `actions`, `schemes`, `variants`, `wallpapers`)\n> - `notifs` (`expire`, `fullscreen`, `defaultExpireTimeout`, `actionOnClick`)\n> - `lock` (`enableFprint`, `maxFprintTries`)\n> - `utilities` (`toasts`, `vpn`)\n> - `services` (`weatherLocation`, `useFahrenheit`, `useFahrenheitPerformance`, `useTwelveHourClock`,\n>   `gpuType`, `visualiserBars`, `audioIncrement`, `brightnessIncrement`, `maxVolume`, `smartScheme`,\n>   `defaultPlayer`, `playerAliases`, `showLyrics`, `lyricsBackend`)\n> - `paths` (`wallpaperDir`, `lyricsDir`)\n>\n> \u003C\u002Fdetails>\n\n### Example configuration\n\n> [!NOTE]\n> The example configuration includes ALL configuration options in `shell.json`. You are\n> **not** recommended to copy and paste this entire configuration into `shell.json`.\n> This is meant to serve as a reference of all the available options, and you should\n> only add the ones you want to change to `shell.json`.\n\n\u003Cdetails>\u003Csummary>Example\u003C\u002Fsummary>\n\n```json\n{\n    \"enabled\": true,\n    \"appearance\": {\n        \"deformScale\": 1,\n        \"anim\": {\n            \"durations\": {\n                \"scale\": 1\n            }\n        },\n        \"font\": {\n            \"family\": {\n                \"clock\": \"Rubik\",\n                \"material\": \"Material Symbols Rounded\",\n                \"mono\": \"CaskaydiaCove NF\",\n                \"sans\": \"Rubik\"\n            },\n            \"size\": {\n                \"scale\": 1\n            }\n        },\n        \"padding\": {\n            \"scale\": 1\n        },\n        \"rounding\": {\n            \"scale\": 1\n        },\n        \"spacing\": {\n            \"scale\": 1\n        },\n        \"transparency\": {\n            \"enabled\": false,\n            \"base\": 0.85,\n            \"layers\": 0.4\n        }\n    },\n    \"general\": {\n        \"logo\": \"caelestia\",\n        \"showOverFullscreen\": false,\n        \"mediaGifSpeedAdjustment\": 300,\n        \"sessionGifSpeed\": 0.7,\n        \"apps\": {\n            \"terminal\": [\"foot\"],\n            \"audio\": [\"pavucontrol\"],\n            \"playback\": [\"mpv\"],\n            \"explorer\": [\"thunar\"]\n        },\n        \"battery\": {\n            \"warnLevels\": [\n                {\n                    \"level\": 20,\n                    \"title\": \"Low battery\",\n                    \"message\": \"You might want to plug in a charger\",\n                    \"icon\": \"battery_android_frame_2\"\n                },\n                {\n                    \"level\": 10,\n                    \"title\": \"Did you see the previous message?\",\n                    \"message\": \"You should probably plug in a charger \u003Cb>now\u003C\u002Fb>\",\n                    \"icon\": \"battery_android_frame_1\"\n                },\n                {\n                    \"level\": 5,\n                    \"title\": \"Critical battery level\",\n                    \"message\": \"PLUG THE CHARGER RIGHT NOW!!\",\n                    \"icon\": \"battery_android_alert\",\n                    \"critical\": true\n                }\n            ],\n            \"criticalLevel\": 3\n        },\n        \"idle\": {\n            \"lockBeforeSleep\": true,\n            \"inhibitWhenAudio\": true,\n            \"timeouts\": [\n                {\n                    \"timeout\": 180,\n                    \"idleAction\": \"lock\"\n                },\n                {\n                    \"timeout\": 300,\n                    \"idleAction\": \"dpms off\",\n                    \"returnAction\": \"dpms on\"\n                },\n                {\n                    \"timeout\": 600,\n                    \"idleAction\": [\"systemctl\", \"suspend-then-hibernate\"]\n                }\n            ]\n        }\n    },\n    \"background\": {\n        \"desktopClock\": {\n            \"enabled\": false,\n            \"scale\": 1.0,\n            \"position\": \"bottom-right\",\n            \"shadow\": {\n                \"enabled\": true,\n                \"opacity\": 0.7,\n                \"blur\": 0.4\n            },\n            \"background\": {\n                \"enabled\": false,\n                \"opacity\": 0.7,\n                \"blur\": true\n            },\n            \"invertColors\": false\n        },\n        \"enabled\": true,\n        \"visualiser\": {\n            \"blur\": false,\n            \"enabled\": false,\n            \"autoHide\": true,\n            \"rounding\": 1,\n            \"spacing\": 1\n        }\n    },\n    \"bar\": {\n        \"activeWindow\": {\n            \"compact\": false,\n            \"inverted\": false,\n            \"showOnHover\": true\n        },\n        \"clock\": {\n            \"background\": false,\n            \"showDate\": false,\n            \"showIcon\": true\n        },\n        \"dragThreshold\": 20,\n        \"entries\": [\n            {\n                \"id\": \"logo\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"workspaces\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"spacer\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"activeWindow\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"spacer\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"tray\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"clock\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"statusIcons\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"power\",\n                \"enabled\": true\n            }\n        ],\n        \"persistent\": true,\n        \"popouts\": {\n            \"activeWindow\": true,\n            \"statusIcons\": true,\n            \"tray\": true\n        },\n        \"scrollActions\": {\n            \"brightness\": true,\n            \"workspaces\": true,\n            \"volume\": true\n        },\n        \"showOnHover\": true,\n        \"status\": {\n            \"showAudio\": false,\n            \"showBattery\": true,\n            \"showBluetooth\": true,\n            \"showKbLayout\": false,\n            \"showMicrophone\": false,\n            \"showNetwork\": true,\n            \"showWifi\": true,\n            \"showLockStatus\": true\n        },\n        \"tray\": {\n            \"background\": false,\n            \"compact\": false,\n            \"iconSubs\": [],\n            \"recolour\": false\n        },\n        \"workspaces\": {\n            \"activeIndicator\": true,\n            \"activeLabel\": \"󰮯\",\n            \"activeTrail\": false,\n            \"label\": \"  \",\n            \"occupiedBg\": false,\n            \"occupiedLabel\": \"󰮯\",\n            \"perMonitorWorkspaces\": true,\n            \"showWindows\": true,\n            \"shown\": 5,\n            \"specialWorkspaceIcons\": [\n                {\n                    \"name\": \"steam\",\n                    \"icon\": \"sports_esports\"\n                }\n            ],\n            \"windowIcons\": [\n                {\n                    \"regex\": \"steam(_app_(default|[0-9]+))?\",\n                    \"icon\": \"sports_esports\"\n                }\n            ]\n        },\n        \"excludedScreens\": [\"\"],\n        \"activeWindow\": {\n            \"inverted\": false\n        }\n    },\n    \"border\": {\n        \"rounding\": 25,\n        \"smoothing\": 32,\n        \"thickness\": 10\n    },\n    \"dashboard\": {\n        \"enabled\": true,\n        \"showOnHover\": true,\n        \"showDashboard\": true,\n        \"showMedia\": true,\n        \"showPerformance\": true,\n        \"showWeather\": true,\n        \"dragThreshold\": 50,\n        \"mediaUpdateInterval\": 500\n    },\n    \"launcher\": {\n        \"actionPrefix\": \">\",\n        \"actions\": [\n            {\n                \"name\": \"Calculator\",\n                \"icon\": \"calculate\",\n                \"description\": \"Do simple math equations (powered by Qalc)\",\n                \"command\": [\"autocomplete\", \"calc\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Scheme\",\n                \"icon\": \"palette\",\n                \"description\": \"Change the current colour scheme\",\n                \"command\": [\"autocomplete\", \"scheme\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Wallpaper\",\n                \"icon\": \"image\",\n                \"description\": \"Change the current wallpaper\",\n                \"command\": [\"autocomplete\", \"wallpaper\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Variant\",\n                \"icon\": \"colors\",\n                \"description\": \"Change the current scheme variant\",\n                \"command\": [\"autocomplete\", \"variant\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Transparency\",\n                \"icon\": \"opacity\",\n                \"description\": \"Change shell transparency\",\n                \"command\": [\"autocomplete\", \"transparency\"],\n                \"enabled\": false,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Random\",\n                \"icon\": \"casino\",\n                \"description\": \"Switch to a random wallpaper\",\n                \"command\": [\"caelestia\", \"wallpaper\", \"-r\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Light\",\n                \"icon\": \"light_mode\",\n                \"description\": \"Change the scheme to light mode\",\n                \"command\": [\"setMode\", \"light\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Dark\",\n                \"icon\": \"dark_mode\",\n                \"description\": \"Change the scheme to dark mode\",\n                \"command\": [\"setMode\", \"dark\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Shutdown\",\n                \"icon\": \"power_settings_new\",\n                \"description\": \"Shutdown the system\",\n                \"command\": [\"systemctl\", \"poweroff\"],\n                \"enabled\": true,\n                \"dangerous\": true\n            },\n            {\n                \"name\": \"Reboot\",\n                \"icon\": \"cached\",\n                \"description\": \"Reboot the system\",\n                \"command\": [\"systemctl\", \"reboot\"],\n                \"enabled\": true,\n                \"dangerous\": true\n            },\n            {\n                \"name\": \"Logout\",\n                \"icon\": \"exit_to_app\",\n                \"description\": \"Log out of the current session\",\n                \"command\": [\"loginctl\", \"terminate-user\", \"\"],\n                \"enabled\": true,\n                \"dangerous\": true\n            },\n            {\n                \"name\": \"Lock\",\n                \"icon\": \"lock\",\n                \"description\": \"Lock the current session\",\n                \"command\": [\"loginctl\", \"lock-session\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Sleep\",\n                \"icon\": \"bedtime\",\n                \"description\": \"Suspend then hibernate\",\n                \"command\": [\"systemctl\", \"suspend-then-hibernate\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            },\n            {\n                \"name\": \"Settings\",\n                \"icon\": \"settings\",\n                \"description\": \"Configure the shell\",\n                \"command\": [\"caelestia\", \"shell\", \"controlCenter\", \"open\"],\n                \"enabled\": true,\n                \"dangerous\": false\n            }\n        ],\n        \"dragThreshold\": 50,\n        \"vimKeybinds\": false,\n        \"enableDangerousActions\": false,\n        \"maxShown\": 7,\n        \"maxWallpapers\": 9,\n        \"specialPrefix\": \"@\",\n        \"useFuzzy\": {\n            \"apps\": false,\n            \"actions\": false,\n            \"schemes\": false,\n            \"variants\": false,\n            \"wallpapers\": false\n        },\n        \"showOnHover\": false,\n        \"favouriteApps\": [],\n        \"hiddenApps\": []\n    },\n    \"lock\": {\n        \"recolourLogo\": false,\n        \"hideNotifs\": false\n    },\n    \"notifs\": {\n        \"actionOnClick\": false,\n        \"clearThreshold\": 0.3,\n        \"defaultExpireTimeout\": 5000,\n        \"expandThreshold\": 20,\n        \"openExpanded\": false,\n        \"expire\": false\n    },\n    \"osd\": {\n        \"enabled\": true,\n        \"enableBrightness\": true,\n        \"enableMicrophone\": false,\n        \"hideDelay\": 2000\n    },\n    \"paths\": {\n        \"mediaGif\": \"root:\u002Fassets\u002Fbongocat.gif\",\n        \"sessionGif\": \"root:\u002Fassets\u002Fkurukuru.gif\",\n        \"noNotifsPic\": \"root:\u002Fassets\u002Fdino.png\",\n        \"lockNoNotifsPic\": \"root:\u002Fassets\u002Fdino.png\",\n        \"wallpaperDir\": \"~\u002FPictures\u002FWallpapers\",\n        \"lyricsDir\": \"~\u002FMusic\u002Flyrics\"\n    },\n    \"services\": {\n        \"audioIncrement\": 0.1,\n        \"brightnessIncrement\": 0.1,\n        \"maxVolume\": 1.0,\n        \"defaultPlayer\": \"Spotify\",\n        \"gpuType\": \"\",\n        \"playerAliases\": [{ \"from\": \"com.github.th_ch.youtube_music\", \"to\": \"YT Music\" }],\n        \"weatherLocation\": \"\",\n        \"useFahrenheit\": false,\n        \"useFahrenheitPerformance\": false,\n        \"useTwelveHourClock\": false,\n        \"smartScheme\": true,\n        \"visualiserBars\": 45\n    },\n    \"session\": {\n        \"dragThreshold\": 30,\n        \"enabled\": true,\n        \"vimKeybinds\": false,\n        \"icons\": {\n            \"logout\": \"logout\",\n            \"shutdown\": \"power_settings_new\",\n            \"hibernate\": \"downloading\",\n            \"reboot\": \"cached\"\n        },\n        \"commands\": {\n            \"logout\": [\"loginctl\", \"terminate-user\", \"\"],\n            \"shutdown\": [\"systemctl\", \"poweroff\"],\n            \"hibernate\": [\"systemctl\", \"hibernate\"],\n            \"reboot\": [\"systemctl\", \"reboot\"]\n        }\n    },\n    \"sidebar\": {\n        \"dragThreshold\": 80,\n        \"enabled\": true\n    },\n    \"utilities\": {\n        \"enabled\": true,\n        \"maxToasts\": 4,\n        \"toasts\": {\n            \"audioInputChanged\": true,\n            \"audioOutputChanged\": true,\n            \"capsLockChanged\": true,\n            \"chargingChanged\": true,\n            \"configLoaded\": true,\n            \"dndChanged\": true,\n            \"gameModeChanged\": true,\n            \"kbLayoutChanged\": true,\n            \"kbLimit\": true,\n            \"numLockChanged\": true,\n            \"vpnChanged\": true,\n            \"nowPlaying\": false\n        },\n        \"vpn\": {\n            \"enabled\": true,\n            \"provider\": [\n                {\n                    \"name\": \"wireguard\",\n                    \"interface\": \"your-connection-name\",\n                    \"displayName\": \"Wireguard (Your VPN)\",\n                    \"enabled\": false\n                }\n            ]\n        },\n        \"quickToggles\": [\n            {\n                \"id\": \"wifi\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"bluetooth\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"mic\",\n                \"enabled\": true\n            },\n            {\n                \"enabled\": true,\n                \"id\": \"settings\"\n            },\n            {\n                \"id\": \"gameMode\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"dnd\",\n                \"enabled\": true\n            },\n            {\n                \"id\": \"vpn\",\n                \"enabled\": true\n            }\n        ]\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Advanced configuration\n\n> [!WARNING]\n> Do NOT change any of these options if you do not know what you are doing. These options control the\n> tokens used internally within the shell, and can cause visual issues if changed. The existence of\n> the options are also not guaranteed across versions, and may change or be removed without notice.\n\nA separate `~\u002F.config\u002Fcaelestia\u002Fshell-tokens.json` file allows editing the internal tokens without\ntouching the source code of the shell. These tokens affect, for example, individual rounding,\nspacing, padding, font size, animation duration and easing curves tokens, and the sizes of certain\ncomponents. The appearance scale values in `shell.json` are multiplied against these base\ntoken values to produce the final computed values.\n\nPer-monitor token overrides are also available at\n`~\u002F.config\u002Fcaelestia\u002Fmonitors\u002F\u003Cscreen-name>\u002Fshell-tokens.json`.\n\n### Home Manager Module\n\nFor NixOS users, a home manager module is also available.\n\n\u003Cdetails>\u003Csummary>\u003Ccode>home.nix\u003C\u002Fcode>\u003C\u002Fsummary>\n\n```nix\nprograms.caelestia = {\n  enable = true;\n  systemd = {\n    enable = false; # if you prefer starting from your compositor\n    target = \"graphical-session.target\";\n    environment = [];\n  };\n  settings = {\n    bar.status = {\n      showBattery = false;\n    };\n    paths.wallpaperDir = \"~\u002FImages\";\n  };\n  cli = {\n    enable = true; # Also add caelestia-cli to path\n    settings = {\n      theme.enableGtk = false;\n    };\n  };\n};\n```\n\nThe module automatically adds Caelestia shell to the path with **full functionality**. The CLI is not required, however you have the option to enable and configure it.\n\n\u003C\u002Fdetails>\n\n## FAQ\n\n### Need help or support?\n\nYou can join the community Discord server for assistance and discussion:\nhttps:\u002F\u002Fdiscord.gg\u002FBGDCFCmMBk\n\n### My screen is flickering, help pls!\n\nTry disabling VRR in the hyprland config. You can do this by adding the following to `~\u002F.config\u002Fcaelestia\u002Fhypr-user.conf`:\n\n```conf\nmisc {\n    vrr = 0\n}\n```\n\n### I want to make my own changes to the hyprland config!\n\nYou can add your custom hyprland configs to `~\u002F.config\u002Fcaelestia\u002Fhypr-user.conf`.\n\n### I want to make my own changes to other stuff!\n\nSee the [manual installation](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fshell?tab=readme-ov-file#manual-installation) section\nfor the corresponding repo.\n\n### I want to disable XXX feature!\n\nPlease read the [configuring](https:\u002F\u002Fgithub.com\u002Fcaelestia-dots\u002Fshell?tab=readme-ov-file#configuring) section in the readme.\nIf there is no corresponding option, make feature request.\n\n### How do I make my colour scheme change with my wallpaper?\n\nSet a wallpaper via the launcher or `caelestia wallpaper` and set the scheme to the dynamic scheme via the launcher\nor `caelestia scheme set`. e.g.\n\n```sh\ncaelestia wallpaper -f \u003Cpath\u002Fto\u002Ffile>\ncaelestia scheme set -n dynamic\n```\n\n### My wallpapers aren't showing up in the launcher!\n\nThe launcher pulls wallpapers from `~\u002FPictures\u002FWallpapers` by default. You can change this in the config. Additionally,\nthe launcher only shows an odd number of wallpapers at one time. If you only have 2 wallpapers, consider getting more\n(or just putting one).\n\n## Credits\n\nThanks to the Hyprland discord community (especially the homies in #rice-discussion) for all the help and suggestions\nfor improving these dots!\n\nA special thanks to [@outfoxxed](https:\u002F\u002Fgithub.com\u002Foutfoxxed) for making Quickshell and the effort put into fixing issues\nand implementing various feature requests.\n\nAnother special thanks to [@end_4](https:\u002F\u002Fgithub.com\u002Fend-4) for his [config](https:\u002F\u002Fgithub.com\u002Fend-4\u002Fdots-hyprland)\nwhich helped me a lot with learning how to use Quickshell.\n\nFinally another thank you to all the configs I took inspiration from (only one for now):\n\n-   [Axenide\u002FAx-Shell](https:\u002F\u002Fgithub.com\u002FAxenide\u002FAx-Shell)\n\n## Stonks 📈\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#caelestia-dots\u002Fshell&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=caelestia-dots\u002Fshell&type=Date&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=caelestia-dots\u002Fshell&type=Date\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=caelestia-dots\u002Fshell&type=Date\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n","caelestia-shell 是一个基于 QML 的桌面环境配置项目，专为使用 Hyprland 窗口管理器的 Linux 用户设计。它集成了 Quickshell 小部件和 caelestia 的点文件（dotfiles），提供了一个美观且高度可定制的桌面界面。该项目利用 Qt6 和 Wayland 技术栈，确保了良好的性能与兼容性。适用于希望在 Arch Linux 或 NixOS 上构建个性化、现代化桌面环境的高级用户和技术爱好者。通过 AUR 或 Nix 包管理器可以轻松安装，并支持自定义调整以满足不同需求。",2,"2026-06-11 03:48:33","high_star"]