NixOS-Configs/home/gui/sway.nix
2024-04-24 21:47:02 -05:00

205 lines
6.9 KiB
Nix

{ inputs, pkgs, hostname, outputs, osConfig, ... }:
{
xdg.configFile."sway/config".source = ./files/sway/${osConfig.networking.hostName};
services = {
swayidle = {
enable = true;
timeouts = [
{ timeout = 300; command = "/home/bin/don/lock.sh"; }
{ timeout = 360; command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'"; }
];
events = [
{ event = "after-resume"; command = "${pkgs.sway}/bin/swaymsg 'output * dpms on'"; }
{ event = "before-sleep"; command = "/home/bin/don/lock.sh"; }
];
};
};
programs = {
swaylock = {
enable = true;
settings = {
ignore-empty-password = true;
daemonize = true;
indicator-radius = "100";
scaling = "fill";
#fade-in = "3";
#effect-blur = "3x10";
};
};
waybar = {
enable = true;
settings = {
mainBar = {
ipc = true;
position = "bottom";
height = 10;
spacing = 0;
modules-left = ["sway/workspaces" "sway/mode" "wlr/workspaces" "custom/mycal"];
modules-center = [];
modules-right = ["idle_inhibitor" "custom/mytimew" "pulseaudio" "custom/mymusic" "bluetooth" "network" "backlight" "battery" "battery#bat2" "tray" "custom/mycal" "clock"];
bluetooth = {
format-alt = "bt: {status}";
format-on = "bt";
format-connected = "^bt";
format-off = "!bt";
format-disabled = "xbt";
on-click = "bluetoogle";
tooltip-format = "{status}";
};
backlight = {
device = "intel_backlight";
format = "{icon} {percent}%";
format-alt-click = "click-right";
on-scroll-down = "light -A 1";
on-scroll-up = "light -U 1";
};
"custom/mytimew" = {
exec = "~/bin/timebar";
interval = 30;
on-click = "alacritty -e ~/bin/ttmenu";
};
"custom/mycal" = {
exec = "~/bin/show-next-event";
interval = 300;
on-click = "~/bin/mynewterm -e ikhal";
};
"custom/mymusic" = {
exec = "~/bin/show-playing";
on-click = "~/bin/control-music --pause";
interval = 5;
};
"sway/window" = {
icon-size = 10;
};
"sway/mode" = {
format = "<span style=\"italic\">{}</span>";
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "";
deactivated = "";
};
};
tray = {
icon-size = 16;
spacing = 10;
};
clock = {
tooltip-format = "<big>{:%Y %B %d}</big>\n<tt><small>{calendar}</small></tt>";
format = "{:%I:%M %p}";
format-alt = "{:%Y-%m-%d}";
on-click = "~/bin/mynewterm -e ikhal";
};
cpu = {
format = "cpu: {usage}%";
tooltip = false;
};
memory = {
format = "mem: {}%";
};
temperature = {
critical-threshold = 80;
format = "{temperatureC}°C {icon}";
};
battery = {
states = {
good = 75;
warning = 20;
critical = 10;
};
format = "{capacity}% {time}";
format-charging = "c:{capacity}% {time}";
format-plugged = "p:{capacity}% {time}";
format-discharging = "d:{capacity}% {time}";
format-alt = "{time} {icon}";
};
"battery#bat2" = {
bat = "BAT2";
};
network = {
format-wifi = "{essid} ({signalStrength}%)";
format-ethernet = "{ipaddr}/{cidr}";
tooltip-format = "{ifname} via {gwaddr}";
format-linked = "{ifname} (No IP)";
format-disconnected = "Disconnected";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
pulseaudio = {
format = "v:{volume}%";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = "muted";
format-source = "v:{volume}% ";
format-source-muted = "";
format-icons = {
headphone = "hp";
hands-free = "hf";
headset = "hs";
phone = "p";
};
on-click = "pavucontrol";
};
};
};
style =
''
* {
border: none; border-radius: 0;
font-family: "JetBrains Mono", FontAwesome6Free, SymbolsNerdFont, Roboto, Helvetica, Arial, sans-serif;
font-size: 10px; min-height: 0;
}
window#waybar {
background: rgba(43, 48, 59, 0.5);
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
color: #ffffff;
}
window#waybar.hidden { opacity: 0.0; }
#workspaces button {
padding: 0 5px;
background: transparent;
color: #ffffff;
border-bottom: 3px solid transparent;
}
#workspaces button.focused { background: #64727D; border-bottom: 3px solid #ffffff; }
#workspaces button.urgent { background-color: #eb4d4b; }
#mode { background: #64727D; border-bottom: 3px solid #ffffff; }
#clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-mymusic, #tray, #mode, #idle_inhibitor, #bluetooth {
padding: 0 5px;
margin: 0 0px;
}
#clock { background-color: #64727D; color: #f1fa8c; }
#battery { color: #000000; background-color: #50fa7b; }
#battery.warning { color: #000000; background-color: #ff79c6; }
#battery.critical { color: #ffffff; background-color: #ff5555; }
#battery.charging { color: #44475a; background-color: #50fa7b; }
@keyframes blink { to { background-color: #ffffff; color: #000000; } }
#battery.critical:not(.charging) {
background: #f53c3c; color: #ffffff;
animation-name: blink; animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#cpu { background: #2ecc71; color: #000000; }
#memory { background: #9b59b6; }
#backlight { color: #000000; background: #90b1b1; }
#bluetooth { background: #ffb86c; color: #000000; }
#network { background: #bd93f9; color: #000000; }
#network.disconnected { background: #ff5555; }
#pulseaudio { background: #ffb86c; color: #000000; }
#pulseaudio.muted { background: #90b1b1; color: #2a5c45; }
#custom-mytimew { background: #bd93f9; color: #000000; }
#custom-mymusic { background: #8be9fd; color: #000000; }
#custom-mycal { background: #cccc99; color: #2a5c45; }
#temperature { background: #f0932b; }
#temperature.critical { background: #eb4d4b; }
#tray { background-color: #64727D; }
#idle_inhibitor { background-color: #2d3436; }
#idle_inhibitor.activated { background-color: #ecf0f1; color: #2d3436; }
'';
};
};
}