working hyprland config + waybar for home computer

This commit is contained in:
Christoph Hollizeck 2024-09-11 10:16:14 +02:00
parent a87710befa
commit f94e8845b3
7 changed files with 321 additions and 36 deletions

View file

@ -41,11 +41,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1725777030, "lastModified": 1726036322,
"narHash": "sha256-mieHgCmdbr/Tok3djbEVnNyLtnxEv5PHngN8wBu+RJA=", "narHash": "sha256-9Hwl4lzB5yFah00OaXSMDPDubCy99wtLgsYxMVpMwlM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "7c59cc75e7d2328753b00766ab0a78a075609b25", "rev": "3e50a3c915882f07cb3f6c246f09febc4ad36c3e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -320,11 +320,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725781935, "lastModified": 1726036828,
"narHash": "sha256-o6LRtdpgBTzev9n243Ktu3rn0/qsv0frFyJwU6vJsdE=", "narHash": "sha256-ZQHbpyti0jcAKnwQY1lwmooecLmSG6wX1JakQ/eZNeM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "ec4c6928bbacc89cf10e9c959a7a47cbaad95344", "rev": "8a1671642826633586d12ac3158e463c7a50a112",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -395,11 +395,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1725752806, "lastModified": 1725976150,
"narHash": "sha256-UwmsA7O9Wofu6YWldyR8NDv1bzxNICIg85/uOrVq69Y=", "narHash": "sha256-Dv4XEWRcVFZhBDbj11/zuuXyf7TGHFVU1IGH9W/yPX8=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "312411fc7073143a8bf1fc3ba23ef403b7d15eee", "rev": "155d44016d0cb11332c454db73d59030cdbd7b13",
"revCount": 5195, "revCount": 5209,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@ -592,11 +592,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1725716377, "lastModified": 1725885300,
"narHash": "sha256-7NzW9O/cAw7iWzRfh7Oo/SuSudL4a1YTKS6yoh3tMck=", "narHash": "sha256-5RLEnou1/GJQl+Wd+Bxaj7QY7FFQ9wjnFq1VNEaxTmc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "04a1cda0c1725094a4db703cccbb956b7558f5a6", "rev": "166dee4f88a7e3ba1b7a243edb1aca822f00680e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -614,11 +614,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725358307, "lastModified": 1725882169,
"narHash": "sha256-su/Nzp2X8JlaD9wPYQGXeTilaVa5H06X7A3kqCLJNuo=", "narHash": "sha256-v5L+Dh6KdyycIgcdIc6SQ1fRNNvFJmYz02+fyeptA2o=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "8a89995f745b1a9029d654c391a0f62ca03f7fe7", "rev": "34b95b3962f5b3436d4bae5091d1b2ff7c1eb180",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -721,11 +721,11 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1724819573, "lastModified": 1725634671,
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=", "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2", "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -758,11 +758,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1725630423, "lastModified": 1725985110,
"narHash": "sha256-gNCLk3Zg7JlAwmWbVHTH6f3+iqdeQ4fheOotCZy8x5M=", "narHash": "sha256-0HKj+JI6rtxaE6Kzcd6HyFNbEFJRsLy5DoNgVF1pyRM=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "08c7bbc2dbe4dcc8968484f1a0e1e6fe7a1d4f6d", "rev": "bcc708992104c2059f310fbc3ac00bfc377f9ea8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -846,11 +846,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1725765163, "lastModified": 1725922448,
"narHash": "sha256-rfd2c47iVSFI6bRYy5l8wRijRBaYDeU7dM8XCDUGqlA=", "narHash": "sha256-ruvh8tlEflRPifs5tlpa0gkttzq4UtgXkJQS7FusgFE=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "b68757cd2c3fa66d6ccaa0d046ce42a9324e0070", "rev": "cede1a08039178ac12957733e97ab1006c6b6892",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -967,11 +967,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725203932, "lastModified": 1725228143,
"narHash": "sha256-VLULC/OnI+6R9KEP2OIGk+uLJJsfRlaLouZ5gyFd2+Y=", "narHash": "sha256-kbSiPA5oXiz1+1eVoRslMi5wylHD6SDT8dS9eZAxXAM=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "2425e8f541525fa7409d9f26a8ffaf92a3767251", "rev": "11e15b437e7efc39e452f36e15a183225d6bfa39",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -985,11 +985,11 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1725529174, "lastModified": 1726001766,
"narHash": "sha256-6hhiPXXZw24jaQJKJgaLIZ9Z8iEs25Sb+xMqEv6t2Go=", "narHash": "sha256-ADvEWfo0AuHR06ah1nnzOyhsG05/b5QpUc7vFNbiEfM=",
"owner": "MarceColl", "owner": "MarceColl",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "5fce6f9bc9b2bda1f0281fcbef3160903ddc5882", "rev": "06505a088396e2c0b9ad100302502783a6bcdb40",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -25,6 +25,8 @@
inputs.nixpkgs.follows = "unstable"; inputs.nixpkgs.follows = "unstable";
}; };
###
# hyprland stuff
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hyprland-plugins = { hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";

View file

@ -0,0 +1,39 @@
{
"height": 24, // Waybar height (to be removed for auto height)
"modules-left": ["hyprland/workspaces"],
"modules-center": ["hyprland/window"],
"modules-right": ["tray", "idle_inhibitor", "pulseaudio", "clock"],
"hyprland/window": {
"separate-outputs": true
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
"timezone": "Europe/Berlin",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:L%Y-%m-%d<small> [%a] </small>%H:%M}"
},
"pulseaudio": {
"scroll-step": 5, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": " {icon} {volume}% {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": "{format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"format-icons": {
"default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "foot -a pw-top pw-top"
},
}

View file

@ -0,0 +1,35 @@
{
lib,
config,
options,
pkgs,
namespace,
...
}:
let
cfg = config.${namespace}.graphical-interface.desktop-manager.addons.waybar;
inherit (lib)
mkEnableOption
mkOption
mkIf
types
;
in
{
options.${namespace}.graphical-interface.desktop-manager.addons.waybar = {
enable = mkEnableOption "Waybar";
package = mkOption {
type = types.package;
default = pkgs.waybar;
description = "The package to use for Waybar";
};
};
config = mkIf cfg.enable {
wyrdgard.home.file = {
".config/waybar/config".source = ./config;
".config/waybar/style.css".source = ./style.css;
};
};
}

View file

@ -0,0 +1,182 @@
window#waybar {
background: transparent;
/* background-color: rgba(43, 48, 59, 0.5); */
/* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
#waybar.empty #window {
background-color: transparent;
}
#workspaces {
}
#window {
margin: 2px;
padding-left: 8px;
padding-right: 8px;
background-color: rgba(0,0,0,0.3);
font-size:14px;
font-weight: bold;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
border-top: 2px solid #c9545d;
}
#workspaces button {
padding: 0 4px;
/* background-color: rgba(0,0,0,0.3); */
}
#workspaces button:hover {
}
#workspaces button.focused {
/* box-shadow: inset 0 -2px #c9545d; */
background-color: rgba(0,0,0,0.3);
color:#c9545d;
border-top: 2px solid #c9545d;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#mpd {
margin: 2px;
padding-left: 4px;
padding-right: 4px;
background-color: rgba(0,0,0,0.3);
color: #ffffff;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
font-size:14px;
font-weight: bold;
}
#battery icon {
color: red;
}
#battery.charging, #battery.plugged {
color: #ffffff;
background-color: #26A65B;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.warning:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#network.disconnected {
background-color: #f53c3c;
}
#temperature.critical {
background-color: #eb4d4b;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
/*
window#waybar.solo {
background-color: #FFFFFF;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
*/

View file

@ -40,6 +40,8 @@ in
wl-screenrec wl-screenrec
wlr-randr wlr-randr
grimblast grimblast
waybar
]; ];
services.xserver = enabled; services.xserver = enabled;
@ -52,6 +54,8 @@ in
}; };
wyrdgard = { wyrdgard = {
graphical-interface.desktop-manager.addons.waybar = enabled;
nix.extra-substituters.${cachix-url} = { nix.extra-substituters.${cachix-url} = {
key = cachix-key; key = cachix-key;
}; };
@ -66,8 +70,16 @@ in
"$mod" = "SUPER"; "$mod" = "SUPER";
exec-once = [ exec-once = [
"steam" "waybar"
"discord" "[workspace 3 silent] steam"
"[workspace 2 silent] discord"
"[workspace 2 silent] noisetorch"
"[workspace 4 silent] 1password"
"[workspace 1 silent] zen"
];
windowrulev2 = [
"workspace 3 silent, class:^(steam)$, title:^(Steam)"
]; ];
general = { general = {
@ -82,6 +94,10 @@ in
resize_on_border = true; resize_on_border = true;
}; };
misc = {
force_default_wallpaper = 2;
};
decoration = { decoration = {
rounding = 16; rounding = 16;
blur = { blur = {

View file

@ -36,10 +36,21 @@ in
#Vertical #Vertical
"HDMI-A-1,1920x1080@144, auto-right, 1, transform, 1" "HDMI-A-1,1920x1080@144, auto-right, 1, transform, 1"
]; ];
exec-once = [
"hyprctl dispatch moveworkspacetomonitor 4 HDMI-A-1"
];
workspace = [ workspace = [
"1, monitor:DP-2" "1, monitor:DP-2, persistant:true"
"2, monitor:HDMI-A-1" "2, monitor:HDMI-A-1, persistant:true"
"3, monitor:DP-2 on-created-empty:zen" "3, monitor:DP-2, persistant:true, defaultName:3 Steam"
"4, monitor:HDMI-A-1: persistant:true, defaultName:4 1Password"
"5, monitor:DP-2, persistant:true"
];
windowrulev2 = [
"workspace 2, class:^(steam)$, title:^(Friends List)"
]; ];
}; };
}; };