You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

i3.config.j2 11KB

2 anni fa
2 anni fa
3 anni fa
3 anni fa
2 anni fa
3 anni fa
2 anni fa
4 anni fa
2 anni fa
3 anni fa
3 anni fa
2 anni fa
2 anni fa
3 anni fa
4 anni fa
3 anni fa
4 anni fa
4 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
3 anni fa
3 anni fa
3 anni fa
2 anni fa
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. {{ ansible_managed | comment }}
  2. # i3 config file (v4)
  3. #
  4. # Please see http://i3wm.org/docs/userguide.html for a complete reference!
  5. {% set workspace_switcher = "exec --no-startup-id i3-workspace-switcher" %}
  6. {% set on_focus_workspace = "exec --no-startup-id on-focus-workspace" %}
  7. ### Font
  8. font {{i3_font}}
  9. ### Modifier Key
  10. set $mod Mod4
  11. set $plexmod Mod3
  12. # Use Mouse+$mod to drag floating windows to their wanted position
  13. floating_modifier $mod
  14. ### default/local mode
  15. ## special keys
  16. bindsym XF86Sleep exec {{i3_exec_command_prefix}} {{lockscreen_lock_command}}
  17. bindsym XF86Mail exec {{i3_exec_command_prefix}} {{mail_command}}
  18. bindsym XF86HomePage exec {{i3_exec_command_prefix}} {{default_browser}}
  19. bindsym XF86Calculator exec {{i3_exec_command_prefix}} {{calculator_command}}
  20. ## Special modes
  21. bindsym $mod+t mode timer
  22. bindsym $mod+s mode session
  23. bindsym $mod+c mode clipboard
  24. bindcode $mod+49 mode "session"
  25. bindcode $mod+9 exec --no-startup-id ~/.xsession.reload.fish
  26. ## Todo
  27. bindsym $mod+x exec {{i3_exec_command_prefix}} todo finished
  28. ## Applications
  29. bindsym $mod+Return exec {{i3_exec_command_prefix}} "{{default_terminal}}"
  30. bindsym $mod+b exec {{i3_exec_command_prefix}} "{{default_browser}}"
  31. bindsym $mod+d exec {{i3_exec_command_prefix}} rofi -show drun -show-icons
  32. bindsym $mod+e exec {{i3_exec_command_prefix}} rofi -show run
  33. bindsym $mod+a mode "apps"
  34. bindsym $mod+space exec {{i3_exec_command_prefix}} "on-space-shortcut"
  35. ## Workspaces
  36. bindsym $mod+w {{workspace_switcher}}
  37. {% for ws in i3_number_workspace_keymaps %}
  38. bindsym $mod+{{ws.keysym}} workspace "{{ws.workspace}}"
  39. {% endfor %}
  40. # focus workspace
  41. bindsym $mod+Prior workspace next
  42. bindsym $mod+Next workspace prev
  43. bindsym $mod+ssharp scratchpad show
  44. bindsym $mod+g sticky toggle
  45. ## Layout
  46. bindsym $mod+l mode "layout"
  47. bindsym $mod+h split h
  48. bindsym $mod+v split v
  49. ## Focus
  50. bindsym $mod+Left focus left
  51. bindsym $mod+Down focus down
  52. bindsym $mod+Up focus up
  53. bindsym $mod+Right focus right
  54. bindsym $mod+p focus parent
  55. # change focus between tiling / floating windows
  56. bindsym $mod+Tab focus mode_toggle
  57. ## Move
  58. # move window
  59. bindsym $mod+Control+w exec fish -c "i3-msg move container to workspace (i3-msg -t get_workspaces | jq --raw-output '.[]|select(.num == -1).name' | rofi -dmenu -p 'move to workspace' )"; mode "default"
  60. bindsym $mod+Control+Left move left
  61. bindsym $mod+Control+Down move down
  62. bindsym $mod+Control+Up move up
  63. bindsym $mod+Control+Right move right
  64. bindsym $mod+Control+Tab floating toggle
  65. {% for ws in i3_number_workspace_keymaps %}
  66. bindsym $mod+Control+{{ws.keysym}} move container to workspace "{{ws.workspace}}"; mode "default"
  67. {% endfor %}
  68. # move workspace
  69. bindsym $mod+Shift+Left move workspace to output left
  70. bindsym $mod+Shift+Down move workspace to output down
  71. bindsym $mod+Shift+Up move workspace to output up
  72. bindsym $mod+Shift+Right move workspace to output right
  73. bindsym $mod+Shift+O exec fish -c "i3-msg move workspace to output ( i3-msg -t get_outputs | jq --raw-output '.[]|select(.active == true).name' | rofi -dmenu -p 'move workspace to output' )"; mode "default"
  74. bindsym $mod+Shift+P move workspace to output primary; mode "default"
  75. ## Window
  76. # The middle button over a titlebar kills the window
  77. bindsym --release button2 kill
  78. # The middle button and a modifer over any part of the window kills the window
  79. bindsym --whole-window $mod+button2 kill
  80. bindsym $mod+BackSpace kill
  81. bindsym $mod+q kill
  82. bindsym $mod+f fullscreen
  83. bindsym $mod+r mode resize
  84. # free keys
  85. # $mod+i
  86. # $mod+j
  87. # $mod+k
  88. # $mod+n
  89. # $mod+m
  90. # $mod+o
  91. # $mod+u
  92. # $mod+adiaeresis
  93. # $mod+odiaeresis
  94. # $mod+udiaeresis
  95. # $mod+comma
  96. # $mod+period
  97. # $mod+numbersign
  98. # $mod+Home
  99. # $mod+End
  100. # $mod+Pause
  101. # $mod+Delete
  102. # $mod+Insert
  103. # $mod+Print
  104. # $mod+Scroll_Lock
  105. # $mod+minus
  106. # $mod+plus
  107. # $mod+less
  108. ## stuff that is available in default and remote mode
  109. {% macro overall() %}
  110. bindsym $plexmod+space exec {{i3_exec_command_prefix}} on-space-shortcut
  111. bindsym $plexmod+BackSpace kill
  112. bindsym $plexmod+Tab {{workspace_switcher}}
  113. {% for ws in i3_number_workspace_keymaps %}
  114. bindsym $plexmod+{{ws.keysym}} workspace "{{ws.workspace}}"
  115. {% endfor %}
  116. {% for ws in i3_letter_workspace_keymaps %}
  117. bindsym $plexmod+{{ws.keysym}} workspace "{{ws.workspace}}"
  118. {% endfor %}
  119. # focus workspace
  120. bindsym $plexmod+Prior workspace next
  121. bindsym $plexmod+Next workspace prev
  122. # focus output
  123. bindsym $plexmod+Shift+p focus output primary
  124. bindsym $plexmod+Shift+o exec fish -c "i3-msg focus output ( i3-msg -t get_outputs | jq --raw-output '.[]|select(.active == true).name' | rofi -dmenu -p 'focus output' )"
  125. bindsym $plexmod+Left focus output left
  126. bindsym $plexmod+Down focus output down
  127. bindsym $plexmod+Up focus output up
  128. bindsym $plexmod+Right focus output right
  129. # Special modes
  130. bindcode $plexmod+49 mode "session"
  131. {% endmacro %}
  132. {{ overall() }}
  133. ### remote mode
  134. mode "remote" {
  135. bindcode $mod+9 mode "default"
  136. bindsym XF86Sleep exec {{lockscreen_lock_command}}
  137. # The middle button over a titlebar kills the window
  138. bindsym --release button2 kill
  139. {{ overall() }}
  140. }
  141. ### Applications mode
  142. mode "apps" {
  143. {% for a in application_shortcuts | dict2items %}
  144. bindsym {{a.key}} exec {{i3_exec_command_prefix}} {{a.value}}; mode "default"
  145. {% endfor %}
  146. bindsym Escape mode "default"
  147. }
  148. ### Session
  149. mode "session" {
  150. bindsym q exit
  151. bindsym r reload; exec --no-startup-id ~/.xsession.reload.fish; mode "default"; {{on_focus_workspace}}
  152. bindsym R reload; exec --no-startup-id ~/.xsession.reload.fish; mode "default"; {{on_focus_workspace}}
  153. bindsym s exec --no-startup-id {{system_suspend_command}}; mode "default"; {{on_focus_workspace}}
  154. bindsym l exec --no-startup-id {{lockscreen_lock_command}}; mode "default"; {{on_focus_workspace}}
  155. bindcode 49 exec --no-startup-id {{lockscreen_lock_command}}; mode "default"; {{on_focus_workspace}}
  156. bindsym b exec --no-startup-id xsetroot -solid black; mode "default"; {{on_focus_workspace}}
  157. bindsym e exec --no-startup-id xset s on; exec --no-startup-id xset dpms {{ display_sleeptime | int }} {{ display_sleeptime | int }} {{ display_sleeptime | int }}; mode "default"; {{on_focus_workspace}}
  158. bindsym d exec --no-startup-id xset s off; exec --no-startup-id xset dpms 0 0 0; mode "default"; {{on_focus_workspace}}
  159. bindsym Shift+R exec --no-startup-id {{system_reboot_command}}; mode "default"; {{on_focus_workspace}}
  160. bindsym Shift+P exec --no-startup-id {{system_poweroff_command}}; mode "default"; {{on_focus_workspace}}
  161. # back to normal: Escape
  162. bindsym Escape mode "default"; {{on_focus_workspace}}
  163. }
  164. ### Todo
  165. mode "todo" {
  166. bindsym a exec "{{i3_exec_command_prefix}} timer select_activity"; mode "default"; {{on_focus_workspace}}
  167. bindsym e exec "{{i3_exec_command_prefix}} timer end_activity"; mode "default"; {{on_focus_workspace}}
  168. bindsym w exec "{{i3_exec_command_prefix}} todo workspace"; mode "default"; {{on_focus_workspace}}
  169. # back to normal: Escape
  170. bindsym Escape mode "default"; {{on_focus_workspace}}
  171. }
  172. ### Clipboard
  173. mode "clipboard" {
  174. # back to normal: Escape
  175. bindsym Escape mode "default"
  176. }
  177. ### Layout
  178. # set default layout to tabbed
  179. workspace_layout tabbed
  180. mode "layout" {
  181. bindsym s layout stacking; mode "default";
  182. bindsym t layout tabbed; mode "default";
  183. bindsym e layout toggle split; mode "default";
  184. bindsym h layout splith; mode "default"
  185. bindsym v layout splitv; mode "default"
  186. bindsym m exec --no-startup-id select-screenlayout; {{on_focus_workspace}}
  187. bindsym r mode remote
  188. bindsym b mode bar
  189. # back to normal: Escape
  190. bindsym Escape mode "default"
  191. }
  192. mode "bar" {
  193. bindsym h bar mode hide; mode "default"
  194. bindsym d bar mode dock; mode "default"
  195. # back to normal: Escape
  196. bindsym Escape mode "default"
  197. }
  198. ### Resize window mode
  199. # resize window (you can also use the mouse for that)
  200. mode "resize" {
  201. # These bindings trigger as soon as you enter the resize mode
  202. # Pressing left will shrink the window’s width.
  203. bindsym Left resize shrink width 10 px or 10 ppt
  204. bindsym $left resize shrink width 10 px or 10 ppt
  205. # Pressing down will grow the window’s height.
  206. bindsym Down resize grow height 10 px or 10 ppt
  207. bindsym $down resize grow height 10 px or 10 ppt
  208. # Pressing up will shrink the window’s height.
  209. bindsym Up resize shrink height 10 px or 10 ppt
  210. bindsym $up resize shrink height 10 px or 10 ppt
  211. # Pressing right will grow the window’s width.
  212. bindsym Right resize grow width 10 px or 10 ppt
  213. bindsym $right resize grow width 10 px or 10 ppt
  214. bindsym 1 resize set 10 ppt 10 ppt; mode "default"
  215. bindsym 2 resize set 20 ppt 20 ppt; mode "default"
  216. bindsym 3 resize set 30 ppt 30 ppt; mode "default"
  217. bindsym 4 resize set 40 ppt 40 ppt; mode "default"
  218. bindsym 5 resize set 50 ppt 50 ppt; mode "default"
  219. bindsym 6 resize set 60 ppt 60 ppt; mode "default"
  220. bindsym 7 resize set 70 ppt 70 ppt; mode "default"
  221. bindsym 8 resize set 80 ppt 80 ppt; mode "default"
  222. bindsym 9 resize set 90 ppt 90 ppt; mode "default"
  223. bindsym 0 resize set 100 ppt 100 ppt; mode "default"
  224. bindsym v resize set 640 480; mode "default"
  225. bindsym y resize set 870 628; mode "default"
  226. # back to normal: Escape
  227. bindsym Escape mode "default"
  228. }
  229. ### Bar
  230. bar {
  231. {% if i3_hide_bar %}
  232. mode invisible
  233. hidden_state hide
  234. {% endif %}
  235. position top
  236. strip_workspace_numbers no
  237. tray_output primary
  238. status_command i3blocks
  239. colors {
  240. background #000000
  241. statusline #ffffff
  242. separator #666666
  243. # <colorclass> <border> <background> <text>
  244. focused_workspace {{home_base_color_hue|hsv2rgb(50,60)}} {{home_base_color_hue|hsv2rgb(66,47)}} #ffffff
  245. active_workspace #333333 #696969 #ffffff
  246. inactive_workspace #333333 #222222 #888888
  247. urgent_workspace #2f343a #900000 #ffffff
  248. binding_mode #2f343a #900000 #ffffff
  249. }
  250. }
  251. ### Design
  252. # class border backgr. text indicator child_border
  253. client.focused {{home_base_color_hue|hsv2rgb(50,60)}} {{home_base_color_hue|hsv2rgb(66,47)}} #ffffff {{home_base_color_hue|hsv2rgb(81,91)}} {{home_base_color_hue|hsv2rgb(66,47)}}
  254. client.focused_inactive #333333 #6A6A6A #ffffff #505050 #6A6A6A
  255. client.unfocused #333333 #222222 #888888 #2E2E2E #222222
  256. client.urgent #2f343a #900000 #ffffff #900000 #900000
  257. client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
  258. client.background #ffffff
  259. {% if not i3_hide_border_one_window %}
  260. default_border normal
  261. hide_edge_borders both
  262. {% else %}
  263. default_border none
  264. hide_edge_borders smart
  265. {% endif %}
  266. default_floating_border normal
  267. ### general settings
  268. focus_on_window_activation urgent
  269. ### Application specific rule
  270. for_window [class="^(?:Tiger)?V[Nn][Cc] ?[Vv]iewer$"] border none
  271. for_window [window_role="^About$"] floating enable
  272. for_window [class="^Pavu"] floating enable
  273. for_window [class="^Paman$"] floating enable
  274. for_window [class="^Blueman"] floating enable
  275. for_window [class="^URxvt$" title="^tmux-workspace$"] border none
  276. for_window [class="^zoom$" title="^zoom$"] floating enable
  277. ### assign apps to workspaces
  278. assign [class="^netzdrive$"] → netzdrive
  279. assign [class="^TelegramDesktop$"] → tg
  280. assign [class="^Signal$"] → signal
  281. assign [class="^Element$"] → matrix
  282. assign [class="^thunderbird$"] → mail
  283. assign [class="^zoom$" ] → zoom
  284. # vncviewer workspaces
  285. {% for workspace in workspaces|dict2items|json_query("[?value.type=='vncviewer'].key") %}
  286. {% set ws = workspaces[workspace] %}
  287. assign [class="^(?:Tiger)?V[Nn][Cc] ?[Vv]iewer$" title="^{{ws.host}}:{{ws.display|default(home_vncserver_display_number)}}"] → {{workspace}}
  288. {% endfor %}
  289. # Autostart
  290. exec --no-startup-id i3-watchers