You are not logged in.
Hi everyone. I’m not sure if this is the right section to ask, but I hope someone can help.
Previously I used Ubuntu / Linux Mint on a desktop PC with a 21" monitor (1920×1080). In early February I switched to Arch Linux with KDE. I installed the system using archinstall, then configured everything manually. Overall I really like it — the system is fast, smooth, and stable.
My laptop specs:
Host: VivoBook S15 X510UF
Display: 1920×1080 on a 16" screen
GPU: NVIDIA GeForce MX130
CPU: Intel i5-8250U
RAM: 16 GB
My problem is font size and scaling.
If I set scaling to 125% (similar to Windows 11), the size looks good, but fonts appear slightly blurry. This is noticeable on the desktop and sometimes inside applications.
I found some discussions saying that only 100% or 150% scaling should be used to avoid blurry fonts. However:
• 150% is too large
• 100% is too small
As a workaround, I set the system font to Inter, size 13. This looks comfortable and sharp. Telegram looks perfect. But then problems appear in other apps:
• In Google Chrome everything is too small, so I start it with
--force-device-scale-factor=1.1
and set browser zoom to 110%
• Viber is extremely small and hard to read
• VS Code was also small, but I fixed it with Ctrl + '+'
• Brave browser has the same issue as Chrome
I’ve been trying to find a proper solution for almost a month. I really don’t want to go back to Windows because Arch Linux performs great and I like pacman/AUR.
Is this a KDE issue, a HiDPI issue, or just a laptop screen limitation? I’ve read the Arch Wiki but maybe I missed something.
How do you normally deal with scaling and fonts on a 1080p laptop?
Any advice would be greatly appreciated.
Offline
https://wiki.archlinux.org/title/Waylan … plications will typically be scaled up textures, avoid that, see https://wiki.archlinux.org/title/Chromi … nd_support (this goes for pretty much every electron process)
No idea about https://aur.archlinux.org/packages/viber but according to wikipedia it uses Qt, so probably some bundled libraries that cannot use any of the platform integration plugins and might do whatever.
Your best shot might be to see what impact the vars in https://wiki.archlinux.org/title/HiDPI#Qt_5 have.
Online
https://wiki.archlinux.org/title/Waylan … plications will typically be scaled up textures, avoid that, see https://wiki.archlinux.org/title/Chromi … nd_support (this goes for pretty much every electron process)
No idea about https://aur.archlinux.org/packages/viber but according to wikipedia it uses Qt, so probably some bundled libraries that cannot use any of the platform integration plugins and might do whatever.
Your best shot might be to see what impact the vars in https://wiki.archlinux.org/title/HiDPI#Qt_5 have.
As far as I understand, could this be caused by my laptop or its screen resolution?
What confuses me is that on Ubuntu the fonts look normal and not too small. The browser tabs and interface elements also appear larger there. I only tested Ubuntu in Live mode, but everything looked fine compared to my current system.
Offline
As far as I understand, could this be caused by my laptop or its screen resolution?
I'm afraid "ubuntu" introduces too many variables wrt actual resolution in use, display server, and any kind of HiDPI settings.
You were also unlikely to use viber (or any of the concerned clients?) on the live system?
Focus on figuring what's actually going on - ignoring viber for the moment, notably whether the electron clients run as native wayland or xwayland ones.
Online
As far as I understand, could this be caused by my laptop or its screen resolution?
I'm afraid "ubuntu" introduces too many variables wrt actual resolution in use, display server, and any kind of HiDPI settings.
You were also unlikely to use viber (or any of the concerned clients?) on the live system?Focus on figuring what's actually going on - ignoring viber for the moment, notably whether the electron clients run as native wayland or xwayland ones.
Launched from live Google Chrome Viber VSCODE
Last edited by besstsoft@gmail.com (2026-02-27 07:44:49)
Offline
Launched from live Google Chrome Viber VSCODE
You mean in some browser?
Focus on figuring what's actually going on - ignoring viber for the moment, notably whether the electron clients run as native wayland or xwayland ones.
Read https://bbs.archlinux.org/viewtopic.php?id=57855 and http://www.catb.org/~esr/faqs/smart-questions.html
"Thing happens but other thing happens in completely different context" will go nowhere.
kscreen-doctor
qdbus6 org.kde.KWin /KWin supportInformation
xwininfo -root -tree # when one of the affected clients is running
printenv
sudo journalctl -b | curl -F 'file=@-' 0x0.stOnline
Launched from live Google Chrome Viber VSCODE
You mean in some browser?
seth wrote:Focus on figuring what's actually going on - ignoring viber for the moment, notably whether the electron clients run as native wayland or xwayland ones.
Read https://bbs.archlinux.org/viewtopic.php?id=57855 and http://www.catb.org/~esr/faqs/smart-questions.html
"Thing happens but other thing happens in completely different context" will go nowhere.
kscreen-doctor
qdbus6 org.kde.KWin /KWin supportInformation
xwininfo -root -tree # when one of the affected clients is running
printenv
sudo journalctl -b | curl -F 'file=@-' 0x0.st[/quote]
Output: 1 eDP-1 740a08a1-2190-456d-99d6-b3713b4de26a
enabled
connected
priority 1
Panel
replication source:0
Modes: 1:1920x1080@59.98*! 2:1280x1024@59.90 3:1024x768@59.92 4:1280x800@59.81 5:1600x900@59.95 6:1368x768@59.88 7:1280x720@59.85
Custom modes: None
Geometry: 0,0 1920x1080
Scale: 1
Rotation: 1
Overscan: 0
Vrr: incapable
RgbRange: Automatic
HDR: incapable
Wide Color Gamut: incapable
ICC profile: none
Color profile source: sRGB
Color power preference: prefer efficiency and performance
Brightness control: supported, set to 55% and dimming to 100%
Color resolution: automatic (10), range: [6; 12] bits per color
Allow EDR: always
Sharpness control: unsupported
Automatic brightness: unsupported
~Version
=======
KWin version: 6.6.1
Qt Version: 6.10.2
Qt compile version: 6.10.2
XCB compile version: 1.17.0
Operation Mode: Wayland
Build Options
=============
KWIN_BUILD_DECORATIONS: yes
KWIN_BUILD_TABBOX: yes
KWIN_BUILD_ACTIVITIES: yes
HAVE_X11_XCB: yes
X11
===
Vendor: The X.Org Foundation
Vendor Release: 12401009
Protocol Version/Revision: 11/0
SHAPE: yes; Version: 0x11
RANDR: yes; Version: 0x14
Composite: yes; Version: 0x4
RENDER: yes; Version: 0xb
XFIXES: yes; Version: 0x50
SYNC: yes; Version: 0x31
RES: yes; Version: 0x12
Decoration
==========
Plugin: org.kde.breeze
Theme:
Plugin recommends border size: None
onAllDesktopsAvailable: true
alphaChannelSupported: true
closeOnDoubleClickOnMenu: false
alwaysShowExcludeFromCapture: false
decorationButtonsLeft: 2, 9, 8
decorationButtonsRight: 6, 3, 4, 5
borderSize: 0
gridUnit: 12
font: Noto Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
smallSpacing: 3
largeSpacing: 12
LogicalOutput backend
==============
Name: DRM
Atomic Mode Setting on GPU 0: true
Cursor
======
themeName: breeze_cursors
themeSize: 24
Options
=======
focusPolicy: ClickToFocus
xwaylandCrashPolicy: 1
xwaylandMaxCrashCount: 3
nextFocusPrefersMouse: false
clickRaise: true
autoRaise: false
autoRaiseInterval: 0
delayFocusInterval: 0
separateScreenFocus: true
placement: 5
activationDesktopPolicy: SwitchToOtherDesktop
focusPolicyIsReasonable: true
borderSnapZone: 10
windowSnapZone: 10
centerSnapZone: 0
snapOnlyWhenOverlapping: false
edgeBarrier: 100
cornerBarrier: 1
rollOverDesktops: true
focusStealingPreventionLevel: 1
operationTitlebarDblClick: 5000
operationMaxButtonLeftClick: 5000
operationMaxButtonMiddleClick: 5013
operationMaxButtonRightClick: 5012
commandActiveTitlebar1: MouseRaise
commandActiveTitlebar2: MouseNothing
commandActiveTitlebar3: MouseOperationsMenu
commandInactiveTitlebar1: MouseActivateAndRaise
commandInactiveTitlebar2: MouseNothing
commandInactiveTitlebar3: MouseOperationsMenu
commandWindow1: MouseActivateRaiseOnReleaseAndPassClick
commandWindow2: MouseActivateAndPassClick
commandWindow3: MouseActivateAndPassClick
commandWindowWheel: MouseNothing
commandAll1: MouseUnrestrictedMove
commandAll2: MouseToggleRaiseAndLower
commandAll3: MouseUnrestrictedResize
keyCmdAllModKey: 16777250
doubleClickBorderToMaximize: true
condensedTitle: false
electricBorderMaximize: true
electricBorderTiling: true
electricBorderAllScreenCorner: true
electricBorderCornerRatio: 0.25
borderlessMaximizedWindows: false
killPingTimeout: 5000
compositingMode: 1
allowTearing: true
interactiveWindowMoveEnabled: true
pictureInPictureHomeCorner: BottomRightCorner
pictureInPictureMargin: 20
overlayVirtualKeyboardOnWindows: false
Screen Edges
============
desktopSwitching: false
desktopSwitchingMovingClients: false
cursorPushBackDistance: 1x1
actionTopLeft: 0
actionTop: 0
actionTopRight: 0
actionRight: 0
actionBottomRight: 0
actionBottom: 0
actionBottomLeft: 0
actionLeft: 0
Screens
=======
Number of Screens: 1
Screen 0:
---------
Name: eDP-1
Enabled: 1
Geometry: 0,0,1920x1080
Physical size: 344x194mm
Scale: 1
Refresh Rate: 59977
Adaptive Sync: incapable
Compositing
===========
Compositing is active
Compositing Type: OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (KBL GT2)
OpenGL version string: 4.6 (Core Profile) Mesa 26.0.1-arch2.3
OpenGL platform interface: EGL
OpenGL shading language version string: 4.60
Driver: Intel
GPU class: Kaby Lake
OpenGL version: 4.6
GLSL version: 4.60
Mesa version: 26.0.1
X server version: 1.24.1
Linux kernel version: 6.19.3
Direct rendering: Requires strict binding: no
Virtual Machine: no
OpenGL 2 Shaders are used
Loaded Effects:
---------------
touchpoints
thumbnailaside
shakecursor
outputlocator
colorpicker
zoom
screenedge
blur
sessionquit
logout
login
slidingpopups
windowaperture
translucency
slideback
slide
cube
kinetic_maximize
squash
scale
maximize
fullscreen
frozenapp
fadingpopups
dimscreen
dialogparent
windowview
tileseditor
overview
highlightwindow
blendchanges
startupfeedback
systembell
screentransform
kscreen
Currently Active Effects:
-------------------------
blur
fadingpopups
Effect Settings:
----------------
touchpoints:
lineWidth: 1
ringLife: 300
ringSize: 20
ringCount: 2
thumbnailaside:
maxWidth: 200
spacing: 10
opacity: 0.5
screen: -1
shakecursor:
outputlocator:
colorpicker:
zoom:
zoomFactor: 1.2
mousePointer: 0
mouseTracking: 0
focusDelay: 350
moveFactor: 20
targetZoom: 1
screenedge:
blur:
sessionquit:
pluginId: sessionquit
isActiveFullScreenEffect: false
logout:
pluginId: logout
isActiveFullScreenEffect: false
login:
pluginId: login
isActiveFullScreenEffect: false
slidingpopups:
slideInDuration: 50
slideOutDuration: 50
windowaperture:
pluginId: windowaperture
isActiveFullScreenEffect: false
translucency:
pluginId: translucency
isActiveFullScreenEffect: false
slideback:
slide:
horizontalGap: 45
verticalGap: 20
slideBackground: true
cube:
activeView:
delegate:
data:
configuration:
visible: false
activated: false
animationDuration: 50
mainDelegate:
kinetic_maximize:
pluginId: kinetic_maximize
isActiveFullScreenEffect: false
squash:
pluginId: squash
isActiveFullScreenEffect: false
scale:
pluginId: scale
isActiveFullScreenEffect: false
maximize:
pluginId: maximize
isActiveFullScreenEffect: false
fullscreen:
pluginId: fullscreen
isActiveFullScreenEffect: false
frozenapp:
pluginId: frozenapp
isActiveFullScreenEffect: false
fadingpopups:
pluginId: fadingpopups
isActiveFullScreenEffect: false
dimscreen:
pluginId: dimscreen
isActiveFullScreenEffect: false
dialogparent:
pluginId: dialogparent
isActiveFullScreenEffect: false
windowview:
activeView:
delegate:
animationDuration: 75
ignoreMinimized: false
mode:
partialActivationFactor: 0
gestureInProgress: false
searchText:
selectedIds:
tileseditor:
activeView:
delegate:
animationDuration: 200
overview:
activeView:
delegate:
animationDuration: 75
ignoreMinimized: false
filterWindows: true
organizedGrid: true
overviewPartialActivationFactor: 0
overviewGestureInProgress: false
transitionPartialActivationFactor: 0
transitionGestureInProgress: false
gridPartialActivationFactor: 0
gridGestureInProgress: false
desktopOffset:
searchText:
highlightwindow:
blendchanges:
startupfeedback:
type: 1
systembell:
screentransform:
kscreen:
Loaded Plugins:
---------------
BounceKeysPlugin
KeyNotificationPlugin
MouseKeysPlugin
SlowKeysPlugin
StickyKeysPlugin
TouchpadShortcutsPlugin
buttonsrebind
eis
krunnerintegration
nightlight
screencast
screenshot
Available Plugins:
------------------
BounceKeysPlugin
KeyNotificationPlugin
MouseKeysPlugin
SlowKeysPlugin
StickyKeysPlugin
TouchpadShortcutsPlugin
buttonsrebind
eis
gamecontroller
krunnerintegration
nightlight
screencast
screenshot Last edited by besstsoft@gmail.com (2026-02-27 15:42:32)
Offline
Please use [code][/code] tags. Edit your post in this regard.
Your physical DPI is 144, the scale is 1 while you're at 150% of 96DPI (so 1.5 is the "correct" scale factor but I tend to run notebooks underscaled because you're closer to the tiny display)
=> Fix the DPI/Scale and focus on the xwayland question.
Sanity check
Previously I used Ubuntu / Linux Mint on a desktop PC with a 21" monitor (1920×1080)
that's not been your recent testcase for ubuntu, right?
Cause that's only 104 DPI
Online
Please use [code][/code] tags. Edit your post in this regard.
Your physical DPI is 144, the scale is 1 while you're at 150% of 96DPI (so 1.5 is the "correct" scale factor but I tend to run notebooks underscaled because you're closer to the tiny display)
=> Fix the DPI/Scale and focus on the xwayland question.Sanity check
Previously I used Ubuntu / Linux Mint on a desktop PC with a 21" monitor (1920×1080)
that's not been your recent testcase for ubuntu, right?
Cause that's only 104 DPI
Thanks for the advice! You were right about the DPI. I've switched the global scale to125%, and it's a game-changer for my eyes. The geometry is now 1536x864, which feels much more natural for a 15-16" screen than the tiny 100% scale.
Now I'm focusing on fixing the blur in some apps. Most of my daily tools (like the browser) are running natively on Wayland now.
Offline