feat: further structure hyprland configuration
Added special keybind definition files Created new hyprland-specific config dir
This commit is contained in:
parent
d4059b5e9a
commit
a29235acb6
5 changed files with 128 additions and 115 deletions
|
@ -5,7 +5,7 @@
|
|||
...
|
||||
}: {
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./hyprland
|
||||
./hyprpaper.nix
|
||||
./hypridle.nix
|
||||
./hyprlock.nix
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [foot];
|
||||
wayland.windowManager.hyprland = {
|
||||
# Whether to enable Hyprland wayland compositor
|
||||
enable = true;
|
||||
# The hyprland package to use
|
||||
package = pkgs.hyprland;
|
||||
plugins = with pkgs.hyprlandPlugins; [
|
||||
hyprfocus
|
||||
csgo-vulkan-fix
|
||||
];
|
||||
# Whether to enable XWayland
|
||||
xwayland.enable = true;
|
||||
settings = {
|
||||
xwayland = {force_zero_scaling = true;};
|
||||
monitor = [
|
||||
#"eDP-1, 1920x1080@165,0x0,1"
|
||||
"HDMI-A-1, 1920x1080@75, 2560x0, 1"
|
||||
"eDP-1,preferred, auto, ${builtins.toString config.displayScale}"
|
||||
];
|
||||
general = {
|
||||
border_size = 1;
|
||||
gaps_in = 2.5;
|
||||
gaps_out = 5;
|
||||
};
|
||||
decoration = {
|
||||
rounding = 5;
|
||||
};
|
||||
input = {
|
||||
# xset rate 250 50 replacement on wayland...
|
||||
# FAST MODE LET'S GOOO
|
||||
repeat_rate = 50;
|
||||
repeat_delay = 250;
|
||||
accel_profile = "flat";
|
||||
};
|
||||
exec-once =
|
||||
config.myAutostartCommands
|
||||
++ [
|
||||
"[workspace special silent] ${pkgs.foot}/bin/foot -f 'BlexMono Nerd Font:size=16' -o colors.alpha=0.85 ${config.myShells.defaultShell}"
|
||||
];
|
||||
misc = {
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
font_family = "monospace";
|
||||
focus_on_activate = true; # see if fixes mako daemon not focusing
|
||||
};
|
||||
"$mod" = "SUPER";
|
||||
binde = [
|
||||
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
|
||||
# Example volume button that will activate even while an input inhibitor is active
|
||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
];
|
||||
bind = let
|
||||
terminalCmd = "${pkgs.foot}/bin/foot -f 'BlexMono Nerd Font:size=16' -o colors.alpha=0.85";
|
||||
screenshotLocation = "/home/${config.myUserName}/Screenshots/$(date '+%Y-%m-%d-%H-%M-%S').png";
|
||||
in
|
||||
[
|
||||
"$mod SHIFT, L, exec, ${pkgs.wlogout}/bin/wlogout"
|
||||
|
||||
"$mod SHIFT, Print, exec, ${pkgs.grimblast}/bin/grimblast copysave output ${screenshotLocation}"
|
||||
", Print, exec, ${pkgs.grimblast}/bin/grimblast copysave area ${screenshotLocation}"
|
||||
"$mod, Print, exec, ${pkgs.grimblast}/bin/grimblast copy area"
|
||||
|
||||
# special workspace keybinds
|
||||
"$mod, S, togglespecialworkspace"
|
||||
"$mod SHIFT, S, movetoworkspace, special"
|
||||
|
||||
# keysyms for util functions
|
||||
# Example volume button that allows press and hold, volume limited to 150%
|
||||
"$mod, Q, killactive"
|
||||
"$mod, D, exec, ${pkgs.fuzzel}/bin/fuzzel"
|
||||
"$mod, F, fullscreen"
|
||||
"$mod, E, exec, ${pkgs.pcmanfm}/bin/pcmanfm"
|
||||
# foot terminal
|
||||
"$mod, Return, exec, ${terminalCmd} ${config.myShells.defaultShell}"
|
||||
"$mod SHIFT, Return, exec, [float] ${terminalCmd} ${config.myShells.defaultShell}"
|
||||
|
||||
"$mod, N, exec, [float] ${terminalCmd} ${pkgs.networkmanager}/bin/nmtui"
|
||||
|
||||
# vimkeys navigation
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, J, movefocus, d"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, L, movefocus, r"
|
||||
]
|
||||
++ (
|
||||
# workspaces
|
||||
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||
builtins.concatLists (builtins.genList (x: let
|
||||
ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10));
|
||||
in [
|
||||
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||
])
|
||||
10)
|
||||
);
|
||||
bindm = [
|
||||
# mouse movements
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
"$mod ALT, mouse:272, resizewindow"
|
||||
];
|
||||
};
|
||||
# Optional
|
||||
# Whether to enable hyprland-session.target on hyprland startup
|
||||
systemd = {enable = true;};
|
||||
};
|
||||
# ...
|
||||
}
|
49
home-manager/stvnliu/hypr/hyprland/binds.nix
Normal file
49
home-manager/stvnliu/hypr/hyprland/binds.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
}: let
|
||||
terminalCmd = "${pkgs.foot}/bin/foot -f '${config.desktopFontFullName}:size=16' -o colors.alpha=0.80";
|
||||
screenshotLocation = "/home/${config.myUserName}/Screenshots/$(date '+%Y-%m-%d-%H-%M-%S').png";
|
||||
in
|
||||
[
|
||||
"$mod SHIFT, L, exec, ${pkgs.wlogout}/bin/wlogout"
|
||||
|
||||
"$mod SHIFT, Print, exec, ${pkgs.grimblast}/bin/grimblast copysave output ${screenshotLocation}"
|
||||
", Print, exec, ${pkgs.grimblast}/bin/grimblast copysave area ${screenshotLocation}"
|
||||
"$mod, Print, exec, ${pkgs.grimblast}/bin/grimblast copy area"
|
||||
|
||||
# special workspace keybinds
|
||||
"$mod, S, togglespecialworkspace"
|
||||
"$mod SHIFT, S, movetoworkspace, special"
|
||||
|
||||
# keysyms for util functions
|
||||
# Example volume button that allows press and hold, volume limited to 150%
|
||||
"$mod, Q, killactive"
|
||||
"$mod, D, exec, ${pkgs.rofi}/bin/rofi -show drun"
|
||||
"$mod, F, fullscreen"
|
||||
"$mod, E, exec, ${pkgs.pcmanfm}/bin/pcmanfm"
|
||||
# foot terminal
|
||||
"$mod, Return, exec, ${terminalCmd} ${config.myShells.defaultShell}"
|
||||
"$mod SHIFT, Return, exec, [float] ${terminalCmd} ${config.myShells.defaultShell}"
|
||||
|
||||
# cmdline utilities
|
||||
"$mod, N, exec, [float] ${terminalCmd} ${pkgs.networkmanager}/bin/nmtui"
|
||||
"$mod, M, exec, [float] ${terminalCmd} ${pkgs.zenith}/bin/zenith"
|
||||
|
||||
# vimkeys navigation
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, J, movefocus, d"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, L, movefocus, r"
|
||||
]
|
||||
++ (
|
||||
# workspaces
|
||||
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||
builtins.concatLists (builtins.genList (x: let
|
||||
ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10));
|
||||
in [
|
||||
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||
])
|
||||
10)
|
||||
)
|
68
home-manager/stvnliu/hypr/hyprland/default.nix
Normal file
68
home-manager/stvnliu/hypr/hyprland/default.nix
Normal file
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [foot];
|
||||
wayland.windowManager.hyprland = {
|
||||
# Whether to enable Hyprland wayland compositor
|
||||
enable = true;
|
||||
# The hyprland package to use
|
||||
package = pkgs.hyprland;
|
||||
plugins = with pkgs.hyprlandPlugins; [hyprfocus csgo-vulkan-fix];
|
||||
# Whether to enable XWayland
|
||||
xwayland.enable = true;
|
||||
settings = {
|
||||
env = ["AQ_DRM_DEVICES, /dev/dri/card1:/dev/dri/card0"];
|
||||
xwayland = {force_zero_scaling = true;};
|
||||
monitor = [
|
||||
#"eDP-1, 1920x1080@165,0x0,1"
|
||||
"HDMI-A-1, 1920x1080@75, 2560x0, 1"
|
||||
"eDP-1,preferred, auto, ${builtins.toString config.displayScale}"
|
||||
];
|
||||
general = {
|
||||
border_size = 1;
|
||||
gaps_in = 2.5;
|
||||
gaps_out = 5;
|
||||
};
|
||||
decoration = {rounding = 5;};
|
||||
input = {
|
||||
# xset rate 250 50 replacement on wayland...
|
||||
# FAST MODE LET'S GOOO
|
||||
repeat_rate = 50;
|
||||
repeat_delay = 250;
|
||||
accel_profile = "flat";
|
||||
};
|
||||
exec-once =
|
||||
config.myAutostartCommands
|
||||
++ [
|
||||
"[workspace special silent] ${pkgs.foot}/bin/foot -f '${config.desktopFontFullName}:size=16' -o colors.alpha=0.80 ${config.myShells.defaultShell}"
|
||||
];
|
||||
misc = {
|
||||
disable_hyprland_logo = true;
|
||||
disable_splash_rendering = true;
|
||||
font_family = "monospace";
|
||||
focus_on_activate = true; # see if fixes mako daemon not focusing
|
||||
};
|
||||
"$mod" = "SUPER";
|
||||
binde = import ./xf86_binds.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
};
|
||||
bind = import ./binds.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
};
|
||||
bindm = [
|
||||
# mouse movements
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
"$mod ALT, mouse:272, resizewindow"
|
||||
];
|
||||
};
|
||||
# Optional
|
||||
# Whether to enable hyprland-session.target on hyprland startup
|
||||
systemd = {enable = true;};
|
||||
};
|
||||
# ...
|
||||
}
|
10
home-manager/stvnliu/hypr/hyprland/xf86_binds.nix
Normal file
10
home-manager/stvnliu/hypr/hyprland/xf86_binds.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
}: [
|
||||
", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause"
|
||||
", XF86AudioStop, exec, ${pkgs.playerctl}/bin/playerctl stop"
|
||||
", XF86AudioRaiseVolume, exec, ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
", XF86AudioLowerVolume, exec, ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
", XF86AudioMute, exec, ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 0%"
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue