Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .mise/locks/npm-agent-browser/0.39.2/aube-lock.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
lockfileVersion: '9.0'

settings:
autoInstallPeers: true
excludeLinksFromLockfile: false

importers:

.:
dependencies:
agent-browser:
specifier: 0.39.2
version: 0.39.2

packages:

agent-browser@0.39.2:
resolution: {integrity: sha512-8zh5Dj4r/Lo14nDw+8jUViTlmZV5ON3qmrGp1wppmB87NhMqmSXUqVIeNith9xjIJNr/00wHxhCqH/2lATezYQ==}
engines: {node: '>=24.0.0', pnpm: '>=11.0.0'}
hasBin: true

snapshots:

agent-browser@0.39.2: {}
7 changes: 7 additions & 0 deletions .mise/locks/npm-agent-browser/0.39.2/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "mise-npm-install",
"private": true,
"dependencies": {
"agent-browser": "0.39.2"
}
}
158 changes: 158 additions & 0 deletions .mise/locks/npm-pnpm/12.15.0/aube-lock.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
lockfileVersion: '9.0'

settings:
autoInstallPeers: true
excludeLinksFromLockfile: false

importers:

.:
dependencies:
pnpm:
specifier: 12.15.0
version: 12.15.0

packages:

'@pnpm/exe.android-arm64@12.15.0':
resolution: {integrity: sha512-eVCqmscY70LGvgRzu3mi8IBWBFGix+a6mNZoWmXxESsBdeiKEF9xQSuaeel10yn+zI7TXy2jlI63vFLzETk+aQ==}
cpu: [arm64]
os: [android]

'@pnpm/exe.android-x64@12.15.0':
resolution: {integrity: sha512-Gx/WbkFcdUFUg8g8AShezcS9EiQxfYvdAm2hfKLO8sfJmJvKOCt5fzlgHWDzmGhoclibgW+tUGZ/KF4F4wOTCA==}
cpu: [x64]
os: [android]

'@pnpm/exe.darwin-arm64@12.15.0':
resolution: {integrity: sha512-N0ZykiDWCvqSBJvt71j7cSoBR993FqvYZFtmpCtqvW3pguiI+NAgraLPA5OTwu5mV+/d8hYpVcPktJA3xFDLtA==}
cpu: [arm64]
os: [darwin]

'@pnpm/exe.darwin-x64@12.15.0':
resolution: {integrity: sha512-7Ntr2HlBUxzwWOg7NwDxCbRW/3vXuqKO+hcXm+w3SBi9rrHY53li1wLqWVT7Gjxd+lVEHM1QJZo6WJEGFU8C6A==}
cpu: [x64]
os: [darwin]

'@pnpm/exe.freebsd-x64@12.15.0':
resolution: {integrity: sha512-btOiyL7fL7W4uQGH0aqFai2TNC3IoKcZ7gNHBVbEFZt2dWrnrD0SufL3iGs3fLlmb4OtuU35uf4Zpr9V9Jh9mA==}
cpu: [x64]
os: [freebsd]

'@pnpm/exe.linux-arm64-musl@12.15.0':
resolution: {integrity: sha512-pNC38k+O+90FOjbPNSnw0E7apq1PKTmz3fFe1amn+lys/U5kL++uzir8bRiho8ONcyA3d9EU7wdqcY0DKkj+JA==}
cpu: [arm64]
os: [linux]
libc: [musl]

'@pnpm/exe.linux-arm64@12.15.0':
resolution: {integrity: sha512-qML/8aCXslh8td/w4U+HJNqUcZ2+m6EfTbWScIzZRmyPsRFN+xB4LP1U/hymxc1iSJiKtG56HJx2fvUErWFIGw==}
cpu: [arm64]
os: [linux]
libc: [glibc]

'@pnpm/exe.linux-ppc64@12.15.0':
resolution: {integrity: sha512-tjRDUUl7RCJ6T/6eoNPxOqkwU4Mzi5RtTXmSAxujyz37OTwwsMU7Ps087Zk4gHcUvRSeyF40ZFsew3vtE+nmUA==}
cpu: [ppc64]
os: [linux]
libc: [glibc]

'@pnpm/exe.linux-riscv64@12.15.0':
resolution: {integrity: sha512-bF1uBWEfbwaeryz6lIiaJ8AWD082otZfvzGX5l+6LZRpRwUEpJHUsJrORaYP5/cNMv5ZR2p6TvvcJcQzwtDzmw==}
cpu: [riscv64]
os: [linux]
libc: [glibc]

'@pnpm/exe.linux-s390x@12.15.0':
resolution: {integrity: sha512-zKMhIzsexYMToeLmqV5jPsvV/f9vwsJb2kUH2NFYzalbxImeBrlA4kL7GwF8gD4pagV6jYYcJb8RjbZIdjHptg==}
cpu: [s390x]
os: [linux]
libc: [glibc]

'@pnpm/exe.linux-x64-musl@12.15.0':
resolution: {integrity: sha512-A9J0Jg0Rdx+qQU4qXtwyST5tto9IOu1zi4fDk35nbc6DWahggbcKtFvZPKFwL2qgUXGXOX//hXv6z/sp6emO8A==}
cpu: [x64]
os: [linux]
libc: [musl]

'@pnpm/exe.linux-x64@12.15.0':
resolution: {integrity: sha512-yc+QlZR+9+nr29J4fRzhMoapgxTBDndq/+peyoq1XUufnQFnfbXUMFudDIKzHi545linGqmOmXfn0NoufNgcOg==}
cpu: [x64]
os: [linux]
libc: [glibc]

'@pnpm/exe.win32-arm64@12.15.0':
resolution: {integrity: sha512-fPXZxuY1VclkOga9bc53qNCXcegfeoBR8+Ue+AospDwKzuGGSHll0oDxkLfkmpjyRqpe7bH5DyQPYp/xSMaIVA==}
cpu: [arm64]
os: [win32]

'@pnpm/exe.win32-x64@12.15.0':
resolution: {integrity: sha512-nrd+Tp1We1DGj4DGG5Bea9lZNh9y1PjlLBdEwdInS4D0h0UIDtM7JaGGGDJhNzIwcHASyihWI7HLV+dtG+fhYg==}
cpu: [x64]
os: [win32]

pnpm@12.15.0:
resolution: {integrity: sha512-s5UdbW/0qfE9x89WzSjSuOs328ycaOUuHhGRhz6p+CoBcoerULqtxczElPA2xnwOR+sTYIwvo29HcRth6hKOYQ==}
engines: {node: '>=18'}
hasBin: true

snapshots:

'@pnpm/exe.android-arm64@12.15.0':
optional: true

'@pnpm/exe.android-x64@12.15.0':
optional: true

'@pnpm/exe.darwin-arm64@12.15.0':
optional: true

'@pnpm/exe.darwin-x64@12.15.0':
optional: true

'@pnpm/exe.freebsd-x64@12.15.0':
optional: true

'@pnpm/exe.linux-arm64-musl@12.15.0':
optional: true

'@pnpm/exe.linux-arm64@12.15.0':
optional: true

'@pnpm/exe.linux-ppc64@12.15.0':
optional: true

'@pnpm/exe.linux-riscv64@12.15.0':
optional: true

'@pnpm/exe.linux-s390x@12.15.0':
optional: true

'@pnpm/exe.linux-x64-musl@12.15.0':
optional: true

'@pnpm/exe.linux-x64@12.15.0':
optional: true

'@pnpm/exe.win32-arm64@12.15.0':
optional: true

'@pnpm/exe.win32-x64@12.15.0':
optional: true

pnpm@12.15.0:
optionalDependencies:
'@pnpm/exe.android-arm64': 12.15.0
'@pnpm/exe.android-x64': 12.15.0
'@pnpm/exe.darwin-arm64': 12.15.0
'@pnpm/exe.darwin-x64': 12.15.0
'@pnpm/exe.freebsd-x64': 12.15.0
'@pnpm/exe.linux-arm64': 12.15.0
'@pnpm/exe.linux-arm64-musl': 12.15.0
'@pnpm/exe.linux-ppc64': 12.15.0
'@pnpm/exe.linux-riscv64': 12.15.0
'@pnpm/exe.linux-s390x': 12.15.0
'@pnpm/exe.linux-x64': 12.15.0
'@pnpm/exe.linux-x64-musl': 12.15.0
'@pnpm/exe.win32-arm64': 12.15.0
'@pnpm/exe.win32-x64': 12.15.0
7 changes: 7 additions & 0 deletions .mise/locks/npm-pnpm/12.15.0/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "mise-npm-install",
"private": true,
"dependencies": {
"pnpm": "12.15.0"
}
}
14 changes: 14 additions & 0 deletions env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -84,5 +84,19 @@ if command -v lspci >/dev/null 2>&1 &&
export ODSOD_HAS_RADEON_DGPU=1
fi

