forked from KptltD00M/nixy
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:
@@ -26,6 +26,9 @@
|
|||||||
pkgs.wifitui # TUI for managing wifi
|
pkgs.wifitui # TUI for managing wifi
|
||||||
pkgs-nur-hadi.usbguard-tui # TUI for managing USBGuard rules
|
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
|
# I love CLIs
|
||||||
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
httpie # Command-line HTTP client, a user-friendly cURL replacement
|
||||||
|
|||||||
@@ -1,9 +1,29 @@
|
|||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
walker
|
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 = [
|
wayland.windowManager.hyprland.settings.exec-once = [
|
||||||
"walker --gapplication-service"
|
"sh -lc 'elephant service enable && systemctl --user start elephant.service'"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
+140
-39
@@ -1,6 +1,14 @@
|
|||||||
{pkgs, config, ...}: let
|
{ pkgs, config, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
colors = config.lib.stylix.colors;
|
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; [
|
home.packages = with pkgs; [
|
||||||
waybar
|
waybar
|
||||||
];
|
];
|
||||||
@@ -8,17 +16,25 @@ in {
|
|||||||
xdg.configFile."waybar/config".text = builtins.toJSON {
|
xdg.configFile."waybar/config".text = builtins.toJSON {
|
||||||
layer = "top";
|
layer = "top";
|
||||||
position = "top";
|
position = "top";
|
||||||
height = 34;
|
height = 38;
|
||||||
spacing = 8;
|
|
||||||
margin-top = 8;
|
spacing = 10;
|
||||||
margin-left = 8;
|
|
||||||
margin-right = 8;
|
"margin-top" = 8;
|
||||||
|
"margin-left" = 8;
|
||||||
|
"margin-right" = 8;
|
||||||
|
|
||||||
|
"gtk-layer-shell" = true;
|
||||||
|
"reload_style_on_change" = true;
|
||||||
|
|
||||||
"modules-left" = [
|
"modules-left" = [
|
||||||
"hyprland/workspaces"
|
"hyprland/workspaces"
|
||||||
];
|
];
|
||||||
|
|
||||||
"modules-center" = [
|
"modules-center" = [
|
||||||
"hyprland/window"
|
"hyprland/window"
|
||||||
];
|
];
|
||||||
|
|
||||||
"modules-right" = [
|
"modules-right" = [
|
||||||
"tray"
|
"tray"
|
||||||
"network"
|
"network"
|
||||||
@@ -31,55 +47,73 @@ in {
|
|||||||
"disable-scroll" = true;
|
"disable-scroll" = true;
|
||||||
"all-outputs" = true;
|
"all-outputs" = true;
|
||||||
"on-click" = "activate";
|
"on-click" = "activate";
|
||||||
|
|
||||||
|
"persistent-workspaces" = {
|
||||||
|
"*" = 5;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"hyprland/window" = {
|
"hyprland/window" = {
|
||||||
format = "{}";
|
format = "{}";
|
||||||
"max-length" = 80;
|
"max-length" = 70;
|
||||||
"separate-outputs" = true;
|
"separate-outputs" = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
tray = {
|
tray = {
|
||||||
"icon-size" = 18;
|
spacing = 8;
|
||||||
spacing = 10;
|
"icon-size" = 20;
|
||||||
};
|
};
|
||||||
|
|
||||||
network = {
|
network = {
|
||||||
format-wifi = " {signalStrength}%";
|
interval = 2;
|
||||||
format-ethernet = " {ifname}";
|
|
||||||
format-linked = " {ifname}";
|
"format-wifi" = " {signalStrength}%";
|
||||||
format-disconnected = " Disconnected";
|
"format-ethernet" = " {ifname}";
|
||||||
tooltip-format = "{ifname} via {gwaddr}";
|
"format-linked" = " {ifname}";
|
||||||
|
"format-disconnected" = "";
|
||||||
|
|
||||||
|
"tooltip-format" = "{essid}\n{ipaddr}";
|
||||||
};
|
};
|
||||||
|
|
||||||
pulseaudio = {
|
pulseaudio = {
|
||||||
|
"scroll-step" = 5;
|
||||||
|
|
||||||
format = " {volume}%";
|
format = " {volume}%";
|
||||||
format-muted = " Muted";
|
"format-muted" = "";
|
||||||
|
|
||||||
tooltip = true;
|
tooltip = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
clock = {
|
clock = {
|
||||||
format = " {:%H:%M}";
|
interval = 1;
|
||||||
tooltip-format = "<big>{:%A, %B %d, %Y}</big>";
|
|
||||||
|
format = " {:%H:%M}";
|
||||||
|
"tooltip-format" = "<big>{:%A, %d %B %Y}</big>";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."waybar/style.css".text = ''
|
xdg.configFile."waybar/style.css".text = ''
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
|
||||||
min-height: 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;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
window#waybar {
|
window#waybar {
|
||||||
background: #${colors.base00}E6;
|
background: transparent;
|
||||||
color: #${colors.base05};
|
color: #${colors.base05};
|
||||||
}
|
}
|
||||||
|
|
||||||
#waybar {
|
.modules-left,
|
||||||
background: transparent;
|
.modules-center,
|
||||||
|
.modules-right {
|
||||||
|
margin: 6px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces,
|
#workspaces,
|
||||||
@@ -88,19 +122,40 @@ in {
|
|||||||
#network,
|
#network,
|
||||||
#pulseaudio,
|
#pulseaudio,
|
||||||
#clock {
|
#clock {
|
||||||
margin: 8px 0;
|
background: rgba(${rgb "base01"}, 0.82);
|
||||||
padding: 0 12px;
|
|
||||||
border-radius: ${toString config.theme.bar-rounding}px;
|
border: 1px solid rgba(${rgb "base03"}, 0.45);
|
||||||
background: #${colors.base01}E6;
|
|
||||||
border: 1px solid #${colors.base02};
|
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 {
|
#workspaces button {
|
||||||
padding: 0 10px;
|
|
||||||
margin: 0 2px;
|
|
||||||
border-radius: ${toString config.theme.bar-rounding}px;
|
|
||||||
color: #${colors.base05};
|
|
||||||
background: transparent;
|
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 {
|
#workspaces button.active {
|
||||||
@@ -108,21 +163,67 @@ in {
|
|||||||
color: #${colors.base00};
|
color: #${colors.base00};
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button:hover {
|
#workspaces button.urgent {
|
||||||
background: #${colors.base02};
|
background: #${colors.base08};
|
||||||
|
color: #${colors.base00};
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#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 {
|
#pulseaudio.muted {
|
||||||
color: #${colors.base08};
|
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 = [
|
wayland.windowManager.hyprland.settings = {
|
||||||
"waybar"
|
exec-once = [
|
||||||
];
|
"waybar"
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user