These are my Quickshell bar configs for Hyprland and Sway. Quickshell is a Qt/QML based shell framework that lets you build custom desktop widgets - bars, dashboards, whatever you want really.
Both configs have the same feature set and visual style, just adapted for each compositor’s IPC.
You need to install Quickshell first before you can use these configs. Here’s how to do it on different distros.
The easiest way. Just add it to your system packages:
{
environment.systemPackages = with pkgs; [
quickshell
];
}Then rebuild:
sudo nixos-rebuild switchIf you want the latest git version, you can use the flake:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
quickshell.url = "github:outfoxxed/quickshell";
};
outputs = { self, nixpkgs, quickshell, ... }: {
nixosConfigurations.yourhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
({ pkgs, ... }: {
environment.systemPackages = [
quickshell.packages.${pkgs.system}.default
];
})
];
};
};
}There’s an AUR package, so just use your favorite AUR helper:
yay -S quickshell-gitOr with paru:
paru -S quickshell-gitFor Gentoo you’ll need to build from source. Make sure you have the dependencies first:
emerge --ask dev-qt/qtbase dev-qt/qtdeclarative dev-qt/qtwaylandThen clone and build:
git clone https://github.com/outfoxxed/quickshell
cd quickshell
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
sudo cmake --install buildClone this repo somewhere:
git clone https://github.com/tonybanters/quickshell-btwCopy the hyprland config to your quickshell config directory:
mkdir -p ~/.config/quickshell
cp -r quickshell-btw/hyprland/* ~/.config/quickshell/
cp -r quickshell-btw/icons ~/.config/quickshell/Add quickshell to your hyprland config:
exec-once = quickshellOr run it manually to test:
quickshellIf you want to run a specific config file:
qs -p ~/.config/quickshell/shell.qmlCopy the sway config to your quickshell config directory:
mkdir -p ~/.config/quickshell
cp -r quickshell-btw/sway/* ~/.config/quickshell/
cp -r quickshell-btw/icons ~/.config/quickshell/Add quickshell to your sway config:
exec quickshellYou’ll also want to disable sway’s default bar:
bar {
mode invisible
}Or just remove the bar block entirely from your sway config.
Run it manually to test:
quickshellBoth configs use the same color scheme (Tokyo Night) and font settings. You can customize them by editing the properties at the top of shell.qml:
// Theme colors
property color colBg: "#1a1b26"
property color colFg: "#a9b1d6"
property color colMuted: "#444b6a"
property color colCyan: "#0db9d7"
property color colPurple: "#ad8ee6"
property color colRed: "#f7768e"
property color colYellow: "#e0af68"
property color colBlue: "#7aa2f7"
// Font
property string fontFamily: "JetBrainsMono Nerd Font"
property int fontSize: 14The icon path is hardcoded to my home directory, so you’ll probably want to change that:
source: "file:///home/tony/.config/quickshell/icons/tonybtw.png"Just swap out the path to wherever you put the icons, or use your own.
Both configs include:
| Widget | Description |
|---|---|
| Workspaces | Clickable workspace indicators (1-9) |
| Layout | Current layout mode (Tiled/Floating/etc) |
| Active Window | Currently focused window title |
| Kernel | Running kernel version |
| CPU | CPU usage percentage |
| Memory | RAM usage percentage |
| Disk | Root partition usage percentage |
| Volume | PipeWire volume level (uses wpctl) |
| Clock | Date and time |
The sway config shows sway-specific layouts (Horizontal, Vertical, Tabbed, Stacking) while the hyprland config shows hyprland layouts (Tiled, Floating, Fullscreen).