# kwin — amdgpu advertises DRM_FORMAT_RGBA8888 in rgb_formats[] and
# overlay_formats[], but fill_plane_buffer_attributes() has no case for it, so
# the atomic commit fails with "Unsupported screen format RA24" and KWin
# retries until the desktop wedges. Forcing overlays on keeps KWin on the
# primary plane. KWin parses these as "value == 1", so 0 is not false, it is
# unset; the greeter's own unit sets 0 for that reason. Direct scanout stays
# enabled on purpose: it is what lets fullscreen video and games bypass the
# compositor, and the overlay path above already covers this bug.
# Gated on the Radeon dGPU so laptops and Intel-only machines are untouched.
# Drop this when upstream adds the missing case.
if [ "$XDG_CURRENT_DESKTOP" = "KDE" ] && [ "${ODSOD_HAS_RADEON_DGPU:-0}" = "1" ]; then
export KWIN_USE_OVERLAYS=1
fi

# machine
export PATH="$HOME/.local/share/mise/shims:$HOME/.local/bin:$PATH"
13 changes: 13 additions & 0 deletions kwin/plasma-login-kwin-amdgpu.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[Service]
# amdgpu advertises DRM_FORMAT_RGBA8888 (RA24) in rgb_formats[] and
# overlay_formats[] but fill_plane_buffer_attributes() has no case for it, so
# the atomic commit fails and KWin retries until it wedges. The login greeter
# runs its own KWin as user plasmalogin, outside the session's env.sh, so it
# needs the same workaround here. Overlays on keeps KWin on the primary plane.
#
# Upstream ships Environment="KWIN_USE_OVERLAYS=0" in this unit, but KWin
# parses that variable as "value == 1", so 0 means unset, not off. A drop-in
# Environment= line replaces it.
#
# Drop this drop-in when upstream adds the missing case.
Environment="KWIN_USE_OVERLAYS=1"
42 changes: 42 additions & 0 deletions kwin/setup-greeter-dropin.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
set -euo pipefail

REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
DROPIN_DIR=/etc/systemd/user/plasma-login-kwin_wayland.service.d
DROPIN="$DROPIN_DIR/50-amdgpu-ra24.conf"
SOURCE="$REPO_DIR/kwin/plasma-login-kwin-amdgpu.conf"

# Detect the GPU here rather than sourcing env.sh. env.sh returns early when
# ODSOD_MACHINE is already exported, which would leave ODSOD_HAS_RADEON_DGPU
# stale or unset and silently defeat this gate. Override with
# ODSOD_HAS_RADEON_DGPU=0/1 to force either branch.
has_radeon_dgpu() {
if [ -n "${ODSOD_HAS_RADEON_DGPU:-}" ]; then
[ "$ODSOD_HAS_RADEON_DGPU" = "1" ]
return
fi
command -v lspci >/dev/null 2>&1 || return 1
lspci -nn -d 1002: 2>/dev/null |
grep -Eqi '(VGA compatible controller|3D controller|Display controller).*(Radeon RX|Radeon PRO|Radeon VII|Radeon Instinct)'
}

# Only machines whose Radeon dGPU advertises the broken RGBA8888 plane format
# need this. Laptops and Intel-only machines keep the vendor unit untouched.
if ! has_radeon_dgpu; then
echo "[kwin] Skipping greeter drop-in: no dedicated Radeon GPU detected"
if [ -e "$DROPIN" ]; then
echo "[kwin] Removing stale drop-in $DROPIN"
sudo rm -f "$DROPIN"
sudo rmdir --ignore-fail-on-non-empty "$DROPIN_DIR" 2>/dev/null || true
fi
exit 0
fi

if [ ! -r "$SOURCE" ]; then
echo "[kwin] Missing $SOURCE" >&2
exit 1
fi

echo "[kwin] Installing greeter drop-in $DROPIN"
sudo install -d -o root -g root -m 0755 "$DROPIN_DIR"
sudo install -o root -g root -m 0644 "$SOURCE" "$DROPIN"
Loading
Loading