Skip to content

kellyson71/hypr-shell-switcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shell switching demo

hypr-shell-switcher

Hyprland Quickshell Bash rofi License: MIT

Switches between two Quickshell setups I run — end-4 and caelestia — without restarting Hyprland. Uses a frozen-frame overlay so the new shell loads hidden behind it. Has a rofi menu that picks up the shell's Material You colors, shows status and lets you switch, restart or stop.

Other Quickshell shells can be plugged in too, see Adding a new shell.

Shell switcher menu

Requirements

Package Purpose
quickshell the shells
hyprland compositor (≥ 0.41)
rofi (wayland) menu
grim freeze frame
ags (≥ 3) transition overlay
python3 color extraction
app2unit systemd launch (optional)
papirus-icon-theme menu icons

Installation

git clone https://github.com/kellyson71/hypr-shell-switcher
cd hypr-shell-switcher
./install.sh

Then add to your keybinds:

bind = Super+Control, Tab, exec, ~/.config/hypr/scripts/switch-shell.sh toggle
bind = Super+Control+Shift, Tab, exec, ~/.config/hypr/scripts/switch-shell.sh menu

Usage

Shortcut Action
Super+Control+Tab switch to next shell
Super+Control+Shift+Tab open menu
switch-shell.sh toggle
switch-shell.sh caelestia
switch-shell.sh end4
switch-shell.sh menu

How it works

~/.config/hypr/
├── active-profile.conf        # overwritten on each switch
├── caelestia-overrides.conf
├── assets/
│   └── illogical-impulse.svg
├── profiles/
│   ├── end4.conf
│   └── caelestia.conf
└── scripts/
    ├── switch-shell.sh
    ├── transition.ts
    └── shell-colors.py

Each profile sets $qsConfig (which Quickshell folder to load). On switch: waits for rofi to close, takes a screenshot with grim, puts it on the Wayland OVERLAY layer via ags, reloads Hyprland with the new profile, restarts qs, then fades out when the shell answers IPC.

Per-shell keybind overrides are loaded conditionally:

source = active-profile.conf

# hyprlang if isCaelestia
source = caelestia-overrides.conf
# hyprlang endif

Adding a new shell

Add a profile at hypr/profiles/<name>.conf, register it in shell_list(), shell_label(), shell_icon() and shell_desc() inside switch-shell.sh, and optionally drop an SVG in hypr/assets/ and a keybind override file alongside.

Credits

License

MIT

About

Switch between Quickshell shells (end-4 and caelestia) on Hyprland: hot switching, themed rofi menu and per-shell keybinds

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors