Polish Waybar and add Bluetooth and walker service

Refactor Waybar config and CSS: add rgb/radius helpers and tweak
sizes, spacing, colors, tooltips, icons and transitions

Enable gtk-layer-shell and reload-on-change. Move exec-once into
settings and adjust modules and workspaces formatting

Add blueman and bluez to basic apps for Bluetooth support

Add elephant to home packages and add a systemd user service for
walker; change Hyprland exec-once to enable and start elephant.service
This commit is contained in:
kptltd00m
2026-06-28 13:58:14 +02:00
parent 849b0f0cfd
commit beda752703
4 changed files with 183 additions and 59 deletions
+16 -16
View File
@@ -1,16 +1,16 @@
# Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues!
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, issues fix, ...).
- Create a Pull Request against the main branch of Nixy.
> [!TIP]
> To update the README, change the `./.github/assets/README_template.md`
> [!IMPORTANT]
> Don't push your host's folder
# Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the issues!
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, issues fix, ...).
- Create a Pull Request against the main branch of Nixy.
> [!TIP]
> To update the README, change the `./.github/assets/README_template.md`
> [!IMPORTANT]
> Don't push your host's folder
+3
View File
@@ -26,6 +26,9 @@
pkgs.wifitui # TUI for managing wifi
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
blueman # Bluetooth manager (blueman-manager, blueman-adapters, blueman-sendto)
bluez # Bluetooth stack tools (bluetoothctl)
# I love CLIs
httpie # Command-line HTTP client, a user-friendly cURL replacement
+23 -3
View File
@@ -1,9 +1,29 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
home.packages = with pkgs; [
walker
elephant
];
systemd.user.services.walker = {
Unit = {
Description = "Walker application service";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${pkgs.walker}/bin/walker --gapplication-service";
Restart = "on-failure";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
wayland.windowManager.hyprland.settings.exec-once = [
"walker --gapplication-service"
"sh -lc 'elephant service enable && systemctl --user start elephant.service'"
];
}
}
+141 -40
View File
@@ -1,6 +1,14 @@
{pkgs, config, ...}: let
{ pkgs, config, ... }:
let
colors = config.lib.stylix.colors;
in {
rgb = base:
"${colors."${base}-rgb-r"}, ${colors."${base}-rgb-g"}, ${colors."${base}-rgb-b"}";
radius = toString config.theme.bar-rounding;
in
{
home.packages = with pkgs; [
waybar
];
@@ -8,17 +16,25 @@ in {
xdg.configFile."waybar/config".text = builtins.toJSON {
layer = "top";
position = "top";
height = 34;
spacing = 8;
margin-top = 8;
margin-left = 8;
margin-right = 8;
height = 38;
spacing = 10;
"margin-top" = 8;
"margin-left" = 8;
"margin-right" = 8;
"gtk-layer-shell" = true;
"reload_style_on_change" = true;
"modules-left" = [
"hyprland/workspaces"
];
"modules-center" = [
"hyprland/window"
];
"modules-right" = [
"tray"
"network"
@@ -31,55 +47,73 @@ in {
"disable-scroll" = true;
"all-outputs" = true;
"on-click" = "activate";
"persistent-workspaces" = {
"*" = 5;
};
};
"hyprland/window" = {
format = "{}";
"max-length" = 80;
"max-length" = 70;
"separate-outputs" = true;
};
tray = {
"icon-size" = 18;
spacing = 10;
spacing = 8;
"icon-size" = 20;
};
network = {
format-wifi = "󰖩 {signalStrength}%";
format-ethernet = "󰈀 {ifname}";
format-linked = "󰈀 {ifname}";
format-disconnected = "󰖪 Disconnected";
tooltip-format = "{ifname} via {gwaddr}";
interval = 2;
"format-wifi" = "󰖩 {signalStrength}%";
"format-ethernet" = "󰈀 {ifname}";
"format-linked" = "󰈀 {ifname}";
"format-disconnected" = "󰖪";
"tooltip-format" = "{essid}\n{ipaddr}";
};
pulseaudio = {
"scroll-step" = 5;
format = "󰕾 {volume}%";
format-muted = "󰖁 Muted";
"format-muted" = "󰖁";
tooltip = true;
};
clock = {
format = " {:%H:%M}";
tooltip-format = "<big>{:%A, %B %d, %Y}</big>";
interval = 1;
format = "󰥔 {:%H:%M}";
"tooltip-format" = "<big>{:%A, %d %B %Y}</big>";
};
};
xdg.configFile."waybar/style.css".text = ''
* {
border: none;
border-radius: 0;
min-height: 0;
font-family: "${config.stylix.fonts.sansSerif.name}", "${config.stylix.fonts.monospace.name}", sans-serif;
font-family:
"${config.stylix.fonts.sansSerif.name}",
"${config.stylix.fonts.monospace.name}",
sans-serif;
font-size: 13px;
}
window#waybar {
background: #${colors.base00}E6;
background: transparent;
color: #${colors.base05};
}
#waybar {
background: transparent;
.modules-left,
.modules-center,
.modules-right {
margin: 6px 0;
}
#workspaces,
@@ -88,19 +122,40 @@ in {
#network,
#pulseaudio,
#clock {
margin: 8px 0;
padding: 0 12px;
border-radius: ${toString config.theme.bar-rounding}px;
background: #${colors.base01}E6;
border: 1px solid #${colors.base02};
background: rgba(${rgb "base01"}, 0.82);
border: 1px solid rgba(${rgb "base03"}, 0.45);
border-radius: ${radius}px;
padding: 0 14px;
margin: 6px 4px;
transition:
background-color 180ms ease,
border-color 180ms ease,
color 180ms ease;
}
#workspaces {
padding: 4px;
}
#workspaces button {
padding: 0 10px;
margin: 0 2px;
border-radius: ${toString config.theme.bar-rounding}px;
color: #${colors.base05};
background: transparent;
color: #${colors.base04};
padding: 0 12px;
margin: 0 2px;
border-radius: ${radius}px;
transition: all 180ms ease;
}
#workspaces button:hover {
background: rgba(${rgb "base02"}, 0.70);
color: #${colors.base05};
}
#workspaces button.active {
@@ -108,21 +163,67 @@ in {
color: #${colors.base00};
}
#workspaces button:hover {
background: #${colors.base02};
#workspaces button.urgent {
background: #${colors.base08};
color: #${colors.base00};
}
#window {
min-width: 180px;
min-width: 260px;
padding-left: 18px;
padding-right: 18px;
color: #${colors.base05};
}
#window.empty {
background: transparent;
border: none;
}
#tray {
padding-left: 10px;
padding-right: 10px;
}
#network {
color: #${colors.base0C};
}
#network.disconnected {
color: #${colors.base08};
}
#pulseaudio {
color: #${colors.base0B};
}
#network.disconnected,
#pulseaudio.muted {
color: #${colors.base08};
}
#clock {
color: #${colors.base0D};
font-weight: 600;
}
tooltip {
background: rgba(${rgb "base00"}, 0.95);
border: 1px solid rgba(${rgb "base03"}, 0.70);
border-radius: ${radius}px;
}
tooltip label {
color: #${colors.base05};
}
'';
wayland.windowManager.hyprland.settings.exec-once = [
"waybar"
];
}
wayland.windowManager.hyprland.settings = {
exec-once = [
"waybar"
];
};
}