blob: 2032bf40f5785903e30ab3a3513cc13d801c955a [file] [log] [blame]
{
pkgs,
lib,
home,
...
}: {
home = {
wayland.windowManager.sway = {
enable = true;
wrapperFeatures.gtk = true;
package = pkgs.sway-unwrapped;
config = rec {
assigns = {};
bars = [];
colors = {};
defaultWorkspace = null;
down = "j";
floating = {};
focus = {};
fonts = {};
gaps = {
inner = 10;
top = -10;
outer = 0;
smartGaps = false;
};
input = {
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
events = "disabled_on_external_mouse";
};
"type:keyboard" = {
xkb_layout = "gb";
xkb_options = "caps:none";
};
"type:tablet_tool" = {
map_to_output = "eDP-1";
};
};
keybindings = lib.mkOptionDefault {
"${modifier}+g" = "sticky toggle";
"${modifier}+k" = "exec wl-copy -c";
"${modifier}+f" = "maximize toggle";
"XF86AudioRaiseVolume" = "exec pamixer -ui 5 && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
"XF86AudioLowerVolume" = "exec pamixer -ud 5 && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
"XF86AudioMute" = "exec pamixer --toggle-mute && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
"XF86AudioMicMute" = "exec pamixer --toggle-mute --default-source && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
"XF86MonBrightnessUp" = "exec light -A 3 && light -G | cut -d'.' -f1 > $WOBSOCK";
"XF86MonBrightnessDown" = "exec light -U 3 && light -G | cut -d'.' -f1 > $WOBSOCK";
"${modifier}+XF86AudioRaiseVolume" = "exec pamixer --default-source -ui 5 && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
"${modifier}+XF86AudioLowerVolume" = "exec pamixer --default-source -ud 5 && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume --default-source > $WOBSOCK";
"${modifier}+XF86AudioMute" = "exec pamixer --toggle-mute --default-source && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
"${modifier}+XF86MonBrightnessUp" = "exec light -A 6 && light -G | cut -d'.' -f1 > $WOBSOCK";
"${modifier}+XF86MonBrightnessDown" = "exec light -U 6 && light -G | cut -d'.' -f1 > $WOBSOCK";
"${modifier}+n" = ''exec wpa_cli select_network $(wpa_cli list_networks | tail -n +3 | rofi -dmenu -window-title "Select Network" | awk '{print $1;}')'';
};
keycodebindings = {
"66" = "exec ${pkgs.wtype}/bin/wtype -P F12";
};
left = "h";
modes = {
resize = {
Down = "resize grow height 10 px";
Escape = "mode default";
Left = "resize shrink width 10 px";
Return = "mode default";
Right = "resize grow width 10 px";
Up = "resize shrink height 10 px";
h = "resize shrink width 10 px";
j = "resize grow height 10 px";
k = "resize shrink height 10 px";
l = "resize grow width 10 px";
};
};
modifier = "Mod4";
output = rec {
HDMI-A-1 = {
resolution = "3840x2160";
bg = "#FFD0F9 solid_color";
position = "0,0";
};
HDMI-A-2 = HDMI-A-1;
# For some reason my monitor sometimes gets one identifier and
# sometimes the other, despite being plugged into the same port
eDP-1 = {
resolution = "1920x1080";
position = "0,2160";
};
"*" = {
};
};
right = "l";
seat = {
"*" = {
hide_cursor = "when-typing enable";
};
};
startup = [
{command = "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK";}
{
command = "light -N 1";
always = false;
}
{
command = "\"pkill wob; rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob --output='*'\"";
always = true;
}
];
terminal = "${pkgs.kitty}/bin/kitty";
up = "k";
window = {};
workspaceAutoBackAndForth = true;
workspaceLayout = "default";
workspaceOutputAssign = [];
};
extraSessionCommands = ''
unset __HM_SESS_VARS_SOURCED
. "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"
# export WLR_NO_HARDWARE_CURSORS=1
# TODO: Check if above is still needed w/ nvidia card enabled
# export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
# export QT_QPA_PLATFORM=wayland
# export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
'';
swaynag = {
enable = false;
settings = {
"<config>" = {
background = "#ffffff99";
border-bottom = "#00000000";
button-background = "#ffffffcc";
button-padding = 10;
button-border-size = 0;
};
warning = {
background = "#ffffff99";
border-bottom = "#00000000";
button-background = "#ffff00";
};
error = {
background = "#ffffff99";
border-bottom = "#00000000";
button-background = "#ff0000";
};
green = {
background = "#ffffff99";
border-bottom = "#00000000";
button-background = "#00b300";
};
blue = {
background = "#ffffff99";
border-bottom = "#00000000";
button-background = "#0000ff";
};
};
};
systemdIntegration = true;
extraConfig = ''
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
'';
};
home.packages = with pkgs; [
wl-clipboard
pamixer
wob
wtype
];
programs.zsh.profileExtra = ''
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
exec systemd-cat -t sway sway --unsupported-gpu
fi
'';
};
}