Hyprland shell — QuickShell morphing UI, themed and simple
ᴘʀᴇᴠɪᴇᴡ • ɪɴsᴛᴀʟʟᴀᴛɪᴏɴ • ᴅᴇᴘᴇɴᴅᴇɴᴄɪᴇs • ᴄᴏɴᴛʀɪʙᴜᴛɪᴏɴ
Caution
This is a project is currently not ready for daily use an will only provide a simplified feature set as it is in early development.
Still on the way
- Check the dependencies make sure everything needed is installed.
- clone this repo with
git clone https://github.com/SirQuacksALot/loaf-shell ~.config/quickshell
Tip
If you use other services for specific funktionality please feel free to adapt the project to your need in your own instance.
- hyprland
- quickshell
- git
- pipewire
- UPower
- NetworkManager
- bluez
- polkit
- brightnessctl
- systemd
- awww
- curl
- libcanberra
- cliphist + w-clipboard
- lucid icons (see icons readme)
Note
This is a private hobby project and may or may not contain ai generated or influenced content as I simply and sadly do not have the time to push this project to higher grounds and get a good grip on quickshell and qml.
How to commit
- Create an issue.
Project management statement
This project is made by me and for me. If any one likes the idea's concepts and implementations driving it please feel free to reuse it.
If you want to contribut feel free to create issues and I will see if I'll find the time to implement what you request. I will however not accept any PR's as I do not have the time to check what you've contributed as stated above. If I find the time I may re-use the idea's and concept in the PR and maybe merge it but I will not guarantee it.
If you want this project to become open source managed please feel free to hard fork it and try to push it to its limits your self. It would be appreciated if you could reference this project but I do not expect you to.
Simple
local function ipcShellAction(name, scope)
return hl.dsp.exec_cmd("qs ipc call " .. scope .. " toggle " .. name)
end
hl.bind(mainMod .. " + r", ipcShellAction("launcher", ""))
hl.bind(mainMod .. " + a", ipcShellAction("shell", "controlcenter"))
hl.bind(mainMod .. " + w", ipcShellAction("shell", "wallpaper"))
hl.bind(mainMod .. " + p", ipcShellAction("shell", "powermenu"))
hl.bind(mainMod .. " + c", ipcShellAction("shell", "clipboard"))
hl.bind(mainMod .. " + i", ipcShellAction("shell", "info"))
hl.bind(mainMod .. " + n", ipcShellAction("shell", "wifi"))
hl.bind(mainMod .. " + b", ipcShellAction("shell", "bluetooth"))
hl.bind(mainMod .. " + d", ipcShellAction("shell", "default"))Submap
local function shellViewIpc(scope, name)
return "qs ipc call " .. scope .. " toggle " .. name
end
local function shellAction(cmd)
return hl.dsp.exec_cmd(cmd .. " && hyprctl dispatch 'hl.dsp.submap(\"reset\")'")
end
hl.bind(mainMod .. " + I", hl.dsp.submap("shell"))
hl.define_submap("shell", function()
hl.bind(mainMod .. " + r", shellAction(shellViewIpc("launcher", "")))
hl.bind(mainMod .. " + a", shellAction(shellViewIpc("shell", "controlcenter")))
hl.bind(mainMod .. " + w", shellAction(shellViewIpc("shell", "wallpaper")))
hl.bind(mainMod .. " + p", shellAction(shellViewIpc("shell", "powermenu")))
hl.bind(mainMod .. " + c", shellAction(shellViewIpc("shell", "clipboard")))
hl.bind(mainMod .. " + i", shellAction(shellViewIpc("shell", "info")))
hl.bind(mainMod .. " + n", shellAction(shellViewIpc("shell", "wifi")))
hl.bind(mainMod .. " + b", shellAction(shellViewIpc("shell", "bluetooth")))
hl.bind(mainMod .. " + d", shellAction(shellViewIpc("shell", "default")))
hl.bind("escape", hl.dsp.submap("reset"))
end)
for i = 1, 10 do
local key = i % 10
hl.bind("ALT + " .. key, hl.dsp.focus({ workspace = i }), { submap_universal = true })
end
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀╭───────────────────────────────╮
⠀⠀⠀⠀⠀⠀⢀⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀ │ Works on my machine. │
⠀⠀⠀⠀⠀⢀⣾⣿⡇⠀⠀⠀⠀⠀⢀⣼⡇ │ Now it can work on yours too. │
⠀⠀⠀⠀⠀⣸⣿⣿⡇⠀⠀⠀⠀⣴⣿⣿⠃ ╰───────────────────────────────╯
⠀⠀⠀⠀⢠⣿⣿⣿⣇⠀⠀⢀⣾⣿⣿⣿⠀ /
⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⡟⠀
⠀⠀⢰⡿⠉⠀⡜⣿⣿⣿⡿⠿⢿⣿⣿⠃⠀
⠒⠒⠸⣿⣄⡘⣃⣿⣿⡟⢰⠃⠀⢹⣿⡇⠀
⠚⠉⠀⠈⠻⣿⣿⣿⣿⣿⣮⣤⣤⣿⡟⠁⠀
⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠛⠛⠛⠁⠀⠒⠤
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠀⠀