feat(quickshell): add native live window app switcher hud with alt-tab cycling - #1823
feat(quickshell): add native live window app switcher hud with alt-tab cycling#1823anshifmonz wants to merge 3 commits into
Conversation
|
Hi. This is super nice. Dors it also support special workspaces? I would suggest that you create and maintain an own repo for this. I can install it then during the setup script. What do you think? |
|
Hi Stephan, Glad you like it; It actually didn't support special workspaces before, but I just added full support for them; it now detects active scratchpads properly. I also went ahead with your suggestion and set up a dedicated repo for it: It comes with an bash <(curl -s https://raw.githubusercontent.com/anshifmonz/hypr-app-switcher/main/install.sh)And wired in hl.bind("ALT + Tab", hl.dsp.exec_cmd("qs -p ~/.local/share/hypr-app-switcher ipc call app-switcher next"), { description = "Switch applications on active workspace" })How would you like to handle this PR? I'm happy to update it so it just adds the install hook to the setup scripts and the keybinding, or if you prefer to wire it up on your end, we can go ahead and close this one out. Cheers! |
|
Thanks again. https://github.com/mylinuxforwork/ml4w-quickshell-overview You see that I install it into .local/share Maybe this is an approach for you as well. I will do the same with my status bar and dock. Will be on vacation the next two weeks. I will continue testing afterwards. |
This PR introduces a native, hardware-accelerated Quickshell App Switcher HUD bound to Alt + Tab, providing fast, workspace-scoped window switching with live Wayland window previews and dynamic Matugen theming.
All keybindings and autostart hooks are pre-configured in this PR; it works completely out-of-the-box with zero manual setup.
Changes
Modified / Added Files:
dotfiles/.config/quickshell/overview/modules/appswitcher/- App switcher QML component & manifestdotfiles/.config/quickshell/overview/services/- Reactive states & Hyprland client tracking servicedotfiles/.config/quickshell/overview/shell.qml- Dedicated switcher shell rootdotfiles/.config/hypr/conf/keybindings/default.lua- Pre-wired Alt+Tab IPC bindingsdotfiles/.config/ml4w/scripts/ml4w-autostart- Non-blocking daemon autostart with systemd conflict avoidancedotfiles/.config/systemd/user/quickshell-overview.service- Optional user systemd daemon unitContext
While ML4W already has an excellent full-screen Overview (
Super + Tab) spanning all monitors and workspaces, quick micro-switching between applications on the active workspace felt like a missing piece of the daily workflow.Rather than relying on rofi text lists, this feature adds a modern, macOS/visionOS-inspired acrylic glass carousel built directly on Quickshell and Wayland protocols:
ListViewstage that maintains widescreen (16:10 / 16:9) cards that never clip or squash, even with 10+ windows open.ScreencopyView, with automatic fallback to high-res application desktop icons.~/.config/ml4w/colors/primaryon startup and on open, so borders, active indicators, and glow accents dynamically match the current wallpaper palette.H/L), Enter, Esc, mouse clicks, and mouse wheel scrolling.Performance & Resource Usage
To ensure there is zero CPU/GPU overhead or battery drain:
ScreencopyView.liveis bound strictly toGlobalStates.appSwitcherOpen(live: GlobalStates.appSwitcherOpen).hyprctlsocket polling during rapid window moves or tiling resizes.How Has This Been Tested?
Testing steps performed:
qs -p dotfiles/.config/quickshell/overview(0 errors, 0 warnings).btopduring idle (0.0% CPU) and active cycling (<2% momentary frame rendering).ml4w-wallpaper-app; verified that the accent color dynamically reloaded.Checklist
Additional Notes
The module is completely self-contained in
dotfiles/.config/quickshell/overview/with its ownHyprlandDataandGlobalStatesservices, so it doesn't conflict with or depend on external repos. Feedback and tweaks are very welcome!Demo
app-switcher-demo.mp4