refactor(hyprland): make global hyprland module
This commit is contained in:
parent
46b8f5c71f
commit
acc2d647f7
10 changed files with 311 additions and 500 deletions
|
@ -1,32 +1,12 @@
|
||||||
# Hypr vars
|
# Autostart programs
|
||||||
$mainMod = SUPER
|
exec-once = sleep 6; nextcloud --background
|
||||||
|
exec-once = sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh'
|
||||||
|
# TODO: add gpu-save-replay bind
|
||||||
|
|
||||||
|
|
||||||
# Monitors
|
|
||||||
monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3
|
|
||||||
monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1
|
|
||||||
monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1
|
|
||||||
# Desc of monitor has comma, so force its default on everything and specify everything else
|
|
||||||
monitor=, 2560x1440@165, 1920x1560, 1
|
|
||||||
|
|
||||||
|
|
||||||
# Important stuff at launch
|
|
||||||
exec-once = gnome-keyring-daemon --start --components=secrets
|
|
||||||
exec-once = wl-paste --watch cliphist store
|
|
||||||
## fix fullscreen game resolution
|
## fix fullscreen game resolution
|
||||||
exec-once = xrandr --output DP-5 --primary
|
exec-once = xrandr --output DP-5 --primary
|
||||||
|
|
||||||
env = XCURSOR_SIZE,24
|
## Special window apps
|
||||||
exec-once = hyprctl setcursor Dracula-cursors 24
|
|
||||||
|
|
||||||
|
|
||||||
# Autostart programs
|
|
||||||
exec-once = bash -c "sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh'"
|
|
||||||
# TODO: add gpu-save-replay bind
|
|
||||||
exec-once = bash -c "sleep 5; kdeconnect-indicator"
|
|
||||||
exec-once = bash -c "sleep 6; nextcloud --background"
|
|
||||||
|
|
||||||
# Special window apps
|
|
||||||
exec-once = [workspace special:thunder silent] thunderbird
|
exec-once = [workspace special:thunder silent] thunderbird
|
||||||
windowrule = workspace special:thunder silent,^(thunderbird)$
|
windowrule = workspace special:thunder silent,^(thunderbird)$
|
||||||
bind = $mainMod, T, togglespecialworkspace, thunder
|
bind = $mainMod, T, togglespecialworkspace, thunder
|
||||||
|
@ -37,22 +17,6 @@ bind = $mainMod, S, togglespecialworkspace, spot
|
||||||
|
|
||||||
|
|
||||||
# Input settings
|
# Input settings
|
||||||
input {
|
|
||||||
kb_layout = ca
|
|
||||||
kb_variant = multix
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 1
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
}
|
|
||||||
|
|
||||||
device:razer-razer-naga-pro {
|
device:razer-razer-naga-pro {
|
||||||
sensitivity = -0.5
|
sensitivity = -0.5
|
||||||
accel_profile = "flat"
|
accel_profile = "flat"
|
||||||
|
@ -60,70 +24,15 @@ device:razer-razer-naga-pro {
|
||||||
|
|
||||||
|
|
||||||
# Binds
|
# Binds
|
||||||
bind = $mainMod, Q, exec, alacritty
|
|
||||||
bind = $mainMod, C, killactive,
|
|
||||||
bind = $mainMod SHIFT, SPACE, togglefloating,
|
|
||||||
bind = $mainMod, J, togglesplit,
|
|
||||||
bind = SUPER, F, fullscreen
|
|
||||||
bind = Alt Shift, Tab, cyclenext
|
bind = Alt Shift, Tab, cyclenext
|
||||||
|
|
||||||
bind = $mainMod, D, exec, killall -r wofi || wofi --show drun
|
bind = $mainMod, D, exec, killall -r wofi || wofi --show drun
|
||||||
bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy
|
|
||||||
bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -'
|
|
||||||
bind = $mainMod SHIFT, C, exec, wl-color-picker
|
|
||||||
|
|
||||||
# Volume control
|
|
||||||
binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
|
|
||||||
bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
|
|
||||||
# Rules
|
# Rules
|
||||||
windowrule = tile,^(firefox)$
|
windowrule = tile,^(firefox)$
|
||||||
windowrule = noborder,^(wofi)$
|
|
||||||
|
|
||||||
|
|
||||||
# Misc
|
# Cosmetic
|
||||||
misc {
|
general {
|
||||||
disable_hyprland_logo = true
|
border_size = 0
|
||||||
disable_splash_rendering = true
|
|
||||||
vfr = true
|
|
||||||
}
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,13 +36,10 @@
|
||||||
home-manager.users = {
|
home-manager.users = {
|
||||||
matt = {
|
matt = {
|
||||||
imports = [
|
imports = [
|
||||||
../../home/alacritty.nix
|
|
||||||
../../home/dconf.nix
|
../../home/dconf.nix
|
||||||
../../home/firefox
|
../../home/firefox
|
||||||
../../home/theme.nix
|
../../home/hyprland
|
||||||
../../home/wofi
|
|
||||||
|
|
||||||
./home/hyprland.nix
|
|
||||||
./home/packages.nix
|
./home/packages.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
hyprland,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
configDir = config.services.device-vars.configDir;
|
|
||||||
symlink = config.lib.file.mkOutOfStoreSymlink;
|
|
||||||
|
|
||||||
polkit = pkgs.plasma5Packages.polkit-kde-agent;
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
enableNvidiaPatches = true;
|
|
||||||
package = hyprland.packages.x86_64-linux.default;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Nvidia stuff
|
|
||||||
env = [
|
|
||||||
"LIBVA_DRIVER_NAME, nvidia"
|
|
||||||
"XDG_SESSION_TYPE, wayland"
|
|
||||||
"GBM_BACKEND, nvidia-drm"
|
|
||||||
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
|
|
||||||
"WLR_NO_HARDWARE_CURSORS, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"${polkit}/libexec/polkit-kde-authentication-agent-1"
|
|
||||||
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
|
|
||||||
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
|
|
||||||
];
|
|
||||||
|
|
||||||
source = ["~/.config/hypr/main.conf"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
libnotify
|
|
||||||
playerctl
|
|
||||||
bluez-tools
|
|
||||||
brightnessctl
|
|
||||||
pulseaudio
|
|
||||||
libinput
|
|
||||||
|
|
||||||
## gui
|
|
||||||
pavucontrol # TODO: replace with ags widget
|
|
||||||
networkmanagerapplet # TODO: replace with ags widget
|
|
||||||
blueberry # TODO: replace with ags widget
|
|
||||||
|
|
||||||
# Hyprland
|
|
||||||
swww
|
|
||||||
xclip
|
|
||||||
wl-clipboard
|
|
||||||
cliphist
|
|
||||||
|
|
||||||
## gui
|
|
||||||
gtklock
|
|
||||||
wl-color-picker
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
swappy
|
|
||||||
|
|
||||||
## libs
|
|
||||||
qt5.qtwayland
|
|
||||||
qt6.qtwayland
|
|
||||||
xorg.xrandr
|
|
||||||
nvidia-vaapi-driver
|
|
||||||
libayatana-appindicator
|
|
||||||
xdg-utils
|
|
||||||
evtest
|
|
||||||
glib
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,95 +1,62 @@
|
||||||
# Plugins
|
# Autostart programs
|
||||||
plugin {
|
exec-once = sleep 3; nm-applet
|
||||||
touch_gestures {
|
exec-once = sleep 4; blueberry-tray
|
||||||
# default sensitivity is probably too low on tablet screens,
|
exec-once = sleep 6; nextcloud --background
|
||||||
# I recommend turning it up to 4.0
|
|
||||||
sensitivity = 20.0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/ x y
|
|
||||||
monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3
|
|
||||||
monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1
|
|
||||||
monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1
|
|
||||||
# Desc of monitor has comma, so force its default on everything and specify everything else
|
|
||||||
monitor=, 2560x1440@165, 1920x1560, 1
|
|
||||||
|
|
||||||
# Execute your favorite apps at launch
|
|
||||||
exec-once = bash -c "sleep 3; nm-applet"
|
|
||||||
exec-once = bash -c "sleep 4; blueberry-tray"
|
|
||||||
exec-once = bash -c "sleep 5; kdeconnect-indicator"
|
|
||||||
exec-once = bash -c "sleep 6; nextcloud --background"
|
|
||||||
|
|
||||||
exec-once = ags
|
|
||||||
|
|
||||||
exec-once = gnome-keyring-daemon --start --components=secrets
|
|
||||||
exec-once = squeekboard
|
exec-once = squeekboard
|
||||||
|
exec-once = ags
|
||||||
|
exec-once = sleep 3; ags -t applauncher
|
||||||
|
|
||||||
exec-once = bash -c "sleep 3; ags -t applauncher"
|
## Change HandleLidSwitch to lock in logind.conf
|
||||||
|
|
||||||
layerrule = blur, overview
|
|
||||||
layerrule = ignorealpha[0.97], overview ## don't blur corners
|
|
||||||
|
|
||||||
exec-once = wl-paste --watch cliphist store
|
|
||||||
|
|
||||||
# Change HandleLidSwitch to lock in logind.conf
|
|
||||||
exec-once = swayidle -w lock $LOCK_PATH/lock.sh
|
exec-once = swayidle -w lock $LOCK_PATH/lock.sh
|
||||||
|
|
||||||
# Special window apps
|
## Special window apps
|
||||||
exec-once = [workspace special:thunder silent] thunderbird
|
exec-once = [workspace special:thunder silent] thunderbird
|
||||||
|
windowrule = workspace special:thunder silent,^(thunderbird)$
|
||||||
|
bind = $mainMod, T, togglespecialworkspace, thunder
|
||||||
|
|
||||||
exec-once = [workspace special:spot silent] spotify
|
exec-once = [workspace special:spot silent] spotify
|
||||||
|
windowrule = workspace special:spot silent,^(Spotify)$
|
||||||
|
bind = $mainMod, S, togglespecialworkspace, spot
|
||||||
|
|
||||||
# Some default env vars.
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
exec-once=hyprctl setcursor Dracula-cursors 24
|
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input {
|
|
||||||
kb_layout = ca
|
|
||||||
kb_variant = multix
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
|
|
||||||
follow_mouse = 1
|
|
||||||
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
}
|
|
||||||
|
|
||||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
# Input settings
|
||||||
device:razer-razer-naga-pro-1 {
|
device:razer-razer-naga-pro-1 {
|
||||||
sensitivity = -0.5
|
sensitivity = -0.5
|
||||||
|
accel_profile = "flat"
|
||||||
}
|
}
|
||||||
|
|
||||||
general {
|
gestures {
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
workspace_swipe = yes
|
||||||
|
workspace_swipe_fingers = 3
|
||||||
|
workspace_swipe_cancel_ratio = 0.15
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Binds
|
||||||
|
|
||||||
|
## Brightness control
|
||||||
|
binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05'
|
||||||
|
binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05'
|
||||||
|
bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()'
|
||||||
|
|
||||||
|
## Ags & co
|
||||||
|
bind = $mainMod , L , exec, $LOCK_PATH/lock.sh
|
||||||
|
bindn = , Escape, exec, ags run-js 'closeAll()'
|
||||||
|
bind = $mainMod SHIFT, E , exec, ags -t powermenu
|
||||||
|
bind = $mainMod , D , exec, ags -t applauncher
|
||||||
|
bind = ALT , Tab , exec, ags -t overview
|
||||||
|
|
||||||
|
|
||||||
|
# Cosmetic
|
||||||
|
general {
|
||||||
gaps_in = 5
|
gaps_in = 5
|
||||||
gaps_out = 5
|
gaps_out = 5
|
||||||
border_size = 2
|
border_size = 2
|
||||||
col.active_border = rgb(411C6C)
|
col.active_border = rgb(411C6C)
|
||||||
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
|
||||||
col.inactive_border = rgba(595959aa)
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
layout = dwindle
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
disable_hyprland_logo = true
|
|
||||||
disable_splash_rendering = true
|
|
||||||
vfr = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
decoration {
|
decoration {
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
|
|
||||||
rounding = 20
|
rounding = 20
|
||||||
|
|
||||||
blur {
|
blur {
|
||||||
|
@ -99,9 +66,6 @@ decoration {
|
||||||
}
|
}
|
||||||
|
|
||||||
drop_shadow = false
|
drop_shadow = false
|
||||||
#shadow_range = 4
|
|
||||||
#shadow_render_power = 3
|
|
||||||
#col.shadow = rgba(1a1a1aee)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
animations {
|
animations {
|
||||||
|
@ -129,35 +93,7 @@ animations {
|
||||||
animation = borderangle, 1, 8, default
|
animation = borderangle, 1, 8, default
|
||||||
}
|
}
|
||||||
|
|
||||||
dwindle {
|
# For GParted auth
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = yes # you probably want this
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
new_is_master = true
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
workspace_swipe = yes
|
|
||||||
workspace_swipe_fingers = 3
|
|
||||||
workspace_swipe_cancel_ratio = 0.15
|
|
||||||
#workspace_swipe_forever = yes
|
|
||||||
}
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
|
||||||
|
|
||||||
windowrule = noborder,^(wofi)$
|
|
||||||
windowrule = workspace special:spot silent,^(Spotify)$
|
|
||||||
windowrule = workspace special:thunder silent,^(thunderbird)$
|
|
||||||
|
|
||||||
windowrule = float,^(org.kde.polkit-kde-authentication-agent-1)$
|
|
||||||
windowrule = size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$
|
|
||||||
windowrule = center,^(org.kde.polkit-kde-authentication-agent-1)$
|
|
||||||
|
|
||||||
windowrule = size 741 288,^(org.kde.ksshaskpass)$
|
windowrule = size 741 288,^(org.kde.ksshaskpass)$
|
||||||
windowrule = move cursor -370 -144,^(org.kde.ksshaskpass)$
|
windowrule = move cursor -370 -144,^(org.kde.ksshaskpass)$
|
||||||
|
|
||||||
|
@ -176,81 +112,3 @@ windowrule = size 400 581,^(com.nextcloud.desktopclient.nextcloud)$
|
||||||
windowrule = tile,^(photoshop.exe)$
|
windowrule = tile,^(photoshop.exe)$
|
||||||
|
|
||||||
windowrule = tile,^(libreoffice)$
|
windowrule = tile,^(libreoffice)$
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
|
||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
bind = SUPER, F, fullscreen
|
|
||||||
|
|
||||||
bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mainMod, Q, exec, alacritty
|
|
||||||
bind = $mainMod, S, togglespecialworkspace, spot
|
|
||||||
bind = $mainMod, T, togglespecialworkspace, thunder
|
|
||||||
bind = $mainMod, C, killactive,
|
|
||||||
|
|
||||||
bind = $mainMod, L, exec, $LOCK_PATH/lock.sh
|
|
||||||
bind = $mainMod SHIFT, E, exec, ags -t powermenu
|
|
||||||
bindn =, Escape, exec, ags run-js 'closeAll()'
|
|
||||||
bind = $mainMod SHIFT, SPACE, togglefloating,
|
|
||||||
bind = $mainMod, D, exec, ags -t applauncher
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, J, togglesplit, # dwindle
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
bind = ALT, Tab, exec, ags -t overview
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
# Take a screenshot
|
|
||||||
bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -'
|
|
||||||
bind = $mainMod SHIFT, C, exec, wl-color-picker
|
|
||||||
|
|
||||||
# Volume control
|
|
||||||
binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
|
|
||||||
bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
|
|
||||||
|
|
||||||
bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()'
|
|
||||||
|
|
||||||
# Brightness control
|
|
||||||
binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05'
|
|
||||||
binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05'
|
|
||||||
|
|
|
@ -35,15 +35,13 @@
|
||||||
home-manager.users = {
|
home-manager.users = {
|
||||||
matt = {
|
matt = {
|
||||||
imports = [
|
imports = [
|
||||||
../../home/alacritty.nix
|
|
||||||
../../home/dconf.nix
|
../../home/dconf.nix
|
||||||
../../home/firefox
|
../../home/firefox
|
||||||
../../home/theme.nix
|
../../home/hyprland
|
||||||
../../home/wofi
|
|
||||||
|
|
||||||
./home/dotfiles.nix
|
./home/dotfiles.nix
|
||||||
./home/packages.nix
|
./home/packages.nix
|
||||||
./home/hyprland.nix
|
./home/ags.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# No touchy
|
# No touchy
|
||||||
|
|
48
devices/wim/home/ags.nix
Normal file
48
devices/wim/home/ags.nix
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
ags,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
configDir = config.services.device-vars.configDir;
|
||||||
|
symlink = config.lib.file.mkOutOfStoreSymlink;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
ags.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.ags = {
|
||||||
|
enable = true;
|
||||||
|
configDir = symlink "${configDir}/ags";
|
||||||
|
package = ags.packages.x86_64-linux.default;
|
||||||
|
extraPackages = [pkgs.libgudev];
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
settings = {
|
||||||
|
env = [
|
||||||
|
"AGS_PATH, ${configDir}/ags/bin"
|
||||||
|
"HYPR_PATH, ${configDir}/hypr/scripts"
|
||||||
|
"LOCK_PATH, ${configDir}/gtklock/scripts"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# ags
|
||||||
|
ydotool
|
||||||
|
sassc
|
||||||
|
coloryou
|
||||||
|
libnotify
|
||||||
|
playerctl
|
||||||
|
|
||||||
|
## gui
|
||||||
|
pavucontrol # TODO: replace with ags widget
|
||||||
|
networkmanagerapplet # TODO: replace with ags widget
|
||||||
|
blueberry # TODO: replace with ags widget
|
||||||
|
|
||||||
|
# touchscreen
|
||||||
|
lisgd
|
||||||
|
squeekboard
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,103 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
hyprland,
|
|
||||||
hyprgrass,
|
|
||||||
ags,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
configDir = config.services.device-vars.configDir;
|
|
||||||
symlink = config.lib.file.mkOutOfStoreSymlink;
|
|
||||||
|
|
||||||
gset = pkgs.gsettings-desktop-schemas;
|
|
||||||
polkit = pkgs.plasma5Packages.polkit-kde-agent;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
ags.homeManagerModules.default
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.ags = {
|
|
||||||
enable = true;
|
|
||||||
configDir = symlink "${configDir}/ags";
|
|
||||||
package = ags.packages.x86_64-linux.default;
|
|
||||||
extraPackages = [pkgs.libgudev];
|
|
||||||
};
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
package = hyprland.packages.x86_64-linux.default;
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
"${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so"
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
env = [
|
|
||||||
"XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [
|
|
||||||
"${gset}/share/gsettings-schemas/${gset.name}"
|
|
||||||
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
|
|
||||||
"$XDG_DATA_DIRS"
|
|
||||||
]}"
|
|
||||||
|
|
||||||
"AGS_PATH, ${configDir}/ags/bin"
|
|
||||||
"HYPR_PATH, ${configDir}/hypr/scripts"
|
|
||||||
"LOCK_PATH, ${configDir}/gtklock/scripts"
|
|
||||||
];
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"${polkit}/libexec/polkit-kde-authentication-agent-1"
|
|
||||||
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
|
|
||||||
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
|
|
||||||
];
|
|
||||||
|
|
||||||
source = ["~/.config/hypr/main.conf"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile = {
|
|
||||||
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# ags
|
|
||||||
ydotool
|
|
||||||
sassc
|
|
||||||
coloryou
|
|
||||||
libnotify
|
|
||||||
playerctl
|
|
||||||
bluez-tools
|
|
||||||
brightnessctl
|
|
||||||
pulseaudio
|
|
||||||
libinput
|
|
||||||
|
|
||||||
## gui
|
|
||||||
pavucontrol # TODO: replace with ags widget
|
|
||||||
networkmanagerapplet # TODO: replace with ags widget
|
|
||||||
blueberry # TODO: replace with ags widget
|
|
||||||
|
|
||||||
# Hyprland
|
|
||||||
swww
|
|
||||||
swayidle
|
|
||||||
lisgd
|
|
||||||
squeekboard
|
|
||||||
xclip
|
|
||||||
wl-clipboard
|
|
||||||
cliphist
|
|
||||||
|
|
||||||
## gui
|
|
||||||
gtklock
|
|
||||||
wl-color-picker # TODO: add bind for this in hyprland
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
swappy
|
|
||||||
|
|
||||||
## libs
|
|
||||||
qt5.qtwayland
|
|
||||||
qt6.qtwayland
|
|
||||||
libayatana-appindicator
|
|
||||||
xdg-utils
|
|
||||||
evtest
|
|
||||||
glib
|
|
||||||
];
|
|
||||||
}
|
|
212
home/hyprland/default.nix
Normal file
212
home/hyprland/default.nix
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
osConfig,
|
||||||
|
hyprland,
|
||||||
|
hyprgrass,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
configDir = config.services.device-vars.configDir;
|
||||||
|
symlink = config.lib.file.mkOutOfStoreSymlink;
|
||||||
|
|
||||||
|
gset = pkgs.gsettings-desktop-schemas;
|
||||||
|
polkit = pkgs.plasma5Packages.polkit-kde-agent;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
./theme.nix
|
||||||
|
../alacritty.nix
|
||||||
|
../wofi
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile = lib.mkIf (configDir != null) {
|
||||||
|
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = hyprland.packages.x86_64-linux.default;
|
||||||
|
enableNvidiaPatches = osConfig.hardware.nvidia.modesetting.enable;
|
||||||
|
|
||||||
|
plugins =
|
||||||
|
[]
|
||||||
|
++ (lib.lists.optionals (osConfig.hardware.sensor.iio.enable) [
|
||||||
|
"${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so"
|
||||||
|
]);
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
env =
|
||||||
|
[
|
||||||
|
"XCURSOR_SIZE, 24"
|
||||||
|
"XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [
|
||||||
|
"${gset}/share/gsettings-schemas/${gset.name}"
|
||||||
|
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
|
||||||
|
"$XDG_DATA_DIRS"
|
||||||
|
]}"
|
||||||
|
]
|
||||||
|
++ (lib.lists.optionals (osConfig.hardware.nvidia.modesetting.enable) [
|
||||||
|
"LIBVA_DRIVER_NAME, nvidia"
|
||||||
|
"XDG_SESSION_TYPE, wayland"
|
||||||
|
"GBM_BACKEND, nvidia-drm"
|
||||||
|
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
|
||||||
|
"WLR_NO_HARDWARE_CURSORS, 1"
|
||||||
|
]);
|
||||||
|
|
||||||
|
xwayland.force_zero_scaling = true;
|
||||||
|
monitor = [
|
||||||
|
(builtins.concatStringsSep "," [
|
||||||
|
"desc:Acer Technologies Acer K212HQL T3EAA0014201"
|
||||||
|
"1920x1080@60"
|
||||||
|
"840x1000, 1, transform, 3"
|
||||||
|
])
|
||||||
|
(builtins.concatStringsSep "," [
|
||||||
|
"desc:BOE 0x0964"
|
||||||
|
"1920x1200@60"
|
||||||
|
"0x2920, 1"
|
||||||
|
])
|
||||||
|
(builtins.concatStringsSep "," [
|
||||||
|
"desc:Samsung Electric Company C27JG5x HTOM100586"
|
||||||
|
"2560x1440@60"
|
||||||
|
"1920x120, 1"
|
||||||
|
])
|
||||||
|
|
||||||
|
# Desc of main monitor has comma, so force its default
|
||||||
|
# on everything and specify everything else
|
||||||
|
",2560x1440@165, 1920x1560, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = osConfig.services.xserver.layout;
|
||||||
|
kb_variant = osConfig.services.xserver.xkbVariant;
|
||||||
|
follow_mouse = true;
|
||||||
|
|
||||||
|
touchpad.natural_scroll = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
exec-once =
|
||||||
|
[
|
||||||
|
"hyprctl setcursor Dracula-cursors 24"
|
||||||
|
"${polkit}/libexec/polkit-kde-authentication-agent-1"
|
||||||
|
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
|
||||||
|
"wl-paste --watch cliphist store"
|
||||||
|
]
|
||||||
|
++ (lib.lists.optionals (osConfig.programs.kdeconnect.enable) [
|
||||||
|
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
|
||||||
|
"kdeconnect-indicator"
|
||||||
|
])
|
||||||
|
++ (lib.lists.optionals (osConfig.services.gnome.gnome-keyring.enable) [
|
||||||
|
"gnome-keyring-daemon --start --components=secrets"
|
||||||
|
]);
|
||||||
|
|
||||||
|
windowrule = [
|
||||||
|
"noborder,^(wofi)$"
|
||||||
|
|
||||||
|
# Polkit
|
||||||
|
"float,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
|
"size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
|
"center,^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
|
];
|
||||||
|
|
||||||
|
"$mainMod" = "SUPER";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
# Defaults
|
||||||
|
"$mainMod, Q, exec, alacritty"
|
||||||
|
"$mainMod, F, fullscreen"
|
||||||
|
"$mainMod, C, killactive,"
|
||||||
|
"$mainMod SHIFT, SPACE, togglefloating,"
|
||||||
|
"$mainMod, J, togglesplit,"
|
||||||
|
|
||||||
|
## Move focus with arrow keys
|
||||||
|
"$mainMod, left, movefocus, l"
|
||||||
|
"$mainMod, right, movefocus, r"
|
||||||
|
"$mainMod, up, movefocus, u"
|
||||||
|
"$mainMod, down, movefocus, d"
|
||||||
|
|
||||||
|
## Move to specific workspaces
|
||||||
|
"$mainMod, 1, workspace, 1"
|
||||||
|
"$mainMod, 2, workspace, 2"
|
||||||
|
"$mainMod, 3, workspace, 3"
|
||||||
|
"$mainMod, 4, workspace, 4"
|
||||||
|
"$mainMod, 5, workspace, 5"
|
||||||
|
"$mainMod, 6, workspace, 6"
|
||||||
|
"$mainMod, 7, workspace, 7"
|
||||||
|
"$mainMod, 8, workspace, 8"
|
||||||
|
"$mainMod, 9, workspace, 9"
|
||||||
|
"$mainMod, 0, workspace, 10"
|
||||||
|
|
||||||
|
# Move active window to a workspace
|
||||||
|
"$mainMod SHIFT, 1, movetoworkspace, 1"
|
||||||
|
"$mainMod SHIFT, 2, movetoworkspace, 2"
|
||||||
|
"$mainMod SHIFT, 3, movetoworkspace, 3"
|
||||||
|
"$mainMod SHIFT, 4, movetoworkspace, 4"
|
||||||
|
"$mainMod SHIFT, 5, movetoworkspace, 5"
|
||||||
|
"$mainMod SHIFT, 6, movetoworkspace, 6"
|
||||||
|
"$mainMod SHIFT, 7, movetoworkspace, 7"
|
||||||
|
"$mainMod SHIFT, 8, movetoworkspace, 8"
|
||||||
|
"$mainMod SHIFT, 9, movetoworkspace, 9"
|
||||||
|
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
||||||
|
|
||||||
|
# Clipboard History
|
||||||
|
"$mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy"
|
||||||
|
|
||||||
|
",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
|
||||||
|
"$mainMod SHIFT, C, exec, wl-color-picker"
|
||||||
|
|
||||||
|
",XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||||
|
",XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||||
|
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Mouse Binds
|
||||||
|
bindm = [
|
||||||
|
"$mainMod, mouse:272, movewindow"
|
||||||
|
"$mainMod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
vfr = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
source =
|
||||||
|
[]
|
||||||
|
++ lib.lists.optionals (configDir != null) [
|
||||||
|
"~/.config/hypr/main.conf"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# tools
|
||||||
|
gtklock
|
||||||
|
wl-color-picker
|
||||||
|
grim
|
||||||
|
slurp
|
||||||
|
swappy
|
||||||
|
|
||||||
|
bluez-tools
|
||||||
|
brightnessctl
|
||||||
|
pulseaudio
|
||||||
|
libinput
|
||||||
|
xclip
|
||||||
|
wl-clipboard
|
||||||
|
cliphist
|
||||||
|
swww
|
||||||
|
swayidle
|
||||||
|
|
||||||
|
## libs
|
||||||
|
qt5.qtwayland
|
||||||
|
qt6.qtwayland
|
||||||
|
libayatana-appindicator
|
||||||
|
xdg-utils
|
||||||
|
evtest
|
||||||
|
glib
|
||||||
|
xorg.xrandr
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,30 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
dracula-theme
|
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
layout = "ca";
|
|
||||||
displayManager = {
|
|
||||||
sddm = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
DisplayServer = "wayland";
|
|
||||||
InputMethod = "";
|
|
||||||
};
|
|
||||||
Wayland.CompositorCommand = "${pkgs.weston}/bin/weston --shell=fullscreen-shell.so";
|
|
||||||
Theme = {
|
|
||||||
Current = "Dracula";
|
|
||||||
CursorTheme = "Dracula-cursors";
|
|
||||||
CursorSize = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue