glorious refactor (part 2

This commit is contained in:
Schrottkatze 2024-03-06 11:09:02 +01:00
parent 2a5e635c0d
commit d002a100dd
Signed by: schrottkatze
SSH key fingerprint: SHA256:hXb3t1vINBFCiDCmhRABHX5ocdbLiKyCdKI4HK2Rbbc
20 changed files with 308 additions and 347 deletions

View file

@ -0,0 +1,6 @@
{...}: {
imports = [
./xmobar
./polybar.nix
];
}

View file

@ -0,0 +1,146 @@
{
config,
lib,
pkgs,
...
}: {
services.polybar = {
enable = true;
package = pkgs.polybarFull;
script = "";
settings = {
colors = {
background = "#282828";
background-alt = "#3c3836";
foreground = "#ebdbb2";
primary = "#d65d0e";
secondary = "#fe8019";
alert = "#cc241d";
disabled = "#504945";
};
"bar/status" = {
# Style
bottom = true;
width = "100%";
height = "24px";
radius = 0;
tray-position = "center";
background = "\${colors.background}";
foreground = "\${colors.foreground}";
line-size = "4px";
border-color = "#00000000";
padding-left = 0;
padding-right = 1;
module-margin = 1;
separator = "|";
separator-foreground = "\${colors.disabled}";
font-0 = "FiraCode Nerd Font";
modules-left = "xworkspaces xwindow";
modules-right = "memory cpu wlan bat0 bat1";
cursor-click = "pointer";
cursor-scroll = "ns-resize";
enable-ipc = true;
wm-restack = "generic";
override-redirect = false;
};
"module/xworkspaces" = {
type = "internal/xworkspaces";
label-active = "";
label-active-padding = 1;
label-occupied = "";
label-occupied-padding = 1;
label-urgent = "";
label-urgent-foreground = "\${colors.alert}";
label-urgent-padding = 1;
label-empty = "";
label-empty-foreground = "\${colors.disabled}";
label-empty-padding = 1;
};
"module/xwindow" = {
type = "internal/xwindow";
label = "%title:0:60:...%";
};
"module/memory" = {
type = "internal/memory";
interval = 2;
format-prefix = "󰍛 ";
format-prefix-foreground = "\${colors.primary}";
label = "%percentage_used:2%%";
};
"module/cpu" = {
type = "internal/cpu";
interval = "2";
format-prefix = "󰻠 ";
format-prefix-foreground = "\${colors.primary}";
label = "%percentage:2%%";
};
"network-base" = {
type = "internal/network";
interval = 5;
format-connected = "<ramp-signal> <label-connected>";
format-disconnected = "<label-disconnected>";
label-disconnected = "󰣼";
label-disconnected-foreground = "#d65d0e";
ramp.signal = [
"%{F#cc241d}󰣾"
"%{F#d79921}󰣴"
"%{F#98971a}󰣶"
"%{F#98971a}󰣸"
"%{F#98971a}󰣺"
];
};
"module/wlan" = {
"inherit" = "network-base";
interface-type = "wireless";
label-connected = "%{F#F0C674}%{F-} %local_ip%";
};
"battery-base" = {
type = "internal/battery";
poll-interval = 1;
time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M";
label-charging = "%{F#98971a}󰚥 %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%";
format-charging = "<ramp-capacity> <label-charging>";
label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%";
format-discharging = "<ramp-capacity> <label-discharging>";
label-full = "%{F#98971a}󰁹%{F#ebdbb2} %percentage%%";
format-full = "<label-full>";
label-low = "%{F#cc241d}󰂎%{F#ebdbb2} %percentage%%";
format-low = "<label-low>";
ramp.capacity = [
"%{F#cc241d}󰁺"
"%{F#d79921}󰁻"
"%{F#98971a}󰁼"
"%{F#98971a}󰁽"
"%{F#98971a}󰁾"
"%{F#98971a}󰁿"
"%{F#98971a}󰂀"
"%{F#98971a}󰂁"
"%{F#98971a}󰂂"
"%{F#98971a}󰁹"
];
};
"module/bat0" = {
"inherit" = "battery-base";
battery = "BAT0";
adapter = "ADP1";
};
"module/bat1" = {
"inherit" = "battery-base";
battery = "BAT1";
adapter = "ADP1";
};
"settings" = {
screenchange-reload = true;
pseudo-transparency = true;
};
};
};
}

View file

@ -0,0 +1,27 @@
{
lib,
pkgs,
...
}: let
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
with pkgs; [
xmobar
statgrab
]);
in {
home = {
packages = [xmobarGhc];
file."xmobar.hs" = rec {
source = ./xmobar.hs;
target = ".config/xmobar/xmobar.hs";
onChange = ''
${xmobarGhc}/bin/ghc -threaded ${target}
${pkgs.busybox}/bin/pkill xmobar
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
'';
};
};
programs.xmobar = {
enable = true;
};
}

View file

@ -0,0 +1,47 @@
import Xmobar
import System.Statgrab
-- TODOS:
-- - custom cpu module
-- - custom mem module
-- - custom network/ping module with avg of n pings and blah
-- - custom graph rendering based on braille characters
-- - custom "ramp" thingies
-- - newsticker?
-- - mail/message monitoring
-- - if possible, different bars per workspace
data CustomCpu = CustomCpu
deriving (Read, Show)
instance Exec CustomCpu where
alias CustomCpu = "cpu"
run CustomCpu = do
-- return (show :: IO String (snapshot :: Stats CPUPercent))
return "meow"
fc code content = "<fc=" ++ code ++ ">" ++ content ++ "</fc>"
sep = fc "#7c6f64"
icon = fc "#d65d0e"
config :: Config
config =
defaultConfig
{ font = "FiraCode Nerd Font",
allDesktops = True,
alpha = 255,
bgColor = "#282828",
fgColor = "#ebdbb2",
commands =
[ Run $ Xmobar.Memory ["t", "Mem: <usedratio>%"] 10,
Run $ CustomCpu,
Run $ Date (icon "\983277" ++ " %Y" ++ sep "-" ++ "%m" ++ sep "-" ++ "%d " ++ icon "\988236" ++ " %H" ++ sep ":" ++ "%M" ++ sep ":" ++ "%S ") "date" 10
],
template = "%memory% }{ %cpu% }{ %date%",
alignSep = "}{",
position = TopH 24
}
main :: IO ()
main = xmobar config -- or: configFromArgs config >>= xmobar