Initial add of hyprland module
This commit is contained in:
parent
f8b7fcd71a
commit
e19b036d3f
5 changed files with 277 additions and 2 deletions
|
@ -3,4 +3,5 @@
|
||||||
aa.isHeadless = false;
|
aa.isHeadless = false;
|
||||||
aa.windowManagers.sway.clamshell.enable = true;
|
aa.windowManagers.sway.clamshell.enable = true;
|
||||||
aa.programs.opencode.enable = true;
|
aa.programs.opencode.enable = true;
|
||||||
|
aa.windowManagers.hyprland.enable = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ in
|
||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
# systemd.enable = true;
|
||||||
|
|
||||||
style = builtins.readFile ./waybar_style.css;
|
style = builtins.readFile ./waybar_style.css;
|
||||||
|
|
||||||
|
@ -40,7 +40,10 @@ in
|
||||||
layer = "top";
|
layer = "top";
|
||||||
position = "bottom";
|
position = "bottom";
|
||||||
height = 20;
|
height = 20;
|
||||||
modules-left = [ "sway/workspaces" ];
|
modules-left = [
|
||||||
|
"sway/workspaces"
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
modules-center = [ "clock" ];
|
modules-center = [ "clock" ];
|
||||||
modules-right = [
|
modules-right = [
|
||||||
"idle_inhibitor"
|
"idle_inhibitor"
|
||||||
|
@ -55,6 +58,22 @@ in
|
||||||
"tray"
|
"tray"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
disable-scroll = false;
|
||||||
|
all-outputs = true;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = "q";
|
||||||
|
"2" = "w";
|
||||||
|
"3" = "e";
|
||||||
|
"4" = "r";
|
||||||
|
"5" = "t";
|
||||||
|
"6" = "y";
|
||||||
|
"7" = "u";
|
||||||
|
"8" = "i";
|
||||||
|
"9" = "o";
|
||||||
|
};
|
||||||
|
};
|
||||||
"sway/workspaces" = {
|
"sway/workspaces" = {
|
||||||
disable-scroll = false;
|
disable-scroll = false;
|
||||||
all-outputs = true;
|
all-outputs = true;
|
||||||
|
|
|
@ -50,6 +50,7 @@ window#waybar.hidden {
|
||||||
background-color: rgba(0, 0, 0, 1)
|
background-color: rgba(0, 0, 0, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#workspaces button.active,
|
||||||
#workspaces button.focused {
|
#workspaces button.focused {
|
||||||
color: @yellow;
|
color: @yellow;
|
||||||
}
|
}
|
||||||
|
|
254
modules/home/windowManagers/hyprland/default.nix
Normal file
254
modules/home/windowManagers/hyprland/default.nix
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
namespace,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib)
|
||||||
|
mkEnableOption
|
||||||
|
mkOption
|
||||||
|
mkIf
|
||||||
|
types
|
||||||
|
;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.windowManagers.hyprland;
|
||||||
|
left = "h";
|
||||||
|
right = "l";
|
||||||
|
up = "k";
|
||||||
|
down = "j";
|
||||||
|
modifier = "SUPER";
|
||||||
|
|
||||||
|
menu = "${pkgs.fuzzel}/bin/fuzzel";
|
||||||
|
emoji_picker = "${pkgs.bemoji}/bin/bemoji -t";
|
||||||
|
terminal = "${pkgs.kitty}/bin/kitty";
|
||||||
|
|
||||||
|
generate_grim_command = target: ''
|
||||||
|
exec mkdir -p ~/screenshots \
|
||||||
|
&& ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" \
|
||||||
|
~/screenshots/"$(date -u --iso-8601=seconds)".png && \
|
||||||
|
${pkgs.libnotify}/bin/notify-send "Screenshot saved"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.windowManagers.hyprland = {
|
||||||
|
enable = mkEnableOption "Hyprland";
|
||||||
|
|
||||||
|
wallpaperPath = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "hyprland/wallpaper.jpg";
|
||||||
|
description = ''
|
||||||
|
Path to wallpaper, relative to xdg.dataHome
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
monitor = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [
|
||||||
|
"eDP-1,preferred,auto,1.6"
|
||||||
|
",preferred,auto,1"
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
Monitor configuration for Hyprland
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
${namespace} = {
|
||||||
|
fonts.enable = true;
|
||||||
|
programs = {
|
||||||
|
kitty.enable = true;
|
||||||
|
fuzzel.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
gammastep.enable = true;
|
||||||
|
playerctld.enable = true;
|
||||||
|
swaync.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
wl-clipboard
|
||||||
|
wtype
|
||||||
|
xdg-utils
|
||||||
|
libnotify
|
||||||
|
];
|
||||||
|
|
||||||
|
catppuccin.cursors = {
|
||||||
|
enable = true;
|
||||||
|
accent = "dark";
|
||||||
|
};
|
||||||
|
catppuccin.gtk.icon.enable = true;
|
||||||
|
catppuccin.kvantum = {
|
||||||
|
enable = true;
|
||||||
|
apply = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.dataFile.${cfg.wallpaperPath}.source = ./wallpaper.jpg;
|
||||||
|
|
||||||
|
catppuccin.hyprland.enable = true;
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
systemd.variables = [ "--all" ];
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"$mod" = modifier;
|
||||||
|
|
||||||
|
# Monitor configuration
|
||||||
|
monitor = cfg.monitor;
|
||||||
|
|
||||||
|
# General settings
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 20;
|
||||||
|
border_size = 2;
|
||||||
|
"col.active_border" = "$lavender";
|
||||||
|
"col.inactive_border" = "$overlay0";
|
||||||
|
layout = "dwindle";
|
||||||
|
allow_tearing = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Decoration
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Animations
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 7, myBezier"
|
||||||
|
"windowsOut, 1, 7, default, popin 80%"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"borderangle, 1, 8, default"
|
||||||
|
"fade, 1, 7, default"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Dwindle layout
|
||||||
|
dwindle = {
|
||||||
|
pseudotile = true;
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Window rules
|
||||||
|
windowrulev2 = [
|
||||||
|
"suppressevent maximize, class:.*"
|
||||||
|
"idleinhibit fullscreen, class:.*"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Startup
|
||||||
|
exec-once = [
|
||||||
|
"systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
|
"${pkgs.swaynotificationcenter}/bin/swaync"
|
||||||
|
"hyprpaper"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
bind = [
|
||||||
|
# Applications
|
||||||
|
"$mod, Return, exec, ${terminal}"
|
||||||
|
"$mod, c, killactive"
|
||||||
|
"$mod, p, exec, ${menu}"
|
||||||
|
"$mod, d, exec, ${emoji_picker}"
|
||||||
|
"$mod, z, exec, hyprctl reload"
|
||||||
|
|
||||||
|
# Focus
|
||||||
|
"$mod, ${left}, movefocus, l"
|
||||||
|
"$mod, ${down}, movefocus, d"
|
||||||
|
"$mod, ${up}, movefocus, u"
|
||||||
|
"$mod, ${right}, movefocus, r"
|
||||||
|
|
||||||
|
# Move windows
|
||||||
|
"$mod SHIFT, ${left}, movewindow, l"
|
||||||
|
"$mod SHIFT, ${down}, movewindow, d"
|
||||||
|
"$mod SHIFT, ${up}, movewindow, u"
|
||||||
|
"$mod SHIFT, ${right}, movewindow, r"
|
||||||
|
|
||||||
|
# Workspaces (qwertyuio)
|
||||||
|
"$mod, q, workspace, 1"
|
||||||
|
"$mod, w, workspace, 2"
|
||||||
|
"$mod, e, workspace, 3"
|
||||||
|
"$mod, r, workspace, 4"
|
||||||
|
"$mod, t, workspace, 5"
|
||||||
|
"$mod, y, workspace, 6"
|
||||||
|
"$mod, u, workspace, 7"
|
||||||
|
"$mod, i, workspace, 8"
|
||||||
|
"$mod, o, workspace, 9"
|
||||||
|
|
||||||
|
# Move to workspaces
|
||||||
|
"$mod SHIFT, q, movetoworkspace, 1"
|
||||||
|
"$mod SHIFT, w, movetoworkspace, 2"
|
||||||
|
"$mod SHIFT, e, movetoworkspace, 3"
|
||||||
|
"$mod SHIFT, r, movetoworkspace, 4"
|
||||||
|
"$mod SHIFT, t, movetoworkspace, 5"
|
||||||
|
"$mod SHIFT, y, movetoworkspace, 6"
|
||||||
|
"$mod SHIFT, u, movetoworkspace, 7"
|
||||||
|
"$mod SHIFT, i, movetoworkspace, 8"
|
||||||
|
"$mod SHIFT, o, movetoworkspace, 9"
|
||||||
|
|
||||||
|
# Layout
|
||||||
|
"$mod, v, togglesplit"
|
||||||
|
"$mod, f, fullscreen"
|
||||||
|
"$mod SHIFT, f, togglefloating"
|
||||||
|
# "$mod, space, focusmode, toggle"
|
||||||
|
# "$mod, a, focusparent"
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
"$mod, period, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" ~/screenshots/\"$(date -u --iso-8601=seconds)\".png && ${pkgs.libnotify}/bin/notify-send \"Screenshot saved\""
|
||||||
|
"$mod SHIFT, period, exec, ${pkgs.grim}/bin/grim ~/screenshots/\"$(date -u --iso-8601=seconds)\".png && ${pkgs.libnotify}/bin/notify-send \"Screenshot saved\""
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
"$mod SHIFT, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw"
|
||||||
|
"$mod SHIFT, d, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -d -sw"
|
||||||
|
|
||||||
|
# Scratchpad
|
||||||
|
"$mod SHIFT, minus, movetoworkspace, special:magic"
|
||||||
|
"$mod, minus, togglespecialworkspace, magic"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Media keys
|
||||||
|
bindl = [
|
||||||
|
", XF86AudioRaiseVolume, exec, ${pkgs.pamixer}/bin/pamixer --increase 5"
|
||||||
|
", XF86AudioLowerVolume, exec, ${pkgs.pamixer}/bin/pamixer --decrease 5"
|
||||||
|
", XF86AudioMute, exec, ${pkgs.pamixer}/bin/pamixer --toggle-mute"
|
||||||
|
", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous"
|
||||||
|
", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next"
|
||||||
|
", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||||
|
", XF86MonBrightnessDown, exec, ${pkgs.light}/bin/light -U 5"
|
||||||
|
", XF86MonBrightnessUp, exec, ${pkgs.light}/bin/light -A 5"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Hyprpaper configuration for wallpaper
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ipc = "on";
|
||||||
|
splash = false;
|
||||||
|
splash_offset = 2.0;
|
||||||
|
|
||||||
|
preload = [
|
||||||
|
"${config.xdg.dataHome}/${cfg.wallpaperPath}"
|
||||||
|
];
|
||||||
|
|
||||||
|
wallpaper = [
|
||||||
|
",${config.xdg.dataHome}/${cfg.wallpaperPath}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
BIN
modules/home/windowManagers/hyprland/wallpaper.jpg
Normal file
BIN
modules/home/windowManagers/hyprland/wallpaper.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 MiB |
Loading…
Add table
Add a link
Reference in a new issue