diff --git a/configurations/sway.nix b/configurations/sway.nix index ec9f588b..41ecbbae 100644 --- a/configurations/sway.nix +++ b/configurations/sway.nix @@ -6,11 +6,121 @@ let status-configuration = import ./sway/status-configuration.nix { inherit pkgs; }; in { - imports = [ ./sway/kanshi.nix ]; - programs = { - sway = { + services.dbus.packages = with pkgs; [ gnome3.dconf ]; + home-manager.users.charlotte = { pkgs, lib, ... }: { + home.packages = [ color-picker launcher screenshot ]; + services.kanshi = { enable = true; - extraPackages = [ pkgs.xwayland ]; + profiles = { + "home-undocked" = { + outputs = [ + { criteria = "Unknown 0x2036 0x00000000"; position = "0,0"; mode = "2560x1440"; scale = 1.0; } + ]; + }; + "home-docked" = { + outputs = [ + { criteria = "Unknown 0x2036 0x00000000"; position = "0,0"; mode = "2560x1440"; scale = 1.0; } + { criteria = "Dell Inc. DELL U2718Q FN84K01T095L"; position = "2560,0"; mode = "3840x2160"; scale = 1.25; } + ]; + }; + "work-undocked" = { + outputs = [ + { criteria = "Chimei Innolux Corporation 0x14D3 0x00000000"; position = "0,0"; mode = "1920x1080"; scale = 1.0; } + ]; + }; + "work-docked" = { + outputs = [ + { criteria = "Chimei Innolux Corporation 0x14D3 0x00000000"; position = "0,0"; mode = "1920x1080"; scale = 1.0; } + { criteria = "Dell Inc. DELL U2718Q FN84K83Q1KHL"; position = "1920,0"; mode = "3840x2160"; scale = 1.25; } + ]; + }; + }; + }; + wayland.windowManager.sway = { + enable = true; + config = rec { + modifier = "Mod4"; + left = "h"; + down = "j"; + up = "k"; + right = "l"; + terminal = "${pkgs.kitty}/bin/kitty"; + menu = "${terminal} --class launcher -e ${launcher}/bin/launcher"; + bars = [ + { + colors = { + background = "#fbffff"; + statusline = "#535c65"; + activeWorkspace = { border = "#6d7782"; background = "#6d7782"; text = "#fbffff"; }; + focusedWorkspace = { border = "#2b7ab2"; background = "#2b7ab2"; text = "#fbffff"; }; + inactiveWorkspace = { border = "#fbffff"; background = "#fbffff"; text = "#535c65"; }; + urgentWorkspace = { border = "#ae5865"; background = "#ae5865"; text = "#fbffff"; }; + }; + fonts = ["Fira Code Normal 9"]; + position = "top"; + statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${status-configuration}"; + extraConfig = '' + status_padding 0 + icon_theme Arc + ''; + } + ]; + startup = [ + { command = "${pkgs.swayidle}/bin/swayidle -w timeout 300 '${pkgs.swaylock}/bin/swaylock -f -c 000000' timeout 150 '${pkgs.sway}/bin/swaymsg \"output * dpms off\"' resume '${pkgs.sway}/bin/swaymsg \"output * dpms on\"' before-sleep '${pkgs.swaylock}/bin/swaylock -f -c 000000'"; } + { command = "${pkgs.mako}/bin/mako"; } + ]; + window.commands = [ + { command = "floating enable"; criteria = { app_id = "launcher"; }; } + { command = "no_focus"; criteria = { title = "Microsoft Teams Notification"; }; } + ]; + input = { + "type:keyboard" = { xkb_layout = "us"; xkb_variant = "altgr-intl"; xkb_numlock = "enabled"; }; + "type:touchpad" = { drag = "enabled"; dwt = "enabled"; scroll_method = "two_finger"; tap = "enabled"; }; + }; + keybindings = lib.mkOptionDefault { + "${modifier}+Shift+c" = "kill"; + "${modifier}+Shift+r" = "reload"; + "${modifier}+Shift+q" = "noop"; + "${modifier}+c" = "exec ${pkgs.swaylock}/bin/swaylock -f -c 000000"; + "${modifier}+i" = "inhibit_idle open; border normal; mark --add inhibiting_idle"; + "${modifier}+Shift+i" = "inhibit_idle none; border pixel; unmark inhibiting_idle"; + "Print" = "exec ${screenshot}/bin/screenshot"; + "Alt+Print" = "exec ${screenshot}/bin/screenshot -d"; + "Shift+Print" = "exec ${screenshot}/bin/screenshot -r"; + "Alt+Shift+Print" = "exec ${screenshot}/bin/screenshot -r -d"; + "XF86AudioRaiseVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%"; + "XF86AudioLowerVolume" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%"; + "XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"; + "XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"; + "XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set +5%"; + "${modifier}+Alt+Left" = "move workspace to output left"; + "${modifier}+Alt+Right" = "move workspace to output right"; + }; + }; + extraConfig = '' + workspace 1 output eDP-1 + workspace 2 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 3 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 4 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 5 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 6 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 7 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 8 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + workspace 9 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 + + workspace 1 + exec ${pkgs.firefox}/bin/firefox + workspace 3 + exec ${pkgs.thunderbird}/bin/thunderbird + workspace 4 + exec ${pkgs.element-desktop}/bin/element-desktop + workspace 5 + exec ${pkgs.teams}/bin/teams + workspace 2 + + default_border pixel + ''; extraSessionCommands = '' export XDG_SESSION_TYPE=wayland export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 @@ -21,266 +131,11 @@ in export MOZ_ENABLE_WAYLAND=1 export _JAVA_AWT_WM_NONREPARENTING=1 ''; + wrapperFeatures = { + base = true; + gtk = true; + }; + xwayland = true; }; }; - - home-manager.users.charlotte = { pkgs, ... }: { - home.packages = [ color-picker launcher screenshot ]; - xdg.configFile."sway/config".text = '' - # Config for sway - # - # Read `man 5 sway` for a complete reference. - - ### Variables - # - # Logo key. Use Mod1 for Alt. - set $mod Mod4 - # Home row direction keys, like vim - set $left h - set $down j - set $up k - set $right l - # Your preferred terminal emulator - set $term ${pkgs.kitty}/bin/kitty - # Your preferred application launcher - # Note: it's recommended that you pass the final command to sway - set $menu $term --class launcher -e ${launcher}/bin/launcher - - ### Output configuration - exec_always pkill kanshi; exec ${pkgs.kanshi}/bin/kanshi - - workspace 1 output eDP-1 - workspace 2 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 3 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 4 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 5 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 6 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 7 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 8 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 9 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - workspace 10 output DP-3 DP-4 DP-5 HDMI-A-1 eDP-1 - - ### Idle configuration - # - # This will lock your screen after 300 seconds of inactivity, turn off - # your displays after another 150 seconds, and turn your screens back on when - # resumed. It will also lock your screen before your computer goes to sleep. - exec ${pkgs.swayidle}/bin/swayidle -w \ - timeout 300 '${pkgs.swaylock}/bin/swaylock -f -c 000000' \ - timeout 150 '${pkgs.sway}/bin/swaymsg "output * dpms off"' \ - resume '${pkgs.sway}/bin/swaymsg "output * dpms on"' \ - before-sleep '${pkgs.swaylock}/bin/swaylock -f -c 000000' - - ### Notification daemon - # - exec ${pkgs.mako}/bin/mako - - # User services bound to the graphical session - exec "${pkgs.systemd}/bin/systemctl --user import-environment; ${pkgs.systemd}/bin/systemctl --user start graphical-session.target" - - ### Window rules - # Launcher popup - for_window [app_id="launcher"] floating enable - - # Don't allow teams notifications to steal focus - no_focus [title="Microsoft Teams Notification"] - - ### Startup programs - # - workspace 1 - exec ${pkgs.firefox}/bin/firefox - workspace 3 - exec ${pkgs.thunderbird}/bin/thunderbird - workspace 4 - exec ${pkgs.element-desktop}/bin/element-desktop - workspace 5 - exec ${pkgs.teams}/bin/teams - workspace 2 - - ### Input configuration - # - # Example configuration: - # - # input "2:14:SynPS/2_Synaptics_TouchPad" { - # dwt enabled - # tap enabled - # natural_scroll enabled - # middle_emulation enabled - # } - # - # You can get the names of your inputs by running: swaymsg -t get_inputs - # Read `man 5 sway-input` for more information about this section. - - input type:keyboard { - xkb_layout "us" - xkb_variant "altgr-intl" - xkb_numlock enabled - } - - input type:touchpad { - drag enabled - dwt enabled - scroll_method two_finger - tap enabled - } - - ### Key bindings - # - # Basics: - # - # start a terminal - bindsym $mod+Return exec $term - - # kill focused window - bindsym $mod+Shift+c kill - - # start your launcher - bindsym $mod+d exec $menu - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # reload the configuration file - bindsym $mod+Shift+r reload - - # exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec ${pkgs.sway}/bin/swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' '${pkgs.sway}/bin/swaymsg exit' - - # lock screen - bindsym $mod+c exec ${pkgs.swaylock}/bin/swaylock -f -c 000000 - - # toggle the current view inhibiting idle - bindsym $mod+i inhibit_idle open; border normal; mark --add inhibiting_idle - bindsym $mod+Shift+i inhibit_idle none; border pixel; unmark inhibiting_idle - - - # screenshot - bindsym Print exec ${screenshot}/bin/screenshot - bindsym Alt+Print exec ${screenshot}/bin/screenshot -d - bindsym Shift+Print exec ${screenshot}/bin/screenshot -r - bindsym Alt+Shift+Print exec ${screenshot}/bin/screenshot -r -d - - # audio - bindsym XF86AudioRaiseVolume exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5% - bindsym XF86AudioLowerVolume exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5% - bindsym XF86AudioMute exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle - bindsym XF86AudioMicMute exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle - - # brightness - bindsym XF86MonBrightnessDown exec ${pkgs.brightnessctl}/bin/brightnessctl set 5%- - bindsym XF86MonBrightnessUp exec ${pkgs.brightnessctl}/bin/brightnessctl set +5% - # - # Moving around: - # - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # _move_ the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right - # - # Workspaces: - # - # switch to workspace - bindsym $mod+1 workspace 1 - bindsym $mod+2 workspace 2 - bindsym $mod+3 workspace 3 - bindsym $mod+4 workspace 4 - bindsym $mod+5 workspace 5 - bindsym $mod+6 workspace 6 - bindsym $mod+7 workspace 7 - bindsym $mod+8 workspace 8 - bindsym $mod+9 workspace 9 - bindsym $mod+0 workspace 10 - # move focused container to workspace - bindsym $mod+Shift+1 move container to workspace 1 - bindsym $mod+Shift+2 move container to workspace 2 - bindsym $mod+Shift+3 move container to workspace 3 - bindsym $mod+Shift+4 move container to workspace 4 - bindsym $mod+Shift+5 move container to workspace 5 - bindsym $mod+Shift+6 move container to workspace 6 - bindsym $mod+Shift+7 move container to workspace 7 - bindsym $mod+Shift+8 move container to workspace 8 - bindsym $mod+Shift+9 move container to workspace 9 - bindsym $mod+Shift+0 move container to workspace 10 - # move workspace to output - bindsym $mod+Alt+Left move workspace to output left - bindsym $mod+Alt+Right move workspace to output right - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. - - # - # Layout stuff: - # - # You can "split" the current object of your focus with - # $mod+b or $mod+v, for horizontal and vertical splits - # respectively. - bindsym $mod+b splith - bindsym $mod+v splitv - - # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split - - # Make the current focus fullscreen - bindsym $mod+f fullscreen - - # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle - - # move focus to the parent container - bindsym $mod+a focus parent - - # - # Status Bar: - # - # Read `man 5 sway-bar` for more information about this section. - bar { - position top - - status_command ${pkgs.i3status-rust}/bin/i3status-rs ${status-configuration} - status_padding 0 - - font Fira Code Normal 9 - - colors { - statusline #535c65 - background #fbffff - focused_workspace #2b7ab2 #2b7ab2 #fbffff - active_workspace #6d7782 #6d7782 #fbffff - inactive_workspace #fbffff #fbffff #535c65 - urgent_workspace #ae5865 #ae5865 #fbffff - } - - icon_theme Arc - } - - default_border pixel - - include /etc/sway/config.d/* - ''; - }; } diff --git a/configurations/sway/kanshi.nix b/configurations/sway/kanshi.nix deleted file mode 100644 index 3f5da125..00000000 --- a/configurations/sway/kanshi.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ ... }: - -{ - home-manager.users.charlotte = { ... }: { - xdg.configFile."kanshi/config".text = '' - { - output "Unknown 0x2036 0x00000000" position 0,0 mode 2560x1440 scale 1.0 - } - { - output "Unknown 0x2036 0x00000000" position 0,0 mode 2560x1440 scale 1.0 - output "Dell Inc. DELL U2718Q FN84K01T095L" position 2560,0 mode 3840x2160 scale 1.25 - } - { - output "Chimei Innolux Corporation 0x14D3 0x00000000" position 0,0 mode 1920x1080 scale 1 - } - { - output "Chimei Innolux Corporation 0x14D3 0x00000000" position 0,0 mode 1920x1080 scale 1 - output "Dell Inc. DELL U2718Q FN84K83Q1KHL" position 1920,0 mode 3840x2160 scale 1.25 - } - ''; - }; -}