feat(binto): switch to hyprland

This commit is contained in:
matt1432 2023-11-23 01:23:15 -05:00
parent 9f42bec4bb
commit 625cbc91c5
5 changed files with 253 additions and 27 deletions

View file

@ -0,0 +1,126 @@
# Hypr vars
$mainMod = SUPER
# 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
exec-once = xrandr --output DP-5 --primary
env = XCURSOR_SIZE,24
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
windowrule = workspace special:thunder silent,^(thunderbird)$
bind = $mainMod, T, togglespecialworkspace, thunder
exec-once = [workspace special:spot silent] spotify
windowrule = workspace special:spot silent,^(Spotify)$
bind = $mainMod, S, togglespecialworkspace, spot
# 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 {
sensitivity = -0.5
accel_profile = "flat"
}
# 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 = $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
windowrule = tile,^(firefox)$
# Misc
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
vfr = true
}
xwayland {
force_zero_scaling = true
}

View file

@ -3,6 +3,7 @@
./hardware-configuration.nix
../../modules/audio.nix
../../modules/greetd
../../modules/kmscon.nix
../../modules/printer.nix
../../modules/proton-bridge.nix
@ -16,7 +17,8 @@
services.device-vars = {
username = "matt";
fontSize = 10.0;
configDir = "/home/matt/.nix/devices/binto/config";
fontSize = 12.5;
};
users.users.matt = {
@ -37,7 +39,10 @@
../../home/alacritty.nix
../../home/dconf.nix
../../home/firefox
../../home/theme.nix
../../home/wofi
./home/hyprland.nix
./home/packages.nix
];

View file

@ -0,0 +1,74 @@
{ pkgs, config, hyprland, osConfig, ... }: let
configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink;
polkit = pkgs.plasma5Packages.polkit-kde-agent;
in {
# FIXME: steam flicker issues
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
];
}

View file

@ -1,18 +1,23 @@
{...}: {
# Disable compositor in X11 for best performance
# TODO: add mic sound
xdg.configFile."gpu-screen-recorder.env".text = ''
WINDOW=focused
CONTAINER=mp4
QUALITY=very_high
CODEC=auto
AUDIO_CODEC=opus
FRAMERATE=60
REPLAYDURATION=1200
OUTPUTDIR=/home/matt/Videos/Replay
MAKEFOLDERS=yes
ADDITIONAL_ARGS="-s 2560x1440"
xdg.configFile."gsr.sh" = {
executable = true;
text = ''
export WINDOW=DP-5
export CONTAINER=mkv
export QUALITY=very_high
export CODEC=auto
export AUDIO_CODEC=aac
export FRAMERATE=60
export REPLAYDURATION=1200
export OUTPUTDIR=/home/matt/Videos/Replay
export MAKEFOLDERS=yes
# export ADDITIONAL_ARGS=
exec /bin/sh -c 'AUDIO="''${AUDIO_DEVICE:-$(pactl get-default-sink).monitor}"; gpu-screen-recorder -v no -w $WINDOW -c $CONTAINER -q $QUALITY -k $CODEC -ac $AUDIO_CODEC -a "$AUDIO" -f $FRAMERATE -r $REPLAYDURATION -o "$OUTPUTDIR" -mf $MAKEFOLDERS $ADDITIONAL_ARGS'
'';
};
xdg.desktopEntries."com.github.iwalton3.jellyfin-media-player" = {
name = "Jellyfin Media Player";

View file

@ -1,28 +1,52 @@
{
pkgs,
lib,
hyprland,
...
}: {
programs.dconf.enable = true;
services = {
xserver = {
enable = true;
# Enable the KDE Plasma Desktop Environment.
displayManager.sddm.enable = true;
desktopManager.plasma5.enable = true;
displayManager = {
sessionPackages = [
hyprland.packages.x86_64-linux.default
];
};
libinput.enable = true;
};
greetd = {
settings = {
initial_session = {
command = "${hyprland.packages.x86_64-linux.default}/bin/Hyprland";
user = "matt";
};
};
};
dbus.enable = true;
gvfs.enable = true;
flatpak.enable = true;
};
programs.kdeconnect.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
environment.systemPackages = with pkgs; [
p7zip # for reshade
xclip
wl-clipboard
vlc
# FIXME: vlc stutters
mpv
flat-remix-icon-theme
nextcloud-client
libreoffice-qt
@ -42,12 +66,4 @@
bluej
xournalpp
];
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
elisa
oxygen
khelpcenter
konsole
plasma-browser-integration
];
}