← Otto User GuideOpen standards

Otto keeps your desktop in the standard places. It reads applications, icon themes, file associations, the trash and the thumbnail cache from where the freedesktop.org (XDG) specifications put them, and it serves the shared Wayland protocols, so the apps, themes and tools you already use keep working and what Otto writes stays readable by the rest of the system. The tables below list what is supported today; if something isn’t listed, assume it isn’t there yet.

Developers looking for where each one lives in the source want XDG specifications, Wayland protocols and Text rendering.

How we see the Linux desktop

Otto tries to make the everyday easy: things a click away, in one place, with sensible defaults. That ease sits on top of the system, not in place of it. Otto keeps what it manages in the places the freedesktop.org (XDG) standards name, and reads what other software puts there.

We will not trade portability for convenience. Where Otto falls short, the gap is listed under What is not supported.

Desktop specifications

StandardWhat it means in OttoMore
Base DirectoryConfig, data, cache and state go under the XDG_* directories; Otto’s log is ~/.local/state/otto/otto.logConfiguration
Desktop EntryEvery installed .desktop app shows in the Launcher and can be pinned; an entry’s Actions= are its right-click menu in the DockLauncher, Dock
MIME applications (mimeapps.list)Default apps are read from it, the same file xdg-mime default writes. Files’ Open With… → Always use this app writes the choice back thereFiles
Shared MIME-infoFile types and their icons match the rest of the system. Install shared-mime-info if types look genericFiles
Icon ThemeAny theme in ~/.icons, ~/.local/share/icons or /usr/share/iconsTheming
Cursor themes (Xcursor)Any installed cursor theme and sizeTheming
Sound ThemeSystem sounds come from the selected sound themeAudio
TrashThe shared trash, on your home and on other drives: what another file manager deleted can be put back from Otto, and the other way roundFiles
ThumbnailsThumbnails another file manager already made under ~/.cache/thumbnails load instantly. Otto reads the cache; it does not add to itFiles
XDG user directoriesDesktop, Downloads, Documents… in the Files sidebar, and the screenshot folder, are where user-dirs.dirs saysFiles
AutostartEntries in /etc/xdg/autostart and ~/.config/autostart start with the session; can be turned offAutostart
NotificationsOtto is the notification server: notify-send and every app’s notifications work, with actions and iconsDynamic Island
Desktop portalOtto’s own backend: screen sharing, screenshots, file dialogs, appearance settings and permission prompts, for browsers, OBS and Flatpak appsScreen Sharing
StatusNotifierItemTray icons in the top bar, with their menus (DBusMenu)Top Bar
Global menu (com.canonical.AppMenu)Apps that export their menu bar show it in the top barTop Bar
MPRISAny media player shows in the Dynamic Island and follows the media keysAudio
AT-SPIScreen readers read Otto’s chrome and Otto’s appsAccessibility
FontconfigFont names, aliases and your fonts.conf rendering rules; see Fonts and textTheming

System services Otto uses

ServiceWhat for
systemd-logindSession, lock on suspend, power actions
UPower, power-profiles-daemonBattery and power mode in the top bar
polkitOtto is the authentication agent: password prompts for admin actions
AccountsServiceYour name and picture, changing your password in Settings
PipeWireScreen sharing streams, audio volume and the audio visualiser
greetdThe login screen
LocalSearch (Tracker)File search

Fonts and text

Fonts go through fontconfig, like every other Linux application: the font you pick is matched against what is installed, and your fonts.conf rules for hinting and antialiasing apply to Otto’s own text. Choosing the font is in Theming; subpixel text, per monitor, is in Display. Text inside other programs is drawn by those programs; Otto tells them its font and settings so they match:

AppsGet Otto’s font and settings fromFollows your hint style?
Otto and Otto’s appsOtto’s configuration and fontconfigyes
GTK 4the desktop portalyes
GTK 3GNOME’s settings store, which Otto fills at loginwith grayscale text; with subpixel text every style looks alike
Chromium, ElectronGNOME’s settings store and fontconfigyes
QtQt’s GTK theme, which Otto selects unless QT_QPA_PLATFORMTHEME is setonly on an unscaled display (Qt’s own rule)
X11 apps (Xwayland)XSETTINGSyes; Qt apps only at 96 DPI

Wayland protocols

These are the protocols applications use to talk to Otto. “Trusted apps” means not offered to sandboxed apps (Flatpak), which cannot list windows, read the screen or type for you. The exact version of each protocol, and the code that serves it, is in the developer guide’s Wayland protocols.

Core

ProtocolWhat it is forNotes
wl_compositor, wl_subcompositorSurfaces and their sub-parts: every Wayland app
wl_shmApps drawing on the CPU (shared-memory buffers)
wl_seatKeyboard, mouse and touchpad input
wl_drmGPU buffers for older Mesa and EGL apps

Windows

ProtocolWhat it is forNotes
xdg-shellWindows and popups: every Wayland app
xdg-decoration, KDE server decorationLets an app ask Otto to draw its titlebar, or draw its own
xdg-activationAn app handing focus to another (clicking a link opens the browser in front)Only right after a click or key press
xdg-foreignA dialog attaching to another app’s window (portal file dialogs)
xdg-dialogMarking a dialog modalModal dialogs float when tiling
xwayland-shell, Xwayland keyboard grabX11 apps
KDE appmenuQt and KDE apps’ menus in the top barSee Top Bar
ext-background-effectBlur behind translucent terminals and panelsThe whole window is frosted, not a region

Display and scaling

ProtocolWhat it is forNotes
wl_output, xdg-outputMonitor size, position, scale and subpixel order
fractional-scaleSharp apps at scales like 1.25 or 1.5
viewporterApps cropping and scaling their own buffers
presentation-timeAccurate frame timing for video and gamesLogin session only
linux-dmabufGPU buffers, no copies
linux-drm-syncobjExplicit GPU sync, which some drivers need for smooth framesLogin session, when the GPU supports it
drm-leaseVR headsets taking over a displayLogin session only
cursor-shapeApps naming a cursor instead of drawing it, so it matches your theme
wlr-gamma-controlColour temperature tools (gammastep, wlsunset)Trusted apps, login session only. See Night Shift

Input

ProtocolWhat it is forNotes
pointer-gesturesTouchpad swipe, pinch and hold in appsLogin session only. See Gestures
relative-pointer, pointer-constraintsMouse look in games, locking the pointerRelative motion in the login session only
tabletDrawing tablets and pens
keyboard-shortcuts-inhibitRemote desktop and VM apps getting every keyTrusted apps; lock and VT switch still work
text-input-v3, input-method-v2Input methods (IME) and dictationInput methods are trusted apps
virtual-keyboard, wlr-virtual-pointerTools that type or move the pointer (emoji picker, remote desktop)Trusted apps

Clipboard

ProtocolWhat it is forNotes
wl_data_deviceCopy, paste, drag and drop
primary-selectionMiddle-click paste
wlr-data-control, ext-data-controlClipboard managers and wl-copy/wl-pasteTrusted apps. See Clipboard

Panels, taskbars and capture

ProtocolWhat it is forNotes
wlr-layer-shellBars, docks, launchers, wallpapers, widgetsTrusted apps. See Desktop Widgets
ext-foreign-toplevel-listListing open windowsTrusted apps
wlr-foreign-toplevel-managementTaskbars that activate, minimise, maximise or close windowsTrusted apps
wlr-screencopyScreenshot and recording tools (grim, wf-recorder, wl-mirror)Trusted apps. Screen sharing goes through the portal

Session and security

ProtocolWhat it is forNotes
ext-session-lockThe lock screenOnly Otto’s own Lock Screen: swaylock and similar cannot lock
idle-inhibitVideo players keeping the screen awake
security-contextFlatpak marking its apps as sandboxed

Otto’s own

ProtocolWhat it is for
otto-surface-styleOtto’s apps shaping and animating their windows (corners, shadows, blur)
otto-dockApps adding items to the Dock
otto-canvasItems on the Side Canvas
otto-text-cursorPickers (emoji) opening beside the text cursor

What is not supported

MissingWhat to do instead
Recent files (recently-used.xbel)Files’ Recent place lists recently changed files in your folders, not what other apps opened
Writing thumbnails to the shared cacheThumbnails other file managers made are used; Otto’s own are not saved for others
Startup notification (busy cursor while an app starts)None
org.freedesktop.FileManager1 (“Show in folder” from other apps)Open the folder in Files
Text scalingText follows the display scale; scale the display to make text bigger
Pushing font changes live to GTK 3 and Qt appsRestart the app after changing fonts
ext-idle-notify (idle daemons like swayidle)Use Otto’s Power Management
wlr-output-management (wlr-randr, kanshi)Set displays in Settings or the display profiles
ext-image-copy-captureUse wlr-screencopy tools or the portal
Other newer protocols (tearing-control, color-management, xdg-system-bell, xdg-toplevel-icon, …)Apps fall back to their default behaviour. The full list is in Wayland protocols