switch to hyprland
This commit is contained in:
parent
7d7756968c
commit
b7bb2c58ed
2 changed files with 184 additions and 438 deletions
|
|
@ -50,455 +50,217 @@ in {
|
||||||
default = false;
|
default = false;
|
||||||
description = "If this PC has bluetooth support";
|
description = "If this PC has bluetooth support";
|
||||||
};
|
};
|
||||||
|
|
||||||
battery = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = "If this PC has a battery";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
services.swayidle = {
|
services.hypridle = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
|
||||||
events = [
|
settings = {
|
||||||
{
|
general = {
|
||||||
event = "before-sleep";
|
lock_cmd = "pidof hyprlock || hyporlock";
|
||||||
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
}
|
after_sleep_cmd = "hyperctl dispatch dpms on";
|
||||||
{
|
};
|
||||||
event = "lock";
|
|
||||||
command = "${pkgs.playerctl}/bin/playerctl -a pause; ${lockCommand}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "unlock";
|
|
||||||
command = "${pkgs.procps}/bin/pkill -USR1 swaylock";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
timeouts = [
|
listener = [
|
||||||
{
|
{
|
||||||
timeout = cfg.screensaver.lockTime;
|
timeout = cfg.screensaver.lockTime;
|
||||||
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
on-timeout = "loginctl lock-session";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeout = cfg.screensaver.offTime;
|
timeout = cfg.screensaver.offTime;
|
||||||
command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'";
|
on-timeout = "hyperctl dispatch dpms off";
|
||||||
resumeCommand = "${pkgs.sway}/bin/swaymsg 'output * dpms on'";
|
}
|
||||||
}
|
];
|
||||||
];
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.avizo.enable = true;
|
||||||
|
programs.hyprlock.enable = true;
|
||||||
|
services.swaync.enable = true;
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = false;
|
enable = true;
|
||||||
systemd.enable = true;
|
# package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
extraConfig = let
|
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
swayConfig = config.wayland.windowManager.sway.config;
|
plugins = with pkgs.hyprlandPlugins; [
|
||||||
swayBindings = swayConfig.keybindings;
|
# inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3
|
||||||
swayToHyprlandBinding = key: binding: let
|
# inputs.hypr-dynamic-cursors.packages.${pkgs.stdenv.hostPlatform.system}.hypr-dynamic-cursors
|
||||||
splitKey = lib.splitString "+" key;
|
hy3
|
||||||
|
hypr-dynamic-cursors
|
||||||
|
];
|
||||||
|
settings = {
|
||||||
|
"plugin:dynamic-cursors" = {
|
||||||
|
mode = "stretch";
|
||||||
|
};
|
||||||
|
"plugin:hy3" = {
|
||||||
|
no_gaps_when_only = 1;
|
||||||
|
};
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
animate_manual_resizes = true;
|
||||||
|
animate_mouse_windowdragging = true;
|
||||||
|
new_window_takes_over_fullscreen = 2;
|
||||||
|
middle_click_paste = false;
|
||||||
|
};
|
||||||
|
general = {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
layout = "hy3";
|
||||||
|
|
||||||
isMod = m: m == "Mod4" || m == "Shift";
|
gaps_in = 6;
|
||||||
convertMod = m:
|
gaps_out = 6;
|
||||||
if m == "Mod4"
|
resize_on_border = true;
|
||||||
then "SUPER"
|
};
|
||||||
else lib.toUpper m;
|
gestures = {
|
||||||
|
|
||||||
mods = filter isMod splitKey;
|
};
|
||||||
modsStr = "${(lib.concatStringsSep "_" (map convertMod mods))},";
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
windowrulev2 = [
|
||||||
|
"move 0 0,class:(flameshot),title:(flameshot)"
|
||||||
|
"pin,class:(flameshot),title:(flameshot)"
|
||||||
|
"fullscreenstate,class:(flameshot),title:(flameshot)"
|
||||||
|
"float,class:(flameshot),title:(flameshot)"
|
||||||
|
];
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
"$mod, Return, exec, ${pkgs.foot}/bin/foot"
|
||||||
|
"$mod, F, exec, firefox"
|
||||||
|
", Print, exec, grimblast copy area"
|
||||||
|
"$mod, Q, killactive,"
|
||||||
|
"$mod, F, fullscreen, 0"
|
||||||
|
"$mod SHIFT, F, fullscreen, 1"
|
||||||
|
"$mod, Space, exec, toggle-float"
|
||||||
|
"$mod, D, exec, ${config.programs.rofi.package}/bin/rofi -show drun -show-icons"
|
||||||
|
|
||||||
normalKeys = filter (m: isMod m == false) splitKey;
|
", Print, exec, ${config.services.flameshot.package}/bin/flameshot gui -p=\"${config.services.flameshot.settings.General.savePath}/$(date '+${config.services.flameshot.settings.General.filenamePattern}')\" --raw | wl-copy -t image/png"
|
||||||
normalKey = lib.elemAt normalKeys 0;
|
# "SHIFT, Print, exec, ${pkgs.wl-clipboard}/bin/wl-paste > /tmp/clipup && ${
|
||||||
|
# if cfg.uploadScript != null
|
||||||
|
# then cfg.uploadScript
|
||||||
|
# else ":"
|
||||||
|
# } /tmp/clipup | wl-copy && ${pkgs.libnotify}/bin/notify-send 'Clipboard uploaded!'"
|
||||||
|
|
||||||
convertedKey = "${modsStr}${normalKey}";
|
"$mod, c, exec, ${config.services.cliphost.package}/bin/cliphist list | rofi -dmenu | cliphist decode | wl-copy"
|
||||||
|
|
||||||
convertDir = dir: lib.elemAt (lib.stringToCharacters dir) 0;
|
"$mod, minus, exec, volumectl -u down"
|
||||||
|
"$mod, equal, exec, volumectl -u up"
|
||||||
|
|
||||||
splitBinding = lib.splitString " " binding;
|
", XF86AudioLowerVolume, exec, volumectl -u down"
|
||||||
bindingAction = lib.elemAt splitBinding 0;
|
", XF86AudioRaiseVolume, exec, volumectl -u up"
|
||||||
newBinding =
|
|
||||||
if bindingAction == "exec"
|
", XF86AudioMute, exec, toggle-mute"
|
||||||
then "exec, ${lib.concatStringsSep " " (lib.tail splitBinding)}"
|
", XF86AudioMicMute, exec, ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||||
else if bindingAction == "workspace"
|
|
||||||
then let n = lib.last splitBinding; in "workspace, ${n}"
|
", XF86MonBrightnessDown, exec, lightctl down"
|
||||||
else if bindingAction == "kill"
|
", XF86MonBrightnessUp, exec, lightctl up"
|
||||||
then "killactive,"
|
"$mod, semicolon, exec, lightctl down"
|
||||||
else if bindingAction == "focus"
|
"$mod, apostrophe, exec, lightctl up"
|
||||||
then let
|
|
||||||
l = lib.last splitBinding;
|
# Previous/next but change the shuffle/random state before action (and change back afterwards)
|
||||||
in
|
"$mod&SHIFT, bracketright, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"
|
||||||
if l == "mode_toggle"
|
"$mod&SHIFT, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"
|
||||||
then "togglefloating,"
|
"SHIFT, XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"
|
||||||
else "movefocus,${convertDir l}"
|
|
||||||
else if bindingAction == "fullscreen"
|
# Previous/next
|
||||||
then "fullscreen,0"
|
"$mod, bracketright, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||||
else if bindingAction == "floating"
|
"$mod, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||||
then "togglefloating,"
|
", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||||
else if bindingAction == "move"
|
", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||||
then let
|
|
||||||
splitMove = lib.tail splitBinding;
|
# Seek forward/back
|
||||||
moveThing = lib.elemAt splitMove 0;
|
"$mod&Control_L, bracketright, exec, ${pkgs.playerctl}/bin/playerctl position 5+"
|
||||||
toThing =
|
"$mod&Control_L, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl position 5-"
|
||||||
if lib.length splitMove >= 3
|
"Control_L, XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl position 5+"
|
||||||
then lib.elemAt splitMove 2
|
"Control_L, XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl position 5-"
|
||||||
else null;
|
|
||||||
in
|
# Toggle play/pause
|
||||||
if toThing == null
|
", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
then "movewindow,${convertDir moveThing}"
|
", XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
else if moveThing == "container" && toThing == "workspace"
|
"$mod, backslash, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
then "movetoworkspacesilent,${lib.last splitMove}"
|
|
||||||
else null
|
# "$mod, p, exec, bash ${inputs.bwmenu}/bwmenu"
|
||||||
else null;
|
# "$mod, e, exec, bash ${inputs.bemoji}/bemoji -t"
|
||||||
in
|
|
||||||
if newBinding == null
|
"Control_L&Alt_L, l, exec, ${pkgs.systemd}/bin/loginctl lock-session"
|
||||||
then "# ${key} - ${binding}"
|
|
||||||
else "bind=${convertedKey}, ${newBinding}";
|
"$mod, left, hy3:movefocus, l"
|
||||||
convertedBindings = lib.concatStringsSep "\n" (lib.mapAttrsToList swayToHyprlandBinding swayBindings);
|
"$mod, right, hy3:movefocus, r"
|
||||||
bindingsStr = "${convertedBindings}\n";
|
"$mod, up, hy3:movefocus, u"
|
||||||
in ''
|
"$mod, down, hy3:movefocus, d"
|
||||||
monitor=,preferred,auto,auto
|
"$mod, h, hy3:movefocus, l"
|
||||||
gestures {
|
"$mod, j, hy3:movefocus, d"
|
||||||
workspace_swipe = on
|
"$mod, k, hy3:movefocus, u"
|
||||||
}
|
"$mod, l, hy3:movefocus, r"
|
||||||
${convertedBindings}
|
|
||||||
'';
|
"$mod SHIFT, left, hy3:movewindow, l"
|
||||||
|
"$mod SHIFT, right, hy3:movewindow, r"
|
||||||
|
"$mod SHIFT, up, hy3:movewindow, u"
|
||||||
|
"$mod SHIFT, down, hy3:movewindow, d"
|
||||||
|
"$mod SHIFT, h, hy3:movewindow, l"
|
||||||
|
"$mod SHIFT, j, hy3:movewindow, d"
|
||||||
|
"$mod SHIFT, k, hy3:movewindow, u"
|
||||||
|
"$mod SHIFT, l, hy3:movewindow, r"
|
||||||
|
|
||||||
|
"$mod CTRL, left, resizeactive, -80 0"
|
||||||
|
"$mod CTRL, right, resizeactive, 80 0"
|
||||||
|
"$mod CTRL, up, resizeactive, 0 -80"
|
||||||
|
"$mod CTRL, down, resizeactive, 0 80"
|
||||||
|
"$mod CTRL, h, resizeactive, -80 0"
|
||||||
|
"$mod CTRL, j, resizeactive, 0 80"
|
||||||
|
"$mod CTRL, k, resizeactive, 0 -80"
|
||||||
|
"$mod CTRL, l, resizeactive, 80 0"
|
||||||
|
|
||||||
|
"$mod, mouse_down, workspace, e-1"
|
||||||
|
"$mod, mouse_up, workspace, e+1"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
|
||||||
|
builtins.concatLists (builtins.genList (i:
|
||||||
|
let ws = i + 1;
|
||||||
|
in [
|
||||||
|
"$mod, code:1${toString i}, workspace, ${toString ws}"
|
||||||
|
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9)
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
wayland.windowManager.sway = {
|
programs.ashell = {
|
||||||
enable = lib.mkDefault true;
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
systemd.enable = lib.mkDefault true;
|
|
||||||
wrapperFeatures.gtk = lib.mkDefault true;
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
exec keyctl link @u @s
|
|
||||||
workspace 1
|
|
||||||
'';
|
|
||||||
|
|
||||||
config = {
|
|
||||||
terminal = lib.mkDefault "${pkgs.foot}/bin/foot";
|
|
||||||
|
|
||||||
modifier = lib.mkDefault "Mod4";
|
|
||||||
|
|
||||||
keybindings = let
|
|
||||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
|
||||||
|
|
||||||
alphabet = ["Ctrl" "Alt" "Ctrl+Alt"];
|
|
||||||
genKeyAttrs = move:
|
|
||||||
lib.listToAttrs (
|
|
||||||
map
|
|
||||||
(
|
|
||||||
n: {
|
|
||||||
name = "${modifier}${
|
|
||||||
if move
|
|
||||||
then "+Shift"
|
|
||||||
else ""
|
|
||||||
}+${builtins.elemAt alphabet ((n - 11) / 10)}+${toString (lib.mod n 10)}";
|
|
||||||
value = "${
|
|
||||||
if move
|
|
||||||
then "move container to "
|
|
||||||
else ""
|
|
||||||
}workspace number ${toString n}";
|
|
||||||
}
|
|
||||||
)
|
|
||||||
(lib.lists.range 11 (10 * (builtins.length alphabet) + 10))
|
|
||||||
);
|
|
||||||
in
|
|
||||||
lib.mkOptionDefault (
|
|
||||||
let
|
|
||||||
volumeUp = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
|
||||||
volumeDown = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
"${modifier}+q" = "kill";
|
|
||||||
|
|
||||||
"Print" = "exec ${config.services.flameshot.package}/bin/flameshot gui -p=\"${config.services.flameshot.settings.General.savePath}/$(date '+${config.services.flameshot.settings.General.filenamePattern}')\" --raw | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png";
|
|
||||||
"Shift+Print" = "exec ${pkgs.wl-clipboard}/bin/wl-paste > /tmp/clipup && ${
|
|
||||||
if cfg.uploadScript != null
|
|
||||||
then cfg.uploadScript
|
|
||||||
else ":"
|
|
||||||
} /tmp/clipup | ${pkgs.wl-clipboard}/bin/wl-copy && ${pkgs.libnotify}/bin/notify-send 'Clipboard uploaded!'";
|
|
||||||
|
|
||||||
"${modifier}+c" = "exec ${config.services.clipman.package}/bin/clipman pick -t rofi";
|
|
||||||
|
|
||||||
"${modifier}+minus" = volumeDown;
|
|
||||||
"${modifier}+equal" = volumeUp;
|
|
||||||
|
|
||||||
"XF86AudioRaiseVolume" = volumeUp;
|
|
||||||
"XF86AudioLowerVolume" = volumeDown;
|
|
||||||
"XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
||||||
"XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
||||||
|
|
||||||
"XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 10";
|
|
||||||
"XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 10";
|
|
||||||
"${modifier}+semicolon" = "exec ${pkgs.light}/bin/light -U 10";
|
|
||||||
"${modifier}+apostrophe" = "exec ${pkgs.light}/bin/light -A 10";
|
|
||||||
|
|
||||||
# Previous/next but change the shuffle/random state before action (and change back afterwards)
|
|
||||||
"${modifier}+Shift+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
|
||||||
"${modifier}+Shift+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
|
||||||
"Shift+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
|
||||||
|
|
||||||
# Previous/next
|
|
||||||
"${modifier}+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
|
||||||
"${modifier}+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
|
||||||
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
|
||||||
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
|
|
||||||
|
|
||||||
# Seek forward/back
|
|
||||||
"${modifier}+Ctrl+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl position 5+";
|
|
||||||
"${modifier}+Ctrl+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl position 5-";
|
|
||||||
"Ctrl+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl position 5+";
|
|
||||||
"Ctrl+XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl position 5-";
|
|
||||||
|
|
||||||
# Toggle play/pause
|
|
||||||
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
"${modifier}+backslash" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
|
|
||||||
"${modifier}+p" = "exec bash ${inputs.bwmenu}/bwmenu";
|
|
||||||
"${modifier}+e" = "exec bash ${inputs.bemoji}/bemoji -t";
|
|
||||||
|
|
||||||
"${modifier}+0" = "workspace 10";
|
|
||||||
"${modifier}+Shift+0" = "move container to workspace 10";
|
|
||||||
|
|
||||||
"Ctrl+Alt+l" = "exec ${pkgs.systemd}/bin/loginctl lock-session";
|
|
||||||
|
|
||||||
"${modifier}+s" = "sticky toggle";
|
|
||||||
}
|
|
||||||
// genKeyAttrs true
|
|
||||||
// genKeyAttrs false
|
|
||||||
);
|
|
||||||
|
|
||||||
menu = "${config.programs.rofi.package}/bin/rofi -show drun -show-icons -run-command '${pkgs.sway}/bin/swaymsg exec -- {cmd}'";
|
|
||||||
|
|
||||||
bars = [];
|
|
||||||
|
|
||||||
gaps = {
|
|
||||||
smartGaps = lib.mkDefault true;
|
|
||||||
smartBorders = lib.mkDefault "on";
|
|
||||||
inner = lib.mkDefault 10;
|
|
||||||
outer = lib.mkDefault 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.librewolf.enable = true;
|
programs.librewolf.enable = true;
|
||||||
|
|
||||||
programs.waybar = {
|
stylix = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
systemd = {
|
autoEnable = lib.mkDefault true;
|
||||||
|
|
||||||
|
icons = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
target = lib.mkDefault "sway-session.target";
|
dark = lib.mkDefault "Papirus-Dark";
|
||||||
|
package = lib.mkDefault pkgs.papirus-icon-theme;
|
||||||
};
|
};
|
||||||
|
|
||||||
settings.mainbar = {
|
cursor = {
|
||||||
position = lib.mkDefault "left";
|
package = lib.mkDefault pkgs.adwaita-icon-theme;
|
||||||
height = lib.mkDefault null;
|
name = lib.mkDefault "Adwaita";
|
||||||
|
size = lib.mkDefault 24;
|
||||||
modules-left = ["sway/workspaces"];
|
|
||||||
modules-center = ["clock#1" "clock#2" "custom/spacer" "custom/media" "custom/spacer" "clock#3" "clock#4" "custom/spacer" "clock#5"];
|
|
||||||
modules-right = ["pulseaudio" "custom/spacer" "memory" "custom/spacer" "cpu"] ++ lib.optionals cfg.battery ["custom/spacer" "battery"] ++ ["custom/spacer" "tray"];
|
|
||||||
|
|
||||||
"custom/spacer" = {
|
|
||||||
format = lib.mkDefault "〜";
|
|
||||||
rotate = lib.mkDefault 90;
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/media" = {
|
|
||||||
rotate = lib.mkDefault 90;
|
|
||||||
max-length = lib.mkDefault 60;
|
|
||||||
on-click = lib.mkDefault "${pkgs.playerctl}/bin/playerctl play-pause";
|
|
||||||
exec = lib.mkDefault "${pkgs.playerctl}/bin/playerctl metadata --format '{{ emoji(status) }} {{ artist }} - {{ title }}' --follow";
|
|
||||||
};
|
|
||||||
|
|
||||||
"sway/workspaces" = {
|
|
||||||
disable-scroll = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"clock#1" = {
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
format = lib.mkDefault "{:%a}";
|
|
||||||
};
|
|
||||||
"clock#2" = {
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
format = lib.mkDefault "{:%m-%d}";
|
|
||||||
};
|
|
||||||
"clock#3" = {
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
format = lib.mkDefault "{:%I:%M}";
|
|
||||||
};
|
|
||||||
"clock#4" = {
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
format = lib.mkDefault "{:%p}";
|
|
||||||
};
|
|
||||||
"clock#5" = {
|
|
||||||
tooltip = lib.mkDefault false;
|
|
||||||
timezone = lib.mkDefault "Etc/UTC";
|
|
||||||
format = lib.mkDefault "{:%H%M}";
|
|
||||||
};
|
|
||||||
|
|
||||||
pulseaudio = {
|
|
||||||
format = lib.mkDefault "{icon} {volume}%";
|
|
||||||
format-bluetooth = lib.mkDefault "{icon} {volume}%";
|
|
||||||
format-muted = lib.mkDefault "ﱝ";
|
|
||||||
format-icons = ["" "" ""];
|
|
||||||
on-click = lib.mkDefault "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
||||||
on-click-right = lib.mkDefault "${pkgs.pavucontrol}/bin/pavucontrol";
|
|
||||||
ignored-sinks = ["Easy Effects Sink"];
|
|
||||||
};
|
|
||||||
|
|
||||||
memory = {
|
|
||||||
interval = lib.mkDefault 20;
|
|
||||||
format = lib.mkDefault " {}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu = {
|
|
||||||
interval = lib.mkDefault 20;
|
|
||||||
format = lib.mkDefault " {usage}%";
|
|
||||||
};
|
|
||||||
|
|
||||||
battery = {
|
|
||||||
states = {
|
|
||||||
good = lib.mkDefault 90;
|
|
||||||
warning = lib.mkDefault 25;
|
|
||||||
critical = lib.mkDefault 10;
|
|
||||||
};
|
|
||||||
format = lib.mkDefault "{icon} {capacity}%";
|
|
||||||
format-icons = {
|
|
||||||
default = ["" "" "" "" "" "" "" "" "" ""];
|
|
||||||
charging = ["" "" "" "" "" "" ""];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
tray = {
|
|
||||||
icon-size = lib.mkDefault 18;
|
|
||||||
spacing = lib.mkDefault 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
style = ''
|
|
||||||
window#waybar {
|
|
||||||
background: @base01;
|
|
||||||
color: @base06;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-spacer {
|
|
||||||
font-size: 15px;
|
|
||||||
color: @base00;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces,
|
|
||||||
#clock.1,
|
|
||||||
#clock.2,
|
|
||||||
#clock.3,
|
|
||||||
#clock.4,
|
|
||||||
#clock.5,
|
|
||||||
#pulseaudio,
|
|
||||||
#memory,
|
|
||||||
#cpu,
|
|
||||||
#battery,
|
|
||||||
#disk,
|
|
||||||
#tray,
|
|
||||||
#mode,
|
|
||||||
#custom-media {
|
|
||||||
color: @base06;
|
|
||||||
background: @base00;
|
|
||||||
padding: 5px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces { padding: 0 }
|
|
||||||
|
|
||||||
#clock.1 { padding: 5px 0 0 0; }
|
|
||||||
#clock.2 { padding: 0 0 5px 0; }
|
|
||||||
|
|
||||||
#clock.3 { padding: 5px 0 0 0; }
|
|
||||||
#clock.4 { padding: 0 0 5px 0; }
|
|
||||||
|
|
||||||
#custom-media.playing {
|
|
||||||
color: @base0A;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
color: @base0A;
|
|
||||||
}
|
|
||||||
#workspaces button:hover {
|
|
||||||
background: @base02;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
color: @base0B;
|
|
||||||
}
|
|
||||||
#memory {
|
|
||||||
color: @base0C;
|
|
||||||
}
|
|
||||||
#cpu {
|
|
||||||
color: @base0D;
|
|
||||||
}
|
|
||||||
#battery {
|
|
||||||
color: @base0E;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
|
||||||
border-radius: 0;
|
|
||||||
border-width: 0;
|
|
||||||
border-style: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services.mako = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
maxVisible = lib.mkDefault 6;
|
|
||||||
extraConfig = lib.generators.toKeyValue {} {
|
|
||||||
on-button-middle = "dismiss-all";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.mako = {
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.mako}/bin/mako";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
After = ["sway-session.target"];
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
stylix.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
services.blueman-applet.enable = lib.mkDefault cfg.bluetooth;
|
services.blueman-applet.enable = lib.mkDefault cfg.bluetooth;
|
||||||
|
|
||||||
services.mpris-proxy.enable = lib.mkDefault true;
|
services.mpris-proxy.enable = lib.mkDefault true;
|
||||||
|
|
||||||
services.playerctld.enable = lib.mkDefault true;
|
services.playerctld.enable = lib.mkDefault true;
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
iconTheme = {
|
|
||||||
package = lib.mkDefault pkgs.papirus-icon-theme;
|
|
||||||
name = lib.mkDefault "Papirus-Dark";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
package = lib.mkDefault pkgs.adwaita-icon-theme;
|
|
||||||
name = lib.mkDefault "Adwaita";
|
|
||||||
size = lib.mkDefault 24;
|
|
||||||
x11.enable = lib.mkDefault true;
|
|
||||||
gtk.enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
platformTheme = lib.mkDefault "gtk";
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.kermit = {
|
# programs.kermit = {
|
||||||
# enable = lib.mkDefault true;
|
# enable = lib.mkDefault true;
|
||||||
# settings = {
|
# settings = {
|
||||||
|
|
@ -542,13 +304,7 @@ in {
|
||||||
ydotool
|
ydotool
|
||||||
keyutils
|
keyutils
|
||||||
|
|
||||||
# programs
|
|
||||||
pavucontrol
|
|
||||||
kdePackages.ark
|
|
||||||
pcmanfm-qt
|
|
||||||
|
|
||||||
# CLI tools
|
# CLI tools
|
||||||
yt-dlp
|
|
||||||
maim
|
maim
|
||||||
slop
|
slop
|
||||||
xorg.xhost
|
xorg.xhost
|
||||||
|
|
@ -571,6 +327,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.clipman.enable = true;
|
services.cliphist.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,38 +12,28 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
wlr = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
settings = {
|
|
||||||
screencast = {
|
|
||||||
max_fps = lib.mkDefault 55;
|
|
||||||
chooser_type = lib.mkDefault "simple";
|
|
||||||
chooser_cmd = lib.mkDefault "${pkgs.slurp}/bin/slurp -f %o -or";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
wlroots.default = ["wlr" "gtk"];
|
|
||||||
common.default = ["gtk"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.hyprland.enable = true;
|
||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
QT_QPA_PLATFORM = "wayland;wayland-egl;xcb";
|
QT_QPA_PLATFORM = "wayland;xcb";
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
ECORE_EVAS_ENGINE = "wayland_egl";
|
ECORE_EVAS_ENGINE = "wayland_egl";
|
||||||
ELM_ENGINE = "wayland_egl";
|
ELM_ENGINE = "wayland_egl";
|
||||||
_JAVA_AWT_WM_NONREPARENTING = "1";
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
NIXOS_OZONE_WL = "1";
|
NIXOS_OZONE_WL = "1";
|
||||||
SDL_VIDEODRIVER = "wayland";
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
settings = {
|
settings = {
|
||||||
default_session = {
|
default_session = {
|
||||||
command = lib.mkDefault "${pkgs.greetd.tuigreet}/bin/tuigreet --time --user-menu --user-menu-max-uid 30000 --cmd sway";
|
command = lib.mkDefault "${pkgs.greetd.tuigreet}/bin/tuigreet --time --user-menu --user-menu-max-uid 30000 --cmd hyprland";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue