146 lines
5.5 KiB
Nix
146 lines
5.5 KiB
Nix
{ lib, pkgs, config, ... }@inputs:
|
|
|
|
let
|
|
extra = ../extra;
|
|
scripts = ../scripts;
|
|
changebrightness = pkgs.writeShellScript "changebrightness"
|
|
(builtins.readFile "${scripts}/changebrightness.sh");
|
|
mod = "Mod4";
|
|
shutdownMenu = pkgs.writeShellScript "shutdownmenu"
|
|
(builtins.readFile "${scripts}/shutdownmenu.sh");
|
|
backgroundImage = "${extra}/kuwaitboat.jpg";
|
|
multiTouchGesturesConfig = ''
|
|
bindgesture swipe:4:up focus parent
|
|
bindgesture swipe:4:left workspace prev
|
|
bindgesture swipe:4:right workspace next
|
|
bindgesture swipe:3:up focus up
|
|
bindgesture swipe:3:down focus down
|
|
bindgesture swipe:3:left focus left
|
|
bindgesture swipe:3:right focus right
|
|
'';
|
|
in {
|
|
wayland.windowManager.sway = {
|
|
enable = true;
|
|
config = {
|
|
terminal = "${pkgs.lib.getExe inputs.config.defaultPrograms.terminal}";
|
|
modifier = mod;
|
|
fonts = {
|
|
names = [ "Rubik" ];
|
|
style = "Regular";
|
|
size = 12.0;
|
|
};
|
|
input = {
|
|
"type:touchpad" = {
|
|
natural_scroll = "disabled";
|
|
dwt = "disabled";
|
|
click_method = "clickfinger";
|
|
scroll_factor = "0.5";
|
|
};
|
|
"type:keyboard" = {
|
|
xkb_layout = "ca,ca";
|
|
xkb_variant = ",eng";
|
|
};
|
|
};
|
|
window = {
|
|
border = 2;
|
|
titlebar = true;
|
|
};
|
|
keybindings = let
|
|
screenshotPath =
|
|
"Pictures/Screenshots/screenshot`date +%Y%m%d%H%M%S`.png";
|
|
in lib.mkOptionDefault ({ # Screenshot keybinds
|
|
"Print" =
|
|
"exec grim - | wl-copy && wl-paste > ${screenshotPath}"; # Take screenshot of whole screen, save it, and copy it to clipboard
|
|
"Shift+Print" = ''
|
|
exec swaymsg -t get_tree | ${pkgs.lib.getExe pkgs.jq} -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | grim -g - | wl-copy && wl-paste > ${screenshotPath}''; # Take screenshot of current window, save it, and copy it to clipboard
|
|
"Ctrl+Print" =
|
|
"exec grim -g \"`slurp`\" - | wl-copy && wl-paste > ${screenshotPath}";
|
|
} // rec { # Function Media Keys
|
|
XF86MonBrightnessUp = "exec bash ${changebrightness} 1";
|
|
XF86MonBrightnessDown = "exec bash ${changebrightness} -1";
|
|
XF86AudioMute = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
|
"${mod}+XF86AudioMute" =
|
|
"exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
|
XF86AudioRaiseVolume = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+";
|
|
XF86AudioLowerVolume = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-";
|
|
"${mod}+XF86AudioRaiseVolume" =
|
|
"exec wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.05+";
|
|
"${mod}+XF86AudioLowerVolume" =
|
|
"exec wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.05-";
|
|
"${mod}+Shift+e" = null;
|
|
XF86AudioMedia =
|
|
"dunstctl set-paused toggle; dunstify -a 'dunst_mute_key' -u low -h string:x-dunst-stack-tag:dunst_mute_key 'Notifications mute toggled'";
|
|
XF86PowerOff =
|
|
"exec DMENU_COMMAND='rofi -dmenu -prompt=\"Sélectionnez :\"' bash ${shutdownMenu}";
|
|
"${mod}+Pause" = XF86PowerOff;
|
|
} // {
|
|
"${mod}+space" = ''input "*" xkb_switch_layout next'';
|
|
"${mod}+Shift+l" = "exec swaylock -f";
|
|
"${mod}+Home" = "move workspace to output left";
|
|
"${mod}+End" = "move workspace to output right";
|
|
} // lib.attrsets.mergeAttrsList (map (n: {
|
|
# Change focus between workspaces
|
|
"${mod}+${n}" = "exec swaysome focus ${n}";
|
|
# Move containers between workspaces
|
|
"${mod}+Shift+${n}" = "exec swaysome move ${n}";
|
|
# Focus workspace groups
|
|
"${mod}+Alt+${n}" = "exec swaysome focus-group ${n}";
|
|
# Move containers to other workspace groups
|
|
"${mod}+Alt+Shift+${n}" = "exec swaysome move-to-group ${n}";
|
|
}) (map toString (lib.lists.range 0 9)) ) // {
|
|
"${mod}+o" = "exec swaysome next-output";
|
|
"${mod}+Shift+o" = "exec swaysome prev-output";
|
|
"${mod}+Alt+o" = "exec swaysome workspace-group-next-output";
|
|
"${mod}+Alt+Shift+o" = "exec swaysome workspace-group-prev-output";
|
|
} // { });
|
|
# menu = "j4-dmenu-desktop --no-generic --term=${
|
|
# terminal
|
|
# } --dmenu='${dmenuCommand}'";
|
|
menu = "${pkgs.lib.getExe config.programs.rofi.package} -modes \"drun,run\" -show-icons -show drun";
|
|
focus.followMouse = false;
|
|
};
|
|
extraConfig =
|
|
''
|
|
output 'eDP-1' scale 1.50
|
|
'' + # Fractional scaling to 1.50
|
|
''
|
|
output 'DP-10' pos 0,0
|
|
output 'DP-9' pos 1920,0 transform 270
|
|
'' + # CTF Docking Station Monitors
|
|
''
|
|
exec gammastep-indicator
|
|
'' + # gammastep-indicator enables red shift
|
|
''
|
|
exec dunst
|
|
'' + # Enable notifications
|
|
''
|
|
exec "activate-linux -c 0.5-0.5-0.5-0.5"
|
|
'' + # Enable Activate Linux
|
|
multiTouchGesturesConfig + # Multi-touch touchpad gestures
|
|
''
|
|
exec swaybg -i ${backgroundImage}
|
|
'' + # Background image
|
|
''
|
|
focus_on_window_activation focus
|
|
'' + # Focus on window activation lol
|
|
''
|
|
set $laptop eDP-1
|
|
bindswitch --reload --locked lid:on output $laptop disable
|
|
bindswitch --reload --locked lid:off output $laptop enable
|
|
'' + # Clamshell mode
|
|
''
|
|
exec swaysome init 1
|
|
'' +
|
|
"";
|
|
};
|
|
|
|
programs.rofi = {
|
|
enable = true;
|
|
font = "Rubik 12";
|
|
package = pkgs.rofi-wayland;
|
|
theme = "android_notification";
|
|
};
|
|
|
|
home.packages = with pkgs; [ swaybg bemenu j4-dmenu-desktop swaysome ];
|
|
}
|