Compare commits
3 commits
3a08d19841
...
ff647de9ce
Author | SHA1 | Date | |
---|---|---|---|
ff647de9ce | |||
6d61976106 | |||
f509e8abbc |
15 changed files with 249 additions and 102 deletions
|
@ -23,5 +23,6 @@ each host should have these files:
|
||||||
- better theming for hyprlock, rofi, dunst (accent for hyprlock & dunst, variants for rofi)
|
- better theming for hyprlock, rofi, dunst (accent for hyprlock & dunst, variants for rofi)
|
||||||
- some way for border radius, border, tranparency theme options
|
- some way for border radius, border, tranparency theme options
|
||||||
- tags for pip and popups in hyprland config
|
- tags for pip and popups in hyprland config
|
||||||
- remove exec-once stuff and use systemd services instead
|
- make wl-clip-persist, polkit agent, and networkmanager applet systemd services?
|
||||||
|
- uh oh! it seems clipse is broken. the listen-shell service stops after you open the gui
|
||||||
- gtk cursors are MESSED UP. top priority rn
|
- gtk cursors are MESSED UP. top priority rn
|
||||||
|
|
|
@ -17,11 +17,11 @@
|
||||||
# debug
|
# debug
|
||||||
strace ltrace lsof
|
strace ltrace lsof
|
||||||
# apps
|
# apps
|
||||||
firefox qalculate-gtk krita inkscape onlyoffice-desktopeditors vlc nicotine-plus transmission_4-gtk font-manager
|
firefox qalculate-gtk krita inkscape onlyoffice-desktopeditors vlc nicotine-plus transmission_4-gtk font-manager obs-studio kdePackages.kdenlive
|
||||||
# compatibility
|
# compatibility
|
||||||
wineWowPackages.waylandFull winetricks
|
wineWowPackages.waylandFull winetricks
|
||||||
# misc
|
# misc
|
||||||
bat file which packwiz yt-dlp wl-screenrec wl-clipboard grim hyfetch
|
bat file which packwiz yt-dlp hyfetch
|
||||||
# games
|
# games
|
||||||
prismlauncher
|
prismlauncher
|
||||||
] ++ (with pkgs.my; [
|
] ++ (with pkgs.my; [
|
||||||
|
|
|
@ -6,18 +6,18 @@ let
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.batsignal = {
|
options.modules.desktop.batsignal = {
|
||||||
enable = mkEnableOption "Enable batsignal, a battery notification service";
|
enable = mkEnableOption "Enable batsignal, a battery notification service";
|
||||||
package = mkOption {
|
|
||||||
type = types.package;
|
|
||||||
default = pkgs.batsignal;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.desktop.execOnStart = [
|
hm.services.batsignal = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraArgs = [
|
||||||
# -w 20 -c 10 -d 5 -- set battery levels
|
# -w 20 -c 10 -d 5 -- set battery levels
|
||||||
# -p -- notify on plug/unplug
|
# -p -- notify on plug/unplug
|
||||||
# -m 2 -- set interval to 2 seconds
|
# -m 2 -- set interval to 2 seconds
|
||||||
"${lib.getExe cfg.package} -w 20 -c 10 -d 5 -p -m 2"
|
"-w 20" "-c 10" "-d 5" "-p" "-m 2"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,28 +9,28 @@ in {
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.clipse;
|
default = pkgs.clipse;
|
||||||
|
example = "pkgs.clipse";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# runtime dependencies
|
hm.systemd.user.services.clipse = {
|
||||||
user.packages = with pkgs; [ wl-clipboard ];
|
Unit = {
|
||||||
|
Description = "clipse, a generic clipboard manager";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
modules.desktop.execOnStart = [ "${lib.getExe cfg.package} -listen-shell" ];
|
Install = {
|
||||||
hm.wayland.windowManager.hyprland.settings = let
|
WantedBy = [ "graphical-session.target" ];
|
||||||
class = "clipse";
|
};
|
||||||
in {
|
|
||||||
windowrulev2 = [
|
|
||||||
"float, class:^${class}$"
|
|
||||||
"size 622 652, class:^${class}$"
|
|
||||||
"center, class:^${class}$"
|
|
||||||
"stayfocused, class:^${class}$"
|
|
||||||
"dimaround, class:^${class}$"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind = [
|
Service = {
|
||||||
"$mod, V, exec, ${lib.getExe pkgs.wezterm} start --class ${class} -e '${lib.getExe cfg.package}'"
|
Type = "simple";
|
||||||
];
|
ExecStart = "${lib.getExe cfg.package} -listen-shell";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 5;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,11 +9,6 @@ in {
|
||||||
type = types.nullOr (types.enum ["x11" "wayland"]);
|
type = types.nullOr (types.enum ["x11" "wayland"]);
|
||||||
description = "What display protocol to use";
|
description = "What display protocol to use";
|
||||||
};
|
};
|
||||||
execOnStart = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
description = "List of commands to run on startup";
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
|
@ -57,9 +52,18 @@ in {
|
||||||
SDL_VIDEODRIVER = "wayland";
|
SDL_VIDEODRIVER = "wayland";
|
||||||
CLUTTER_BACKEND = "wayland";
|
CLUTTER_BACKEND = "wayland";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hm.home.packages = with pkgs; [
|
||||||
|
wl-clipboard
|
||||||
|
wl-clipboard-x11 # compat with xclip
|
||||||
|
];
|
||||||
})
|
})
|
||||||
(mkIf (cfg.envProto == "x11") {
|
(mkIf (cfg.envProto == "x11") {
|
||||||
services.xserver.excludePackages = [ pkgs.xterm ];
|
services.xserver.excludePackages = [ pkgs.xterm ];
|
||||||
|
|
||||||
|
hm.home.packages = with pkgs; [
|
||||||
|
xclip
|
||||||
|
];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
hm.services.dunst = {
|
hm.services.dunst = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
settings = with config.colorScheme.palette; {
|
settings = with config.colorScheme.palette; {
|
||||||
global = {
|
global = {
|
||||||
follow = "mouse";
|
follow = "mouse";
|
||||||
|
|
|
@ -9,9 +9,10 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.desktop.execOnStart = [ "${pkgs.gammastep}/bin/gammastep-indicator" ];
|
|
||||||
hm.services.gammastep = {
|
hm.services.gammastep = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
tray = true;
|
||||||
|
|
||||||
# portland, oregon
|
# portland, oregon
|
||||||
latitude = 45.3112;
|
latitude = 45.3112;
|
||||||
longitude = -122.4055;
|
longitude = -122.4055;
|
||||||
|
|
|
@ -88,10 +88,10 @@ in {
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
]));
|
]));
|
||||||
bindr = [ # "bind released"
|
bindr = [ # "bind released"
|
||||||
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
|
"SUPER, Super_L, exec, ${lib.getExe config.modules.desktop.nwg-drawer.package}"
|
||||||
];
|
];
|
||||||
bind = let
|
bind = let
|
||||||
screenshotScript = pkgs.writeScript "screenshot" ''
|
screenshotScript = pkgs.writeShellScript "screenshot" ''
|
||||||
temp_file=$(mktemp)
|
temp_file=$(mktemp)
|
||||||
trap 'rm -f "$temp_file"' EXIT
|
trap 'rm -f "$temp_file"' EXIT
|
||||||
|
|
||||||
|
@ -149,9 +149,10 @@ in {
|
||||||
"$mod, bracketleft, workspace, e-1"
|
"$mod, bracketleft, workspace, e-1"
|
||||||
"$mod, bracketright, workspace, e+1"
|
"$mod, bracketright, workspace, e+1"
|
||||||
|
|
||||||
"$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run"
|
"$mod, R, exec, ${lib.getExe config.modules.desktop.rofi.package} -show run"
|
||||||
"$mod, T, exec, ${lib.getExe pkgs.wezterm}"
|
"$mod, T, exec, ${lib.getExe config.modules.software.system.wezterm.package}"
|
||||||
"$mod, L, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
|
"$mod, L, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
|
||||||
|
"$mod, V, exec, ${lib.getExe config.modules.software.system.wezterm.package} start --class 'clipse' -e '${lib.getExe config.modules.desktop.clipse.package}'"
|
||||||
|
|
||||||
# screenshot
|
# screenshot
|
||||||
# area
|
# area
|
||||||
|
@ -164,10 +165,6 @@ in {
|
||||||
", XF86LaunchA, exec, ${screenshotScript} area"
|
", XF86LaunchA, exec, ${screenshotScript} area"
|
||||||
", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20"
|
", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20"
|
||||||
", XF86ScreenSaver, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
|
", XF86ScreenSaver, exec, ${lib.getExe config.modules.desktop.hyprlock.package}"
|
||||||
|
|
||||||
# alt-tab emulation
|
|
||||||
# doesnt activate when we let go of alt sadly
|
|
||||||
"ALT, Tab, exec, ${lib.getExe pkgs.rofi-wayland} -show window"
|
|
||||||
] ++ (
|
] ++ (
|
||||||
# workspaces
|
# workspaces
|
||||||
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||||
|
@ -205,7 +202,7 @@ in {
|
||||||
"${lib.getExe pkgs.networkmanagerapplet}" # network applet
|
"${lib.getExe pkgs.networkmanagerapplet}" # network applet
|
||||||
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent
|
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent
|
||||||
"${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing
|
"${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing
|
||||||
] ++ config.modules.desktop.execOnStart;
|
];
|
||||||
|
|
||||||
env = [
|
env = [
|
||||||
"XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}"
|
"XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}"
|
||||||
|
@ -224,17 +221,17 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
windowrulev2 = [
|
windowrulev2 = [
|
||||||
# common popups
|
# TODO: dedupe
|
||||||
# we should totally dedupe these
|
# commons
|
||||||
"float, class:org.gnome.FileRoller"
|
"float, class:^org.gnome.FileRoller$"
|
||||||
"size 1100 650, class:org.gnome.FileRoller"
|
"size 1100 650, class:^org.gnome.FileRoller$"
|
||||||
"center, class:org.gnome.FileRoller"
|
"center, class:^org.gnome.FileRoller$"
|
||||||
"float, class:org.gnome.Loupe"
|
"float, class:^org.gnome.Loupe$"
|
||||||
"size 1100 650, class:org.gnome.Loupe"
|
"size 1100 650, class:^org.gnome.Loupe$"
|
||||||
"center class:org.gnome.Loupe"
|
"center class:^org.gnome.Loupe$"
|
||||||
"float, class:com.gabm.satty"
|
"float, class:^com.gabm.satty$"
|
||||||
"size 1100 650, class:com.gabm.satty"
|
"size 1100 650, class:^com.gabm.satty$"
|
||||||
"center 1100 650, class:com.gabm.satty"
|
"center 1100 650, class:^com.gabm.satty$"
|
||||||
"float, initialTitle:^Open Folder$"
|
"float, initialTitle:^Open Folder$"
|
||||||
"size 1100 650, initialTitle:^Open Folder$"
|
"size 1100 650, initialTitle:^Open Folder$"
|
||||||
"center, initialTitle:^Open Folder$"
|
"center, initialTitle:^Open Folder$"
|
||||||
|
@ -253,17 +250,29 @@ in {
|
||||||
"float, initialTitle:^File Upload$"
|
"float, initialTitle:^File Upload$"
|
||||||
"size 1100 650, initialTitle:^File Upload$"
|
"size 1100 650, initialTitle:^File Upload$"
|
||||||
"center, initialTitle:^File Upload$"
|
"center, initialTitle:^File Upload$"
|
||||||
|
"float, class:^clipse$"
|
||||||
"float, class:\.exe$"
|
"size 1100 650, class:^clipse$"
|
||||||
|
"center, class:^clipse$"
|
||||||
# fix focus
|
# privacy popups
|
||||||
"stayfocused, class:^gcr-prompter"
|
"stayfocused, class:^clipse$"
|
||||||
"dimaround, class:^gcr-prompter"
|
"dimaround, class:^clipse$"
|
||||||
|
"stayfocused, class:^gcr-prompter$"
|
||||||
|
"dimaround, class:^gcr-prompter$"
|
||||||
"stayfocused, class:^pinentry-"
|
"stayfocused, class:^pinentry-"
|
||||||
"dimaround, class:^pinentry-"
|
"dimaround, class:^pinentry-"
|
||||||
"stayfocused, class:^polkit-"
|
"stayfocused, class:^polkit-"
|
||||||
"dimaround, class:^polkit-"
|
"dimaround, class:^polkit-"
|
||||||
|
|
||||||
|
"float, class:\.exe$"
|
||||||
|
"rounding 0, class:\.exe$"
|
||||||
|
|
||||||
|
# steam notifs
|
||||||
|
"rounding 0, title:^notificationtoasts_"
|
||||||
|
"pin, title:^notificationtoasts_"
|
||||||
|
"noborder, title:^notificationtoasts_"
|
||||||
|
"nofocus, title:^notificationtoasts_"
|
||||||
|
"noshadow, title:^notificationtoasts_"
|
||||||
|
|
||||||
# firefox pip
|
# firefox pip
|
||||||
"float, title:^Picture-in-Picture$"
|
"float, title:^Picture-in-Picture$"
|
||||||
"pin, title:^Picture-in-Picture$"
|
"pin, title:^Picture-in-Picture$"
|
||||||
|
@ -272,11 +281,12 @@ in {
|
||||||
# discord pip
|
# discord pip
|
||||||
"pin, initialTitle:^Discord Popout$"
|
"pin, initialTitle:^Discord Popout$"
|
||||||
"float, initialTitle:^Discord Popout$"
|
"float, initialTitle:^Discord Popout$"
|
||||||
|
"noborder, initialTitle:^Discord Popout$"
|
||||||
|
|
||||||
# workspace moving
|
# workspace moving
|
||||||
"workspace 1 silent, class:^firefox"
|
"workspace 1 silent, class:^firefox$"
|
||||||
"workspace 2 silent, class:code"
|
"workspace 2 silent, class:^code$"
|
||||||
"workspace 4 silent, class:vesktop"
|
"workspace 4 silent, class:^vesktop$"
|
||||||
];
|
];
|
||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
|
|
|
@ -6,9 +6,31 @@ let
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.nwg-drawer = {
|
options.modules.desktop.nwg-drawer = {
|
||||||
enable = mkEnableOption "Enable nwg-drawer, a GTK based application launcher for wayland";
|
enable = mkEnableOption "Enable nwg-drawer, a GTK based application launcher for wayland";
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.nwg-drawer;
|
||||||
|
example = "pkgs.nwg-drawer";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.desktop.execOnStart = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ];
|
hm.systemd.user.services.nwg-drawer = {
|
||||||
|
Unit = {
|
||||||
|
Description = "nwg-drawer, a GTK based application launcher for wayland";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${lib.getExe cfg.package} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,18 @@ let
|
||||||
in {
|
in {
|
||||||
options.modules.desktop.rofi = {
|
options.modules.desktop.rofi = {
|
||||||
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
|
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.rofi-wayland-unwrapped;
|
||||||
|
example = "pkgs.rofi";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
hm.programs.rofi = {
|
hm.programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.rofi-wayland;
|
package = cfg.package;
|
||||||
|
|
||||||
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}px";
|
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}px";
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
show-icons = true;
|
show-icons = true;
|
||||||
|
|
|
@ -14,21 +14,20 @@ in {
|
||||||
default = pkgs.swww;
|
default = pkgs.swww;
|
||||||
example = "pkgs.swww";
|
example = "pkgs.swww";
|
||||||
};
|
};
|
||||||
startScript = mkOption {
|
setScript = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.writeScript "swww-start" ''
|
default = pkgs.writeShellScript "swww-set" ''
|
||||||
if [ ! -f "${lastWallpaper}" ]; then
|
if [ ! -f "${lastWallpaper}" ]; then
|
||||||
echo "$(ls ${wallpapersFolder} | shuf -n 1)" > "${lastWallpaper}"
|
echo "$(ls ${wallpapersFolder} | shuf -n 1)" > "${lastWallpaper}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${cfg.package}/bin/swww-daemon &
|
|
||||||
${lib.getExe cfg.package} img "${wallpapersFolder}/$(cat ${lastWallpaper})" --transition-type none
|
${lib.getExe cfg.package} img "${wallpapersFolder}/$(cat ${lastWallpaper})" --transition-type none
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
swapScript = mkOption {
|
swapScript = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.writeScript "swww-swap" ''
|
default = pkgs.writeShellScript "swww-swap" ''
|
||||||
file=$(ls ${wallpapersFolder} | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '\n' -i -p "select a wallpaper")
|
file=$(ls ${wallpapersFolder} | ${lib.getExe config.modules.desktop.rofi.package} -dmenu -sep '\n' -i -p "select a wallpaper")
|
||||||
wallpaper="${wallpapersFolder}/$file"
|
wallpaper="${wallpapersFolder}/$file"
|
||||||
|
|
||||||
[ ! -f "$wallpaper" ] && exit 1
|
[ ! -f "$wallpaper" ] && exit 1
|
||||||
|
@ -42,6 +41,24 @@ in {
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
hm.home.packages = [ cfg.package ];
|
hm.home.packages = [ cfg.package ];
|
||||||
modules.desktop.execOnStart = [ "${cfg.startScript}" ];
|
hm.systemd.user.services.swww = {
|
||||||
|
Unit = {
|
||||||
|
Description = "swww, a Solution to your Wayland Wallpaper Woes";
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${cfg.package}/bin/swww-daemon";
|
||||||
|
ExecStartPost = "${cfg.setScript}";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,24 +104,52 @@ window#waybar.floating #window {
|
||||||
color: @teal;
|
color: @teal;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery {
|
#cpu {
|
||||||
color: @green;
|
color: @sapphire;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
color: @lavender;
|
||||||
|
}
|
||||||
|
#memory.warning {
|
||||||
|
color: @peach;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 3s;
|
||||||
|
}
|
||||||
|
#memory.critical {
|
||||||
|
color: @maroon;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
/* this here is ditto */
|
||||||
#battery.charging {
|
#battery.charging {
|
||||||
color: @green;
|
color: @green;
|
||||||
}
|
}
|
||||||
|
#battery.warning.discharging {
|
||||||
#battery.warning:not(.charging) {
|
|
||||||
color: @peach;
|
color: @peach;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 3s;
|
||||||
}
|
}
|
||||||
|
#battery.critical.discharging {
|
||||||
#battery.critical:not(.charging) {
|
|
||||||
color: @maroon;
|
color: @maroon;
|
||||||
}
|
animation-name: blink;
|
||||||
|
animation-duration: 2s;
|
||||||
#network {
|
|
||||||
color: @sapphire;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#backlight {
|
#backlight {
|
||||||
|
@ -131,6 +159,9 @@ window#waybar.floating #window {
|
||||||
#pulseaudio {
|
#pulseaudio {
|
||||||
color: @pink;
|
color: @pink;
|
||||||
}
|
}
|
||||||
|
#pulseaudio.muted {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
#custom-power {
|
#custom-power {
|
||||||
color: @red;
|
color: @red;
|
||||||
|
@ -149,13 +180,58 @@ window#waybar.floating #window {
|
||||||
color: @text;
|
color: @text;
|
||||||
}
|
}
|
||||||
|
|
||||||
tooltip {
|
box#playback {
|
||||||
|
background-color: transparent;
|
||||||
|
margin: 0 0;
|
||||||
|
padding: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpris {
|
||||||
|
background-color: @surface0;
|
||||||
|
margin: 0 0.25em;
|
||||||
|
padding: 0.15em 0.5em;
|
||||||
|
border-radius: 1em;
|
||||||
|
}
|
||||||
|
#mpris.playing {
|
||||||
|
color: @accent;
|
||||||
|
background: @surface0;
|
||||||
|
}
|
||||||
|
#mpris.paused, #mpris.stopped {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
window decoration {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip, window.popup menu {
|
||||||
background: @base;
|
background: @base;
|
||||||
border: 1px solid @surface2;
|
border: 1px solid @surface2;
|
||||||
|
font-size: 12px;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
tooltip *, window.popup {
|
||||||
|
font-family: CozetteVector, monospace;
|
||||||
}
|
}
|
||||||
tooltip * {
|
tooltip * {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
color: @text;
|
color: @text;
|
||||||
font-family: CozetteVector, monospace;
|
}
|
||||||
|
|
||||||
|
window.popup separator {
|
||||||
|
background-color: @surface0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.popup menuitem:disabled {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.popup menuitem:hover {
|
||||||
|
background-color: @accent;
|
||||||
|
color: @surface0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.popup menuitem:hover > box {
|
||||||
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,16 +14,15 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# runtime requirements for modules
|
# enables playerctld bus, required for waybar to read mpris
|
||||||
user.packages = with pkgs; [
|
hm.services.playerctld.enable = true;
|
||||||
# mpris
|
|
||||||
playerctl
|
|
||||||
];
|
|
||||||
|
|
||||||
modules.desktop.execOnStart = [ "${lib.getExe cfg.package}" ];
|
|
||||||
hm.programs.waybar = {
|
hm.programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# essentially just the service
|
||||||
|
# peculiar how this is a program
|
||||||
|
systemd.enable = true;
|
||||||
package = cfg.package;
|
package = cfg.package;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
layer = "top";
|
layer = "top";
|
||||||
|
@ -76,7 +75,7 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"custom/power" = let
|
"custom/power" = let
|
||||||
powerSelect = pkgs.writeScript "power-menu" ''
|
powerSelect = pkgs.writeShellScript "power-menu" ''
|
||||||
cmd=$(echo '⏻ shutdown|↻ reboot| lock|⎋ exit desktop environment' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }')
|
cmd=$(echo '⏻ shutdown|↻ reboot| lock|⎋ exit desktop environment' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }')
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
"⏻ shutdown")
|
"⏻ shutdown")
|
||||||
|
@ -172,11 +171,17 @@ in {
|
||||||
cpu = {
|
cpu = {
|
||||||
interval = 4;
|
interval = 4;
|
||||||
format = " {usage}% {avg_frequency}GHz";
|
format = " {usage}% {avg_frequency}GHz";
|
||||||
|
on-click = "${lib.getExe pkgs.gnome-system-monitor}";
|
||||||
};
|
};
|
||||||
memory = {
|
memory = {
|
||||||
interval = 4;
|
interval = 4;
|
||||||
format = " {percentage}%";
|
format = " {percentage}%";
|
||||||
tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap";
|
tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap";
|
||||||
|
on-click = "${lib.getExe pkgs.gnome-system-monitor}";
|
||||||
|
states = {
|
||||||
|
warning = 80;
|
||||||
|
critical = 90;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
power-profiles-daemon = {
|
power-profiles-daemon = {
|
||||||
format = "{icon}";
|
format = "{icon}";
|
||||||
|
@ -212,10 +217,11 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
mpris = {
|
mpris = {
|
||||||
format = "{status_icon} {dynamic}";
|
format = "♫ {dynamic}";
|
||||||
format-paused = "{status_icon} {dynamic}";
|
format-paused = "{status_icon} {dynamic}";
|
||||||
dynamic-order = [ "title" ];
|
dynamic-order = [ "artist" "title" ];
|
||||||
tooltip-format = "{player}: {dynamic}";
|
tooltip-format = "{player} | {status_icon} {artist} - {title} from {album} ({position}/{length})";
|
||||||
|
title-length = 48;
|
||||||
interval = 1;
|
interval = 1;
|
||||||
status-icons = {
|
status-icons = {
|
||||||
playing = "⏸";
|
playing = "⏸";
|
||||||
|
|
|
@ -14,14 +14,11 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.desktop.execOnStart = let
|
# uhm uh um
|
||||||
path = cfg.sockPath;
|
# i don't know how the code in home-manager is making the wob socket, but it is
|
||||||
script = pkgs.writeScript "launch-wob" ''
|
|
||||||
rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob}
|
|
||||||
'';
|
|
||||||
in [ (toString script) ];
|
|
||||||
hm.services.wob = {
|
hm.services.wob = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"" = {
|
"" = {
|
||||||
timeout = 1000;
|
timeout = 1000;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, config, ... }:
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
|
@ -6,6 +6,10 @@ let
|
||||||
in {
|
in {
|
||||||
options.modules.software.system.wezterm = {
|
options.modules.software.system.wezterm = {
|
||||||
enable = mkEnableOption "Enable wezterm, a blazingly fast terminal emulator";
|
enable = mkEnableOption "Enable wezterm, a blazingly fast terminal emulator";
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.wezterm;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -13,6 +17,8 @@ in {
|
||||||
|
|
||||||
hm.programs.wezterm = {
|
hm.programs.wezterm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = cfg.package;
|
||||||
|
|
||||||
extraConfig = let
|
extraConfig = let
|
||||||
fonts = config.modules.desktop.fonts.fonts;
|
fonts = config.modules.desktop.fonts.fonts;
|
||||||
in ''
|
in ''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue