Ten tweaks for EOS i3 wm on lenovo with high dpi

Intro
Yesterday I installed EOS i3 wm on my lenovo P1 with high dpi screen (3840x2160). I used the online installer, nvidia option and chose only i3 wm.I did quite some search to fix fonts, icon, grub and login screen scaling using i3 wm. Out of the box everything appears tiny. After the fix you will be :grin:

I summarize here briefly a list of things to do to fix these issues.

Hardware

Summary
inxi -Fxxc0z 

output can be found here http://ix.io/2HTM

High dpi screen fixes for scaling issue in i3wm (tiny text+icons)

  1. change scaling global (Xft) and Rofi (overview apps) in ~/.Xresources
Xft.dpi:230
Xft.antialias: 1
rofi.dpi: 192
  1. change font sizes in .config/i3/config
    font pango:Noto Sans Regular 12

  2. fix icon sizes in QT and GTK apps by appending these lines to ~/.profile

export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_SCREEN_SCALE_FACTORS=2 
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
  1. Fix grub resolution in /etc/default/grub (sudo) and apply settings

GRUB_GFXMODE=1024x768x32,auto

grub-mkconfig -o /boot/grub/grub.cfg
  1. fix login screen resolution and fonts in /etc/lightdm/lightdm-gtk-greeter.conf
xft-dpi=220 
font-name = Noto Sans 12

Additional useful fixes

  1. make F5 and F6 brightness buttons work in .config/i3/config
bindsym XF86MonBrightnessUp exec xbacklight -inc 10
bindsym XF86MonBrightnessDown exec xbacklight -dec 10

edit: on Feb 2021 EOS iso, had to install this for thinkpad t490s

sudo pacman -S xorg-xbacklight
  1. fix annoying Zoom app “screen sharing with dark shadow overlay (transparency)”

in /etc/xdg/picom.conf
shadow-opacity = 0.1;

in /.config/i3/config

#exec --no-startup-id picom -cC
exec --no-startup-id picom -o 0

Edit: 8) firefox scrolling tearing… looks like this was due to hybrid grafics not configured well. To fix this, I installed optimus manager and run in hybrid mode (also to be able to connect external monitor):

yay -S optimus-manager-qt

Not fixed yet (work in progress)

  1. touchpad acceleration to move across screen…

  2. check high dpi scaling and apps on external monitors

Edit: tried to connect a 1920x1080 monitor to my 3840x2160 laptop screen, oh boy… since I changed the dpi (which is required to scale all the tiny icons, not only text…) the text and icons on the external monitor appear gigantic. I will edit back here, tried to play around with xrandr commands and assigning different scaling and resolutions to screens, no luck at the moment. I know that it works well with cinnamon, must be able to find a way to make it work.

6 Likes

I wonder if some of these tweaks will help me on my HP as it is 1920x1080 with HiDpi and everything is small on screen also. I did use

Xft.dpi:120

But that was it and at least made it usable. I just don’t have experience with any of these settings and i’m using it on v-box yet. Thinking of trying it on bare metal.

1)-2) should be sufficient for 1080 screen. 3) was useful for higher resolution screen since icons did not scale properly in gtk vs. qt apps.

I also use i3wm on a 1080 dpi screen on another thinkpad and just changed the font size (see 2) to 12, and everything looks ok. If you change the line with rofi in 1) you will be able to have larger icons/fonts when you press mod+d (rofi menu).

A major problem that I could not really solve was having adequate scaling on external screen with a laptop at 3840x2160. My take on it (and I tried gnome, kde, cinnamon, xfce) is that linux is not ready for high dpi screens on dual screens. I now scale it down to 1080 when connecting an external monitor, else all the icons and text appear huge.

I think you are right as i noticed that too. Where i thought a change would make it larger it was actually opposite so i was confused by that.

Edit: I’m installing i3 right now on the HP to see if i can set it up so it’s useful.

With the new install i can’t ~/.Xresources Did they change it to something else?

Can you try to just create this file in your home folder using:

nano .Xresources

and then add the corresponding commands and it should work.

edit: then use ctrl+o to save and ctrl+x to get out in case you have not used nano before.