Skip to content

Add Nested Desktop and complete Odin 2 integration#95

Open
Janleyx wants to merge 6 commits into
virtudude:mainfrom
Janleyx:feature/nested-desktop
Open

Add Nested Desktop and complete Odin 2 integration#95
Janleyx wants to merge 6 commits into
virtudude:mainfrom
Janleyx:feature/nested-desktop

Conversation

@Janleyx

@Janleyx Janleyx commented Jul 14, 2026

Copy link
Copy Markdown

Summary

This contribution brings the Odin 2 desktop experience closer to the Steam Deck workflow:

  • Add an optional SteamOS-style Nested Desktop launcher for running Plasma inside Gaming Mode.
  • Add Armada Native as an explicit compatibility tool so native launchers are not forced through Proton.
  • Add Add to Steam actions for Dolphin and Plasma's application launcher.
  • Start Steam reliably in full Desktop Mode so gamepad desktop controls are available.
  • Install Plasma Wi-Fi, Bluetooth, and battery integrations (plasma-nm, bluedevil, and upower).
  • Repair desktop-home ownership/write access during image creation and bootstrap.
  • Isolate and normalize display orientation between Gaming Mode, Nested Desktop, and full Desktop Mode.

Nested Desktop

Nested Desktop is an optional non-Steam shortcut, not a replacement for normal Desktop Mode. Its purpose is brief access to Plasma without switching sessions while retaining Steam Input, QAM, and the Steam overlay.

The launcher runs fullscreen KWin beneath Gamescope, normalizes the rotated Odin panel into a landscape Plasma workspace, shares the parent PipeWire session, and starts a complete Plasma shell. Because this adds Gamescope overhead, direct KWin Desktop Mode remains the preferred path for performance and extended desktop use. The nested launcher has no runtime effect unless a user explicitly adds and launches it.

The README documents adding it to Steam, selecting Armada Native, and using the native game resolution.

Full Desktop integration

Normal Desktop Mode remains a direct KWin session and now has:

  • Steam autostart after the Xwayland display is ready, providing Steam's gamepad desktop controls;
  • working Wi-Fi, Bluetooth, and battery status/control in Plasma;
  • writable user desktop/home paths;
  • persistent landscape orientation without breaking external-monitor handling; and
  • working Add to Desktop and Add to Steam workflows.

Validation

Tested repeatedly on an AYN Odin 2 Pro running Armada:

  • Nested Desktop launches from Gaming Mode with correct landscape orientation, working taskbar and pointer bounds, and smooth video playback after the final resolution/scaling configuration.
  • Full Desktop Mode retains its independent landscape layout, starts Steam, and exposes gamepad controls.
  • Wi-Fi, Bluetooth, and battery integrations are present and healthy.
  • Add to Desktop and Add to Steam both work.
  • Full Desktop and Nested Desktop preserve their independent display configurations across switches and reboots.
  • Changed shell launchers were syntax-checked on the Odin's native Bash environment during development.

Related Armada-compatible work

I would also be happy to help maintain and test Armada, and would love to join the team if you are looking for contributors.

@virtudude

Copy link
Copy Markdown
Owner

@Janleyx Thanks for the contribution! Can you tell me more about the purpose of the nested desktop? One thing that concerns me about it is that KWin is actually a more efficient compositor than gamescope on this hardware, so it might regress performance in desktop mode.

Also wondering if we still need the SD changes you have in here after I added jupiter-hw-support?

@Janleyx

Janleyx commented Jul 14, 2026

Copy link
Copy Markdown
Author

oh hi! om so pleased you reached out! first off love the work behind the project and have been working hard on trying to help along. The whole point of nested desktop is to have quick access to your desktop enviroment from within gamemode so you dont have to switch to desktop mode to then switch back essentially. I made it very performant too. So in professional lingo: The purpose is to access Plasma briefly without switching sessions while retaining Steam Input, QAM, and the Steam overlay.

You’re right that this means KWin is running underneath Gamescope, so it can be less efficient than the direct KWin Desktop Mode session. I’m not claiming it improves performance. It tested acceptably after correcting the resolution/scaling configuration, but I did not run formal compositor benchmarks. Normal Desktop Mode remains the better choice for performance and extended use.

The nested launcher has no runtime effect unless the user explicitly adds and launches it. That said, I’m happy to split Nested Desktop into a separate PR—or remove it from this one—if you would prefer the desktop integration changes independently.

Regarding the SD changes: I agree that the Armada-side checks are no longer necessary now that I have the complete history.

The failure was reproduced on the June 28 image, which predated your July 3 jupiter-hw-support integration. That older image was missing the formatter, automounter, polkit integration, and f3. It also ran the older kernel without CONFIG_UNICODE.

The current source already has the primary native fixes:

jupiter-hw-support is installed in the image.

The kernel package has CONFIG_UNICODE=y.

I can remove the SD build assertions from this PR. I submitted the remaining defense-in-depth formatter change separately in virtudude/armada-packages#3, where the Jupiter RPM is maintained. It makes -O casefold conditional on the running kernel’s advertised support and was successfully built as a complete RPM on the Odin 2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants