summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Martin Michalec <martin@michalec.dev>2026-02-11 02:44:52 +0000
committerLibravatar Martin Michalec <martin@michalec.dev>2026-02-11 02:44:52 +0000
commit0ea7c9210869e3cbfcd3ac2aca8cbb4e18a8f832 (patch)
tree6b9e4673a87ff4e361bd35545231ffbe92b074a6
parentadd imv (diff)
downloaddotfiles-0ea7c9210869e3cbfcd3ac2aca8cbb4e18a8f832.tar.gz
add wm
-rw-r--r--dot_config/mako/config14
-rw-r--r--dot_config/sway/config183
-rw-r--r--dot_config/swayidle/config5
-rw-r--r--dot_config/swaylock/config5
-rw-r--r--dot_config/waybar/config210
-rw-r--r--dot_config/waybar/style.css140
6 files changed, 557 insertions, 0 deletions
diff --git a/dot_config/mako/config b/dot_config/mako/config
new file mode 100644
index 0000000..3fe814d
--- /dev/null
+++ b/dot_config/mako/config
@@ -0,0 +1,14 @@
1border-color=#AAAAAA
2
3[urgency=low]
4background-color=#222222
5text-color=#888888
6
7[urgency=normal]
8background-color=#285577
9text-color=#FFFFFF
10
11[urgency=high]
12background-color=#900000
13text-color=#FFFFFF
14border-color=#FF0000
diff --git a/dot_config/sway/config b/dot_config/sway/config
new file mode 100644
index 0000000..bdb65bd
--- /dev/null
+++ b/dot_config/sway/config
@@ -0,0 +1,183 @@
1xwayland enable
2
3
4# Layout configuration
5input * {
6 xkb_layout us,ru
7 xkb_variant altgr-intl,
8 xkb_options grp:shifts_toggle,ctrl:nocaps
9}
10
11
12# General settings:
13set $mod Mod4
14floating_modifier $mod normal
15bindsym --to-code $mod+Shift+r reload
16
17
18# Launching external applications:
19set $pass passmenu
20bindsym --to-code $mod+p exec $pass -ip "Copy pass: " -l 10
21bindsym --to-code $mod+Shift+p exec $pass --name -ip "Copy name: " -l 10
22bindsym --to-code $mod+Alt+p exec $pass --type -ip "Type pass: " -l 10
23bindsym --to-code $mod+Alt+Shift+p exec $pass --type --name -ip "Type name: " -l 10
24
25set $power-menu powermenu -ip "Power: "
26bindsym --to-code $mod+Shift+q exec $power-menu
27bindsym --to-code $mod+Control+q exec $power-menu
28
29set $term emacsclient --create-frame --quiet
30set $emacs emacs --background black
31set $backup-term foot
32bindsym $mod+Return exec $term
33bindsym $mod+Shift+Return exec $emacs
34bindsym $mod+Control+Shift+Return exec $backup-term
35
36set $menu menu-drun -ip "Run: "
37set $lock lock
38bindsym --to-code $mod+Shift+d exec $menu
39bindsym --to-code $mod+Shift+l exec $lock
40bindsym --to-code $mod+Control+d exec $menu
41bindsym --to-code $mod+Control+l exec $lock
42
43bindsym --to-code $mod+Control+n exec menu-network
44
45
46# Manipulating windows:
47bindsym --to-code $mod+Shift+c kill
48bindsym --to-code $mod+Shift+f fullscreen
49bindsym --to-code $mod+Control+c kill
50
51bindsym $mod+Shift+space floating toggle
52bindsym $mod+Ctrl+space focus mode_toggle
53
54bindsym $mod+Left focus left
55bindsym $mod+Down focus down
56bindsym $mod+Up focus up
57bindsym $mod+Right focus right
58
59bindsym $mod+Shift+Left move left
60bindsym $mod+Shift+Down move down
61bindsym $mod+Shift+Up move up
62bindsym $mod+Shift+Right move right
63
64bindsym $mod+Control+b focus left
65bindsym $mod+Control+n focus down
66bindsym $mod+Control+p focus up
67bindsym $mod+Control+f focus right
68
69bindsym $mod+Control+Shift+b move left
70bindsym $mod+Control+Shift+n move down
71bindsym $mod+Control+Shift+p move up
72bindsym $mod+Control+Shift+f move right
73
74
75# Moving around workspaces:
76
77bindsym $mod+tab workspace back_and_forth
78bindsym $mod+Control+i workspace back_and_forth
79
80bindsym $mod+1 workspace number 1
81bindsym $mod+2 workspace number 2
82bindsym $mod+3 workspace number 3
83bindsym $mod+4 workspace number 4
84bindsym $mod+5 workspace number 5
85bindsym $mod+6 workspace number 6
86bindsym $mod+7 workspace number 7
87bindsym $mod+8 workspace number 8
88bindsym $mod+9 workspace number 9
89bindsym $mod+0 workspace number 10
90
91bindsym $mod+Shift+1 move container to workspace number 1
92bindsym $mod+Shift+2 move container to workspace number 2
93bindsym $mod+Shift+3 move container to workspace number 3
94bindsym $mod+Shift+4 move container to workspace number 4
95bindsym $mod+Shift+5 move container to workspace number 5
96bindsym $mod+Shift+6 move container to workspace number 6
97bindsym $mod+Shift+7 move container to workspace number 7
98bindsym $mod+Shift+8 move container to workspace number 8
99bindsym $mod+Shift+9 move container to workspace number 9
100bindsym $mod+Shift+0 move container to workspace number 10
101
102
103# Scratchpad settings:
104bindsym --to-code $mod+Shift+minus move scratchpad
105bindsym --to-code $mod+minus scratchpad show
106
107
108# Other:
109
110bindsym $mod+Control+t exec emacsclient -e "(modus-themes-toggle)"
111
112default_border pixel
113default_floating_border pixel
114gaps inner 4
115exec gpg-connect-agent updatestartuptty /bye >/dev/null
116# exec pipewire
117exec --no-startup-id udiskie -s
118exec --no-startup-id $emacs
119exec --no-startup-id swayidle -w
120exec_always --no-startup-id mako
121
122# toggle waybar
123# bindsym $mod+o exec killall -SIGUSR1 waybar
124
125bindsym --locked XF86AudioRaiseVolume \
126 exec pactl set-sink-mute @DEFAULT_SINK@ false; \
127 exec pactl set-sink-volume @DEFAULT_SINK@ +5%
128bindsym --locked XF86AudioLowerVolume \
129 exec pactl set-sink-mute @DEFAULT_SINK@ false; \
130 exec pactl set-sink-volume @DEFAULT_SINK@ -5%
131bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
132bindsym --locked XF86AudioMicMute \
133 exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
134bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
135bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
136
137output LVDS-1 pos 0 0 res 1366x768
138output VGA-1 pos 1366 0 res 1024x768
139# output * adaptive_sync on # this may be good, test it
140bindswitch --reload --locked lid:on exec swaylock
141bindsym $mod+Shift+o [floating] kill
142input 6700:66:SEMICCHIP_Usb_Mouse {
143 pointer_accel 0.0
144 accel_profile flat
145}
146input 6127:24647:Lenovo_ThinkPad_Compact_USB_Keyboard_with_TrackPoint {
147 pointer_accel -0.6
148 repeat_delay 150
149 repeat_rate 60
150}
151input type:keyboard {
152 repeat_delay 150
153 repeat_rate 60
154}
155input type:touchpad {
156 natural_scroll enabled
157 tap enabled
158}
159
160bindsym $mod+Alt+s exec sway-swappy-clipboard
161bindsym $mod+Shift+s exec sway-shot-window-or-selection
162
163bindsym $mod+Print exec sway-shot-output
164bindsym $mod+Alt+Print exec sway-swappy-clipboard
165bindsym XF86SelectiveScreenshot exec sway-shot-window-or-selection
166bindsym $mod+Shift+Print exec sway-shot-window-or-selection
167bindsym $mod+Control+Print exec toggle-screen-capture output
168bindsym $mod+Shift+Control+Print exec toggle-screen-capture window
169
170bindsym $mod+Control+s exec spotlight
171
172# bindsym --to-code XF86NotificationCenter exec toggle dunst
173
174bar swaybar_command waybar
175
176for_window [title=".* - Emacs Client"] floating enable
177for_window [title="cmatrix"] floating enable
178for_window [app_id="wdisplays"] floating enable
179for_window [app_id="iwgtk"] floating enable
180for_window [app_id="mpv"] floating enable
181
182smart_borders on
183smart_gaps on
diff --git a/dot_config/swayidle/config b/dot_config/swayidle/config
new file mode 100644
index 0000000..729fd60
--- /dev/null
+++ b/dot_config/swayidle/config
@@ -0,0 +1,5 @@
1lock 'swaylock'
2before-sleep 'swaylock'
3timeout 240 'swaylock'
4timeout 270 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"'
5timeout 600 'sudo zzz'
diff --git a/dot_config/swaylock/config b/dot_config/swaylock/config
new file mode 100644
index 0000000..31956f0
--- /dev/null
+++ b/dot_config/swaylock/config
@@ -0,0 +1,5 @@
1show-failed-attempts
2daemonize
3show-keyboard-layout
4color=0x000000
5indicator-caps-lock
diff --git a/dot_config/waybar/config b/dot_config/waybar/config
new file mode 100644
index 0000000..a1c11d5
--- /dev/null
+++ b/dot_config/waybar/config
@@ -0,0 +1,210 @@
1[
2 {
3 "position": "top",
4 "name": "main",
5 "layer": "top",
6
7 "modules-left": [
8 "temperature",
9 "cpu",
10 "memory",
11 "disk#root",
12 "battery",
13 "sway/workspaces"
14 ],
15 "modules-center": [
16 "sway/window"
17 ],
18 "modules-right": [
19 "tray",
20 "custom/recorder",
21 "custom/inbox",
22 "custom/sunset",
23 "custom/vpn",
24 // "custom/notification",
25 "idle_inhibitor",
26 "pulseaudio#source",
27 "pulseaudio#sink",
28 "sway/language",
29 "network",
30 "clock"
31 ],
32
33 "temperature": {
34 "format": "🌡{temperatureC}°C"
35 },
36
37 "cpu": {
38 "interval": 2,
39 "format": "\uf2db {usage:2}%"
40 },
41
42 "memory": {
43 "interval": 30,
44 "format": "\uf1c0 {percentage:2}%"
45 },
46
47 "disk#root": {
48 "interval": 30,
49 "format": "\uf0c7 {percentage_used:2}%",
50 "path": "/"
51 },
52
53 "network": {
54 "format-ethernet": "🔌",
55 "format-wifi": "📡",
56 "format-disconnected": "🚫",
57 "format-disabled": "⚠",
58 "on-click": "iwgtk"
59 },
60
61 "sway/workspaces": {
62 "disable-scroll": true,
63 "format": "{icon}",
64 "format-icons": {
65 "default": "",
66 "focused": "",
67 "urgent": ""
68 }
69 },
70
71 "sway/window": {},
72
73 "tray": {},
74
75 "idle_inhibitor": {
76 "format": "{icon}",
77 "format-icons": {
78 "activated": "\uf06e",
79 "deactivated": "\uf070"
80 },
81 "tooltip-format-activated": "Idle inhibitor {status}. It prevents automatic screen locking and hibernation.",
82 "tooltip-format-deactivated": "Idle inhibitor {status}."
83 },
84
85 "sway/language": {
86 "format": "{flag}"
87 },
88
89 "pulseaudio#source": {
90 "format": "{format_source}",
91 "format-source": "\uf130",
92 "format-source-muted": "\uf131",
93 "tooltip-format": "{source_desc} is on {source_volume}%",
94 "on-click": "pavucontrol --tab=4",
95 "on-click-middle": "pactl set-source-mute @DEFAULT_SOURCE@ toggle",
96 "scroll-step": 0
97 },
98
99 "pulseaudio#sink": {
100 "format": "{icon}",
101 "format-muted": "🔇",
102 "format-bluetooth": "{icon} \uf294",
103 "tooltip-format": "{desc} is on {volume}%",
104 "format-icons": {
105 "default": [
106 "🔈",
107 "🔉",
108 "🔊",
109 "📢"
110 ]
111 },
112 "on-click": "pavucontrol --tab=3",
113 "on-click-middle": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
114 "scroll-step": 5
115 },
116
117 "battery": {
118 "format": "{icon} {capacity}%",
119 "format-charging": "{icon} {capacity}⚡",
120 "tooltip-format": "Current capacity: {capacity}%\n\n{timeTo}",
121 "states": {
122 "empty": 10,
123 "low": 20,
124 "half-low": 40,
125 "half": 60,
126 "high": 90,
127 "full": 100
128 },
129 "format-icons": {
130 "empty": "\uf244",
131 "low": "\uf243",
132 "half-low": "\uf243",
133 "half": "\uf242",
134 "high": "\uf241",
135 "full": "\uf240"
136 }
137 },
138
139 "clock": {
140 "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
141 "format": "{:%Y-%m-%d %H:%M}",
142 "on-click": "emacsclient --eval \"(world-clock)\"",
143 "on-click-right": "emacsclient --eval \"(calendar)\"",
144 "interval": 60
145 },
146
147 "custom/recorder": {
148 "format": "{}",
149 "return-type": "json",
150 "exec-on-event": true,
151 "interval": "once",
152 "signal": 8,
153 "exec": "waybar-screen-recorder",
154 "on-click": "toggle-screen-capture"
155 },
156
157 "custom/inbox": {
158 "format": "{} 📥",
159 "interval": 60,
160 "exec": "notmuch count tag:inbox",
161 "on-click": "sync-mail"
162 },
163
164 "custom/sunset": {
165 "format": "{icon}",
166 "format-icons": {
167 "off": "🌞",
168 "on": "🌛"
169 },
170 "return-type": "json",
171 "interval": "once",
172 "signal": 10,
173 "exec": "waybar-sunset",
174 "on-click": "waybar-sunset toggle",
175 "on-click-right": "waybar-sunset rotate",
176 "exec-if": "waybar-sunset check"
177 },
178
179 "custom/vpn": {
180 "format": "{}",
181 "return-type": "json",
182 "exec-on-event": true,
183 "interval": "once",
184 "signal": 9,
185 "exec": "waybar-vpn",
186 "on-click": "toggle-vpn"
187 },
188
189 "custom/notification": {
190 "tooltip": false,
191 "format": "{icon}",
192 "format-icons": {
193 "none": "🔔",
194 "notification": "🔔",
195 "inhibited-none": "🔔",
196 "inhibited-notification": "🔔",
197 "dnd-none": "🔕",
198 "dnd-notification": "🔕",
199 "dnd-inhibited-none": "🔕",
200 "dnd-inhibited-notification": "🔕"
201 },
202 "return-type": "json",
203 "exec": "swaync-client -swb",
204 "on-click": "swaync-client -t -sw",
205 "on-click-right": "swaync-client -d -sw",
206 "on-click-middle": "swaync-client -C -sw",
207 "escape": true
208 }
209 }
210]
diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css
new file mode 100644
index 0000000..fc35942
--- /dev/null
+++ b/dot_config/waybar/style.css
@@ -0,0 +1,140 @@
1@define-color base00 #181818;
2@define-color base01 #282828;
3@define-color base02 #383838;
4@define-color base03 #585858;
5@define-color base04 #b8b8b8;
6@define-color base05 #d8d8d8;
7@define-color base06 #e8e8e8;
8@define-color base07 #f8f8f8;
9@define-color base08 #ab4642;
10@define-color base09 #dc9656;
11@define-color base0A #f7ca88;
12@define-color base0B #a1b56c;
13@define-color base0C #86c1b9;
14@define-color base0D #7cafc2;
15@define-color base0E #ba8baf;
16@define-color base0F #a16946;
17
18* {
19 font-family: Aporetic Serif Mono, Noto Emoji, Symbols Nerd Font Mono;
20 transition: none;
21 box-shadow: none;
22 text-shadow: none;
23 min-height: 0;
24}
25
26tooltip {
27 border: solid @base02;
28 background: @base01;
29 opacity: 0.9;
30}
31
32tooltip label {
33 color: @base05;
34 padding: 0;
35}
36
37#waybar {
38 color: @base04;
39 background: @base01;
40}
41
42.modules-right label,
43.modules-right image {
44 margin: 0.4em 0.2em;
45 padding: 0 0.4em;
46 background: @base02;
47 border-radius: 0.2em;
48}
49
50.modules-left {
51 margin-left: 0.2em;
52}
53
54.modules-right {
55 margin-right: 0.2em;
56}
57
58#custom-recorder {
59 color: @base08;
60}
61
62#custom-notification.notification,
63#custom-notification.dnd-notification,
64#custom-notification.dnd-inhibited-notification {
65 color: @base07;
66 background: @base02;
67}
68
69#temperature,
70#cpu,
71#memory,
72#disk,
73#battery {
74 margin: 0.4em 0.2em;
75 padding: 0 0.4em;
76 background: @base02;
77 border-radius: 0.2em;
78}
79
80#workspaces button {
81 background: none;
82 border-radius: 0.2em;
83 margin: 0.4em 0.2em;
84 padding: 0.2em 0.2em;
85 color: @base05;
86}
87
88#workspaces button:hover {
89 background: none;
90 border-color: @base07;
91}
92
93#workspaces button.focused {
94 background: none;
95 color: @base07;
96}
97
98#workspaces button.urgent {
99 color: @base08;
100}
101
102#window {
103 margin-left: 1em;
104 margin-right: 1em;
105}
106
107#tray menu {
108 color: @base05;
109 background: @base01;
110 border: solid 1px;
111 border-color: @base02;
112}
113
114#tray menu menuitem {
115 padding-top: 0px;
116 padding-bottom: 0px;
117 margin-top: 0.1em;
118 margin-bottom: 0em;
119}
120
121#tray menu menuitem:hover {
122 background: none;
123}
124
125#tray menu separator {
126 background: @base03;
127 padding-top: 1px;
128 margin-top: 0.2em;
129 margin-bottom: 0.2em;
130}
131
132#battery.discharging.empty {
133 color: @base02;
134 background: @base08;
135}
136
137#battery.discharging.low {
138 color: @base02;
139 background: @base09;
140}