diff --git a/home-manager/Bsodwindows10-wikimedia.png b/home-manager/Bsodwindows10-wikimedia.png new file mode 100644 index 0000000..8845ddf Binary files /dev/null and b/home-manager/Bsodwindows10-wikimedia.png differ diff --git a/home-manager/default-waybar-style.css b/home-manager/default-waybar-style.css new file mode 100644 index 0000000..7e83028 --- /dev/null +++ b/home-manager/default-waybar-style.css @@ -0,0 +1,327 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; +} + +window#waybar { + 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; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +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; + box-shadow: inset 0 -3px #ffffff; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: #a37800; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #ffffff; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* 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 { + background-color: #64727D; +} + +#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#power-profiles-daemon { + padding-right: 15px; +} + +#power-profiles-daemon.performance { + background-color: #f53c3c; + color: #ffffff; +} + +#power-profiles-daemon.balanced { + background-color: #2980b9; + color: #ffffff; +} + +#power-profiles-daemon.power-saver { + background-color: #2ecc71; + color: #000000; +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2ecc71; + color: #000000; +} + +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: #f1c40f; + color: #000000; +} + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +#wireplumber { + background-color: #fff0f5; + color: #000000; +} + +#wireplumber.muted { + background-color: #f53c3c; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #2980b9; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} + +#language { + background: #00b093; + color: #740864; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad.empty { + background-color: transparent; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; + color: white; +} + +#privacy-item.screenshare { + background-color: #cf5700; +} + +#privacy-item.audio-in { + background-color: #1ca000; +} + +#privacy-item.audio-out { + background-color: #0069d4; +} diff --git a/home-manager/desktop.nix b/home-manager/desktop.nix index 1be0a71..5e7b0ad 100644 --- a/home-manager/desktop.nix +++ b/home-manager/desktop.nix @@ -3,7 +3,6 @@ { pkgs , inputs -, lib , ... }: let @@ -22,6 +21,7 @@ in ./firefox.nix ./vscode.nix ./waybar.nix + ./swaylock.nix ]; home = { diff --git a/home-manager/swaylock.nix b/home-manager/swaylock.nix new file mode 100644 index 0000000..28d2f95 --- /dev/null +++ b/home-manager/swaylock.nix @@ -0,0 +1,6 @@ +{ ... }: { + programs.swaylock.enable = true; + programs.swaylock.settings = { + image = ./Bsodwindows10-wikimedia.png; + }; +} diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index 7252dac..d375a0d 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -1,10 +1,12 @@ -{ config, ... }: { +{ config, pkgs, lib, ... }: + +{ home.file."${config.xdg.configHome}/waybar/config.jsonc" = { text = builtins.toJSON { height = 35; spacing = 4; - modules-left = [ ]; + modules-left = [ "systemd-failed-units" ]; modules-center = [ "clock" ]; @@ -14,29 +16,40 @@ "cpu" "memory" "tray" + "custom/power" ]; + + systemd-failed-units = { + hide-on-ok = true; # Hide if there are zero failed units. + format = "✗ {nr_failed}"; + format-ok = "✓"; + system = true; # Monitor failed systemwide units. + user = false; # Ignore failed user units. + }; clock = { - format = "{:%a %F %H:%M}"; - "tooltip-format" = "{calendar}"; - "calendar" = { - "mode" = "year"; - "mode-mon-col" = 3; - "weeks-pos" = "right"; - "on-scroll" = 1; - "format" = { - "months" = "{}"; - "days" = "{}"; - "weeks" = "W{}"; - "weekdays" = "{}"; - "today" = "{}"; + interval = 1; + format = "{:%a %F %H:%M:%S}"; + tooltip-format = "{calendar}"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "right"; + on-scroll = 1; + format = { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weekdays = "{}"; + today = "{}"; }; }; - "actions" = { - "on-click-right" = "mode"; - "on-scroll-up" = "shift_up"; - "on-scroll-down" = "shift_down"; + actions = { + on-click-right = "mode"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; }; }; + pulseaudio = { # "scroll-step": 1, // %, can be a float "format" = "{volume}% {icon} {format_source}"; @@ -54,9 +67,8 @@ "car" = ""; "default" = [ "" "" "" ]; }; - "on-click" = "pavucontrol"; + "on-click" = lib.getExe pkgs.pavucontrol; }; - cpu = { format = "{usage}% "; tooltip = false; @@ -67,7 +79,63 @@ tray = { spacing = 10; }; - + "custom/power" = + let + power-menu = pkgs.writeText "power_menu.xml" '' + + + + + + Lock 🔒 + + + + + + + + Reboot ♻️ + + + + + Poweroff 💤 + + + + + ''; + in + { + "format" = "⏻"; + "tooltip" = false; + "menu" = "on-click"; + "menu-file" = power-menu; + "menu-actions" = { + "lock" = "${lib.getExe pkgs.swaylock}"; + "reboot" = "reboot"; + "poweroff" = "poweroff"; + }; + }; }; }; + home.file."${config.xdg.configHome}/waybar/style.css" = { + text = '' + ${builtins.readFile ./default-waybar-style.css} + + #custom-power { + padding-left: 15px; + padding-right: 15px; + background-color: rebeccapurple; + } + + + #systemd-failed-units { + padding-left: 30px; + padding-right: 30px; + background-color: red; + } + ''; + }; }