feat: waybar modulization
This commit is contained in:
parent
6fddac69d2
commit
94c073c28a
15 changed files with 669 additions and 416 deletions
85
flake.nix
85
flake.nix
|
|
@ -110,12 +110,12 @@
|
|||
};
|
||||
|
||||
hyprland = {
|
||||
# Can leave monitors empty if only has one monitors
|
||||
# Leave empty if you only have one monitor
|
||||
# This is for assign workspace to a specific monitor
|
||||
# e.g. 1, 3, 5 for "DP-3"; 2, 4, 6 for "HDMI-A-2"
|
||||
# e.g. 1, 3, 5 for the first one; 2, 4, 6 for the second one
|
||||
monitors = [
|
||||
"DP-3"
|
||||
"HDMI-A-2"
|
||||
"desc:ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271"
|
||||
"desc:Acer Technologies XV272U V3 1322131231233"
|
||||
];
|
||||
cursor-size = 32;
|
||||
xcursor-size = 24;
|
||||
|
|
@ -152,9 +152,9 @@
|
|||
};
|
||||
|
||||
hyprland = {
|
||||
# Can leave monitors empty if only has one monitors
|
||||
# Leave empty if you only have one monitor
|
||||
# This is for assign workspace to a specific monitor
|
||||
# e.g. 1, 3, 5 for "DP-3"; 2, 4, 6 for "HDMI-A-2"
|
||||
# e.g. 1, 3, 5 for the first one; 2, 4, 6 for the second one
|
||||
monitors = [ ];
|
||||
cursor-size = 32;
|
||||
xcursor-size = 24;
|
||||
|
|
@ -181,9 +181,9 @@
|
|||
};
|
||||
|
||||
hyprland = {
|
||||
# Can leave monitors empty if only has one monitors
|
||||
# Leave empty if you only have one monitor
|
||||
# This is for assign workspace to a specific monitor
|
||||
# e.g. 1, 3, 5 for "DP-3"; 2, 4, 6 for "HDMI-A-2"
|
||||
# e.g. 1, 3, 5 for the first one; 2, 4, 6 for the second one
|
||||
monitors = [ ];
|
||||
cursor-size = 32;
|
||||
xcursor-size = 24;
|
||||
|
|
@ -220,44 +220,39 @@
|
|||
nixpkgs.lib.nixosSystem {
|
||||
modules =
|
||||
[
|
||||
(
|
||||
{ config, ... }:
|
||||
{
|
||||
system.stateVersion = nix-version;
|
||||
home-manager = {
|
||||
backupFileExtension = "backup";
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = {
|
||||
inherit
|
||||
inputs
|
||||
system
|
||||
nix-version
|
||||
settings
|
||||
;
|
||||
};
|
||||
users."${username}" = {
|
||||
imports = [
|
||||
inputs.hyprland.homeManagerModules.default
|
||||
{
|
||||
home = {
|
||||
homeDirectory = "/home/${username}";
|
||||
stateVersion = nix-version;
|
||||
};
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
{
|
||||
system.stateVersion = nix-version;
|
||||
home-manager = {
|
||||
backupFileExtension = "backup";
|
||||
useUserPackages = true;
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = {
|
||||
inherit
|
||||
inputs
|
||||
system
|
||||
nix-version
|
||||
settings
|
||||
;
|
||||
};
|
||||
networking.hostName = hostname;
|
||||
nixpkgs.hostPlatform = system;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.overlays = [
|
||||
(import ./pkgs/overlays { inherit config; })
|
||||
] ++ conf.overlays;
|
||||
}
|
||||
)
|
||||
users."${username}" = {
|
||||
imports = [
|
||||
inputs.hyprland.homeManagerModules.default
|
||||
{
|
||||
home = {
|
||||
homeDirectory = "/home/${username}";
|
||||
stateVersion = nix-version;
|
||||
};
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
networking.hostName = hostname;
|
||||
nixpkgs.hostPlatform = system;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.overlays = ((import ./pkgs/overlays) ++ conf.overlays);
|
||||
}
|
||||
]
|
||||
++ common-settings.modules
|
||||
++ conf.extra-modules;
|
||||
|
|
|
|||
|
|
@ -1,96 +0,0 @@
|
|||
[
|
||||
// Primary
|
||||
{
|
||||
"output": "DP-3",
|
||||
"include": "~/.config/waybar/modules.jsonc",
|
||||
"layer": "top",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"position": "top",
|
||||
"fixed-center": true,
|
||||
"ipc": true,
|
||||
"margin-top": 0,
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
"margin-bottom": 0,
|
||||
|
||||
"modules-left": [
|
||||
"custom/os",
|
||||
"hyprland/workspaces",
|
||||
"clock",
|
||||
"custom/cava",
|
||||
"mpris"
|
||||
],
|
||||
|
||||
"modules-center": ["hyprland/window"],
|
||||
|
||||
"modules-right": [
|
||||
"wlr/taskbar",
|
||||
"custom/wireguard",
|
||||
"idle_inhibitor",
|
||||
"network",
|
||||
"cpu",
|
||||
"memory",
|
||||
"pulseaudio",
|
||||
"custom/swaync"
|
||||
]
|
||||
},
|
||||
// Secondary
|
||||
{
|
||||
"output": "HDMI-A-2",
|
||||
"include": "~/.config/waybar/modules.jsonc",
|
||||
"layer": "top",
|
||||
"exclusive": true,
|
||||
"height": 54,
|
||||
"passthrough": false,
|
||||
"position": "top",
|
||||
"fixed-center": true,
|
||||
"ipc": true,
|
||||
"margin-top": 0,
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
"margin-bottom": 0,
|
||||
|
||||
"modules-left": ["clock", "mpris"],
|
||||
|
||||
"modules-center": ["hyprland/window"],
|
||||
|
||||
"modules-right": [
|
||||
"wlr/taskbar",
|
||||
"temperature",
|
||||
"cpu",
|
||||
"memory",
|
||||
"pulseaudio"
|
||||
]
|
||||
},
|
||||
// Laptop
|
||||
{
|
||||
"output": "eDP-1",
|
||||
"include": "~/.config/waybar/modules.jsonc",
|
||||
"layer": "top",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"position": "top",
|
||||
"fixed-center": true,
|
||||
"ipc": true,
|
||||
"margin-top": 0,
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
"margin-bottom": 0,
|
||||
|
||||
"modules-left": ["custom/os", "hyprland/workspaces", "clock", "mpris"],
|
||||
|
||||
"modules-center": ["hyprland/window"],
|
||||
|
||||
"modules-right": [
|
||||
"wlr/taskbar",
|
||||
"temperature",
|
||||
"custom/wireguard",
|
||||
"idle_inhibitor",
|
||||
"network",
|
||||
"pulseaudio",
|
||||
"battery",
|
||||
"custom/swaync"
|
||||
]
|
||||
}
|
||||
]
|
||||
142
home/config/waybar/config.nix
Normal file
142
home/config/waybar/config.nix
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
{ terminal }:
|
||||
let
|
||||
modulesConfig = import ./modules.nix { inherit terminal; };
|
||||
in
|
||||
map (dev: dev // modulesConfig) [
|
||||
# Monitor 1
|
||||
{
|
||||
output = "DP-2";
|
||||
layer = "top";
|
||||
exclusive = true;
|
||||
passthrough = false;
|
||||
position = "top";
|
||||
fixed-center = true;
|
||||
ipc = true;
|
||||
margin-top = 0;
|
||||
margin-left = 0;
|
||||
margin-right = 0;
|
||||
margin-bottom = 0;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"custom/cava"
|
||||
"mpris"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"custom/wireguard"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
# Monitor 2
|
||||
{
|
||||
output = "DP-3";
|
||||
layer = "top";
|
||||
exclusive = true;
|
||||
height = 54;
|
||||
passthrough = false;
|
||||
position = "top";
|
||||
fixed-center = true;
|
||||
ipc = true;
|
||||
margin-top = 0;
|
||||
margin-left = 0;
|
||||
margin-right = 0;
|
||||
margin-bottom = 0;
|
||||
modules-left = [
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
];
|
||||
}
|
||||
# Lap
|
||||
{
|
||||
output = "eDP-1";
|
||||
layer = "top";
|
||||
exclusive = true;
|
||||
passthrough = false;
|
||||
position = "top";
|
||||
fixed-center = true;
|
||||
ipc = true;
|
||||
margin-top = 0;
|
||||
margin-left = 0;
|
||||
margin-right = 0;
|
||||
margin-bottom = 0;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"custom/wireguard"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
# Other
|
||||
{
|
||||
output = [
|
||||
"!eDP-1"
|
||||
"!DP-1"
|
||||
"!DP-3"
|
||||
];
|
||||
layer = "top";
|
||||
exclusive = true;
|
||||
passthrough = false;
|
||||
position = "top";
|
||||
fixed-center = true;
|
||||
ipc = true;
|
||||
margin-top = 0;
|
||||
margin-left = 0;
|
||||
margin-right = 0;
|
||||
margin-bottom = 0;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"mpris"
|
||||
"custom/cava"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"custom/wireguard"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
]
|
||||
|
|
@ -1,234 +0,0 @@
|
|||
{
|
||||
"hyprland/workspaces": {
|
||||
"active-only": false,
|
||||
"all-outputs": true,
|
||||
"format": "{icon}",
|
||||
"show-special": false,
|
||||
"on-click": "activate",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1",
|
||||
"persistent-workspaces": {
|
||||
"1": [],
|
||||
"2": [],
|
||||
"3": [],
|
||||
"4": []
|
||||
},
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": "<b> {:%H:%M %d/%m}</b>",
|
||||
"tooltip-format": "{:%A %d %B %Y}"
|
||||
},
|
||||
|
||||
"actions": {
|
||||
"on-click-right": "mode",
|
||||
"on-click-forward": "tz_up",
|
||||
"on-click-backward": "tz_down",
|
||||
"on-scroll-up": "shift_up",
|
||||
"on-scroll-down": "shift_down"
|
||||
},
|
||||
|
||||
"custom/os": {
|
||||
"format": "",
|
||||
"on-click": "wlogout --protocol layer-shell"
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
"max-length": 20,
|
||||
"interval": 5,
|
||||
"on-click-right": "ghostty -e btop"
|
||||
},
|
||||
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"max-length": 40,
|
||||
"separate-outputs": true,
|
||||
"offscreen-css": true,
|
||||
"offscreen-css-text": "(inactive)",
|
||||
"rewrite": {
|
||||
"nvim . (.*)": " $1",
|
||||
"(.*) - Visual Studio Code": " $1",
|
||||
"\\(\\d+\\) Discord (.*)": " $1",
|
||||
|
||||
// Firefox
|
||||
"(.*) - YouTube — Mozilla Firefox": " $1",
|
||||
"(.*)\\.pdf — Mozilla Firefox": " $1",
|
||||
"(.*) — Mozilla Firefox": " $1",
|
||||
"(.*) - YouTube Music — Mozilla Firefox": " $1",
|
||||
|
||||
// Firefox Nightly
|
||||
"(.*) - YouTube — Firefox Nightly": " $1",
|
||||
"(.*)\\.pdf — Firefox Nightly": " $1",
|
||||
"(.*) — Firefox Nightly": " $1",
|
||||
"(.*) - YouTube Music — Firefox Nightly": " $1",
|
||||
|
||||
// Zen
|
||||
"(.*) - YouTube — Zen Browser": " $1",
|
||||
"(.*) - YouTube Music — Zen Browser": " $1",
|
||||
"(.*) — Zen Browser": " $1",
|
||||
|
||||
"(.*) - VLC media player": " $1"
|
||||
}
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 30,
|
||||
"format": " {used:0.1f}GB/{total:0.1f}G",
|
||||
"format-alt-click": "click",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "{used:0.1f}GB/{total:0.1f}G",
|
||||
"on-click-right": "ghostty -e btop"
|
||||
},
|
||||
|
||||
"mpris": {
|
||||
"interval": 10,
|
||||
"format": " {status_icon} <i>{title} | {artist} </i>",
|
||||
"format-paused": " {status_icon} <i>{title} | {artist} </i>",
|
||||
"on-click": "playerctl play-pause",
|
||||
"on-click-right": "playerctl next",
|
||||
"scroll-step": 5.0,
|
||||
"smooth-scrolling-threshold": 1,
|
||||
"status-icons": {
|
||||
"paused": "",
|
||||
"playing": "",
|
||||
"stopped": ""
|
||||
},
|
||||
"max-length": 30
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": " {volume}%",
|
||||
"format-muted": " Muted",
|
||||
"format-icons": {
|
||||
"default": ["", "", " ", " "],
|
||||
"ignored-sinks": ["Easy Effects Sink"]
|
||||
},
|
||||
"scroll-step": 5.0,
|
||||
"on-click": "pavucontrol -t 3",
|
||||
"tooltip-format": "{icon} {desc} | {volume}%",
|
||||
"smooth-scrolling-threshold": 1
|
||||
},
|
||||
|
||||
"temperature": {
|
||||
"interval": 10,
|
||||
"tooltip": true,
|
||||
"hwmon-path": [
|
||||
"/sys/class/hwmon/hwmon1/temp1_input",
|
||||
"/sys/class/thermal/thermal_zone0/temp"
|
||||
],
|
||||
"critical-threshold": 82,
|
||||
"format-critical": " {temperatureC}°C",
|
||||
"format": "{icon} {temperatureC}°C",
|
||||
"format-icons": ["", "", "", ""],
|
||||
"on-click-right": "kitty -c ~/.config/kitty/kitty.conf --title btop sh -c 'btop'"
|
||||
},
|
||||
|
||||
"custom/swaync": {
|
||||
"tooltip": true,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"notification": "",
|
||||
"none": "",
|
||||
"dnd-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"dnd-none": "",
|
||||
"inhibited-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"inhibited-none": "",
|
||||
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span>",
|
||||
"dnd-inhibited-none": ""
|
||||
},
|
||||
"return-type": "json",
|
||||
"exec-if": "which swaync-client",
|
||||
"exec": "swaync-client -swb",
|
||||
"on-click": "sleep 0.1 && swaync-client -t -sw",
|
||||
"on-click-right": "swaync-client -d -sw",
|
||||
"escape": true
|
||||
},
|
||||
|
||||
"wlr/taskbar": {
|
||||
"format": " {icon} ",
|
||||
"icon-size": 20,
|
||||
"all-outputs": false,
|
||||
"tooltip-format": "{title}",
|
||||
"on-click": "activate",
|
||||
"on-click-middle": "close",
|
||||
"ignore-list": [
|
||||
"rofi",
|
||||
"firefox",
|
||||
"firefox-nightly",
|
||||
"zen",
|
||||
"kitty",
|
||||
"jetbrains-studio",
|
||||
"Brave-browser",
|
||||
"Spotify",
|
||||
"nemo",
|
||||
"vlc",
|
||||
"com.mitchellh.ghostty",
|
||||
"code",
|
||||
".virt-manager-wrapped",
|
||||
"virt-manager"
|
||||
]
|
||||
},
|
||||
|
||||
"custom/cava": {
|
||||
"exec": "~/.config/scripts/waybarCava.sh",
|
||||
"format": "{}",
|
||||
"on-click": "ghostty -e cava"
|
||||
},
|
||||
|
||||
"battery": {
|
||||
"full-at": 96,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-alt": "{icon} {time}"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format": "{ifname}",
|
||||
"format-wifi": "",
|
||||
"format-ethernet": "",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"tooltip-format-wifi": " {essid}: {signalStrength}%",
|
||||
"tooltip-format-ethernet": "{ifname} via {gwaddr} ",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
"max-length": 50,
|
||||
"interval": 5,
|
||||
"on-click": "~/.config/scripts/rofiWifi.sh"
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
|
||||
"custom/wireguard": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"connected": "",
|
||||
"disconnected": ""
|
||||
},
|
||||
"exec": "~/.config/scripts/wgStatus.sh",
|
||||
"exec-if": "which wg-quick",
|
||||
"on-click": "~/.config/scripts/wgStatus.sh toggle",
|
||||
"tooltip": true,
|
||||
"interval": 3,
|
||||
"return-type": "json",
|
||||
"escape": true
|
||||
}
|
||||
}
|
||||
246
home/config/waybar/modules.nix
Normal file
246
home/config/waybar/modules.nix
Normal file
|
|
@ -0,0 +1,246 @@
|
|||
{ terminal }:
|
||||
let
|
||||
terminalRun = "${terminal} -e";
|
||||
in
|
||||
{
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
all-outputs = true;
|
||||
format = "{icon}";
|
||||
show-special = false;
|
||||
on-click = "activate";
|
||||
on-scroll-up = "hyprctl dispatch workspace e+1";
|
||||
on-scroll-down = "hyprctl dispatch workspace e-1";
|
||||
persistent-workspaces = {
|
||||
"1" = [ ];
|
||||
"2" = [ ];
|
||||
"3" = [ ];
|
||||
"4" = [ ];
|
||||
};
|
||||
format-icons = {
|
||||
active = "";
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
clock = {
|
||||
format = "<b> {:%H:%M %d/%m}</b>";
|
||||
tooltip-format = "{:%A %d %B %Y}";
|
||||
};
|
||||
actions = {
|
||||
on-click-right = "mode";
|
||||
on-click-forward = "tz_up";
|
||||
on-click-backward = "tz_down";
|
||||
on-scroll-up = "shift_up";
|
||||
on-scroll-down = "shift_down";
|
||||
};
|
||||
"custom/os" = {
|
||||
format = "";
|
||||
on-click = "wlogout --protocol layer-shell";
|
||||
};
|
||||
cpu = {
|
||||
format = " {usage}%";
|
||||
max-length = 20;
|
||||
interval = 5;
|
||||
on-click-right = "${terminalRun} btop";
|
||||
};
|
||||
"hyprland/window" = {
|
||||
format = "{}";
|
||||
max-length = 40;
|
||||
separate-outputs = true;
|
||||
offscreen-css = true;
|
||||
offscreen-css-text = "(inactive)";
|
||||
rewrite = {
|
||||
"nvim . (.*)" = " $1";
|
||||
"(.*) - Visual Studio Code" = " $1";
|
||||
"\\(\\d+\\) Discord (.*)" = " $1";
|
||||
|
||||
# Firefox
|
||||
"(.*) - YouTube — Mozilla Firefox" = " $1";
|
||||
"(.*)\\.pdf — Mozilla Firefox" = " $1";
|
||||
"(.*) — Mozilla Firefox" = " $1";
|
||||
"(.*) - YouTube Music — Mozilla Firefox" = " $1";
|
||||
|
||||
# Firefox Nightly
|
||||
"(.*) - YouTube — Firefox Nightly" = " $1";
|
||||
"(.*)\\.pdf — Firefox Nightly" = " $1";
|
||||
"(.*) — Firefox Nightly" = " $1";
|
||||
"(.*) - YouTube Music — Firefox Nightly" = " $1";
|
||||
|
||||
# Zen
|
||||
"(.*) - YouTube — Zen Browser" = " $1";
|
||||
"(.*) - YouTube Music — Zen Browser" = " $1";
|
||||
"(.*) — Zen Browser" = " $1";
|
||||
|
||||
"(.*) - VLC media player" = " $1";
|
||||
};
|
||||
};
|
||||
memory = {
|
||||
interval = 30;
|
||||
format = " {used:0.1f}GB/{total:0.1f}G";
|
||||
format-alt-click = "click";
|
||||
tooltip = true;
|
||||
tooltip-format = "{used:0.1f}GB/{total:0.1f}G";
|
||||
on-click-right = "${terminalRun} btop";
|
||||
};
|
||||
mpris = {
|
||||
interval = 10;
|
||||
format = " {status_icon} <i>{title} | {artist} </i>";
|
||||
format-paused = " {status_icon} <i>{title} | {artist} </i>";
|
||||
on-click = "playerctl play-pause";
|
||||
on-click-right = "playerctl next";
|
||||
scroll-step = 5.0;
|
||||
smooth-scrolling-threshold = 1;
|
||||
status-icons = {
|
||||
paused = "";
|
||||
playing = "";
|
||||
stopped = "";
|
||||
};
|
||||
max-length = 30;
|
||||
};
|
||||
pulseaudio = {
|
||||
format = "{icon} {volume}%";
|
||||
format-bluetooth = " {volume}%";
|
||||
format-muted = " Muted";
|
||||
format-icons = {
|
||||
default = [
|
||||
""
|
||||
""
|
||||
" "
|
||||
" "
|
||||
];
|
||||
ignored-sinks = [
|
||||
"Easy Effects Sink"
|
||||
];
|
||||
};
|
||||
scroll-step = 5.0;
|
||||
on-click = "pavucontrol -t 3";
|
||||
tooltip-format = "{icon} {desc} | {volume}%";
|
||||
smooth-scrolling-threshold = 1;
|
||||
};
|
||||
temperature = {
|
||||
interval = 10;
|
||||
tooltip = true;
|
||||
hwmon-path = [
|
||||
"/sys/class/hwmon/hwmon1/temp1_input"
|
||||
"/sys/class/thermal/thermal_zone0/temp"
|
||||
];
|
||||
critical-threshold = 82;
|
||||
format-critical = " {temperatureC}°C";
|
||||
format = "{icon} {temperatureC}°C";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
on-click-right = "kitty -c ~/.config/kitty/kitty.conf --title btop sh -c 'btop'";
|
||||
};
|
||||
"custom/swaync" = {
|
||||
tooltip = true;
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
notification = "";
|
||||
none = "";
|
||||
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-none = "";
|
||||
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
inhibited-none = "";
|
||||
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||
dnd-inhibited-none = "";
|
||||
};
|
||||
return-type = "json";
|
||||
exec-if = "which swaync-client";
|
||||
exec = "swaync-client -swb";
|
||||
on-click = "sleep 0.1 && swaync-client -t -sw";
|
||||
on-click-right = "swaync-client -d -sw";
|
||||
escape = true;
|
||||
};
|
||||
"wlr/taskbar" = {
|
||||
format = " {icon} ";
|
||||
icon-size = 20;
|
||||
all-outputs = false;
|
||||
tooltip-format = "{title}";
|
||||
on-click = "activate";
|
||||
on-click-middle = "close";
|
||||
ignore-list = [
|
||||
"rofi"
|
||||
"firefox"
|
||||
"firefox-nightly"
|
||||
"zen"
|
||||
"kitty"
|
||||
"jetbrains-studio"
|
||||
"Brave-browser"
|
||||
"Spotify"
|
||||
"nemo"
|
||||
"vlc"
|
||||
"com.mitchellh.ghostty"
|
||||
"code"
|
||||
".virt-manager-wrapped"
|
||||
"virt-manager"
|
||||
];
|
||||
};
|
||||
"custom/cava" = {
|
||||
exec = "~/.config/scripts/waybarCava.sh";
|
||||
format = "{}";
|
||||
on-click = "${terminalRun} cava";
|
||||
};
|
||||
battery = {
|
||||
full-at = 96;
|
||||
states = {
|
||||
good = 95;
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
format-charging = " {capacity}%";
|
||||
format-plugged = " {capacity}%";
|
||||
format-alt = "{icon} {time}";
|
||||
};
|
||||
network = {
|
||||
format = "{ifname}";
|
||||
format-wifi = "";
|
||||
format-ethernet = "";
|
||||
format-disconnected = "";
|
||||
tooltip-format = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-wifi = " {essid}: {signalStrength}%";
|
||||
tooltip-format-ethernet = "{ifname} via {gwaddr} ";
|
||||
tooltip-format-disconnected = "Disconnected";
|
||||
max-length = 50;
|
||||
interval = 5;
|
||||
on-click = "~/.config/scripts/rofiWifi.sh";
|
||||
};
|
||||
idle_inhibitor = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
activated = "";
|
||||
deactivated = "";
|
||||
};
|
||||
};
|
||||
"custom/wireguard" = {
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
connected = "";
|
||||
disconnected = "";
|
||||
};
|
||||
exec = "~/.config/scripts/wgStatus.sh";
|
||||
exec-if = "which wg-quick";
|
||||
on-click = "~/.config/scripts/wgStatus.sh toggle";
|
||||
tooltip = true;
|
||||
interval = 3;
|
||||
return-type = "json";
|
||||
escape = true;
|
||||
};
|
||||
}
|
||||
|
|
@ -7,9 +7,6 @@ in
|
|||
".config/wallpapers".source = "${configDir}/wallpapers";
|
||||
".config/neofetch".source = "${configDir}/neofetch";
|
||||
".config/wlogout".source = "${configDir}/wlogout";
|
||||
".config/waybar" = {
|
||||
source = "${configDir}/waybar";
|
||||
};
|
||||
".config/btop".source = "${configDir}/btop";
|
||||
".config/rofi".source = "${configDir}/rofi";
|
||||
".config/scripts".source = "${configDir}/scripts";
|
||||
|
|
|
|||
|
|
@ -3,9 +3,7 @@ let
|
|||
firefox = "firefox-nightly";
|
||||
prefix = if nvidia-offload-enabled then "nvidia-offload" else "";
|
||||
browser = "${prefix} ${firefox}";
|
||||
noOffloadBrowser = "${firefox} -P noOffload";
|
||||
terminal = "${prefix} ghostty";
|
||||
# filemanager = "nemo";
|
||||
terminal = "ghostty";
|
||||
filemanager = "${terminal} -e yazi";
|
||||
scripts = "~/.config/scripts";
|
||||
|
||||
|
|
@ -17,7 +15,6 @@ let
|
|||
in
|
||||
[
|
||||
''${mainMod}, F, exec, ${browser}''
|
||||
''CTRL ${mainMod}, F, exec, ${noOffloadBrowser} -no-remote''
|
||||
''${mainMod}, RETURN, exec, ${terminal}''
|
||||
''CTRL ALT, T, exec, ${terminal}''
|
||||
''${mainMod}, Q, killactive, ''
|
||||
|
|
|
|||
|
|
@ -5,28 +5,15 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
swayncScript = pkgs.pkgs.writeShellScriptBin "swaync-start" ''
|
||||
#!/usr/bin/env bash
|
||||
XDG_CONFIG_HOME="$HOME/.dummy" # Prevent swaync use default gtk theme
|
||||
swaync -c "$HOME/.config/swaync/config.json" -s "$HOME/.config/swaync/style.css"
|
||||
'';
|
||||
|
||||
startupScript = pkgs.pkgs.writeShellScriptBin "start" ''
|
||||
# Fix nemo open in terminal
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec "''\'${terminal}''\'" &
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec-arg "''\'''\'" &
|
||||
|
||||
dconf write /org/gnome/desktop/interface/cursor-size ${builtins.toString xcursor-size} &
|
||||
|
||||
${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1 &
|
||||
${swayncScript}/bin/swaync-start &
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &
|
||||
dbus-update-activation-environment --systemd --all &
|
||||
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &
|
||||
hyprpaper &
|
||||
waybar -c ~/.config/waybar/config.jsonc -s ~/.config/waybar/style.css &
|
||||
systemctl --user enable --now hypridle.service &
|
||||
hyprsunset -t 3000k
|
||||
'';
|
||||
in
|
||||
''${startupScript}/bin/start''
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
[
|
||||
''desc:ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271,2560x1440@165, 0x0, 1''
|
||||
''desc:Acer Technologies XV272U V3 7422007E54222, 2560x1440@144, -1440x-540, 1, transform, 1''
|
||||
''desc:Acer Technologies XV272U V3 1322131231233, 2560x1440@180, -1440x-540, 1, transform, 1''
|
||||
''desc:LG Display 0x0665, preferred, 0x0, 1.25''
|
||||
]
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ in
|
|||
home.packages = with pkgs; [
|
||||
mpvpaper # Video Wallpaper
|
||||
yt-dlp
|
||||
hyprpaper
|
||||
hyprcursor
|
||||
];
|
||||
|
||||
|
|
@ -46,7 +45,7 @@ in
|
|||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
systemd.enable = false;
|
||||
systemd.enable = true;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
|
||||
|
|
@ -63,7 +62,7 @@ in
|
|||
settings =
|
||||
{
|
||||
debug = {
|
||||
disable_logs = false;
|
||||
disable_logs = true;
|
||||
};
|
||||
bind = import ./hypr/bind.nix {
|
||||
inherit mainMod;
|
||||
|
|
@ -90,6 +89,7 @@ in
|
|||
// input;
|
||||
};
|
||||
|
||||
# === hyprpaper === #
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
@ -100,6 +100,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
# === hyprlock === #
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
importantPrefixes = [
|
||||
|
|
@ -126,6 +127,7 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
# === hypridle === #
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
@ -170,6 +172,218 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
# === hyprsunset === #
|
||||
systemd.user.services.hyprsunset = {
|
||||
Install = {
|
||||
WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
Unit = {
|
||||
ConditionEnvironment = "WAYLAND_DISPLAY";
|
||||
Description = "Blue light filter";
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
After = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.hyprsunset}/bin/hyprsunset -t 3000k";
|
||||
Restart = "always";
|
||||
RestartSec = 2;
|
||||
};
|
||||
};
|
||||
|
||||
# === waybar === #
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = ../../home/config/waybar/style.css;
|
||||
settings = import ../../home/config/waybar/config.nix { inherit terminal; };
|
||||
systemd = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
# === swaync === #
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
control-center-height = 900;
|
||||
control-center-margin-bottom = 20;
|
||||
control-center-margin-left = 20;
|
||||
control-center-margin-right = 20;
|
||||
control-center-margin-top = 20;
|
||||
control-center-width = 500;
|
||||
fit-to-screen = false;
|
||||
hide-on-action = true;
|
||||
hide-on-clear = true;
|
||||
image-visibility = "when-available";
|
||||
keyboard-shortcuts = true;
|
||||
layer = "overlay";
|
||||
notification-body-image-height = 100;
|
||||
notification-body-image-width = 200;
|
||||
notification-icon-size = 64;
|
||||
notification-window-width = 490;
|
||||
positionX = "right";
|
||||
positionY = "top";
|
||||
script-fail-notify = true;
|
||||
timeout = 3;
|
||||
timeout-critical = 0;
|
||||
timeout-low = 2;
|
||||
transition-time = 200;
|
||||
widgets = [
|
||||
"title"
|
||||
"notifications"
|
||||
"mpris"
|
||||
];
|
||||
};
|
||||
style = # css
|
||||
''
|
||||
@define-color bgc rgba(0, 0, 0, 0.1);
|
||||
@define-color borderc #ebdbb2;
|
||||
@define-color textc #282828;
|
||||
|
||||
* {
|
||||
font-family: JetBrainsMonoNerdFontMono;
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
border-width: 3px;
|
||||
border-color: #ebdbb2;
|
||||
}
|
||||
|
||||
.control-center .notification-row:focus,
|
||||
.control-center .notification-row:hover {
|
||||
opacity: 1;
|
||||
background: @bgc;
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
margin: 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.notification {
|
||||
background: @textc;
|
||||
margin: 0px;
|
||||
border-radius: 6px;
|
||||
border-width: 3px;
|
||||
border-color: #ebdbb2;
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background: @textc;
|
||||
padding: 7px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @textc;
|
||||
color: @borderc;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 20px;
|
||||
margin-top: 9px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @borderc;
|
||||
color: @textc;
|
||||
transition: all .15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
color: @bgc;
|
||||
background: @textc;
|
||||
}
|
||||
|
||||
.summary {
|
||||
padding-top: 7px;
|
||||
font-size: 13px;
|
||||
color: @borderc;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 11px;
|
||||
color: @borderc;
|
||||
margin-right: 40px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 12px;
|
||||
color: @borderc;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background-color: @bgc;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: .5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.blank-window {
|
||||
background: alpha(black, 0.1);
|
||||
}
|
||||
|
||||
.widget-title {
|
||||
color: @borderc;
|
||||
padding: 10px 10px;
|
||||
margin: 10px 10px 5px 10px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.widget-title>button {
|
||||
font-size: 1rem;
|
||||
color: @borderc;
|
||||
padding: 10px;
|
||||
text-shadow: none;
|
||||
background: @bgc;
|
||||
box-shadow: none;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.widget-title>button:hover {
|
||||
background: @borderc;
|
||||
color: #282828;
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
margin: 10px 10px 10px 10px;
|
||||
}
|
||||
|
||||
.widget-label>label {
|
||||
font-size: 1rem;
|
||||
color: @textc;
|
||||
}
|
||||
|
||||
.widget-mpris {
|
||||
color: @borderc;
|
||||
padding: 5px 5px 5px 5px;
|
||||
margin: 10px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.widget-mpris>box>button {
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.widget-mpris-player {
|
||||
padding: 5px 5px;
|
||||
margin: 10px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
# === rofi === #
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
{ config }:
|
||||
prev: final: {
|
||||
imports = [
|
||||
./ferium.nix
|
||||
(import ./vesktop.nix { inherit config; })
|
||||
];
|
||||
}
|
||||
[
|
||||
(import ./ferium.nix)
|
||||
(import ./vesktop.nix)
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
{ config }:
|
||||
final: prev:
|
||||
let
|
||||
discordIcon = prev.lib.readFile ../../pkgs/assets/discord.svg;
|
||||
|
|
@ -10,11 +9,6 @@ in
|
|||
(prev.lib.head oldAttrs.desktopItems).override {
|
||||
name = "discord";
|
||||
desktopName = "Discord";
|
||||
exec =
|
||||
if config.hardware.nvidia.prime.offload.enableOffloadCmd == true then
|
||||
"nvidia-offload vesktop %U"
|
||||
else
|
||||
"vesktop %U";
|
||||
}
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, settings, ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
addons = with pkgs; [
|
||||
|
|
@ -44,7 +44,7 @@ in
|
|||
};
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
Restart = "always";
|
||||
RestartSec = 2;
|
||||
ExecStart = "/run/current-system/sw/bin/fcitx5";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -95,14 +95,13 @@ lib.checkListOfEnum "Nvidia Prime Mode" validModes [ nvidia-mode ] {
|
|||
};
|
||||
|
||||
environment.variables = {
|
||||
# GPU
|
||||
LIBVA_DRIVER_NAME = "nvidia";
|
||||
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||
NVD_BACKEND = "direct";
|
||||
GBM_BACKEND = "nvidia-drm";
|
||||
MOZ_DISABLE_RDD_SANDBOX = 1;
|
||||
OGL_DEDICATED_HW_STATE_PER_CONTEXT = "ENABLE_ROBUST";
|
||||
INTEL_GPU_MIN_FREQ_ON_AC = "500";
|
||||
|
||||
# If multiple monitors are connected to dGPU & iGPU,
|
||||
# make sure to put the iGPU first
|
||||
# AQ_DRM_DEVICES = "/dev/dri/card1:/dev/dri/card0";
|
||||
|
|
|
|||
|
|
@ -8,4 +8,19 @@
|
|||
# polkit-gnome execution is handled by Hyprland exec.nix
|
||||
# as hyprland do not cooperate with graphical-session.target
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
systemd.user.services.polkit-gnome-authentication-agent-1 = {
|
||||
enable = true;
|
||||
description = "Gnome authentication agent";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session-pre.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||
Restart = "always";
|
||||
RestartSec = 5;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue