A glass bar and keyboard launcher for Hyprland, written in Quickshell. Pills merge around the clock, the workspace mark bounces at the edges, and the wallpaper moves behind the glass.
Switch workspaces to send the glass selection mark across your apps. The wallpaper follows with parallax. Drag a window onto another workspace or scroll across the strip to switch.
Quiet controls fold into the right drawer. Music and timers merge into the clock, expand when you need them, and shift aside for notifications. Drag modules to rearrange them and pin your favourites.
Launch apps, preview files, switch windows and search your clipboard. Read mail in place, browse your music, do a calculation, or type a task, timer, alarm or calendar event. Type ? to browse the modes.
Check your calendar, clear mail, tick off tasks and catch up on feeds without opening another window. Popovers grow from the bar and support keyboard navigation.
Weather, per-app volume, Wi-Fi, Bluetooth and system controls live in the same place. Search settings to change the layout, fonts or motion, including Reduce Motion and Reduce Transparency.
All demos use fictional content. Click a GIF for its 60 fps video. Screenshots and videos.
Dewdrop is a personal config built on Arch Linux. It needs Quickshell 0.3.2 or newer and Hyprland 0.56 or newer with a Lua config (hyprland.lua).
In an existing Hyprland session, install Quickshell from Arch's official repository and the base tools and fonts:
sudo pacman -Syu --needed quickshell git python pipewire pipewire-pulse wireplumber libpulse libnotify xdg-utils imagemagick coreutils ttf-nerd-fonts-symbols inter-font ttf-iosevkaterm-nerd footfoot is the fallback terminal; kitty, alacritty and ghostty are also detected. Keep your existing terminal if you have one.
If ~/.config/quickshell already contains another config, move it aside first.
git clone https://github.com/tkutsu/dewdrop ~/.config/quickshellAdd the integration near the top of ~/.config/hypr/hyprland.lua, before your own overrides:
dofile(os.getenv("HOME") .. "/.config/quickshell/hypr/dewdrop.lua")This supplies the blur, popup dismissal and workspace helpers. It also closes gaps in numbered workspaces as they empty. Keep the top outer gap at 8 pixels so windows line up below the bar; for example, hl.config({ general = { gaps_out = 8 } }) sets all sides to 8.
Add startup and a launcher shortcut to the same file. Pick another key if Super+Space is already taken; see Hyprland's keybind syntax.
hl.on("hyprland.start", function()
hl.exec_cmd("qs -n")
end)
hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("qs ipc call launcher toggle"))Reload the Hyprland config, then start Dewdrop in a terminal:
hyprctl reload
qs -nOpen the gear in the bar to choose modules, your wallpaper folder and default apps. The first run creates settings.json; edits there reload on save. The default settings explain each option.
Install Themis Icons for the monochrome app icons shown in the demos. Other themes work by changing the icon-theme pragma in shell.qml.
Optional features need their own tools or services. File search uses fd, the calculator uses libqalculate, and clipboard history uses cliphist with a running watcher. Mail, Tasks, Calendar and YouTube require your own Google OAuth client. The setup guide covers those dependencies, Google sign-in and the launcher shortcuts. Android phone alarms have a separate tutorial.
| Symptom | What To Check |
|---|---|
| The bar does not start | Run qs -n from a terminal inside Hyprland and read the first error. Check qs --version and hyprctl version. For a running instance, qs log -t 80 shows recent messages. |
| It broke after a Qt update | Quickshell must match the installed Qt libraries. Fully update Arch with sudo pacman -Syu; if you built Quickshell yourself, rebuild it against the updated Qt. |
| Glass looks flat, or outside clicks do not close popovers | Check that hypr/dewdrop.lua is loaded, reload Hyprland and check for config errors. Turn off Reduce Transparency in Dewdrop's settings if you want the glass effect. |
| Icons are boxes or look different | Install Symbols Nerd Font for glyphs and Themis Icons for the app icons shown here. Relaunch the bar after installing fonts or an icon theme. |
| A module is missing or clipboard history is empty | Check its visibility in Settings and its optional dependencies. Wi-Fi needs NetworkManager running when the bar starts. Clipboard history needs wl-paste --watch cliphist store running in your session. |
| Google features fail or ask to reconnect every week | Enable the relevant APIs in your Cloud project and follow Google setup. Google expires these refresh tokens after 7 days in Testing. Run scripts/gtasks-auth --check from the repo to check the saved sign-in. |
shell.qml is the entry point. The editable defaults and this machine's
settings.json stay beside it.
| Directory | Contents |
|---|---|
src/core/ |
Settings, theme, paths and shared shell state |
src/bar/ |
Bar layout and pill ordering |
src/components/ |
Shared controls, popups and visual effects |
src/modules/ |
Bar modules, launcher and settings windows |
src/services/ |
Desktop integrations and data services |
src/lib/ |
Shared JavaScript helpers |
assets/ |
Icons, shaders and sounds |
scripts/ |
Runtime helpers and maintenance tools |
tests/ |
Regression checks, fixtures and the fresh-install runner |
docs/ |
Setup guides and demo media |
Run a check from the checkout with python3 tests/test-popup-standards.py,
for example. python3 tests/test-shell-load.py compiles the real entry point
and its imports without creating the desktop windows; it needs a Wayland
connection for Quickshell's window types.
MIT. Bundled icons and the alarm sound retain their own licenses; see icon credits.





