summaryrefslogtreecommitdiff
path: root/sway.nix
blob: 469d4fabc3a0cc13b7230638a06eb5529f450714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
  pkgs,
  inputs,
  ...
}: {
  xdg.configFile."sway/config".text = ''
    output eDP1 pos 3537 0 res 1920 1200
    output DP-3 scale 1.4
    output DP-3 pos 2440 0 res 3840 2160

    set $mod Mod4
    set $term ghostty

    font pango:iosevka 20

    exec dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
    exec /usr/libexec/pipewire-launcher

    focus_follows_mouse no

    for_window [class="^.*"] border pixel 3
    default_border pixel 5
    default_floating_border pixel 5
    hide_edge_borders both

    floating_modifier $mod

    # custom shortcut
    bindsym $mod+Shift+q kill
    bindsym $mod+t exec $term
    bindsym $mod+d exec wofi --show run
    bindsym $mod+c exec comment
    bindsym $mod+n exec neovide
    bindsym $mod+x exec open_web
    bindsym $mod+Shift+p exec maim --select | wl-copy
    bindsym $mod+p exec grim  -g "$(slurp)" - | wl-copy
    bindsym $mod+Shift+d exec wofi --show drun
    bindsym $mod+Shift+minus move scratchpad
    bindsym $mod+minus scratchpad show

    bindsym $mod+j focus down
    bindsym $mod+k focus up
    bindsym $mod+l focus right
    bindsym $mod+h focus left

    # move focused window
    bindsym $mod+Shift+h move left
    bindsym $mod+Shift+j move down
    bindsym $mod+Shift+k move up
    bindsym $mod+Shift+l move right

    # move focused workspace between monitors
    bindsym $mod+Ctrl+greater move workspace to output right
    bindsym $mod+Ctrl+less move workspace to output left


    # split in vertical orientation
    bindsym $mod+v split v

    # enter fullscreen mode for the focused container
    bindsym $mod+f fullscreen toggle

    # change container layout (stacked, tabbed, toggle split)
    bindsym $mod+w layout tabbed
    bindsym $mod+s layout toggle split


    bindsym $mod+Shift+space floating toggle
    bindsym $mod+a sticky toggle

    # change focus between tiling / floating windows
    bindsym $mod+space focus mode_toggle

    # Define names for default workspaces for which we configure key bindings later on.
    # We use variables to avoid repeating the names in multiple places.
    set $ws1 "1.web"
    set $ws2 "2.nvim"
    set $ws3 "3.work"
    set $ws4 "4.buffer"
    set $ws5 "5.chat"
    set $ws6 "6"
    set $ws7 "7"
    set $ws8 "8"
    set $ws9 "9"
    set $ws10 "10"

    # switch to workspace
    bindsym $mod+1 workspace $ws1
    bindsym $mod+2 workspace $ws2
    bindsym $mod+3 workspace $ws3
    bindsym $mod+4 workspace $ws4
    bindsym $mod+5 workspace $ws5
    bindsym $mod+6 workspace $ws6
    bindsym $mod+7 workspace $ws7
    bindsym $mod+8 workspace $ws8
    bindsym $mod+9 workspace $ws9
    bindsym $mod+0 workspace $ws10

    # move focused container to workspace
    bindsym $mod+Shift+1 move container to workspace $ws1
    bindsym $mod+Shift+2 move container to workspace $ws2
    bindsym $mod+Shift+3 move container to workspace $ws3
    bindsym $mod+Shift+4 move container to workspace $ws4
    bindsym $mod+Shift+5 move container to workspace $ws5
    bindsym $mod+Shift+6 move container to workspace $ws6
    bindsym $mod+Shift+7 move container to workspace $ws7
    bindsym $mod+Shift+8 move container to workspace $ws8
    bindsym $mod+Shift+9 move container to workspace $ws9
    bindsym $mod+Shift+0 move container to workspace $ws10

    # reload the configuration file
    bindsym $mod+Shift+c reload
    # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
    bindsym $mod+Shift+r restart

    # resize window (you can also use the mouse for that)
    mode "resize" {
            bindsym h resize shrink width 10 px or 10 ppt
            bindsym j resize grow height 10 px or 10 ppt
            bindsym k resize shrink height 10 px or 10 ppt
            bindsym l resize grow width 10 px or 10 ppt

            # same bindings, but for the arrow keys
            bindsym Left resize shrink width 10 px or 10 ppt
            bindsym Down resize grow height 10 px or 10 ppt
            bindsym Up resize shrink height 10 px or 10 ppt
            bindsym Right resize grow width 10 px or 10 ppt

            # back to normal: Enter or Escape or $mod+r
            bindsym Return mode "default"
            bindsym Escape mode "default"
            bindsym $mod+r mode "default"
    }

    bindsym $mod+r mode "resize"

    # class                 border  bground text    indicator child_border
    client.focused          #83CAFA #51A2DA #FFFFFF #83CAFA   #51A2DA
    client.unfocused        #4C4C4C #222222 #888888 #292D2E   #222222
    client.urgent           #EC69A0 #DB3279 #FFFFFF #DB3279   #DB3279
    client.placeholder      #000000 #0C0C0C #FFFFFF #000000   #0C0C0C

    client.background       #FFFFFF

    bar {
        swaybar_command waybar
    }

    input type:keyboard {
        xkb_layout us,us_intl,de
        xkb_options grp:rctrl_toggle
    }

    gaps outer 5
    gaps inner 5
    output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
    output "LG Electronics LG HDR 4K 0x0001A8D9" scale 1.4


    exec nextcloud
    exec mako
    exec blueman-applet
  '';
}