Skip to content

Spaghetti Namespaces#119

Draft
notbabaisyou wants to merge 1 commit into
SpaghettiFork:masterfrom
notbabaisyou:oregano-namespaces
Draft

Spaghetti Namespaces#119
notbabaisyou wants to merge 1 commit into
SpaghettiFork:masterfrom
notbabaisyou:oregano-namespaces

Conversation

@notbabaisyou

@notbabaisyou notbabaisyou commented Jun 20, 2026

Copy link
Copy Markdown
Collaborator

tl;dr we have xnamespaces at home, no this probably won't be enabled by default for a long time

SPAGHETTI-NS is my sloppy coded alternative to Xlibre's Xnamespaces, focusing on being easy to use and being a matter of turn it on in the Xorg config or launch the server with it enabled.

Window managers, compositors and system trays should get moved to the root namespace, which is where all applications are allowed to see each other and interact with another. Other applications are moved into their own namespaces and can only see root and themselves. Applications that fork off or spawn their own children are grouped into the same namespace for simplicity sake.

Of course you might be asking: What about accessibility applications, xdg-desktop-portal and the likes? That's where Oregano steps in, this is a full CLI, GUI and daemon that lets you manage your namespaces however you like them, meaning that Xorg doesn't have to deal with one more config file. You can setup applications to get automatically promoted to the root namespace without having to do anything.

What won't this protect you from?

  • Malicious software that will do anything other than interact with the display server
  • Software that captures the display contents through the COMPOSITE extension
  • Software that steals clipboard content
  • Divorce

Here's an example of namespaces in action, taken from Oregano:

root
├── Fluxbox (3)
├── Lumina Desktop Environment (4)
├── /tmp/oregano (15)
├─[namespace 1]
│  └── Mozilla Firefox (5)
├─[namespace 2]
│  └── xdg-desktop-portal-gtk (6)
├─[namespace 3]
│  └── /usr/lib/at-spi2-registryd (7)
├─[namespace 4]
│  ├── New Tab - Chromium (8)
│  ├── /usr/lib/chromium/chromium (10)
│  ├── /usr/lib/chromium/chromium (11)
│  └── /usr/lib/chromium/chromium (12)
├─[namespace 5]
│  └── chromium (9)
├─[namespace 6]
│  └── notification-daemon (13)
├─[namespace 7]
│  └── baba@devbox:~ (14)

An optional password protection mechanism is available for the truly paranoid, in addition to the option to isolate the clipboard- which is a horrible idea.

For now this is a draft until Spaghetti 26.3 development window opens. Oregano will be made public once this is merged.

@notbabaisyou notbabaisyou self-assigned this Jun 20, 2026
@notbabaisyou notbabaisyou force-pushed the oregano-namespaces branch 5 times, most recently from 17e5e7e to 57a7818 Compare June 21, 2026 11:58
@notbabaisyou notbabaisyou force-pushed the oregano-namespaces branch 3 times, most recently from acff4f9 to 130e5ff Compare June 28, 2026 22:52
Implement display namespace isolation for X11 clients, providing
Linux namespace-style isolation for the X server. Each application
gets its own "display namespace" - an isolated view of the display server.

Isolation features:
- Window visibility isolation (XACE_RESOURCE_ACCESS)
- Event delivery isolation (XACE_SEND_ACCESS, XACE_RECEIVE_ACCESS)
- Input grab isolation (XACE_DEVICE_ACCESS, ProcGrabKey, ProcGrabButton)
- Screen capture protection (DoGetImage, ShmGetImage)
- Property access control (XACE_PROPERTY_ACCESS)
- Client enumeration isolation (XACE_CLIENT_ACCESS)
- Key monitoring restriction (QueryKeymap, RawKey events)
- Clipboard isolation (optional, XACE_SELECTION_ACCESS)
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.

1 participant