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;
|
||||
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 {
|
||||
services.swayidle = {
|
||||
services.hypridle = {
|
||||
enable = lib.mkDefault true;
|
||||
|
||||
events = [
|
||||
{
|
||||
event = "before-sleep";
|
||||
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
||||
}
|
||||
{
|
||||
event = "lock";
|
||||
command = "${pkgs.playerctl}/bin/playerctl -a pause; ${lockCommand}";
|
||||
}
|
||||
{
|
||||
event = "unlock";
|
||||
command = "${pkgs.procps}/bin/pkill -USR1 swaylock";
|
||||
}
|
||||
];
|
||||
settings = {
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || hyporlock";
|
||||
before_sleep_cmd = "loginctl lock-session";
|
||||
after_sleep_cmd = "hyperctl dispatch dpms on";
|
||||
};
|
||||
|
||||
timeouts = [
|
||||
{
|
||||
timeout = cfg.screensaver.lockTime;
|
||||
command = "${pkgs.systemd}/bin/loginctl lock-session";
|
||||
}
|
||||
{
|
||||
timeout = cfg.screensaver.offTime;
|
||||
command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'";
|
||||
resumeCommand = "${pkgs.sway}/bin/swaymsg 'output * dpms on'";
|
||||
}
|
||||
];
|
||||
listener = [
|
||||
{
|
||||
timeout = cfg.screensaver.lockTime;
|
||||
on-timeout = "loginctl lock-session";
|
||||
}
|
||||
{
|
||||
timeout = cfg.screensaver.offTime;
|
||||
on-timeout = "hyperctl dispatch dpms off";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.avizo.enable = true;
|
||||
programs.hyprlock.enable = true;
|
||||
services.swaync.enable = true;
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = false;
|
||||
systemd.enable = true;
|
||||
extraConfig = let
|
||||
swayConfig = config.wayland.windowManager.sway.config;
|
||||
swayBindings = swayConfig.keybindings;
|
||||
swayToHyprlandBinding = key: binding: let
|
||||
splitKey = lib.splitString "+" key;
|
||||
enable = true;
|
||||
# package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
plugins = with pkgs.hyprlandPlugins; [
|
||||
# inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3
|
||||
# inputs.hypr-dynamic-cursors.packages.${pkgs.stdenv.hostPlatform.system}.hypr-dynamic-cursors
|
||||
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";
|
||||
convertMod = m:
|
||||
if m == "Mod4"
|
||||
then "SUPER"
|
||||
else lib.toUpper m;
|
||||
gaps_in = 6;
|
||||
gaps_out = 6;
|
||||
resize_on_border = true;
|
||||
};
|
||||
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;
|
||||
normalKey = lib.elemAt normalKeys 0;
|
||||
", 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"
|
||||
# "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;
|
||||
bindingAction = lib.elemAt splitBinding 0;
|
||||
newBinding =
|
||||
if bindingAction == "exec"
|
||||
then "exec, ${lib.concatStringsSep " " (lib.tail splitBinding)}"
|
||||
else if bindingAction == "workspace"
|
||||
then let n = lib.last splitBinding; in "workspace, ${n}"
|
||||
else if bindingAction == "kill"
|
||||
then "killactive,"
|
||||
else if bindingAction == "focus"
|
||||
then let
|
||||
l = lib.last splitBinding;
|
||||
in
|
||||
if l == "mode_toggle"
|
||||
then "togglefloating,"
|
||||
else "movefocus,${convertDir l}"
|
||||
else if bindingAction == "fullscreen"
|
||||
then "fullscreen,0"
|
||||
else if bindingAction == "floating"
|
||||
then "togglefloating,"
|
||||
else if bindingAction == "move"
|
||||
then let
|
||||
splitMove = lib.tail splitBinding;
|
||||
moveThing = lib.elemAt splitMove 0;
|
||||
toThing =
|
||||
if lib.length splitMove >= 3
|
||||
then lib.elemAt splitMove 2
|
||||
else null;
|
||||
in
|
||||
if toThing == null
|
||||
then "movewindow,${convertDir moveThing}"
|
||||
else if moveThing == "container" && toThing == "workspace"
|
||||
then "movetoworkspacesilent,${lib.last splitMove}"
|
||||
else null
|
||||
else null;
|
||||
in
|
||||
if newBinding == null
|
||||
then "# ${key} - ${binding}"
|
||||
else "bind=${convertedKey}, ${newBinding}";
|
||||
convertedBindings = lib.concatStringsSep "\n" (lib.mapAttrsToList swayToHyprlandBinding swayBindings);
|
||||
bindingsStr = "${convertedBindings}\n";
|
||||
in ''
|
||||
monitor=,preferred,auto,auto
|
||||
gestures {
|
||||
workspace_swipe = on
|
||||
}
|
||||
${convertedBindings}
|
||||
'';
|
||||
", XF86AudioLowerVolume, exec, volumectl -u down"
|
||||
", XF86AudioRaiseVolume, exec, volumectl -u up"
|
||||
|
||||
", XF86AudioMute, exec, toggle-mute"
|
||||
", XF86AudioMicMute, exec, ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||
|
||||
", XF86MonBrightnessDown, exec, lightctl down"
|
||||
", XF86MonBrightnessUp, exec, lightctl up"
|
||||
"$mod, semicolon, exec, lightctl down"
|
||||
"$mod, apostrophe, exec, lightctl up"
|
||||
|
||||
# Previous/next but change the shuffle/random state before action (and change back afterwards)
|
||||
"$mod&SHIFT, bracketright, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"
|
||||
"$mod&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
|
||||
"$mod, bracketright, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||
"$mod, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||
", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||
", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||
|
||||
# Seek forward/back
|
||||
"$mod&Control_L, bracketright, exec, ${pkgs.playerctl}/bin/playerctl position 5+"
|
||||
"$mod&Control_L, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl position 5-"
|
||||
"Control_L, XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl position 5+"
|
||||
"Control_L, 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"
|
||||
"$mod, backslash, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||
|
||||
# "$mod, p, exec, bash ${inputs.bwmenu}/bwmenu"
|
||||
# "$mod, e, exec, bash ${inputs.bemoji}/bemoji -t"
|
||||
|
||||
"Control_L&Alt_L, l, exec, ${pkgs.systemd}/bin/loginctl lock-session"
|
||||
|
||||
"$mod, left, hy3:movefocus, l"
|
||||
"$mod, right, hy3:movefocus, r"
|
||||
"$mod, up, hy3:movefocus, u"
|
||||
"$mod, down, hy3:movefocus, d"
|
||||
"$mod, h, hy3:movefocus, l"
|
||||
"$mod, j, hy3:movefocus, d"
|
||||
"$mod, k, hy3:movefocus, u"
|
||||
"$mod, l, hy3:movefocus, r"
|
||||
|
||||
"$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 = {
|
||||
enable = lib.mkDefault 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.ashell = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
};
|
||||
|
||||
programs.librewolf.enable = true;
|
||||
|
||||
programs.waybar = {
|
||||
stylix = {
|
||||
enable = lib.mkDefault true;
|
||||
systemd = {
|
||||
autoEnable = lib.mkDefault true;
|
||||
|
||||
icons = {
|
||||
enable = lib.mkDefault true;
|
||||
target = lib.mkDefault "sway-session.target";
|
||||
dark = lib.mkDefault "Papirus-Dark";
|
||||
package = lib.mkDefault pkgs.papirus-icon-theme;
|
||||
};
|
||||
|
||||
settings.mainbar = {
|
||||
position = lib.mkDefault "left";
|
||||
height = lib.mkDefault null;
|
||||
|
||||
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";
|
||||
cursor = {
|
||||
package = lib.mkDefault pkgs.adwaita-icon-theme;
|
||||
name = lib.mkDefault "Adwaita";
|
||||
size = lib.mkDefault 24;
|
||||
};
|
||||
};
|
||||
|
||||
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.mpris-proxy.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 = {
|
||||
# enable = lib.mkDefault true;
|
||||
# settings = {
|
||||
|
|
@ -542,13 +304,7 @@ in {
|
|||
ydotool
|
||||
keyutils
|
||||
|
||||
# programs
|
||||
pavucontrol
|
||||
kdePackages.ark
|
||||
pcmanfm-qt
|
||||
|
||||
# CLI tools
|
||||
yt-dlp
|
||||
maim
|
||||
slop
|
||||
xorg.xhost
|
||||
|
|
@ -571,6 +327,6 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
services.clipman.enable = true;
|
||||
services.cliphist.enable = true;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,38 +12,28 @@ in {
|
|||
config = mkIf cfg.enable {
|
||||
xdg.portal = {
|
||||
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 = {
|
||||
QT_QPA_PLATFORM = "wayland;wayland-egl;xcb";
|
||||
QT_QPA_PLATFORM = "wayland;xcb";
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
|
||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||
ECORE_EVAS_ENGINE = "wayland_egl";
|
||||
ELM_ENGINE = "wayland_egl";
|
||||
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
SDL_VIDEODRIVER = "wayland";
|
||||
CLUTTER_BACKEND = "wayland";
|
||||
};
|
||||
|
||||
services.greetd = {
|
||||
enable = lib.mkDefault true;
|
||||
settings = {
|
||||
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