1
1
Fork 1
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:
oddlama 2024-06-09 16:50:23 +02:00
parent c15908f0c9
commit 17eceb2253
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
3 changed files with 178 additions and 147 deletions

View file

@ -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
]; ];
}; };

View file

@ -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))
);
}; };
} }

View file

@ -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";