Compare commits
No commits in common. "f077fa9d3f9168f8806db5cfd7be0ac84b6bcd13" and "ce6ac2cb630f397bab065aeb5addff4e723070b3" have entirely different histories.
f077fa9d3f
...
ce6ac2cb63
26 changed files with 1422 additions and 134 deletions
|
|
@ -8,6 +8,11 @@ lib.mkIf (config.machine == "fire") {
|
||||||
percentageCritical = 5;
|
percentageCritical = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Power management tools
|
# Power and temperature management tools
|
||||||
services.power-profiles-daemon.enable = true;
|
services.thermald.enable = true;
|
||||||
|
services.tlp.enable = true;
|
||||||
|
services.tlp.settings = {
|
||||||
|
TLP_DEFAULT_MODE = "BAT";
|
||||||
|
TLP_PERSISTENT_DEFAULT = 1;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
79
flake.lock
generated
79
flake.lock
generated
|
|
@ -7,11 +7,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759853171,
|
"lastModified": 1750304462,
|
||||||
"narHash": "sha256-uqbhyXtqMbYIiMqVqUhNdSuh9AEEkiasoK3mIPIVRhk=",
|
"narHash": "sha256-Mj5t4yX05/rXnRqJkpoLZTWqgStB88Mr/fegTRqyiWc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1a09eb84fa9e33748432a5253102d01251f72d6d",
|
"rev": "863842639722dd12ae9e37ca83bcb61a63b36f6c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -40,11 +40,11 @@
|
||||||
"mobile-nixos": {
|
"mobile-nixos": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759261417,
|
"lastModified": 1749499850,
|
||||||
"narHash": "sha256-TjuoBb8+isL3KTdGgtYh90XPyeUMFbgNAOG9l23CB3A=",
|
"narHash": "sha256-Fyy9ySTJ7jJ7z2h5+KHJU6OUhPJvy12OlVOichkwmZ0=",
|
||||||
"owner": "mobile-nixos",
|
"owner": "mobile-nixos",
|
||||||
"repo": "mobile-nixos",
|
"repo": "mobile-nixos",
|
||||||
"rev": "e6f6d527bf6abf94dd52fbba3143a720cef96431",
|
"rev": "26faf325d6efb169e2e4a2c435346b46c19d08bc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -55,11 +55,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759582739,
|
"lastModified": 1750431636,
|
||||||
"narHash": "sha256-spZegilADH0q5OngM86u6NmXxduCNv5eX9vCiUPhOYc=",
|
"narHash": "sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "3441b5242af7577230a78ffb03542add264179ab",
|
"rev": "1552a9f4513f3f0ceedcf90320e48d3d47165712",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -70,11 +70,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759831965,
|
"lastModified": 1750365781,
|
||||||
"narHash": "sha256-vgPm2xjOmKdZ0xKA6yLXPJpjOtQPHfaZDRtH+47XEBo=",
|
"narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c9b6fb798541223bbb396d287d16f43520250518",
|
"rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -84,45 +84,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"quickshell": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"quickshell-toki-night",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1759610621,
|
|
||||||
"narHash": "sha256-P3UPFd95mS/3aNgy40nCXAmyfR2bEEBd+tX6xfkYFb0=",
|
|
||||||
"rev": "c5c438f1cd1a76660a8658ef929a3d19e968e2ce",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.outfoxxed.me/api/v1/repos/quickshell/quickshell/archive/c5c438f1cd1a76660a8658ef929a3d19e968e2ce.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.outfoxxed.me/quickshell/quickshell/archive/master.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"quickshell-toki-night": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"quickshell": "quickshell",
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1759976594,
|
|
||||||
"narHash": "sha256-bTrBPRu8CM4YHRSDT6mI5SylEHshujSb2r++C6O/vug=",
|
|
||||||
"rev": "6e1fb585e30d3503dd120f19e64535005357ffc7",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.tokinanpa.dev/api/v1/repos/toki/quickshell-toki-night/archive/6e1fb585e30d3503dd120f19e64535005357ffc7.tar.gz"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://git.tokinanpa.dev/toki/quickshell-toki-night/archive/main.tar.gz"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
|
@ -130,7 +91,6 @@
|
||||||
"mobile-nixos": "mobile-nixos",
|
"mobile-nixos": "mobile-nixos",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"quickshell-toki-night": "quickshell-toki-night",
|
|
||||||
"sxmo": "sxmo",
|
"sxmo": "sxmo",
|
||||||
"tokyo-night-sddm-src": "tokyo-night-sddm-src"
|
"tokyo-night-sddm-src": "tokyo-night-sddm-src"
|
||||||
}
|
}
|
||||||
|
|
@ -151,21 +111,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1680978846,
|
|
||||||
"narHash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "x86_64-linux",
|
|
||||||
"rev": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "x86_64-linux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tokyo-night-sddm-src": {
|
"tokyo-night-sddm-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,6 @@ inputs = {
|
||||||
home-manager.url = "github:nix-community/home-manager/master";
|
home-manager.url = "github:nix-community/home-manager/master";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
quickshell-toki-night.url = "https://git.tokinanpa.dev/toki/quickshell-toki-night/archive/main.tar.gz";
|
|
||||||
quickshell-toki-night.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
quickshell-toki-night.inputs.systems.url = "github:nix-systems/x86_64-linux";
|
|
||||||
|
|
||||||
tokyo-night-sddm-src.url = "github:rototrash/tokyo-night-sddm";
|
tokyo-night-sddm-src.url = "github:rototrash/tokyo-night-sddm";
|
||||||
tokyo-night-sddm-src.flake = false;
|
tokyo-night-sddm-src.flake = false;
|
||||||
macos-hyprcursor-src.url = "github:driedpampas/macOS-hyprcursor";
|
macos-hyprcursor-src.url = "github:driedpampas/macOS-hyprcursor";
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,5 @@
|
||||||
|
|
||||||
home.stateVersion = "21.11";
|
home.stateVersion = "21.11";
|
||||||
|
|
||||||
imports = [
|
imports = [ ./shell ./wayland ./xdg.nix ./tools.nix ./email.nix ];
|
||||||
./shell
|
|
||||||
./wayland
|
|
||||||
|
|
||||||
./email.nix
|
|
||||||
./tools.nix
|
|
||||||
./xdg.nix
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
./idle.nix
|
|
||||||
./quickshell.nix
|
|
||||||
./wltools.nix
|
./wltools.nix
|
||||||
|
./waybar.nix
|
||||||
|
./idle.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
268
home-manager/wayland/eww/eww.scss
Normal file
268
home-manager/wayland/eww/eww.scss
Normal file
|
|
@ -0,0 +1,268 @@
|
||||||
|
$background: #1a1626;
|
||||||
|
$background-alt: #202330;
|
||||||
|
$background-scale: #414868;
|
||||||
|
$foreground: #c0caf5;
|
||||||
|
$foreground-alt: #8189af;
|
||||||
|
$foreground-light: #343b58;
|
||||||
|
$disabled: #565f89;
|
||||||
|
$accent: #f6a8cf;
|
||||||
|
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-family: "Quicksand Medium";
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin segment {
|
||||||
|
background-color: $background-alt;
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 0px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar {
|
||||||
|
background-color: $background;
|
||||||
|
color: $foreground;
|
||||||
|
font-size: 13px;
|
||||||
|
|
||||||
|
padding: 3px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background-color: rgba(22, 16, 30, 0.9);
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail {
|
||||||
|
font-size: 10px;
|
||||||
|
color: $foreground-alt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-sep {
|
||||||
|
margin: 0px 4px;
|
||||||
|
color: $background-alt;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-window {
|
||||||
|
margin-left: 14px;
|
||||||
|
|
||||||
|
.detail {
|
||||||
|
margin-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(.detail) {
|
||||||
|
margin-top: -2px;
|
||||||
|
margin-left: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-time {
|
||||||
|
@include segment;
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 0px 10px;
|
||||||
|
|
||||||
|
.bar-date {
|
||||||
|
margin-top: 1px;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #a9b1d6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-music {
|
||||||
|
@include segment;
|
||||||
|
padding: 0px 2px;
|
||||||
|
|
||||||
|
.progress {
|
||||||
|
.back {
|
||||||
|
color: $background-scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.front {
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol.stopped {
|
||||||
|
font-size: 15px;
|
||||||
|
color: $foreground-alt;
|
||||||
|
margin-left: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol.paused {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.symbol.playing {
|
||||||
|
font-size: 15px;
|
||||||
|
margin-top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-music-meta {
|
||||||
|
margin-left: 6px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-artist {
|
||||||
|
margin-top: 1px;
|
||||||
|
margin-bottom: -2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-title {
|
||||||
|
margin-bottom: -3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.bar-workspaces {
|
||||||
|
@include segment;
|
||||||
|
padding: 3px;
|
||||||
|
|
||||||
|
.workspace-button {
|
||||||
|
min-width: 23px;
|
||||||
|
border-radius: 100%;
|
||||||
|
color: #51587a;
|
||||||
|
|
||||||
|
&.current + box {
|
||||||
|
border-radius: 100%;
|
||||||
|
background-color: $accent;
|
||||||
|
color: $foreground-light;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.occupied {
|
||||||
|
background-color: $background-scale;
|
||||||
|
color: $accent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.occupied.previous-occupied {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.occupied.next-occupied {
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scale trough {
|
||||||
|
background-color: $background-scale;
|
||||||
|
border-radius: 5px;
|
||||||
|
min-height: 6px;
|
||||||
|
min-width: 60px;
|
||||||
|
margin: 0px 5px;
|
||||||
|
|
||||||
|
highlight {
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-scale {
|
||||||
|
margin: 0px 5px;
|
||||||
|
|
||||||
|
.percent {
|
||||||
|
margin-top: -1px;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin scale-color($color) {
|
||||||
|
color: $color;
|
||||||
|
|
||||||
|
scale highlight {
|
||||||
|
background-color: $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-volume {
|
||||||
|
@include scale-color(#7dcfff);
|
||||||
|
&.muted { @include scale-color(#f7768e); }
|
||||||
|
|
||||||
|
.symbol {
|
||||||
|
margin-right: 6px;
|
||||||
|
font-size: 17;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-brightness {
|
||||||
|
@include scale-color(#e0af68);
|
||||||
|
|
||||||
|
margin-right: 4px;
|
||||||
|
|
||||||
|
.symbol {
|
||||||
|
margin-right: 7px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-internet {
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 9px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #bb9af7;
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
color: $disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-bluetooth {
|
||||||
|
margin: 0px 3px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #7aa2f7;
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
color: $disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.bar-circular {
|
||||||
|
margin: 0px 3px;
|
||||||
|
font-size: 15px;
|
||||||
|
|
||||||
|
.back {
|
||||||
|
color: $background-scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.critical {
|
||||||
|
color: #f7768e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-battery {
|
||||||
|
color: #8ece6a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-ram {
|
||||||
|
color: #b4f9f8;
|
||||||
|
.symbol {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-storage {
|
||||||
|
color: #cfc9c2;
|
||||||
|
.symbol {
|
||||||
|
margin-right: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar-power {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-left: 4px;
|
||||||
|
margin-right: 10px;
|
||||||
|
color: #f7768e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.power {
|
||||||
|
font-size: 36px;
|
||||||
|
|
||||||
|
button > box {
|
||||||
|
background-color: $background;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
432
home-manager/wayland/eww/eww.yuck
Normal file
432
home-manager/wayland/eww/eww.yuck
Normal file
|
|
@ -0,0 +1,432 @@
|
||||||
|
|
||||||
|
;; Window Info
|
||||||
|
|
||||||
|
(deflisten window :initial "{}"
|
||||||
|
"scripts/active-window")
|
||||||
|
|
||||||
|
(defwidget bar_window [class-limit title-limit]
|
||||||
|
(box :class "bar-window"
|
||||||
|
:orientation "v"
|
||||||
|
:space-evenly false
|
||||||
|
(label :class "detail"
|
||||||
|
:halign "start"
|
||||||
|
:valign "end"
|
||||||
|
:limit-width class-limit
|
||||||
|
:text {window.class ?: "Desktop"})
|
||||||
|
(label :halign "start"
|
||||||
|
:valign "end"
|
||||||
|
:limit-width title-limit
|
||||||
|
:text {window.title ?: "Workspace ${current_workspace}"})))
|
||||||
|
|
||||||
|
;; Workspaces
|
||||||
|
|
||||||
|
(deflisten workspaces :initial "[]"
|
||||||
|
"scripts/get-workspaces")
|
||||||
|
(deflisten current_workspace :initial "1"
|
||||||
|
"scripts/get-active-workspace")
|
||||||
|
|
||||||
|
(defwidget bar_workspace_button [workspace]
|
||||||
|
(eventbox :onclick "hyprctl dispatch workspace ${workspace.id}"
|
||||||
|
(overlay
|
||||||
|
(box :class "workspace-button ${workspace.id == current_workspace ? "current" : ""
|
||||||
|
} ${workspace.windows > 0 ? "occupied" : ""
|
||||||
|
} ${workspace.previous > 0 ? "previous-occupied" : ""
|
||||||
|
} ${workspace.next > 0 ? "next-occupied" : ""}"
|
||||||
|
{workspace.id})
|
||||||
|
(box :visible {workspace.id == current_workspace}
|
||||||
|
{workspace.id}))))
|
||||||
|
|
||||||
|
(defwidget bar_workspaces []
|
||||||
|
(eventbox :onscroll "scripts/change-active-workspace {} ${current_workspace}"
|
||||||
|
(box :class "bar-workspaces"
|
||||||
|
:orientation "h"
|
||||||
|
:space-evenly true
|
||||||
|
(for workspace in workspaces
|
||||||
|
(bar_workspace_button :workspace workspace)))))
|
||||||
|
|
||||||
|
;; Time
|
||||||
|
|
||||||
|
(defwidget bar_time [width]
|
||||||
|
(box :class "bar-time segment"
|
||||||
|
:orientation "h"
|
||||||
|
:width width
|
||||||
|
:space-evenly false
|
||||||
|
:spacing 6
|
||||||
|
(label :halign "start"
|
||||||
|
:yalign 0.5
|
||||||
|
:text {formattime(EWW_TIME, "%H:%M:%S")})
|
||||||
|
(label :class "bar-date"
|
||||||
|
:halign "end"
|
||||||
|
:hexpand true
|
||||||
|
:yalign 0.5
|
||||||
|
:text {formattime(EWW_TIME, "%a %Y-%m-%d")})))
|
||||||
|
|
||||||
|
;; Playerctl
|
||||||
|
|
||||||
|
(deflisten mpris :initial "{}"
|
||||||
|
"scripts/mpris-metadata")
|
||||||
|
|
||||||
|
(defwidget bar_music [artist-limit title-limit]
|
||||||
|
(eventbox :onclick "playerctl play-pause"
|
||||||
|
(box :class "bar-music"
|
||||||
|
:orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
(box :class "progress"
|
||||||
|
(overlay
|
||||||
|
(circular-progress :class "back"
|
||||||
|
:value 100
|
||||||
|
:width 25
|
||||||
|
:thickness 2)
|
||||||
|
(circular-progress :class "front"
|
||||||
|
:value {(mpris.position ?: 0) == 0 ||
|
||||||
|
(mpris.duration ?: 0) == 0 ? 0 :
|
||||||
|
mpris.position > mpris.duration ? 100 :
|
||||||
|
mpris.position / mpris.duration * 100}
|
||||||
|
:width 25
|
||||||
|
:thickness 2
|
||||||
|
:start-at 75
|
||||||
|
:clockwise true)
|
||||||
|
(label :class "symbol ${(mpris.title ?: "") == "" || (mpris.status ?: "Stopped") == "Stopped" ? "stopped" :
|
||||||
|
mpris.status == "Playing" ? "playing" : "paused"}"
|
||||||
|
:text {(mpris.title ?: "") == "" || (mpris.status ?: "Stopped") == "Stopped" ? "" :
|
||||||
|
mpris.status == "Playing" ? "" : ""})))
|
||||||
|
(revealer :transition "slideright"
|
||||||
|
:duration "800ms"
|
||||||
|
:reveal {(mpris.title ?: "") != "" && (mpris.status ?: "Stopped") != "Stopped"}
|
||||||
|
(box :orientation "v"
|
||||||
|
:class "bar-music-meta"
|
||||||
|
:space-evenly false
|
||||||
|
(label :class "bar-artist detail"
|
||||||
|
:halign "start"
|
||||||
|
:limit-width artist-limit
|
||||||
|
:text {mpris.artist ?: ""})
|
||||||
|
(label :class "bar-title"
|
||||||
|
:halign "start"
|
||||||
|
:limit-width title-limit
|
||||||
|
:text {mpris.title ?: ""}))))))
|
||||||
|
|
||||||
|
|
||||||
|
;; Scales (Volume + Brightness)
|
||||||
|
|
||||||
|
(defwidget bar_scale [?class reveal-name reveal value symbol onchange ?onclick]
|
||||||
|
(eventbox :onhover "${EWW_CMD} update ${reveal-name}=true"
|
||||||
|
:onhoverlost "${EWW_CMD} update ${reveal-name}=false"
|
||||||
|
(box :class "bar-scale ${class}"
|
||||||
|
:space-evenly false
|
||||||
|
(eventbox :onclick onclick
|
||||||
|
(label :class "symbol"
|
||||||
|
:text symbol))
|
||||||
|
(revealer :transition "slideright"
|
||||||
|
:reveal reveal
|
||||||
|
:duration "400ms"
|
||||||
|
(scale :value value
|
||||||
|
:orientation "h"
|
||||||
|
:width "100%"
|
||||||
|
:min 0
|
||||||
|
:max 101
|
||||||
|
:onchange onchange))
|
||||||
|
(eventbox :onclick onclick
|
||||||
|
(label :class "percent"
|
||||||
|
:width 29
|
||||||
|
:xalign 0
|
||||||
|
:text "${value}%")))))
|
||||||
|
|
||||||
|
|
||||||
|
(defvar volume_reveal false)
|
||||||
|
(deflisten volume :initial "0"
|
||||||
|
"scripts/volume")
|
||||||
|
|
||||||
|
(defwidget bar_volume []
|
||||||
|
(bar_scale :class "bar-volume ${volume.muted ? "muted" : ""}"
|
||||||
|
:reveal-name "volume_reveal"
|
||||||
|
:reveal volume_reveal
|
||||||
|
:value {volume.value}
|
||||||
|
:symbol {volume.muted ? "" :
|
||||||
|
volume.value < 5 ? "" :
|
||||||
|
volume.value < 35 ? "" :
|
||||||
|
volume.value < 66 ? "" : ""}
|
||||||
|
:onchange "pamixer --set-volume {}"
|
||||||
|
:onclick "pamixer -t"))
|
||||||
|
|
||||||
|
|
||||||
|
(defvar brightness_reveal false)
|
||||||
|
(deflisten brightness :initial "0"
|
||||||
|
"scripts/brightness")
|
||||||
|
|
||||||
|
(defwidget bar_brightness []
|
||||||
|
(bar_scale :class "bar-brightness"
|
||||||
|
:reveal-name "brightness_reveal"
|
||||||
|
:reveal brightness_reveal
|
||||||
|
:value brightness
|
||||||
|
:symbol ""
|
||||||
|
:onchange "brightnessctl -e s {}%"))
|
||||||
|
|
||||||
|
|
||||||
|
;; Circular Indicators
|
||||||
|
|
||||||
|
(defwidget bar_circular [?class ?critical ?tooltip value symbol]
|
||||||
|
(box :class "bar-circular ${class} ${(critical ?: false) ? "critical" : ""}"
|
||||||
|
:orientation "h"
|
||||||
|
:tooltip tooltip
|
||||||
|
(overlay
|
||||||
|
(circular-progress :class "back"
|
||||||
|
:value 100
|
||||||
|
:width 25
|
||||||
|
:thickness 2
|
||||||
|
:start-at 75
|
||||||
|
:clockwise true)
|
||||||
|
(circular-progress :class "front"
|
||||||
|
:value value
|
||||||
|
:width 25
|
||||||
|
:thickness 2
|
||||||
|
:start-at 75
|
||||||
|
:clockwise true)
|
||||||
|
(label :class "symbol"
|
||||||
|
:text symbol))))
|
||||||
|
|
||||||
|
(defwidget bar_battery []
|
||||||
|
(bar_circular :class "bar-battery"
|
||||||
|
:critical {EWW_BATTERY["BAT1"].capacity <= 15
|
||||||
|
&& EWW_BATTERY["BAT1"].status != "Charging"}
|
||||||
|
:tooltip "Battery: ${EWW_BATTERY["BAT1"].capacity}%${
|
||||||
|
EWW_BATTERY["BAT1"].status == "Charging" ? " (Charging)" : ""}"
|
||||||
|
:value {EWW_BATTERY["BAT1"].capacity}
|
||||||
|
:symbol {EWW_BATTERY["BAT1"].status == "Charging" ? "" : ""}))
|
||||||
|
|
||||||
|
(defwidget bar_ram []
|
||||||
|
(bar_circular :class "bar-ram"
|
||||||
|
:critical {EWW_RAM.used_mem_perc >= 80}
|
||||||
|
:tooltip "RAM: ${round(EWW_RAM.used_mem / 1073741824, 2)
|
||||||
|
} / ${round(EWW_RAM.total_mem / 1073741824, 2)} GB (${round(EWW_RAM.used_mem_perc, 2)}%)"
|
||||||
|
:value {EWW_RAM.used_mem_perc}
|
||||||
|
:symbol ""))
|
||||||
|
|
||||||
|
(defwidget bar_storage []
|
||||||
|
(bar_circular :class "bar-storage"
|
||||||
|
:critical {EWW_DISK["/"].used_perc >= 95}
|
||||||
|
:tooltip "Storage: ${round(EWW_DISK["/"].used / 1073741824, 2)
|
||||||
|
} / ${round(EWW_DISK["/"].total / 1073741824, 0)} GB (${round(EWW_DISK["/"].used_perc, 2)}%)"
|
||||||
|
:value {EWW_DISK["/"].used_perc}
|
||||||
|
:symbol ""))
|
||||||
|
|
||||||
|
;; Network
|
||||||
|
|
||||||
|
(defpoll wifi :interval "5s" :initial "{}"
|
||||||
|
"scripts/network 802-11-wireless")
|
||||||
|
(defpoll ethernet :interval "5s" :initial "{}"
|
||||||
|
"scripts/network 802-3-ethernet")
|
||||||
|
(defpoll bluetooth :interval "5s" :initial "{}"
|
||||||
|
"scripts/network bluetooth")
|
||||||
|
|
||||||
|
(defvar internet_reveal false)
|
||||||
|
|
||||||
|
(defwidget bar_internet []
|
||||||
|
(box :class "bar-internet ${wifi == "{}" && ethernet == "{}" ? "disabled" : ""}"
|
||||||
|
:space-evenly false
|
||||||
|
:tooltip {ethernet != "{}" ? "${ethernet.name} (${ethernet.device})" :
|
||||||
|
wifi != "{}" ? "${wifi.name} (${wifi.device})" : ""}
|
||||||
|
{wifi != "{}" ? "" : ethernet != "{}" ? "" : ""}))
|
||||||
|
|
||||||
|
(defwidget bar_bluetooth []
|
||||||
|
(box :class "bar-bluetooth ${bluetooth == "{}" ? "disabled" : ""}"
|
||||||
|
{bluetooth != "{}" ? "" : ""}))
|
||||||
|
|
||||||
|
;; Power Menu
|
||||||
|
|
||||||
|
(defpoll idleinhibit :interval "10s" :initial "0"
|
||||||
|
"pgrep -c -f wayland\"\"-idle-inhibitor || true")
|
||||||
|
|
||||||
|
(defwidget bar_power [screen]
|
||||||
|
(eventbox :onclick "${EWW_CMD} active-windows | grep -q power_${screen} \
|
||||||
|
&& ${EWW_CMD} close power_${screen} || ${EWW_CMD} open power --id power_${screen} --screen ${screen}"
|
||||||
|
(box :class "bar-power"
|
||||||
|
"⏻")))
|
||||||
|
|
||||||
|
(defwindow power [screen]
|
||||||
|
:geometry (geometry
|
||||||
|
:width "375px"
|
||||||
|
:height "150px"
|
||||||
|
:anchor "top right")
|
||||||
|
:namespace "eww-bar"
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive false
|
||||||
|
:focusable false
|
||||||
|
(eventbox :onhoverlost "${EWW_CMD} close power_${screen}"
|
||||||
|
(box :class "power"
|
||||||
|
:orientation "v"
|
||||||
|
(box :orientation "h"
|
||||||
|
(button :onclick "${EWW_CMD} close power_${screen}; systemctl suspend"
|
||||||
|
:tooltip "Sleep"
|
||||||
|
(box :style "color: #9aa5ce;"
|
||||||
|
""))
|
||||||
|
(button :onclick "${EWW_CMD} close power_${screen}; hyprlock --immediate &"
|
||||||
|
:tooltip "Lock"
|
||||||
|
(box :style "color: #cfc9c2;"
|
||||||
|
""))
|
||||||
|
(button :onclick "${EWW_CMD} close power_${screen}; hyprctl dispatch exit"
|
||||||
|
:tooltip "Log Out"
|
||||||
|
(box :style "color: #7dcfff; padding-left: 0.3ex;"
|
||||||
|
""))
|
||||||
|
(button :onclick "${EWW_CMD} close power_${screen}; reboot"
|
||||||
|
:tooltip "Reboot"
|
||||||
|
(box :style "color: #e0af68;"
|
||||||
|
""))
|
||||||
|
(button :onclick "${EWW_CMD} close power_${screen}; poweroff"
|
||||||
|
:tooltip "Shutdown"
|
||||||
|
(box :style "color: #f7768e; font-size: 1.35em; padding-bottom: 0.15ex;"
|
||||||
|
"⏼")))
|
||||||
|
(box
|
||||||
|
:orientation "h"
|
||||||
|
(box) (box) (box) (box)
|
||||||
|
(button :onclick "scripts/toggle-idle-inhibit && ${EWW_CMD} poll idleinhibit"
|
||||||
|
:tooltip "Idle Inhibitor: ${idleinhibit > 0 ? "On" : "Off"}"
|
||||||
|
(box :style "padding-right: 0.5ex; ${idleinhibit > 0 ?
|
||||||
|
"color: #ff9e64" :
|
||||||
|
"color: #565f89; padding-top: 0.3ex;"}"
|
||||||
|
{idleinhibit > 0 ? "" : ""}))))))
|
||||||
|
|
||||||
|
|
||||||
|
;; Separator
|
||||||
|
|
||||||
|
(defwidget bar_sep []
|
||||||
|
(box :class "bar-sep"
|
||||||
|
:hexpand false
|
||||||
|
:vexpand false
|
||||||
|
"|"))
|
||||||
|
|
||||||
|
|
||||||
|
;; Bar Layout
|
||||||
|
|
||||||
|
(defwidget fire_bar_left_edge []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "start"
|
||||||
|
:hexpand true
|
||||||
|
(bar_window :class-limit 60
|
||||||
|
:title-limit 50)))
|
||||||
|
|
||||||
|
(defwidget fire_bar_left_wing []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "end"
|
||||||
|
:hexpand true
|
||||||
|
(bar_time :width 175)))
|
||||||
|
|
||||||
|
(defwidget fire_bar_center []
|
||||||
|
(bar_workspaces))
|
||||||
|
|
||||||
|
(defwidget fire_bar_right_wing []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:hexpand true
|
||||||
|
(bar_music :width 175
|
||||||
|
:artist-limit 30
|
||||||
|
:title-limit 25)))
|
||||||
|
|
||||||
|
(defwidget fire_bar_right_edge [screen]
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "end"
|
||||||
|
:hexpand true
|
||||||
|
(bar_volume)
|
||||||
|
(bar_brightness)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_bluetooth)
|
||||||
|
(bar_internet)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_storage)
|
||||||
|
(bar_ram)
|
||||||
|
(bar_battery)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_power :screen screen)))
|
||||||
|
|
||||||
|
(defwidget fire_bar_layout [screen]
|
||||||
|
(centerbox :class "bar"
|
||||||
|
:orientation "h"
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:hexpand true
|
||||||
|
(fire_bar_left_edge)
|
||||||
|
(fire_bar_left_wing))
|
||||||
|
(fire_bar_center)
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
(fire_bar_right_wing)
|
||||||
|
(fire_bar_right_edge :screen screen))))
|
||||||
|
|
||||||
|
|
||||||
|
(defwidget earth_bar_left_edge []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "start"
|
||||||
|
:hexpand true
|
||||||
|
(bar_window :class-limit 90
|
||||||
|
:title-limit 80)))
|
||||||
|
|
||||||
|
(defwidget earth_bar_left_wing []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "end"
|
||||||
|
:hexpand true
|
||||||
|
(bar_time :width 175)))
|
||||||
|
|
||||||
|
(defwidget earth_bar_center []
|
||||||
|
(bar_workspaces))
|
||||||
|
|
||||||
|
(defwidget earth_bar_right_wing []
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:hexpand true
|
||||||
|
(bar_music :width 175
|
||||||
|
:artist-limit 30
|
||||||
|
:title-limit 25)))
|
||||||
|
|
||||||
|
(defwidget earth_bar_right_edge [screen]
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:halign "end"
|
||||||
|
:hexpand true
|
||||||
|
(bar_volume)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_bluetooth)
|
||||||
|
(bar_internet)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_storage)
|
||||||
|
(bar_ram)
|
||||||
|
(bar_sep)
|
||||||
|
(bar_power :screen screen)))
|
||||||
|
|
||||||
|
(defwidget earth_bar_layout [screen]
|
||||||
|
(centerbox :class "bar"
|
||||||
|
:orientation "h"
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
:hexpand true
|
||||||
|
(earth_bar_left_edge)
|
||||||
|
(earth_bar_left_wing))
|
||||||
|
(earth_bar_center)
|
||||||
|
(box :orientation "h"
|
||||||
|
:space-evenly false
|
||||||
|
(earth_bar_right_wing)
|
||||||
|
(earth_bar_right_edge :screen screen))))
|
||||||
|
|
||||||
|
|
||||||
|
(defwindow fire_bar [screen]
|
||||||
|
:geometry (geometry :width "100%"
|
||||||
|
:height "35px"
|
||||||
|
:anchor "top center")
|
||||||
|
:namespace "eww-bar"
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:focusable false
|
||||||
|
(fire_bar_layout :screen screen))
|
||||||
|
|
||||||
|
(defwindow earth_bar [screen]
|
||||||
|
:geometry (geometry :width "100%"
|
||||||
|
:height "35px"
|
||||||
|
:anchor "top center")
|
||||||
|
:namespace "eww-bar"
|
||||||
|
:stacking "fg"
|
||||||
|
:exclusive true
|
||||||
|
:focusable false
|
||||||
|
(earth_bar_layout :screen screen))
|
||||||
6
home-manager/wayland/eww/scripts/active-window
Executable file
6
home-manager/wayland/eww/scripts/active-window
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
hyprctl activewindow -j | jq -c .
|
||||||
|
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
|
||||||
|
stdbuf -o0 grep -ose '^activewindow>>' | while read -r line; do
|
||||||
|
hyprctl activewindow -j | jq -c .
|
||||||
|
done
|
||||||
7
home-manager/wayland/eww/scripts/brightness
Executable file
7
home-manager/wayland/eww/scripts/brightness
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
brightnessctl -me | cut -d, -f4 | tr -d '%'
|
||||||
|
device=$(brightnessctl -m | head -n 1 | cut -d, -f1)
|
||||||
|
while true; do
|
||||||
|
inotifywait /sys/class/backlight/"$device"/brightness &>/dev/null
|
||||||
|
brightnessctl -me | cut -d, -f4 | tr -d '%'
|
||||||
|
done
|
||||||
29
home-manager/wayland/eww/scripts/change-active-workspace
Executable file
29
home-manager/wayland/eww/scripts/change-active-workspace
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
direction=$1
|
||||||
|
current=$2
|
||||||
|
|
||||||
|
min=1
|
||||||
|
max=10
|
||||||
|
|
||||||
|
function clamp {
|
||||||
|
if test $1 -lt $min; then
|
||||||
|
echo $min
|
||||||
|
elif test $1 -gt $max; then
|
||||||
|
echo $max
|
||||||
|
else
|
||||||
|
echo $1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if test "$direction" = "down"
|
||||||
|
then
|
||||||
|
target=$(clamp $(($current+1)))
|
||||||
|
echo "jumping to $target"
|
||||||
|
hyprctl dispatch workspace $target
|
||||||
|
elif test "$direction" = "up"
|
||||||
|
then
|
||||||
|
target=$(clamp $(($current-1)))
|
||||||
|
echo "jumping to $target"
|
||||||
|
hyprctl dispatch workspace $target
|
||||||
|
fi
|
||||||
4
home-manager/wayland/eww/scripts/get-active-workspace
Executable file
4
home-manager/wayland/eww/scripts/get-active-workspace
Executable file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
|
||||||
|
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
|
||||||
|
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'
|
||||||
12
home-manager/wayland/eww/scripts/get-workspaces
Executable file
12
home-manager/wayland/eww/scripts/get-workspaces
Executable file
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
workspaces() {
|
||||||
|
hyprctl workspaces -j | jq -c 'map({key: .id | tostring, value: .windows}) | from_entries
|
||||||
|
| . as $windows | [range(1;11) | {id: tostring, windows: ($windows[tostring] // 0),
|
||||||
|
previous: ($windows[.-1|tostring] // 0), next: ($windows[.+1|tostring] // 0)}]'
|
||||||
|
}
|
||||||
|
|
||||||
|
workspaces
|
||||||
|
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
||||||
|
workspaces
|
||||||
|
done
|
||||||
11
home-manager/wayland/eww/scripts/mpris-metadata
Executable file
11
home-manager/wayland/eww/scripts/mpris-metadata
Executable file
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
playerctl metadata --follow --format \
|
||||||
|
'{"playerName": "{{ playerName }}",'\
|
||||||
|
'"status": "{{ status }}",'\
|
||||||
|
'"artist": "{{ artist }}",'\
|
||||||
|
'"title": "{{ title }}",'\
|
||||||
|
'"album": "{{ album }}",'\
|
||||||
|
'"position": "{{ position }}",'\
|
||||||
|
'"position_d": "{{ duration(position) }}",'\
|
||||||
|
'"duration": "{{ mpris:length }}",'\
|
||||||
|
'"duration_d": "{{ duration(mpris:length) }}"}'
|
||||||
8
home-manager/wayland/eww/scripts/network
Executable file
8
home-manager/wayland/eww/scripts/network
Executable file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
nmcli -t c show --active | awk -F ':' -e \
|
||||||
|
'// { if ($3 == "'$1'") {
|
||||||
|
print "{\"name\":\""$1"\",\"device\":\""$4"\"}";
|
||||||
|
found = 1;
|
||||||
|
exit;
|
||||||
|
}}
|
||||||
|
END { if (!found) print "{}" }'
|
||||||
6
home-manager/wayland/eww/scripts/toggle-idle-inhibit
Executable file
6
home-manager/wayland/eww/scripts/toggle-idle-inhibit
Executable file
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
if pkill -0 -f wayland-idle-inhibitor; then
|
||||||
|
pkill -f wayland-idle-inhibitor
|
||||||
|
else
|
||||||
|
wayland-idle-inhibitor &
|
||||||
|
fi
|
||||||
10
home-manager/wayland/eww/scripts/volume
Executable file
10
home-manager/wayland/eww/scripts/volume
Executable file
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
volume() {
|
||||||
|
echo '{"value":'$(pamixer --get-volume)',"muted":"'$(pamixer --get-mute)'"}'
|
||||||
|
}
|
||||||
|
|
||||||
|
volume
|
||||||
|
pw-mon -oa | stdbuf -o0 grep -os "changed:" | while read -r line; do
|
||||||
|
volume
|
||||||
|
done
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
scripts = ./scripts;
|
scripts = ./scripts;
|
||||||
shell = "quickshell";
|
|
||||||
in {
|
in {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -10,9 +9,17 @@ in {
|
||||||
|
|
||||||
plugins = [ pkgs.hyprlandPlugins.hy3 ];
|
plugins = [ pkgs.hyprlandPlugins.hy3 ];
|
||||||
|
|
||||||
settings = {
|
settings = let
|
||||||
|
# Volume using pamixer
|
||||||
|
audio-disp = "${scripts}/multimedia Volume $(pamixer --get-mute) pamixer $(pamixer --get-volume)";
|
||||||
|
audio = cmd: "pamixer ${cmd} && ${audio-disp}";
|
||||||
|
# Brightness using brightnessctl
|
||||||
|
brightness-disp = ''${scripts}/multimedia Brightness "" brightnessctl $(brightnessctl -e -m | cut -d, -f4 | tr -d "%")'';
|
||||||
|
brightness = x: "brightnessctl -e set ${x} && ${brightness-disp}";
|
||||||
|
in {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$terminal" = "alacritty";
|
"$terminal" = "alacritty";
|
||||||
|
"$menu" = "rofi -show drun";
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"HYPRCURSOR_THEME,macos"
|
"HYPRCURSOR_THEME,macos"
|
||||||
|
|
@ -33,8 +40,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
windowrulev2 = [
|
windowrulev2 = [
|
||||||
"bordercolor rgb(f7768e), fullscreen:1"
|
"bordercolor rgb(f7768e),fullscreen:1"
|
||||||
"noanim, initialClass:ueberzug(.*)"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
|
|
@ -92,13 +98,9 @@ in {
|
||||||
|
|
||||||
bind = [
|
bind = [
|
||||||
"$mod, Return, exec, $terminal"
|
"$mod, Return, exec, $terminal"
|
||||||
"$mod, D, global, ${shell}:launcher"
|
"$mod, D, exec, $menu"
|
||||||
"$mod Shift, D, global, ${shell}:dashboard"
|
|
||||||
"$mod, M, exec, hyprlock --immediate"
|
"$mod, M, exec, hyprlock --immediate"
|
||||||
|
|
||||||
# Exit
|
|
||||||
"$mod Shift, E, global, ${shell}:session"
|
|
||||||
|
|
||||||
# Emacs Everywhere
|
# Emacs Everywhere
|
||||||
# "$mod, Q, exec, $HOME/.config/emacs/bin/doom +everywhere"
|
# "$mod, Q, exec, $HOME/.config/emacs/bin/doom +everywhere"
|
||||||
|
|
||||||
|
|
@ -134,42 +136,43 @@ in {
|
||||||
|
|
||||||
# Screenshot
|
# Screenshot
|
||||||
"$mod, P, exec, ${scripts}/screenshot-save"
|
"$mod, P, exec, ${scripts}/screenshot-save"
|
||||||
|
|
||||||
# Workspace manipulation
|
|
||||||
"$mod, N, global, ${shell}:newworkspace"
|
|
||||||
"$mod Shift, N, global, ${shell}:movetonewworkspace"
|
|
||||||
] ++
|
] ++
|
||||||
|
# Workspace manipulation
|
||||||
builtins.concatMap (n:
|
builtins.concatMap (n:
|
||||||
let
|
let
|
||||||
wsp = builtins.toString n;
|
wsp = builtins.toString n;
|
||||||
key = if n == 10 then "0" else wsp;
|
key = if n == 10 then "0" else wsp;
|
||||||
in [
|
in [
|
||||||
"$mod, ${key}, global, ${shell}:workspace${wsp}"
|
"$mod, ${key}, workspace, ${wsp}"
|
||||||
"$mod Shift, ${key}, global, ${shell}:movetoworkspace${wsp}"
|
"$mod Shift, ${key}, hy3:movetoworkspace, ${wsp}"
|
||||||
]) (lib.range 1 10);
|
]) (lib.range 1 10);
|
||||||
|
|
||||||
bindn = [
|
bindn = [
|
||||||
", mouse:272, hy3:focustab, mouse"
|
", mouse:272, hy3:focustab, mouse"
|
||||||
", escape, global, ${shell}:escape"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
bindl = [
|
bindl = [
|
||||||
# XF86 key bindings
|
# XF86 key bindings
|
||||||
", XF86AudioMute, global, ${shell}:mute"
|
", XF86AudioMute, exec, ${audio "--toggle-mute"}"
|
||||||
", XF86AudioMicMute, global, ${shell}:muteMic"
|
", XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||||
", XF86AudioPlay, global, ${shell}:mediaToggle"
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
", XF86AudioNext, global, ${shell}:mediaNext"
|
", XF86AudioNext, exec, playerctl next"
|
||||||
", XF86AudioPrev, global, ${shell}:mediaPrev"
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
", XF86AudioStop, global, ${shell}:mediaStop"
|
|
||||||
", XF86AudioRaiseVolume, global, ${shell}:volumeUp"
|
|
||||||
", XF86AudioLowerVolume, global, ${shell}:volumeDown"
|
|
||||||
", XF86MonBrightnessUp, global, ${shell}:brightnessUp"
|
|
||||||
", XF86MonBrightnessDown, global, ${shell}:brightnessDown"
|
|
||||||
|
|
||||||
# Screenshot
|
# Screenshot
|
||||||
", Print, exec, ${scripts}/screenshot"
|
", Print, exec, ${scripts}/screenshot"
|
||||||
"Shift, Print, exec, ${scripts}/screenshot-slurp"
|
"Shift, Print, exec, ${scripts}/screenshot-slurp"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
bindle = [
|
||||||
|
# XF86 key bindings
|
||||||
|
", XF86AudioRaiseVolume, exec, ${audio "-i 2"}"
|
||||||
|
", XF86AudioLowerVolume, exec, ${audio "-d 2"}"
|
||||||
|
"Shift, XF86AudioRaiseVolume, exec, ${audio "-i 2 --allow-boost"}"
|
||||||
|
"Shift, XF86AudioLowerVolume, exec, ${audio "-d 2 --allow-boost"}"
|
||||||
|
", XF86MonBrightnessDown, exec, ${brightness "4%-"}"
|
||||||
|
", XF86MonBrightnessUp, exec, ${brightness "4%+"}"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{ pkgs, lib, quickshell-toki-night, ... }:
|
|
||||||
{
|
|
||||||
systemd.user.services.quickshell = {
|
|
||||||
Install.WantedBy = [ "graphical-session.target" ];
|
|
||||||
|
|
||||||
Unit = {
|
|
||||||
Description = "Quickshell desktop UI manager";
|
|
||||||
Documentation = "https://git.tokinanpa.dev/toki/quickshell-toki-night";
|
|
||||||
After = [ "graphical-session-pre.target" ];
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStart = lib.getExe quickshell-toki-night.packages.${pkgs.system}.default;
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
160
home-manager/wayland/rofi/config.rasi
Normal file
160
home-manager/wayland/rofi/config.rasi
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
configuration {
|
||||||
|
cycle: false;
|
||||||
|
modi: "drun";
|
||||||
|
font: "JetBrainsMono Nerd Font 12";
|
||||||
|
location: 0;
|
||||||
|
terminal: "alacritty";
|
||||||
|
|
||||||
|
show-icons: true;
|
||||||
|
hide-scrollbar: true;
|
||||||
|
disable-history: false;
|
||||||
|
click-to-exit: true;
|
||||||
|
|
||||||
|
drun-display-format: "{icon} {name}";
|
||||||
|
display-drun: "";
|
||||||
|
|
||||||
|
// Bindings
|
||||||
|
kb-remove-to-eol: "";
|
||||||
|
kb-mode-complete: "";
|
||||||
|
kb-remove-char-back: "BackSpace,Shift+BackSpace";
|
||||||
|
kb-accept-entry: "Control+m,Return,KP_Enter";
|
||||||
|
kb-element-next: "Tab,Control+j";
|
||||||
|
kb-element-prev: "ISO_Left_Tab,Control+k";
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme "tokyonight"
|
||||||
|
|
||||||
|
window {
|
||||||
|
transparency: "real";
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
border: 2px;
|
||||||
|
border-color: @blue;
|
||||||
|
border-radius: 30px;
|
||||||
|
width: 550px;
|
||||||
|
height: 65%;
|
||||||
|
anchor: center;
|
||||||
|
x-offset: 0;
|
||||||
|
y-offset: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
enabled: true;
|
||||||
|
padding: 8px;
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt-colon {
|
||||||
|
expand: false;
|
||||||
|
str: "";
|
||||||
|
border-radius: 100%;
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @fg;
|
||||||
|
padding: 8px 16px 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
placeholder-color: @placeholder;
|
||||||
|
expand: true;
|
||||||
|
horizontal-align: 0;
|
||||||
|
placeholder: "Search...";
|
||||||
|
blink: true;
|
||||||
|
border: 0px 0px 2px 0px;
|
||||||
|
border-color: @blue;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
children: [ textbox-prompt-colon, prompt, entry ];
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
expand: false;
|
||||||
|
border: 0px 0px 0px 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
border-color: @blue;
|
||||||
|
margin: 0px 0px 0px 0px;
|
||||||
|
padding: 0px;
|
||||||
|
position: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
case-indicator {
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
background-color: @bg;
|
||||||
|
columns: 1;
|
||||||
|
lines: 10;
|
||||||
|
spacing: 4px;
|
||||||
|
cycle: false;
|
||||||
|
border: 0px;
|
||||||
|
dynamic: true;
|
||||||
|
layout: vertical;
|
||||||
|
scrollbar: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
background-color: @bg;
|
||||||
|
children: [ inputbar, listview ];
|
||||||
|
spacing: 15px;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.normal.normal,
|
||||||
|
element.alternate.normal {
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
orientation: horizontal;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 6px 6px 6px 6px;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
horizontal-align: 0.5;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
size: 24px;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
expand: true;
|
||||||
|
horizontal-align: 0;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
margin: 2px 0px 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.urgent,
|
||||||
|
element alternate.urgent {
|
||||||
|
background-color: @UGT;
|
||||||
|
text-color: @FG;
|
||||||
|
border-radius: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected {
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @blue;
|
||||||
|
border: 0px 0px 0px 0px;
|
||||||
|
border-radius: 10px;
|
||||||
|
border-color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: @red;
|
||||||
|
text-color: @fg2;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.active {
|
||||||
|
background-color: @selected;
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
14
home-manager/wayland/rofi/tokyonight.rasi
Normal file
14
home-manager/wayland/rofi/tokyonight.rasi
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
* {
|
||||||
|
bg: #1a1b26;
|
||||||
|
bg-light: #272834;
|
||||||
|
selected: #282e49;
|
||||||
|
blue: #7bc5e4;
|
||||||
|
fg: #abb2bf;
|
||||||
|
fg2: #e06c75;
|
||||||
|
grey: #565c64;
|
||||||
|
red: #ce7284;
|
||||||
|
green: #7dc5a0;
|
||||||
|
empty: #5b668e;
|
||||||
|
inactive: #4a5374;
|
||||||
|
placeholder: #474f6f;
|
||||||
|
}
|
||||||
5
home-manager/wayland/scripts/multimedia
Executable file
5
home-manager/wayland/scripts/multimedia
Executable file
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
notify-send "$1" "$2" -c multimedia -a "$3" \
|
||||||
|
$(busctl --user -j call org.freedesktop.Notifications /fr/emersion/Mako fr.emersion.Mako ListNotifications |
|
||||||
|
jq -r 'first(.data[][]|select(.category.data=="multimedia")|.id.data|["-r",.])[]') \
|
||||||
|
-h "INT:value:$4"
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
grim - | wl-copy
|
grim - | wl-copy
|
||||||
notify-send "Screenshot saved to clipboard" \
|
notify-send "Screenshot saved to clipboard" \
|
||||||
-a grim -c screenshot -u low -e
|
-a grim -c screenshot -u low -t 3000
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ if test $(wl-paste -l) = "image/png"; then
|
||||||
name=$(date '+%Y-%m-%d_%H-%M-%S').png
|
name=$(date '+%Y-%m-%d_%H-%M-%S').png
|
||||||
wl-paste -t "image/png" > ~/Pictures/"$name"
|
wl-paste -t "image/png" > ~/Pictures/"$name"
|
||||||
notify-send "Image stored at $name" \
|
notify-send "Image stored at $name" \
|
||||||
-a grim -c screenshot -u low
|
-a grim -c screenshot -u low -t 3000
|
||||||
else
|
else
|
||||||
notify-send "No image in clipboard" \
|
notify-send "No image in clipboard" \
|
||||||
-a grim -c screenshot -u low -t 2000 -e
|
-a grim -c screenshot -u low -t 3000
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
if region="$(slurp)"; then
|
if region="$(slurp)"; then
|
||||||
grim -g "$region" - | wl-copy
|
grim -g "$region" - | wl-copy
|
||||||
notify-send "Screenshot saved to clipboard" \
|
notify-send "Screenshot saved to clipboard" \
|
||||||
-a grim -c screenshot -u low -e
|
-a grim -c screenshot -u low -t 3000
|
||||||
else
|
else
|
||||||
notify-send "Screenshot cancelled" \
|
notify-send "Screenshot cancelled" \
|
||||||
-a grim -c screenshot -u low -t 2000 -e
|
-a grim -c screenshot -u low -t 3000
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
292
home-manager/wayland/waybar.nix
Normal file
292
home-manager/wayland/waybar.nix
Normal file
|
|
@ -0,0 +1,292 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
enable = false;
|
||||||
|
|
||||||
|
settings =
|
||||||
|
let spanfa = "<span font=\"Font Awesome 5 Regular 11\">";
|
||||||
|
in [{
|
||||||
|
layer = "top";
|
||||||
|
height = 32;
|
||||||
|
margin = "8 8 0";
|
||||||
|
|
||||||
|
modules-left = [ "hyprland/workspaces" "custom/sep" "cpu" "memory" "temperature" ];
|
||||||
|
|
||||||
|
modules-center = [ "hyprland/window" ];
|
||||||
|
|
||||||
|
modules-right =
|
||||||
|
if config.machine == "fire" then
|
||||||
|
[ "battery" "pulseaudio" "backlight" "network" "clock" "idle_inhibitor" ]
|
||||||
|
else
|
||||||
|
[ "pulseaudio" "network" "clock" "idle_inhibitor" ];
|
||||||
|
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
"mpd" = {
|
||||||
|
format = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ ";
|
||||||
|
format-disconnected = "Disconnected ";
|
||||||
|
format-stopped = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ";
|
||||||
|
unknown-tag = "N/A";
|
||||||
|
interval = 2;
|
||||||
|
|
||||||
|
consume-icons.on = " ";
|
||||||
|
random-icons.off = "<span color=\"#f53c3c\"></span> ";
|
||||||
|
random-icons.on = " ";
|
||||||
|
repeat-icons.on = " ";
|
||||||
|
single-icons.on = "1 ";
|
||||||
|
state-icons.paused = "";
|
||||||
|
state-icons.playing = "";
|
||||||
|
|
||||||
|
tooltip-format = "MPD (connected)";
|
||||||
|
tooltip-format-disconnected = "MPD (disconnected)";
|
||||||
|
};
|
||||||
|
"idle_inhibitor" = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons.activated = "";
|
||||||
|
format-icons.deactivated = "";
|
||||||
|
};
|
||||||
|
"tray" = {
|
||||||
|
# icon-size = 21;
|
||||||
|
spacing = 10;
|
||||||
|
};
|
||||||
|
"clock" = {
|
||||||
|
format = "<span font_family=\"Font Awesome 6 Pro Solid 11\"></span> {:%H:%M}";
|
||||||
|
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
format-alt = " {:%Y-%m-%d}";
|
||||||
|
};
|
||||||
|
"cpu" = {
|
||||||
|
format = "<big> </big>{usage}%";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"battery" = {
|
||||||
|
states.warning = 30;
|
||||||
|
states.low = 15;
|
||||||
|
states.critical = 5;
|
||||||
|
|
||||||
|
format = "<big>{icon}</big> {capacity}%";
|
||||||
|
format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ];
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
format-time = "{H}h {M}m";
|
||||||
|
};
|
||||||
|
"memory" = {
|
||||||
|
format = "${spanfa}<small></small></span> {}%";
|
||||||
|
};
|
||||||
|
"temperature" = {
|
||||||
|
# thermal-zone = 2;
|
||||||
|
# hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
|
||||||
|
critical-threshold = 80;
|
||||||
|
format = "${spanfa}<small>{icon}</small></span> {temperatureC}°C";
|
||||||
|
format-icons = [ "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
"backlight" = {
|
||||||
|
# device = "acpi_video1";
|
||||||
|
format = "<span size=\"12pt\" rise=\"-0.5pt\">{icon}</span><span size=\"13pt\"> </span>{percent}%";
|
||||||
|
format-icons = [ "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
# interface = "wlp2*"; # (Optional) To force the use of this interface
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = "${spanfa}<small></small></span> Online";
|
||||||
|
format-ethernet = "${spanfa} </span>";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format-wifi = "{essid} - {signalStrength}%";
|
||||||
|
tooltip-format-ethernet = "{signalStrength}%";
|
||||||
|
tooltip-format-disconnected = "";
|
||||||
|
};
|
||||||
|
"pulseaudio" = {
|
||||||
|
scroll-step = 1;
|
||||||
|
smooth-scrolling-threshold = 2.0;
|
||||||
|
format = "${spanfa}{icon}</span> {volume}%";
|
||||||
|
format-bluetooth = " ${spanfa}{icon}</span> {volume}%";
|
||||||
|
format-bluetooth-muted = "${spanfa} </span> 0%";
|
||||||
|
format-muted = "${spanfa}</span> {volume}%";
|
||||||
|
|
||||||
|
format-icons.headphone = "";
|
||||||
|
format-icons.phone = "";
|
||||||
|
format-icons.portable = "";
|
||||||
|
format-icons.car = "";
|
||||||
|
format-icons.default = [ "" "" "" ];
|
||||||
|
|
||||||
|
on-click = "pamixer -t";
|
||||||
|
};
|
||||||
|
"custom/media" = {
|
||||||
|
format = "{icon} {}";
|
||||||
|
return-type = "json";
|
||||||
|
max-length = 40;
|
||||||
|
|
||||||
|
format-icons.spotify = "";
|
||||||
|
format-icons.default = "🎜";
|
||||||
|
|
||||||
|
escape = true;
|
||||||
|
};
|
||||||
|
"custom/sep".format = "";
|
||||||
|
};
|
||||||
|
}];
|
||||||
|
|
||||||
|
style =
|
||||||
|
''
|
||||||
|
@define-color background #1a1b26;
|
||||||
|
@define-color foreground #a9b1d6;
|
||||||
|
@define-color red #ce7284;
|
||||||
|
@define-color green #7dc5a0;
|
||||||
|
@define-color yellow #caaa6a;
|
||||||
|
@define-color blue #7bc5e4;
|
||||||
|
@define-color magenta #ad8ee6;
|
||||||
|
@define-color altred #d5556f;
|
||||||
|
@define-color altgreen #b9f27c;
|
||||||
|
@define-color altyellow #ff9e64;
|
||||||
|
@define-color altblend #282e49;
|
||||||
|
@define-color empty #474f6f;
|
||||||
|
@define-color pink #c386c0;
|
||||||
|
@define-color violet #8682de;
|
||||||
|
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
font-family: "JetBrainsMono Nerd Font", monospace;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: @background;
|
||||||
|
border-radius: 8px;
|
||||||
|
color: @foreground;
|
||||||
|
padding: 3px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-sep {
|
||||||
|
color: @altblend;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0px 3px;
|
||||||
|
border-radius: 0px;
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
box-shadow: inherit;
|
||||||
|
background: @background;
|
||||||
|
border: none;
|
||||||
|
padding: 0px 3px;
|
||||||
|
text-shadow: 0px 0px 2px shade(@blue, 1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
color: shade(@pink, 1.1);
|
||||||
|
text-shadow: 0px 0px 2px shade(@pink, 1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: @altred;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#network,
|
||||||
|
#custom-media,
|
||||||
|
#tray,
|
||||||
|
#mode,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#mpd {
|
||||||
|
margin: 0px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
padding: 0px 8px 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
background-color: @altblend;
|
||||||
|
margin: 3px 0px 3px 2px;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 8px;
|
||||||
|
border-radius: 18px 0px 0px 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
background-color: @altblend;
|
||||||
|
${
|
||||||
|
if config.machine == "fire" then
|
||||||
|
''
|
||||||
|
margin: 3px 0px 3px 2px;
|
||||||
|
padding-right: 5px;
|
||||||
|
padding-left: 8px;
|
||||||
|
border-radius: 18px 0px 0px 18px;
|
||||||
|
''
|
||||||
|
else
|
||||||
|
''
|
||||||
|
margin: 3px 2px;
|
||||||
|
padding: 0px 8px;
|
||||||
|
border-radius: 18px;
|
||||||
|
''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight, #memory {
|
||||||
|
background-color: @altblend;
|
||||||
|
margin: 3px 4px 3px 0px;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 8px;
|
||||||
|
border-radius: 0px 18px 18px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
background-color: @altblend;
|
||||||
|
margin: 3px 4px;
|
||||||
|
padding: 0px 6px;
|
||||||
|
border-radius: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#window {
|
||||||
|
font-family: "NotoSans Nerd Font";
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
color: @magenta;
|
||||||
|
text-shadow: 0px 0px 2px shade(@magenta, 1.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu {color: @green;}
|
||||||
|
#memory {color: @yellow;}
|
||||||
|
#temperature {color: @blue;}
|
||||||
|
#clock {color: @blue;}
|
||||||
|
|
||||||
|
#temperature {color: @blue;}
|
||||||
|
#temperature.critical {color: @altyellow;}
|
||||||
|
|
||||||
|
@keyframes blink { to { color: @background; } }
|
||||||
|
|
||||||
|
#battery {color: @green;}
|
||||||
|
#battery.warning:not(.charging) {color: @altyellow;}
|
||||||
|
#battery.low:not(.charging) {color: @altred;}
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: #ff2525;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 1s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {color: @yellow;}
|
||||||
|
#network {color: @green;}
|
||||||
|
#pulseaudio {color: @pink;}
|
||||||
|
#pulseaudio.muted {color: @red;}
|
||||||
|
#idle_inhibitor.deactivated {color: @altred;}
|
||||||
|
#idle_inhibitor.activated {color: @altgreen;}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -107,9 +107,110 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Rofi
|
||||||
|
|
||||||
|
programs.rofi.enable = true;
|
||||||
|
programs.rofi.package = pkgs.rofi-wayland;
|
||||||
|
|
||||||
|
xdg.configFile.rofi.source = ./rofi;
|
||||||
|
|
||||||
|
# EWW
|
||||||
|
|
||||||
|
programs.eww.enable = true;
|
||||||
|
programs.eww.configDir = ./eww;
|
||||||
|
|
||||||
|
systemd.user.services.eww =
|
||||||
|
let eww = lib.getExe config.programs.eww.package;
|
||||||
|
in {
|
||||||
|
Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
|
||||||
|
Unit = {
|
||||||
|
Description = "GTK-based custom widgets";
|
||||||
|
Documentation = "https://github.com/elkowar/eww";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
ConditionEnvironment = "WAYLAND_DISPLAY";
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${eww} daemon --no-daemonize";
|
||||||
|
ExecStartPost = "${eww} open ${config.machine}_bar --screen 0";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = "5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Mako
|
||||||
|
|
||||||
|
services.mako.enable = true;
|
||||||
|
services.mako.settings = {
|
||||||
|
font = "JetBrainsMono Nerd Font 10";
|
||||||
|
format = ''<i>%a</i>\n<b>%s</b>\n\n%b'';
|
||||||
|
layer = "overlay";
|
||||||
|
backgroundColor = "#111320d0";
|
||||||
|
width = 300;
|
||||||
|
margin = "5";
|
||||||
|
padding = "5,10";
|
||||||
|
borderSize = 2;
|
||||||
|
borderColor = "#7bc5e4";
|
||||||
|
borderRadius = 5;
|
||||||
|
progressColor = "source #4e90ad";
|
||||||
|
|
||||||
|
extraConfig =
|
||||||
|
''
|
||||||
|
[urgency=low]
|
||||||
|
format=<i>%s</i>\n%b
|
||||||
|
background-color=#111111c0
|
||||||
|
border-color=#787c99
|
||||||
|
progress-color=source #474f6f
|
||||||
|
border-size=1
|
||||||
|
|
||||||
|
[urgency=high]
|
||||||
|
background-color=#1e0909d0
|
||||||
|
border-color=#ce7284
|
||||||
|
progress-color=source #bc5469
|
||||||
|
border-size=2
|
||||||
|
default-timeout=0
|
||||||
|
ignore-timeout=1
|
||||||
|
|
||||||
|
|
||||||
|
[app-name=discord]
|
||||||
|
format=<b>%s</b>\n\n%b
|
||||||
|
border-color=#7da6ff
|
||||||
|
|
||||||
|
[app-name=discordcanary]
|
||||||
|
format=<b>%s</b>\n\n%b
|
||||||
|
border-color=#7da6ff
|
||||||
|
|
||||||
|
|
||||||
|
[category=multimedia]
|
||||||
|
anchor=center
|
||||||
|
width=430
|
||||||
|
font=JetBrainsMono Nerd Font 13
|
||||||
|
format=<i>%s</i>
|
||||||
|
border-size=1
|
||||||
|
default-timeout=2000
|
||||||
|
|
||||||
|
[category=multimedia app-name=pamixer body=false]
|
||||||
|
background-color=#111111c0
|
||||||
|
border-color=#787c99
|
||||||
|
progress-color=source #474f6f
|
||||||
|
|
||||||
|
[category=multimedia app-name=pamixer body=true]
|
||||||
|
background-color=#111111c0
|
||||||
|
border-color=#ce7284
|
||||||
|
progress-color=source #bc5469
|
||||||
|
|
||||||
|
[category=multimedia app-name=brightnessctl]
|
||||||
|
background-color=#111111c0
|
||||||
|
border-color=#ffea63
|
||||||
|
progress-color=source #a08348
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# WLuma
|
# WLuma
|
||||||
|
|
||||||
# systemd.user.services.wluma = lib.mkIf (config.machine == "fire") {
|
# systemd.user.services.wluma = lib.mkIf (config.machine== "fire") {
|
||||||
# Install.WantedBy = [ "graphical-session.target" ];
|
# Install.WantedBy = [ "graphical-session.target" ];
|
||||||
|
|
||||||
# Unit = {
|
# Unit = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue