How to customize the i3 flavor?

How do I customize the i3 flavor to my liking. I know how to customize i3 from scratch but currently a lot of things are throwing me very off. I will now list them.

  1. How to change the workspace settings? This is very important to me, as I use Code every time I turn my laptop on, I want to make it a default option kind of like the terminal opens in workspace 1 by default.
  2. How do I change the fonts systemwide? How do I change the fonts in notification panels, in the apps? How to change the rofi font? Is there a way to do this universally, or is just editing config files specifically for the tools I use?
font pango: FiraCode Nerd 10

What does the above line accomplish, because it does not change the i3blocks font, or the rofi font, or the font in my firefox or VS Code, which are the main fonts I notice. What does it change then?


How to make this pop up font shorter?
3. How to fix the dunst notification being messed up with screenshots, and with the brightness controls?


4. My icons don’t fit the bar on top, if you see the workspaces. This is also the case for the rofi powermenu. What is causing this, how do I fix this?

:thinking:

Based on your questions, it kinda seems you need to customise i3 from scratch or learn how to edit the config files.

So, please read the manuals again. They have the answers to all your questions.

Manual: https://i3wm.org/docs/userguide.html

Qt + GTK Setup Guide: https://wiki.archlinux.org/title/Uniform_look_for_Qt_and_GTK_applications

Bonus wiki from Archcraft: https://wiki.archcraft.io/docs/window-managers/tiling-wm/i3wm

I would be happy to do that but I can’t seem to find a lot of resources on a lot of things specific to the preset that comes with EndeavourOS. Especially, the second issue I mentioned. I can’t seem to find or understand how it works.

The manuals are helpful certainly, but I just feel a little lost between connecting the way the EndeavourOS setup is, and the way the manuals explain a lot of things.

This is my last ditch effort to rice the defaults before I do that, lol.

Based on the wiki below, it looks straight-forward and pretty much identical to default i3 config, so I’m really not sure what you are missing.

EndeavourOS i3 wiki: https://github.com/endeavouros-team/endeavouros-i3wm-setup/blob/main/force-knowledge.md

And the config files: https://github.com/endeavouros-team/endeavouros-i3wm-setup/tree/main/etc/skel/.config/i3

And looking at the config files, they have explanations and links within the files themselves.

#####################################
# Application menu handled by rofi: #
#####################################

## rofi bindings fancy application menu ($mod+d /F9 optional disabled)

bindsym $mod+d exec --no-startup-id rofi -modi drun -show drun \
		-config ~/.config/rofi/rofidmenu.rasi

#bindsym F9 exec --no-startup-id rofi -modi drun -show drun \
#		-config ~/.config/rofi/rofidmenu.rasi

## rofi bindings for window menu ($mod+t /F10 optional disabled)

bindsym $mod+t exec --no-startup-id rofi -show window \
		-config ~/.config/rofi/rofidmenu.rasi

#bindsym F10 exec --no-startup-id rofi -show window \
#		-config ~/.config/rofi/rofidmenu.rasi

## rofi bindings to manage clipboard (install rofi-greenclip from the AUR)

#exec --no-startup-id greenclip daemon>/dev/null
#bindsym $mod+c exec --no-startup-id rofi -modi "clipboard:greenclip print" -show clipboard \
#		-config ~/.config/rofi/rofidmenu.rasi

This link is particularly good for hybrid Qt + GTK setups.

My bad, I should have been more specific.

# bind program to workspace and focus to them on startup:
assign [class="Xfce4-terminal"] $ws1
assign [class="(?i)firefox"] $ws2
assign [class="Thunar"] $ws3
assign [class="thunderbird"] $ws4
assign [class="TelegramDesktop"] $ws5

# automatic set focus new window if it opens on another workspace than the current:
for_window [class=Xfce4-terminal] focus
for_window [class=(?i)firefox] focus
for_window [class=Thunar] focus
for_window [class=Thunderbird] focus
for_window [class=TelegramDesktop] focus

This is the first issue I mentioned (this was originally the second issue, I edited it, because it felt trivial in hindsight), these are what I call ā€œpreset workspacesā€. If I open the terminal, it opens in the workspace 1. I tried editing these, and these feel clearly more involved than just changing the names. And that is fine, if I knew where these classes were defined. Maybe I am just missing something in the wiki, but I can’t seem to find much information on it. Because I don’t need Thunderbird, or Telegram, I need VS Code, this doesn’t make much sense for me. But, I can’t find how to edit it.

Change Telegram to VS code and remove Thunderbird.

Find the window class with xprop.

Again, this is in the manual: https://i3wm.org/docs/userguide.html#assign_workspace

Press ā€œCTRL+Fā€ to find the things you are looking for.

And workspace names and defintions are just above the snippet you posted:

# 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:ļ„ "
set $ws2 "2:"
set $ws3 "3:"
set $ws4 "4:"
set $ws5 "5:"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10

Anyway, you have all you need. The only thing left to do is read. :wink:

Did work, but I got an error, not sure why.

ERROR: Received ConfigureNotify for unknown window 0x00600000
ERROR: Received ConfigureNotify for unknown window 0x00600000
ERROR: Received ConfigureNotify for unknown window 0x0060000b
ERROR: Received ExposeEvent for unknown window 0x0060000b
ERROR: Received ConfigureNotify for unknown window 0x0060000b
ERROR: Received ExposeEvent for unknown window 0x0060000b
ERROR: Expected one of these tokens: <end>, '[', 'move', 'exec', 'exit', 'restart', 'reload', 'shmlog', 'debuglog', 'border', 'layout', 'append_layout', 'workspace', 'focus', 'kill', 'open', 'fullscreen', 'sticky', 'split', 'floating', 'mark', 'unmark', 'resize', 'rename', 'nop', 'scratchpad', 'swap', 'title_format', 'title_window_icon', 'mode', 'bar', 'gaps'
ERROR: Your command: workspace  "3:<U+F121> " # <U+F07C>
ERROR:                                   ^^^^^

The current config I have is as follows,

set $ws1 "1:ļ„  "
set $ws2 "2: "
set $ws3 "3:ļ„” " # 
set $ws4 "4"    # 
set $ws5 "5"    # 
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

# bind program to workspace and focus to them on startup:
assign [class="Xfce4-terminal"] $ws1
assign [class="(?i)firefox"] $ws2
assign [class="(?i)code"] $ws3
#assign [class="Thunar"] $ws3
#assign [class="thunderbird"] $ws4
#assign [class="TelegramDesktop"] $ws5

# automatic set focus new window if it opens on another workspace than the current:
for_window [class=Xfce4-terminal] focus
for_window [class=(?i)firefox] focus
for_window [class=(?i)code] focus
#for_window [class=Thunar] focus
#for_window [class=Thunderbird] focus
#for_window [class=TelegramDesktop] focus

It does work, but I get a big red bar on top saying The configured command for this shortcut could not be run succesfully.


Got it, apparently the # was causing the issue.

1 Like