Login Screen SDDM will not rotate left monitor

I have recently installed Garuda Linux (Dragonised Gaming Edition) and have been setting things up. With my setup I have two monitors, both 1440. The main monitor is on the right and in normal landscape mode, the second monitor is on the left in portrait mode.
On my login screen, the left hand monitor displays sideways as if it was in landscape mode.

The display works correctly once I have loaded into the desktop, but whenever I start the PC or logout the SDDM is in the wrong orientation for the left monitor.

I have tried using a different SDDM theme (Breeze including ones I have downloaded) but this had no effect (I don’t know if it is relevant but when I download some themes they give error messages about missing KDE plasma modules, but no such error messages appear on Breeze or the Dragonized theme)

I have pressed the ‘Apply Plasma Settings’ button but this seems to have no effect either (This was the solution in my previous KDE distro).

I have searched and read various wikis but I don’t have the understanding to take it further. I tried setting up some sddm.conf.d files but again this seemed to have no effect at all.

I would appreciate any assistance in either getting the monitor to rotate properly, or having the login screen only appear on the main monitor. Either would be acceptable.

Thank you

╭─lee@Gilgamesh in ~
╰─λ garuda-inxi
System:
Kernel: 6.18.0-rc4-1-mainline arch: x86_64 bits: 64 compiler: gcc v: 15.2.1
clocksource: tsc avail: hpet,acpi_pm
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-mainline
root=UUID=7bccce8b-51b5-4255-acdb-3cae91fe3055 rw rootflags=subvol=@
quiet loglevel=3
Desktop: KDE Plasma v: 6.5.2 tk: Qt v: N/A info: frameworks v: 6.19.0
wm: kwin_wayland vt: 1 dm: SDDM Distro: Garuda base: Arch Linux
Machine:
Type: Desktop System: ASUS product: N/A v: N/A serial: <superuser required>
Mobo: ASUSTeK model: PRIME X870-P v: Rev 1.xx serial: <superuser required>
part-nu: SKU uuid: <superuser required> UEFI: American Megatrends v: 1087
date: 09/19/2025
CPU:
Info: model: AMD Ryzen 7 9800X3D bits: 64 type: MT MCP arch: Zen 5 gen: 5
level: v4 note: check built: 2024+ process: TSMC n4 (4nm) family: 0x1A (26)
model-id: 0x44 (68) stepping: 0 microcode: 0xB404032
Topology: cpus: 1x dies: 1 clusters: 1 cores: 8 threads: 16 tpc: 2
smt: enabled cache: L1: 640 KiB desc: d-8x48 KiB; i-8x32 KiB L2: 8 MiB
desc: 8x1024 KiB L3: 96 MiB desc: 1x96 MiB
Speed (MHz): avg: 5232 min/max: 603/5272 boost: enabled scaling:
driver: amd-pstate-epp governor: performance cores: 1: 5232 2: 5232 3: 5232
4: 5232 5: 5232 6: 5232 7: 5232 8: 5232 9: 5232 10: 5232 11: 5232 12: 5232
13: 5232 14: 5232 15: 5232 16: 5232 bogomips: 150399
Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a
ssse3 svm
Vulnerabilities: <filter>
Graphics:
Device-1: Advanced Micro Devices [AMD/ATI] Navi 48 [Radeon RX 9070/9070
XT/9070 GRE] vendor: Tul / PowerColor Reaper driver: amdgpu v: kernel
arch: RDNA-4 code: Navi-4x process: TSMC n4 (4nm) built: 2025+ pcie:
gen: 5 speed: 32 GT/s lanes: 16 ports: active: DP-1,DP-2
empty: DP-3,HDMI-A-1,Writeback-1 bus-ID: 03:00.0 chip-ID: 1002:7550
class-ID: 0300
Device-2: Advanced Micro Devices [AMD/ATI] Granite Ridge [Radeon Graphics]
vendor: ASUSTeK driver: amdgpu v: kernel arch: RDNA-2 code: Navi-2x
process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s
lanes: 16 ports: active: none empty: DP-4, DP-5, HDMI-A-2, Writeback-2
bus-ID: 75:00.0 chip-ID: 1002:13c0 class-ID: 0300 temp: 44.0 C
Display: wayland server: X.org v: 1.21.1.20 with: Xwayland v: 24.1.9
compositor: kwin_wayland driver: X: loaded: modesetting
alternate: fbdev,vesa dri: radeonsi gpu: amdgpu d-rect: 5120x2880
display-ID: 0
Monitor-1: DP-1 pos: bottom-r model: Acer XB273U V3 serial: <filter>
built: 2023 res: mode: 2560x1440 hz: 144 scale: 100% (1) dpi: 109 gamma: 1.2
size: 597x336mm (23.5x13.23") diag: 685mm (27") ratio: 16:9 modes:
max: 2560x1440 min: 720x400
Monitor-2: DP-2 pos: primary,top-left model: Acer XB271HU serial: <filter>
built: 2018 res: mode: 2560x1440 hz: 144 scale: 178% (1.78) to: 1440x2560
dpi: 109 gamma: 1.2 size: 598x336mm (23.54x13.23") diag: 686mm (27")
ratio: 16:9 modes: max: 2560x1440 min: 640x480
API: EGL v: 1.5 hw: drv: amd radeonsi platforms: device: 0 drv: radeonsi
device: 1 drv: radeonsi device: 2 drv: swrast gbm: drv: radeonsi
surfaceless: drv: radeonsi wayland: drv: radeonsi x11: drv: radeonsi
API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 25.2.6-arch1.1
glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 9070 XT (radeonsi
gfx1201 LLVM 21.1.4 DRM 3.64 6.18.0-rc4-1-mainline) device-ID: 1002:7550
memory: 15.62 GiB unified: no display-ID: :1.0
API: Vulkan v: 1.4.328 layers: 13 device: 0 type: discrete-gpu name: AMD
Radeon RX 9070 XT (RADV GFX1201) driver: mesa radv v: 25.2.6-arch1.1
device-ID: 1002:7550 surfaces: N/A device: 1 type: integrated-gpu name: AMD
Ryzen 7 9800X3D 8-Core Processor (RADV RAPHAEL_MENDOCINO)
driver: mesa radv v: 25.2.6-arch1.1 device-ID: 1002:13c0 surfaces: N/A
device: 2 type: cpu name: llvmpipe (LLVM 21.1.4 256 bits)
driver: mesa llvmpipe v: 25.2.6-arch1.1 (LLVM 21.1.4)
device-ID: 10005:0000 surfaces: N/A
Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
de: kscreen-console,kscreen-doctor gpu: corectrl,lact wl: wayland-info
x11: xdpyinfo, xprop, xrandr
Audio:
Device-1: Advanced Micro Devices [AMD/ATI] Navi 48 HDMI/DP Audio
driver: snd_hda_intel v: kernel pcie: gen: 5 speed: 32 GT/s lanes: 16
bus-ID: 03:00.1 chip-ID: 1002:ab40 class-ID: 0403
Device-2: Advanced Micro Devices [AMD/ATI] Radeon High Definition Audio
[Rembrandt/Strix] vendor: ASUSTeK driver: snd_hda_intel v: kernel pcie:
gen: 4 speed: 16 GT/s lanes: 16 bus-ID: 75:00.1 chip-ID: 1002:1640
class-ID: 0403
Device-3: Advanced Micro Devices [AMD] Family 17h/19h/1ah HD Audio
vendor: ASUSTeK driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s
lanes: 16 bus-ID: 75:00.6 chip-ID: 1022:15e3 class-ID: 0403
Device-4: SteelSeries ApS Arctis Nova 7
driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0 speed: 12 Mb/s
lanes: 1 mode: 1.1 bus-ID: 7-2:2 chip-ID: 1038:2202 class-ID: 0300
API: ALSA v: k6.18.0-rc4-1-mainline status: kernel-api with: aoss
type: oss-emulator tools: N/A
Server-1: PipeWire v: 1.4.9 status: active with: 1: pipewire-pulse
status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
Device-1: Realtek RTL8125 2.5GbE vendor: ASUSTeK driver: r8169 v: kernel
pcie: gen: 2 speed: 5 GT/s lanes: 1 port: e000 bus-ID: 08:00.0
chip-ID: 10ec:8125 class-ID: 0200
IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Info: services: NetworkManager, smbd, systemd-timesyncd
Bluetooth:
Device-1: Realtek Bluetooth Radio driver: btusb v: 0.8 type: USB rev: 1.1
speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-8:3 chip-ID: 2b89:8761
class-ID: e001 serial: <filter>
Report: btmgmt ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 5.1
lmp-v: 10 status: discoverable: no pairing: no class-ID: 6c0104
Drives:
Local Storage: total: 4.55 TiB used: 1.32 TiB (29.0%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Samsung
model: SSD 990 EVO Plus 1TB size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 126 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 2B2QKXG7 temp: 39.9 C scheme: GPT
ID-2: /dev/nvme1n1 maj-min: 259:3 vendor: Samsung
model: SSD 990 EVO Plus 1TB size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 2B2QKXG7 temp: 35.9 C scheme: GPT
ID-3: /dev/nvme2n1 maj-min: 259:4 vendor: Samsung
model: SSD 990 EVO Plus 1TB size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 tech: SSD serial: <filter>
fw-rev: 2B2QKXG7 temp: 34.9 C scheme: GPT
ID-4: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 870 QVO 2TB
size: 1.82 TiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
tech: SSD serial: <filter> fw-rev: 2B6Q scheme: GPT
Partition:
ID-1: / raw-size: 931.22 GiB size: 931.22 GiB (100.00%)
used: 97.7 GiB (10.5%) fs: btrfs dev: /dev/nvme2n1p2 maj-min: 259:10
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 6.1 MiB (2.0%) fs: vfat dev: /dev/nvme2n1p1 maj-min: 259:9
ID-3: /home raw-size: 931.22 GiB size: 931.22 GiB (100.00%)
used: 97.7 GiB (10.5%) fs: btrfs dev: /dev/nvme2n1p2 maj-min: 259:10
ID-4: /var/log raw-size: 931.22 GiB size: 931.22 GiB (100.00%)
used: 97.7 GiB (10.5%) fs: btrfs dev: /dev/nvme2n1p2 maj-min: 259:10
ID-5: /var/tmp raw-size: 931.22 GiB size: 931.22 GiB (100.00%)
used: 97.7 GiB (10.5%) fs: btrfs dev: /dev/nvme2n1p2 maj-min: 259:10
Swap:
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
ID-1: swap-1 type: zram size: 30.49 GiB used: 0 KiB (0.0%) priority: 100
comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 dev: /dev/zram0
Sensors:
System Temperatures: cpu: 51.5 C mobo: N/A
Fan Speeds (rpm): N/A
GPU: device: amdgpu temp: 45.0 C device: amdgpu temp: 53.0 C mem: 56.0 C
fan: 0 watts: 48.00
Info:
Memory: total: 32 GiB note: est. available: 30.49 GiB used: 5.58 GiB (18.3%)
Processes: 518 Power: uptime: 2m states: freeze,mem,disk suspend: deep
avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
suspend, test_resume image: 12.18 GiB services: org_kde_powerdevil,
power-profiles-daemon, upowerd Init: systemd v: 258 default: graphical
tool: systemctl
Packages: 1882 pm: pacman pkgs: 1871 libs: 498 tools: octopi,paru
pm: flatpak pkgs: 11 Compilers: clang: 21.1.5 gcc: 15.2.1 Shell: Bash
v: 5.3.3 default: fish v: 4.1.2 running-in: konsole inxi: 3.3.39
Garuda (2.11.1-1):
System install date:     2025-11-08
Garuda release:          251103
Last full system update: 2025-11-09
Is partially upgraded:   No
Relevant software:       snapper NetworkManager dracut garuda-hardware-profile-standard
Windows dual boot:       Probably (Run as root to verify)
Failed units:
--- System Health Check Report ---
24/25 checks run in 0.51 seconds ⌛
Powered by garuda-health 🦅

✅ System health check passed. No issues found.

I’m not entirely sure how to fix this, but I suspect that the setting is somewhere in this file: /var/lib/sddm/.config/kwinoutputconfig.json

I edited this file to disable my non-primary monitor on login, otherwise it mirrors the login screen on all monitors. In this file, there appears to be dimensions, etc. I could be completely wrong here, but maybe if you poke around there might be something that indicates the orientation and dimensions…

3 Likes

If I’m not mistaken, kwinoutputconfig.json is not there by default and must first be copied from ~/.config/ to /var/lib/sddm/.config/:

3 Likes

Yes, you’re right! I forgot about that step.

1 Like

Hi,

Thanks for the suggestions, I checked and the kwinoutputconfig.json was not in /var/lib/sddm so I have copied it from ~/.config/

I checked the .json file and it does list the rotation of the second monitor. The below is a portion of the .json taken from below the main montior:

"mode": {
"height": 1440,
"refreshRate": 143998,
"width": 2560
},
"overscan": 0,
"rgbRange": "Automatic",
"scale": 1,
"sdrBrightness": 200,
"sdrGamutWideness": 0,
"sdrBrightness": 200,
"sdrGamutWideness": 0,
"transform": "Rotated90",

I see the Arch Wiki link says I need to use chown on it too so I ran

chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json

Logged out and back in but the left monitor is still rotated incorrectly. I went back into settings and clicked ‘Apply Plasma Settings’ again in case it would work now that this folder exists but still no luck.

The ArchWiki linked has section 3.11 which seems to describe my issue. It suggests a script to apply in /usr/share/sddm/scripts/Xsetup:

/usr/share/sddm/scripts/Xsetup

#!/bin/sh
# Xsetup - run as root before the login dialog appears

xrandr --output DP-4 --auto --primary
xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary

But it has a note saying xrandr will give a different name for outputs in a wayland session and I should be in an X11 session before doing this, but I’m not sure how to be in an X11 session. I’ve only got KDE Plasma installed as a DE and no options to login otherwise on the greeter.

Would appreciate any further advice you can give!

Thanks

Honestly, I’m not really sure, but I think SDDM (the login) is in an X11 session, before Plasma takes over, which uses Wayland. So, the scripted suggestion may work, but I have no idea what cascading effects it may have. It may not matter for your use-case. Have you tried it?

From Plasma 6.4 onward, X11 session support is no longer present with KDE.

Currently, only the Wayland session is installed by default with KDE.

To restore x11 support to KDE you must manually install the plasma-x11-session package:

sudo pacman -S plasma-x11-session

The plasma-x11-session package requires that plasma-workspace and kwin-x11 are installed as dependencies.

Once the above packages have been installed you should be able to login to an X session as before, (from the bottom left hand corner of the Plasma login screen).



Edit:

Also, I’m pretty sure xrandr is no longer installed by default after KDE switched to installing Wayland as the only session manager.



5 Likes

Is there a way to tell what names I should use for the monitors in a script without having to install a whole X11 de version?

I’ve fixed it :slight_smile:

I read that the SDDM X11 log file is stored, so I looked at:

/var/log/Xorg.0.log

In here I saw:

[ 6.311] (II) modeset(0): Output DP-1 connected 
[ 6.311] (II) modeset(0): Output DP-2 connected 
[ 6.311] (II) modeset(0): Output DP-3 disconnected 
[ 6.311] (II) modeset(0): Output HDMI-1 disconnected

From which I can see the output names are DP-1 and DP-2

So from the Arch Wiki I created a setup script:

#!/bin/sh
xrandr --output DP-2 --rotate left
xrandr --output DP-1 --primary

And I set it to executable with

sudo chmod +x /usr/share/sddm/scripts/Xsetup

Now my left monitor is in the correct orientation on the login screen!

Thanks for the help everyone

2 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.