mirror of
https://github.com/oddlama/nix-config.git
synced 2025-10-10 23:00:39 +02:00
feat: use correct portal for hyprland, add some hyprland keybinds
This commit is contained in:
parent
c15908f0c9
commit
17eceb2253
3 changed files with 178 additions and 147 deletions
|
@ -47,13 +47,15 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
xdgOpenUsePortal = true;
|
xdgOpenUsePortal = true;
|
||||||
config.common = {
|
config.common = {
|
||||||
default = ["gtk"];
|
default = ["hyprland" "gtk"];
|
||||||
"org.freedesktop.impl.portal.Secret" = [
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
"gnome-keyring"
|
"org.freedesktop.impl.portal.ScreenCast" = ["hyprland"];
|
||||||
];
|
"org.freedesktop.impl.portal.Screenshot" = ["hyprland"];
|
||||||
|
"org.freedesktop.portal.FileChooser" = ["xdg-desktop-portal-gtk"];
|
||||||
};
|
};
|
||||||
extraPortals = [
|
extraPortals = [
|
||||||
pkgs.xdg-desktop-portal-hyprland
|
pkgs.xdg-desktop-portal-hyprland
|
||||||
|
pkgs.xdg-desktop-portal-wlr
|
||||||
pkgs.xdg-desktop-portal-gtk
|
pkgs.xdg-desktop-portal-gtk
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,167 +3,196 @@
|
||||||
nixosConfig,
|
nixosConfig,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: let
|
||||||
|
inherit
|
||||||
|
(lib)
|
||||||
|
concatMap
|
||||||
|
elem
|
||||||
|
flip
|
||||||
|
getExe
|
||||||
|
mkIf
|
||||||
|
mkMerge
|
||||||
|
optionals
|
||||||
|
;
|
||||||
|
in {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
];
|
];
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = mkMerge [
|
||||||
env =
|
{
|
||||||
lib.optionals (lib.elem "nvidia" nixosConfig.services.xserver.videoDrivers) [
|
env =
|
||||||
# See https://wiki.hyprland.org/Nvidia/
|
optionals (elem "nvidia" nixosConfig.services.xserver.videoDrivers) [
|
||||||
"LIBVA_DRIVER_NAME,nvidia"
|
# See https://wiki.hyprland.org/Nvidia/
|
||||||
"XDG_SESSION_TYPE,wayland"
|
"LIBVA_DRIVER_NAME,nvidia"
|
||||||
"GBM_BACKEND,nvidia-drm"
|
"XDG_SESSION_TYPE,wayland"
|
||||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
"GBM_BACKEND,nvidia-drm"
|
||||||
]
|
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||||
++ [
|
]
|
||||||
"NIXOS_OZONE_WL,1"
|
++ [
|
||||||
"MOZ_ENABLE_WAYLAND,1"
|
"NIXOS_OZONE_WL,1"
|
||||||
"MOZ_WEBRENDER,1"
|
"MOZ_ENABLE_WAYLAND,1"
|
||||||
"_JAVA_AWT_WM_NONREPARENTING,1"
|
"MOZ_WEBRENDER,1"
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
"_JAVA_AWT_WM_NONREPARENTING,1"
|
||||||
"QT_QPA_PLATFORM,wayland"
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||||
"SDL_VIDEODRIVER,wayland"
|
"QT_QPA_PLATFORM,wayland"
|
||||||
"GDK_BACKEND,wayland"
|
"SDL_VIDEODRIVER,wayland"
|
||||||
|
"GDK_BACKEND,wayland"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
"SUPER + CTRL + SHIFT,q,exit"
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
"SUPER,code:49,exec,${getExe pkgs.rofi-wayland} -show drun" # SUPER+^
|
||||||
|
",Menu,exec,${getExe pkgs.rofi-wayland} -show drun"
|
||||||
|
"SUPER,t,exec,kitty"
|
||||||
|
"SUPER,b,exec,firefox"
|
||||||
|
|
||||||
|
# Shortcuts & Actions
|
||||||
|
#"SUPER + SHIFT,s,exec ${getExe pkgs.scripts.screenshot-area}"
|
||||||
|
#"SUPER,F11,exec ${getExe pkgs.scripts.screenshot-area-scan-qr}"
|
||||||
|
#"SUPER,F12,exec ${getExe pkgs.scripts.screenshot-screen}"
|
||||||
|
#"SUPER,Print,exec ${getExe pkgs.flameshot} gui"
|
||||||
|
|
||||||
|
# Per-window actions
|
||||||
|
"SUPER,q,killactive,"
|
||||||
|
"SUPER,return,fullscreen,"
|
||||||
|
"SUPER,f,togglefloating"
|
||||||
|
|
||||||
|
"SUPER,tab,cyclenext,"
|
||||||
|
"ALT,tab,cyclenext,"
|
||||||
|
"SUPER + SHIFT,tab,cyclenext,prev"
|
||||||
|
"ALT + SHIFT,tab,cyclenext,prev"
|
||||||
|
|
||||||
|
"SUPER,left,movefocus,l"
|
||||||
|
"SUPER,right,movefocus,r"
|
||||||
|
"SUPER,up,movefocus,u"
|
||||||
|
"SUPER,down,movefocus,d"
|
||||||
|
|
||||||
|
"SUPER + SHIFT,left,movewindow,l"
|
||||||
|
"SUPER + SHIFT,right,movewindow,r"
|
||||||
|
"SUPER + SHIFT,up,movewindow,u"
|
||||||
|
"SUPER + SHIFT,down,movewindow,d"
|
||||||
|
|
||||||
|
"SUPER,comma,workspace,-1"
|
||||||
|
"SUPER,period,workspace,+1"
|
||||||
|
"SUPER + SHIFT,comma,movetoworkspacesilent,-1"
|
||||||
|
"SUPER + SHIFT,period,movetoworkspacesilent,+1"
|
||||||
|
]
|
||||||
|
++ flip concatMap (map toString (lib.lists.range 1 9)) (
|
||||||
|
x: [
|
||||||
|
"SUPER,${x},workspace,${x}"
|
||||||
|
"SUPER + SHIFT,${x},movetoworkspacesilent,${x}"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# mouse movements
|
||||||
|
"SUPER, mouse:272, movewindow"
|
||||||
|
"SUPER, mouse:273, resizewindow"
|
||||||
|
"SUPER ALT, mouse:272, resizewindow"
|
||||||
];
|
];
|
||||||
|
|
||||||
bindm = [
|
animations = {
|
||||||
# mouse movements
|
enabled = true;
|
||||||
"SUPER, mouse:272, movewindow"
|
animation = [
|
||||||
"SUPER, mouse:273, resizewindow"
|
"windows, 1, 4, default, slide"
|
||||||
"SUPER ALT, mouse:272, resizewindow"
|
"windowsOut, 1, 4, default, slide"
|
||||||
];
|
"windowsMove, 1, 4, default"
|
||||||
|
"border, 1, 2, default"
|
||||||
animations = {
|
"fade, 1, 4, default"
|
||||||
enabled = true;
|
"fadeDim, 1, 4, default"
|
||||||
animation = [
|
"workspaces, 1, 4, default"
|
||||||
"windows, 1, 4, default, slide"
|
|
||||||
"windowsOut, 1, 4, default, slide"
|
|
||||||
"windowsMove, 1, 4, default"
|
|
||||||
"border, 1, 2, default"
|
|
||||||
"fade, 1, 4, default"
|
|
||||||
"fadeDim, 1, 4, default"
|
|
||||||
"workspaces, 1, 4, default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration.rounding = 4;
|
|
||||||
|
|
||||||
# FIXME: TODO refactor and use mkmerge, this is ugly
|
|
||||||
monitor =
|
|
||||||
{
|
|
||||||
kroma = [
|
|
||||||
"DP-2, preferred, 0x0, 1"
|
|
||||||
"DP-3, preferred, -3840x0, 1"
|
|
||||||
"Unknown-1, disable"
|
|
||||||
];
|
];
|
||||||
nom = [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
.${nixosConfig.node.name}
|
|
||||||
or [];
|
|
||||||
|
|
||||||
workspace =
|
|
||||||
{
|
|
||||||
kroma = [
|
|
||||||
"1, monitor:DP-2, default:true"
|
|
||||||
"2, monitor:DP-2"
|
|
||||||
"3, monitor:DP-2"
|
|
||||||
"4, monitor:DP-2"
|
|
||||||
"5, monitor:DP-2"
|
|
||||||
"6, monitor:DP-2"
|
|
||||||
"7, monitor:DP-3, default: true"
|
|
||||||
"8, monitor:DP-3"
|
|
||||||
"9, monitor:DP-3"
|
|
||||||
];
|
|
||||||
nom = [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
.${nixosConfig.node.name}
|
|
||||||
or [];
|
|
||||||
|
|
||||||
cursor.no_warps = true;
|
|
||||||
|
|
||||||
input = {
|
|
||||||
kb_layout = "de";
|
|
||||||
follow_mouse = 2;
|
|
||||||
numlock_by_default = true;
|
|
||||||
repeat_rate = 60;
|
|
||||||
repeat_delay = 235;
|
|
||||||
# Only change focus on mouse click
|
|
||||||
float_switch_override_focus = 0;
|
|
||||||
accel_profile = "flat";
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = "no";
|
|
||||||
disable_while_typing = true;
|
|
||||||
clickfinger_behavior = true;
|
|
||||||
scroll_factor = 0.7;
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
cursor.no_warps = true;
|
||||||
gaps_in = 1;
|
decoration.rounding = 4;
|
||||||
gaps_out = 0;
|
|
||||||
allow_tearing = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
debug.disable_logs = false;
|
input = {
|
||||||
|
kb_layout = "de";
|
||||||
|
follow_mouse = 2;
|
||||||
|
numlock_by_default = true;
|
||||||
|
repeat_rate = 60;
|
||||||
|
repeat_delay = 235;
|
||||||
|
# Only change focus on mouse click
|
||||||
|
float_switch_override_focus = 0;
|
||||||
|
accel_profile = "flat";
|
||||||
|
|
||||||
misc = {
|
touchpad = {
|
||||||
vfr = 1;
|
natural_scroll = "no";
|
||||||
vrr = 1;
|
disable_while_typing = true;
|
||||||
disable_hyprland_logo = true;
|
clickfinger_behavior = true;
|
||||||
mouse_move_focuses_monitor = false;
|
scroll_factor = 0.7;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraConfig =
|
|
||||||
# TODO: env = WLR_DRM_NO_ATOMIC,1
|
|
||||||
''
|
|
||||||
windowrulev2 = immediate, class:^(cs2)$
|
|
||||||
|
|
||||||
binds {
|
general = {
|
||||||
focus_preferred_method = 1
|
gaps_in = 1;
|
||||||
}
|
gaps_out = 0;
|
||||||
|
allow_tearing = true;
|
||||||
|
};
|
||||||
|
|
||||||
# keybinds
|
debug.disable_logs = false;
|
||||||
bind=SUPER,q,killactive,
|
|
||||||
bind=SUPER,return,fullscreen,
|
|
||||||
bind=SUPER,f,togglefloating
|
|
||||||
bind=SUPER,tab,cyclenext,
|
|
||||||
bind=ALT,tab,cyclenext,
|
|
||||||
bind=,Menu,exec,rofi -show drun
|
|
||||||
|
|
||||||
bind=SUPER,left,movefocus,l
|
misc = {
|
||||||
bind=SUPER,right,movefocus,r
|
vfr = 1;
|
||||||
bind=SUPER,up,movefocus,u
|
vrr = 1;
|
||||||
bind=SUPER,down,movefocus,d
|
disable_hyprland_logo = true;
|
||||||
|
mouse_move_focuses_monitor = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
(mkIf (nixosConfig.node.name == "kroma") {
|
||||||
|
monitor = [
|
||||||
|
"DP-2, preferred, 0x0, 1"
|
||||||
|
"DP-3, preferred, -3840x0, 1"
|
||||||
|
# Thank you NVIDIA for this generous, free-of-charge, extra monitor that
|
||||||
|
# doesn't exist and crashes yoru session sometimes when moving a window to it.
|
||||||
|
"Unknown-1, disable"
|
||||||
|
];
|
||||||
|
|
||||||
bind=SUPER + SHIFT,left,movewindow,l
|
windowrulev2 = [
|
||||||
bind=SUPER + SHIFT,right,movewindow,r
|
"workspace 1,class:^(firefox)$"
|
||||||
bind=SUPER + SHIFT,up,movewindow,u
|
"workspace 5,class:^(bottles)$"
|
||||||
bind=SUPER + SHIFT,down,movewindow,d
|
"workspace 5,class:^(steam)$"
|
||||||
|
"workspace 5,class:^(prismlauncher)$"
|
||||||
|
"workspace 7,class:^(discord)$"
|
||||||
|
"workspace 7,class:^(WebCord)$"
|
||||||
|
"workspace 7,class:^(obsidian)$"
|
||||||
|
"workspace 7,class:^(Signal)$"
|
||||||
|
"workspace 7,class:^(TelegramDesktop)$"
|
||||||
|
];
|
||||||
|
|
||||||
bindm=SUPER,mouse:272,movewindow
|
workspace = [
|
||||||
|
"1, monitor:DP-2, default:true"
|
||||||
|
"2, monitor:DP-2"
|
||||||
|
"3, monitor:DP-2"
|
||||||
|
"4, monitor:DP-2"
|
||||||
|
"5, monitor:DP-2"
|
||||||
|
"6, monitor:DP-2"
|
||||||
|
"7, monitor:DP-3, default: true"
|
||||||
|
"8, monitor:DP-3"
|
||||||
|
"9, monitor:DP-3"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(mkIf (nixosConfig.node.name == "nom") {
|
||||||
|
monitor = [
|
||||||
|
];
|
||||||
|
workspace = [
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
bind=SUPER,comma,workspace,-1
|
extraConfig = ''
|
||||||
bind=SUPER,period,workspace,+1
|
windowrulev2 = immediate, class:^(cs2)$
|
||||||
|
|
||||||
bind=SUPER,b,exec,firefox
|
binds {
|
||||||
bind=SUPER,t,exec,kitty
|
focus_preferred_method = 1
|
||||||
bind=SUPER + CTRL + SHIFT,q,exit
|
}
|
||||||
''
|
'';
|
||||||
+ builtins.concatStringsSep "\n" (
|
|
||||||
map (
|
|
||||||
x: ''
|
|
||||||
bind=SUPER,${x},workspace,${x}
|
|
||||||
bind=SUPER + SHIFT,${x},movetoworkspacesilent,${x}
|
|
||||||
''
|
|
||||||
)
|
|
||||||
(map toString (lib.lists.range 1 9))
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
style.name = "kvantum";
|
style.name = "kvantum";
|
||||||
platformTheme = "qtct";
|
platformTheme.name = "qtct";
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."Kvantum/kvantum.kvconfig".text = "theme=Base16Kvantum";
|
xdg.configFile."Kvantum/kvantum.kvconfig".text = "theme=Base16Kvantum";
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue