* [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp
@ 2026-07-10 19:59 Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 1/6] pkgs: s6: fix s6-notify-fd-from-socket Alyssa Ross
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
Since there's been recent demand for it, before the weekend I wanted
to post my work on switching to COSMIC. It's not ready yet, but I'm
happy with the shape it's taking. It needs to be applied on top of
the draft Nixpkgs update I posted the other day, and it requires some
patches that have only just begun to make their way upstream.
(There's some sequencing required here: adding functionality to
cosmic-comp requires adding functionality to Smithay requires adding
functionality to wayland-rs. My initial wayland-rs PR has been
merged, so now we wait for a release and then we can make the Smithay
one.) There might be more upstream work to come as well — I'd like
Nixpkgs' libcosmicAppHook to be fixed not to clobber the XDG_DATA_DIRS
default if it's unset, and the socket ownership for cosmic-comp
(inherited from Weston) could be improved if it could be properly
socket activated, which will need further work on wayland-rs and
Smithay as well. That requires some API design that's still
processing in the back of my mind.
Nevertheless it's ready to try out and give feedback on. It's
intentionally bare bones — we can add more parts of COSMIC later as
required.
Alyssa Ross (6):
pkgs: s6: fix s6-notify-fd-from-socket
pkgs: cosmic-comp: support custom socket path
Revert "host/rootfs/Makefile: don't pass -display to QEMU"
Revert "host/rootfs: Makefile: don't use QEMU with GL"
host/rootfs: make run: use virgl virtio-gpu
host/rootfs: switch from Weston to cosmic-comp
host/rootfs/Makefile | 7 +-
host/rootfs/default.nix | 37 +-
host/rootfs/file-list.mk | 43 +-
.../etc/s6-linux-init/env/XDG_RUNTIME_DIR | 1 -
.../s6-linux-init/env/XDG_RUNTIME_DIR.license | 2 -
.../run-image/service/root-terminal/run | 2 +-
.../dependencies.d/systemd-udevd-coldplug | 0
.../{weston => cosmic-comp}/notification-fd | 0
.../notification-fd.license | 0
.../etc/s6-rc/{weston => cosmic-comp}/run | 26 +-
.../etc/s6-rc/{weston => cosmic-comp}/type | 0
.../{weston => cosmic-comp}/type.license | 0
.../dependencies.d/cosmic-comp} | 0
host/rootfs/image/etc/s6-rc/cosmic-panel/run | 12 +
.../etc/s6-rc/{weston => cosmic-panel}/type | 0
.../image/etc/s6-rc/cosmic-panel/type.license | 2 +
.../weston => ok-all/contents.d/cosmic-panel} | 0
.../vm-env/contents.d/{weston => cosmic-comp} | 0
.../com.system76.CosmicAppList/v1/favorites | 7 +
.../com.system76.CosmicPanel.Dock/v1/anchor | 4 +
.../com.system76.CosmicPanel.Dock/v1/autohide | 9 +
.../v1/border_radius | 4 +
.../v1/exclusive_zone | 4 +
.../v1/expand_to_edges | 4 +
.../v1/keyboard_interactivity | 4 +
.../com.system76.CosmicPanel.Dock/v1/margin | 4 +
.../com.system76.CosmicPanel.Dock/v1/name | 4 +
.../com.system76.CosmicPanel.Dock/v1/opacity | 4 +
.../v1/plugins_center | 6 +
.../com.system76.CosmicPanel.Dock/v1/size | 4 +
.../v1/autohide | 4 +
.../v1/border_radius | 4 +
.../v1/keyboard_interactivity | 4 +
.../com.system76.CosmicPanel.Panel/v1/margin | 4 +
.../com.system76.CosmicPanel.Panel/v1/name | 4 +
.../com.system76.CosmicPanel.Panel/v1/opacity | 4 +
.../com.system76.CosmicPanel.Panel/v1/padding | 4 +
.../v1/plugins_center | 6 +
.../v1/plugins_wings | 9 +
.../com.system76.CosmicPanel.Panel/v1/size | 4 +
.../com.system76.CosmicPanel/v1/entries | 7 +
host/rootfs/image/etc/xdg/weston/autolaunch | 7 -
host/rootfs/image/etc/xdg/weston/weston.ini | 15 -
.../org.spectrum_os.RootTerminal.desktop | 9 +
pkgs/cosmic-comp/default.nix | 15 +
pkgs/cosmic-comp/socket-path.patch | 462 ++++++++++++++++++
pkgs/overlay.nix | 4 +
pkgs/skaware-packages/default.nix | 16 +
48 files changed, 698 insertions(+), 74 deletions(-)
delete mode 100644 host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR
delete mode 100644 host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR.license
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/dependencies.d/systemd-udevd-coldplug (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/notification-fd (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/notification-fd.license (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/run (77%)
copy host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/type (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/type.license (100%)
copy host/rootfs/image/etc/s6-rc/{vm-env/contents.d/weston => cosmic-panel/dependencies.d/cosmic-comp} (100%)
create mode 100644 host/rootfs/image/etc/s6-rc/cosmic-panel/run
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-panel}/type (100%)
create mode 100644 host/rootfs/image/etc/s6-rc/cosmic-panel/type.license
copy host/rootfs/image/etc/s6-rc/{vm-env/contents.d/weston => ok-all/contents.d/cosmic-panel} (100%)
rename host/rootfs/image/etc/s6-rc/vm-env/contents.d/{weston => cosmic-comp} (100%)
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries
delete mode 100755 host/rootfs/image/etc/xdg/weston/autolaunch
delete mode 100644 host/rootfs/image/etc/xdg/weston/weston.ini
create mode 100644 host/rootfs/image/usr/share/applications/org.spectrum_os.RootTerminal.desktop
create mode 100644 pkgs/cosmic-comp/default.nix
create mode 100644 pkgs/cosmic-comp/socket-path.patch
create mode 100644 pkgs/skaware-packages/default.nix
base-commit: 89f8c9238616b43e48b21e2eade41e061b006cd8
prerequisite-patch-id: 8662e049f860b035ba9aceb3ee6b3f35c891c09c
prerequisite-patch-id: a26d347af3f41c48656b017f32079007d4560e66
prerequisite-patch-id: 532076a6433252cd07ba904cd17ade53ce3c8c81
--
2.54.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* [RFC PATCH 1/6] pkgs: s6: fix s6-notify-fd-from-socket
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 2/6] pkgs: cosmic-comp: support custom socket path Alyssa Ross
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
pkgs/overlay.nix | 2 ++
pkgs/skaware-packages/default.nix | 16 ++++++++++++++++
2 files changed, 18 insertions(+)
create mode 100644 pkgs/skaware-packages/default.nix
diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix
index 62929ad2..62bef7d5 100644
--- a/pkgs/overlay.nix
+++ b/pkgs/overlay.nix
@@ -13,4 +13,6 @@
mailutils = super.mailutils.overrideAttrs (_: (
final.lib.optionalAttrs final.stdenv.hostPlatform.isMusl { doCheck = false; }
));
+
+ skawarePackages = import ./skaware-packages { inherit final super; };
})
diff --git a/pkgs/skaware-packages/default.nix b/pkgs/skaware-packages/default.nix
new file mode 100644
index 00000000..4abcf37a
--- /dev/null
+++ b/pkgs/skaware-packages/default.nix
@@ -0,0 +1,16 @@
+# SPDX-FileCopyrightText: 2025 Alyssa Ross <hi@alyssa.is>
+# SPDX-License-Identifier: MIT
+
+import ../../lib/overlay-package.nix [ "skawarePackages" ] ({ final, super }:
+
+super.skawarePackages.overrideScope (_: prev: {
+ s6 = prev.s6.overrideAttrs ({ patches ? [], ... }: {
+ patches = patches ++ [
+ (final.fetchpatch {
+ name = "s6-notify-fd-from-socket.patch";
+ url = "https://github.com/skarnet/s6/commit/a1388a8661d4c1b1073d3cf62b35d3b80815c4a7.patch";
+ hash = "sha256-bxue4TgKg6tVjS+Lx2bLqZyaQdPoIX5ZgIHqy6aIxq8=";
+ })
+ ];
+ });
+}))
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 2/6] pkgs: cosmic-comp: support custom socket path
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 1/6] pkgs: s6: fix s6-notify-fd-from-socket Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 3/6] Revert "host/rootfs/Makefile: don't pass -display to QEMU" Alyssa Ross
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
pkgs/cosmic-comp/default.nix | 15 +
pkgs/cosmic-comp/socket-path.patch | 462 +++++++++++++++++++++++++++++
pkgs/overlay.nix | 2 +
3 files changed, 479 insertions(+)
create mode 100644 pkgs/cosmic-comp/default.nix
create mode 100644 pkgs/cosmic-comp/socket-path.patch
diff --git a/pkgs/cosmic-comp/default.nix b/pkgs/cosmic-comp/default.nix
new file mode 100644
index 00000000..243face9
--- /dev/null
+++ b/pkgs/cosmic-comp/default.nix
@@ -0,0 +1,15 @@
+# SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+# SPDX-License-Identifier: MIT
+
+import ../../lib/overlay-package.nix [ "cosmic-comp" ] ({ final, super }:
+
+super.cosmic-comp.overrideAttrs ({ patches ? [], ... }: {
+ patches = patches ++ [
+ ./socket-path.patch
+ ];
+
+ cargoDeps = final.rustPlatform.fetchCargoVendor {
+ inherit (final.cosmic-comp) src patches;
+ hash = "sha256-LQ6T0uJpRc3f5iMukut3f8GsMLt5Sd57ILY8+5b4Jdo=";
+ };
+}))
diff --git a/pkgs/cosmic-comp/socket-path.patch b/pkgs/cosmic-comp/socket-path.patch
new file mode 100644
index 00000000..47b730c9
--- /dev/null
+++ b/pkgs/cosmic-comp/socket-path.patch
@@ -0,0 +1,462 @@
+From e44410c5a173f92fac521b5ec82cc4d1c79824b7 Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Fri, 26 Jun 2026 18:17:23 +0200
+Subject: [PATCH 1/2] Support nameless ListenSocketSources
+
+Only sockets created inside XDG_RUNTIME_DIR have names. This is
+necessary as a step towards support for creating the Wayland socket at
+a specific absolute path. Since the "socket" value was mostly used
+previously as the value of WAYLAND_DISPLAY for clients, I've renamed
+it to wayland_display, to make it clear that its value can be any
+value suitable for WAYLAND_DISPLAY: either a relative path in
+XDG_RUNTIME_DIR, or an absolute path. Only in one place
+(kms/socket.rs) do we care which it is, so there we just check whether
+the path is absolute to know which ListeningSocketSource constructor
+to call.
+---
+ Cargo.lock | 32 +++++++++++---------------------
+ Cargo.toml | 12 +++++++++++-
+ src/backend/kms/socket.rs | 33 +++++++++++++++++----------------
+ src/dbus/mod.rs | 2 +-
+ src/input/actions.rs | 2 +-
+ src/lib.rs | 18 +++++++++---------
+ src/session.rs | 3 ++-
+ src/state.rs | 8 ++++----
+ src/systemd.rs | 2 +-
+ 9 files changed, 57 insertions(+), 55 deletions(-)
+
+diff --git a/Cargo.lock b/Cargo.lock
+index 1bc58958..5173e7b5 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -4797,7 +4797,7 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+ [[package]]
+ name = "smithay"
+ version = "0.7.0"
+-source = "git+https://github.com/smithay/smithay.git?rev=8eb4076#8eb4076cad8705c56f5e3bac8577b83576b6ce76"
++source = "git+https://github.com/alyssais/smithay.git?tag=v0.7.0-cosmic-comp-1.2.0-spectrum-0#b05863561c466fd8f3fd51afe59dc7c0a18a1d95"
+ dependencies = [
+ "aliasable",
+ "appendlist",
+@@ -5811,8 +5811,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-backend"
+ version = "0.3.15"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "cc",
+ "downcast-rs",
+@@ -5825,8 +5824,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-client"
+ version = "0.31.14"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "bitflags 2.11.0",
+ "rustix 1.1.4",
+@@ -5848,8 +5846,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-cursor"
+ version = "0.31.14"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "rustix 1.1.4",
+ "wayland-client",
+@@ -5859,8 +5856,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-egl"
+ version = "0.32.11"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "9b97bdb7c49e5bd9b7562f38ff84f0dad47079fdc9e926f691a787f6dbc05451"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "wayland-backend",
+ "wayland-sys",
+@@ -5869,8 +5865,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-protocols"
+ version = "0.32.12"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "bitflags 2.11.0",
+ "wayland-backend",
+@@ -5895,8 +5890,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-protocols-misc"
+ version = "0.3.12"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "bitflags 2.11.0",
+ "wayland-backend",
+@@ -5922,8 +5916,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-protocols-wlr"
+ version = "0.3.12"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "bitflags 2.11.0",
+ "wayland-backend",
+@@ -5936,8 +5929,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-scanner"
+ version = "0.31.10"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "proc-macro2",
+ "quick-xml",
+@@ -5947,8 +5939,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-server"
+ version = "0.31.13"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "cc1846eb04c49182e04f4a099e2a830a2b745610bbc1d61246e206f29c7000a0"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "bitflags 2.11.0",
+ "downcast-rs",
+@@ -5960,8 +5951,7 @@ dependencies = [
+ [[package]]
+ name = "wayland-sys"
+ version = "0.31.11"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"
++source = "git+https://github.com/alyssais/wayland-rs?tag=release-2026-03-30-spectrum-0#643927b7a936dcd474b5c073aa6a8d9b185cd6eb"
+ dependencies = [
+ "dlib",
+ "log",
+diff --git a/Cargo.toml b/Cargo.toml
+index f1a04f02..6f6774d2 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -143,4 +143,14 @@ cosmic-protocols = { git = "https://github.com/pop-os//cosmic-protocols", branch
+ cosmic-client-toolkit = { git = "https://github.com/pop-os//cosmic-protocols", branch = "main" }
+
+ [patch.crates-io]
+-smithay = { git = "https://github.com/smithay/smithay.git", rev = "8eb4076" }
++smithay = { git = "https://github.com/alyssais/smithay.git", tag = "v0.7.0-cosmic-comp-1.2.0-spectrum-0" }
++wayland-backend = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-client = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-cursor = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-egl = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-protocols = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-protocols-misc = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-protocols-wlr = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-scanner = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-server = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
++wayland-sys = { git = "https://github.com/alyssais/wayland-rs", tag = "release-2026-03-30-spectrum-0" }
+diff --git a/src/backend/kms/socket.rs b/src/backend/kms/socket.rs
+index 3babd35a..c56a49cd 100644
+--- a/src/backend/kms/socket.rs
++++ b/src/backend/kms/socket.rs
+@@ -15,7 +15,7 @@ use smithay::{
+ socket::ListeningSocketSource,
+ },
+ };
+-use std::sync::Arc;
++use std::{path::Path, sync::Arc};
+ use tracing::{info, warn};
+
+ use crate::state::{ClientState, Common, State, advertised_node_for_client};
+@@ -34,16 +34,13 @@ impl Common {
+ render_node: DrmNode,
+ formats: FormatSet,
+ ) -> Result<Socket> {
+- let socket_name = format!(
+- "{}-{}",
+- &self.socket.to_string_lossy(),
+- render_node
+- .dev_path()
+- .unwrap()
+- .file_name()
+- .unwrap()
+- .to_string_lossy()
+- );
++ let dev_path = render_node.dev_path().unwrap();
++ let render_node_name = dev_path.file_name().unwrap();
++
++ let mut wayland_display = self.wayland_display.clone().into_os_string();
++ wayland_display.push("-");
++ wayland_display.push(render_node_name);
++ let wayland_display = wayland_display.to_string_lossy().into_owned();
+
+ // initialize globals
+ let filter = move |client: &Client| advertised_node_for_client(client) == Some(render_node);
+@@ -71,9 +68,13 @@ impl Common {
+ );
+
+ // add a special socket for the gpu
+- let listener = ListeningSocketSource::with_name(&socket_name)
+- .with_context(|| format!("Failed to bind socket to {}", socket_name))?;
+- let socket_name_clone = socket_name.clone();
++ let listener = if Path::new(&wayland_display).is_absolute() {
++ ListeningSocketSource::with_path(wayland_display.clone().into())
++ } else {
++ ListeningSocketSource::with_name(&wayland_display)
++ }
++ .with_context(|| format!("Failed to bind socket to {}", wayland_display))?;
++ let wayland_display_clone = wayland_display.clone();
+ let token = self
+ .event_loop_handle
+ .insert_source(listener, move |client_stream, _, state: &mut State| {
+@@ -85,7 +86,7 @@ impl Common {
+ }),
+ ) {
+ warn!(
+- socket_name = socket_name_clone,
++ display = wayland_display_clone,
+ ?err,
+ "Error adding wayland client."
+ );
+@@ -93,7 +94,7 @@ impl Common {
+ })
+ .context("Failed to add gpu-wayland socket to the event loop")?;
+
+- info!(socket_name, ?render_node, "Added gpu-specific socket.");
++ info!(wayland_display, ?render_node, "Added gpu-specific socket.");
+
+ Ok(Socket {
+ token,
+diff --git a/src/dbus/mod.rs b/src/dbus/mod.rs
+index 5b9754c3..beddd52c 100644
+--- a/src/dbus/mod.rs
++++ b/src/dbus/mod.rs
+@@ -154,7 +154,7 @@ pub fn ready(common: &Common) -> Result<()> {
+ let dbus = zbus::fdo::DBusProxy::new(conn).await?;
+
+ dbus.update_activation_environment(HashMap::from([
+- ("WAYLAND_DISPLAY", common.socket.to_str().unwrap()),
++ ("WAYLAND_DISPLAY", common.wayland_display.to_str().unwrap()),
+ (
+ "DISPLAY",
+ &common
+diff --git a/src/input/actions.rs b/src/input/actions.rs
+index 3d017697..dccb81cf 100644
+--- a/src/input/actions.rs
++++ b/src/input/actions.rs
+@@ -1054,7 +1054,7 @@ impl State {
+ data.user_data
+ .insert_if_missing(move || ActivationContext::Workspace(handle));
+
+- let wayland_display = self.common.socket.clone();
++ let wayland_display = self.common.wayland_display.clone();
+ let display = self
+ .common
+ .xwayland_state
+diff --git a/src/lib.rs b/src/lib.rs
+index 09d1b961..c76877f3 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -19,8 +19,8 @@ use anyhow::{Context, Result};
+ use state::{LastRefresh, State};
+ use std::{
+ env,
+- ffi::OsString,
+ os::unix::process::CommandExt,
++ path::PathBuf,
+ process,
+ sync::Arc,
+ time::{Duration, Instant},
+@@ -161,17 +161,17 @@ pub fn run(hooks: crate::hooks::Hooks) -> Result<(), Box<dyn Error>> {
+ // init event loop
+ let mut event_loop = EventLoop::try_new().with_context(|| "Failed to initialize event loop")?;
+ // init wayland
+- let (display, socket) = init_wayland_display(&mut event_loop)?;
++ let (display_handle, wayland_display) = init_wayland_display(&mut event_loop)?;
+ // init state
+ let mut state = state::State::new(
+- &display,
+- socket,
++ &display_handle,
++ wayland_display,
+ event_loop.handle(),
+ event_loop.get_signal(),
+ with_xwayland,
+ );
+ // init backend
+- backend::init_backend_auto(&display, &mut event_loop, &mut state)?;
++ backend::init_backend_auto(&display_handle, &mut event_loop, &mut state)?;
+
+ if let Err(err) = theme::watch_theme(event_loop.handle()) {
+ warn!(?err, "Failed to watch theme");
+@@ -264,13 +264,13 @@ Options:
+
+ fn init_wayland_display(
+ event_loop: &mut EventLoop<state::State>,
+-) -> Result<(DisplayHandle, OsString)> {
++) -> Result<(DisplayHandle, PathBuf)> {
+ let display = Display::new().unwrap();
+ let handle = display.handle();
+
+ let source = ListeningSocketSource::new_auto().unwrap();
+- let socket_name = source.socket_name().to_os_string();
+- info!("Listening on {:?}", socket_name);
++ let socket_path = source.socket_path().to_path_buf();
++ info!("Listening on {:?}", socket_path);
+
+ event_loop
+ .handle()
+@@ -303,7 +303,7 @@ fn init_wayland_display(
+ )
+ .with_context(|| "Failed to init the wayland event source.")?;
+
+- Ok((handle, socket_name))
++ Ok((handle, socket_path))
+ }
+
+ fn refresh(state: &mut State) {
+diff --git a/src/session.rs b/src/session.rs
+index 0b4025a6..b9f40eb3 100644
+--- a/src/session.rs
++++ b/src/session.rs
+@@ -61,8 +61,9 @@ pub fn get_env(common: &Common) -> Result<HashMap<String, String>> {
+ env.insert(
+ String::from("WAYLAND_DISPLAY"),
+ common
+- .socket
++ .wayland_display
+ .clone()
++ .into_os_string()
+ .into_string()
+ .map_err(|_| anyhow!("wayland socket is no valid utf-8 string?"))?,
+ );
+diff --git a/src/state.rs b/src/state.rs
+index 18de36ba..9af9c20b 100644
+--- a/src/state.rs
++++ b/src/state.rs
+@@ -124,7 +124,7 @@ use std::{
+ cell::RefCell,
+ cmp::min,
+ collections::HashSet,
+- ffi::OsString,
++ path::PathBuf,
+ process::Child,
+ sync::{Arc, LazyLock, Once, atomic::AtomicBool},
+ time::{Duration, Instant},
+@@ -230,7 +230,7 @@ smithay::delegate_dispatch2!(State);
+ pub struct Common {
+ pub config: Config,
+
+- pub socket: OsString,
++ pub wayland_display: PathBuf,
+ pub display_handle: DisplayHandle,
+ pub event_loop_handle: LoopHandle<'static, State>,
+ pub event_loop_signal: LoopSignal,
+@@ -625,7 +625,7 @@ fn client_not_sandboxed(client: &Client) -> bool {
+ impl State {
+ pub fn new(
+ dh: &DisplayHandle,
+- socket: OsString,
++ wayland_display: PathBuf,
+ handle: LoopHandle<'static, State>,
+ signal: LoopSignal,
+ with_xwayland: bool,
+@@ -734,7 +734,7 @@ impl State {
+ State {
+ common: Common {
+ config,
+- socket,
++ wayland_display,
+ display_handle: dh.clone(),
+ event_loop_handle: handle,
+ event_loop_signal: signal,
+diff --git a/src/systemd.rs b/src/systemd.rs
+index 422d91c9..3848e215 100644
+--- a/src/systemd.rs
++++ b/src/systemd.rs
+@@ -9,7 +9,7 @@ pub fn ready(common: &Common) {
+ if booted() {
+ match Command::new("systemctl")
+ .args(["--user", "import-environment", "WAYLAND_DISPLAY", "DISPLAY"])
+- .env("WAYLAND_DISPLAY", &common.socket)
++ .env("WAYLAND_DISPLAY", &common.wayland_display)
+ .env(
+ "DISPLAY",
+ common
+--
+2.54.0
+
+
+From f3f5d571ff68a72b608368b049c39b2f40986154 Mon Sep 17 00:00:00 2001
+From: Alyssa Ross <hi@alyssa.is>
+Date: Fri, 26 Jun 2026 18:26:36 +0200
+Subject: [PATCH 2/2] Add --socket-path argument
+
+This allows specifying an absolute path where cosmic-comp will put its
+Wayland socket. This is useful for integrated systems that know
+they'll have a single seat, and benefit from the predictability of a
+known path for it. It also makes it easier to implement strong
+privilege separation on such systems, by enabling running clients as
+different users than the compositor (with different XDG_RUNTIME_DIRs).
+---
+ src/lib.rs | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/lib.rs b/src/lib.rs
+index c76877f3..652b079d 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -115,6 +115,7 @@ pub fn run(hooks: crate::hooks::Hooks) -> Result<(), Box<dyn Error>> {
+ let mut cursor = raw_args.cursor();
+ let git_hash = option_env!("GIT_HASH").unwrap_or("unknown");
+
++ let mut socket_path = None;
+ let mut with_xwayland = true;
+ // Parse the arguments
+ while let Some(arg) = raw_args.next_os(&mut cursor) {
+@@ -127,6 +128,10 @@ pub fn run(hooks: crate::hooks::Hooks) -> Result<(), Box<dyn Error>> {
+ tracing::info!("Running without Xwayland");
+ with_xwayland = false;
+ }
++ Some("--socket-path") => {
++ let path = raw_args.next_os(&mut cursor).expect("no socket name given");
++ socket_path = Some(path.into());
++ }
+ Some("--version") | Some("-V") => {
+ println!(
+ "cosmic-comp {} (git commit {})",
+@@ -161,7 +166,7 @@ pub fn run(hooks: crate::hooks::Hooks) -> Result<(), Box<dyn Error>> {
+ // init event loop
+ let mut event_loop = EventLoop::try_new().with_context(|| "Failed to initialize event loop")?;
+ // init wayland
+- let (display_handle, wayland_display) = init_wayland_display(&mut event_loop)?;
++ let (display_handle, wayland_display) = init_wayland_display(socket_path, &mut event_loop)?;
+ // init state
+ let mut state = state::State::new(
+ &display_handle,
+@@ -263,12 +268,18 @@ Options:
+ }
+
+ fn init_wayland_display(
++ socket_path: Option<PathBuf>,
+ event_loop: &mut EventLoop<state::State>,
+ ) -> Result<(DisplayHandle, PathBuf)> {
+ let display = Display::new().unwrap();
+ let handle = display.handle();
+
+- let source = ListeningSocketSource::new_auto().unwrap();
++ let source = if let Some(socket_path) = socket_path {
++ ListeningSocketSource::with_path(socket_path).unwrap()
++ } else {
++ ListeningSocketSource::new_auto().unwrap()
++ };
++
+ let socket_path = source.socket_path().to_path_buf();
+ info!("Listening on {:?}", socket_path);
+
+--
+2.54.0
+
diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix
index 62bef7d5..83691faf 100644
--- a/pkgs/overlay.nix
+++ b/pkgs/overlay.nix
@@ -2,6 +2,8 @@
# SPDX-License-Identifier: MIT
(final: super: {
+ cosmic-comp = import ./cosmic-comp { inherit final super; };
+
cloud-hypervisor = import ./cloud-hypervisor { inherit final super; };
flatpak = super.flatpak.override (
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 3/6] Revert "host/rootfs/Makefile: don't pass -display to QEMU"
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 1/6] pkgs: s6: fix s6-notify-fd-from-socket Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 2/6] pkgs: cosmic-comp: support custom socket path Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL" Alyssa Ross
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
This reverts commit 09b991c409278151ed35e5b9f1a6752c1734816c.
We need to enable gl again for COSMIC.
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
host/rootfs/Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile
index 4f01e3ec..489bd6a3 100644
--- a/host/rootfs/Makefile
+++ b/host/rootfs/Makefile
@@ -137,6 +137,7 @@ run: build/empty build/live.img $(ROOTFS_VERITY_ROOTHASH)
-machine virtualization=on \
-kernel $(KERNEL) \
-initrd $(INITRAMFS) \
+ -display gtk \
-gdb unix:build/gdb.sock,server,nowait \
-qmp unix:build/vmm.sock,server,nowait \
-monitor vc \
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL"
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
` (2 preceding siblings ...)
2026-07-10 19:59 ` [RFC PATCH 3/6] Revert "host/rootfs/Makefile: don't pass -display to QEMU" Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
2026-07-10 20:49 ` Demi Marie Obenour
2026-07-10 19:59 ` [RFC PATCH 5/6] host/rootfs: make run: use virgl virtio-gpu Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 6/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
5 siblings, 1 reply; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
This reverts commit 1ffefee2ae391e934a265294164596b341b2c77a.
This was disabled because it wasn't necessary at the time, and enabled
development on systems without GPU acceleration. COSMIC needs it
though, so we have to raise our requirement.
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
host/rootfs/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile
index 489bd6a3..873a4d15 100644
--- a/host/rootfs/Makefile
+++ b/host/rootfs/Makefile
@@ -137,7 +137,7 @@ run: build/empty build/live.img $(ROOTFS_VERITY_ROOTHASH)
-machine virtualization=on \
-kernel $(KERNEL) \
-initrd $(INITRAMFS) \
- -display gtk \
+ -display gtk,gl=on \
-gdb unix:build/gdb.sock,server,nowait \
-qmp unix:build/vmm.sock,server,nowait \
-monitor vc \
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 5/6] host/rootfs: make run: use virgl virtio-gpu
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
` (3 preceding siblings ...)
2026-07-10 19:59 ` [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL" Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 6/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
5 siblings, 0 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
This was mistakenly changed to virtio-gpu 2D when VGA was disabled.
Fixes: cad2d82f ("host/rootfs: Makefile: don't use virtio-vga-gl")
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
host/rootfs/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile
index 873a4d15..cddf2835 100644
--- a/host/rootfs/Makefile
+++ b/host/rootfs/Makefile
@@ -150,7 +150,7 @@ run: build/empty build/live.img $(ROOTFS_VERITY_ROOTHASH)
-append "earlycon console=hvc0 roothash=$$(< $(ROOT_FS_VERITY_ROOTHASH)) intel_iommu=on nokaslr" \
-device virtio-keyboard \
-device virtio-mouse \
- -device virtio-gpu \
+ -device virtio-gpu-gl \
-netdev user,id=net0 \
-device e1000e,netdev=net0 \
-vga none \
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [RFC PATCH 6/6] host/rootfs: switch from Weston to cosmic-comp
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
` (4 preceding siblings ...)
2026-07-10 19:59 ` [RFC PATCH 5/6] host/rootfs: make run: use virgl virtio-gpu Alyssa Ross
@ 2026-07-10 19:59 ` Alyssa Ross
5 siblings, 0 replies; 10+ messages in thread
From: Alyssa Ross @ 2026-07-10 19:59 UTC (permalink / raw)
To: devel; +Cc: colbyt
Using Weston was always intended to be temporary — it's not designed
to be a full-featured desktop compositor, and the choice of Weston in
Spectrum was partially made to make it obvious that the compositor
would likely be swapped out later.
COSMIC is aligned with Spectrum in that it's written in a memory-safe
language, and upstream is open to adding customisation points to allow
for things we might want to do differently in Spectrum, like have
custom window decorations.
COSMIC requires the configuration directories for each component to
exist, but not the files within them, so we can include only the
configuration keys we want to set, and everything else will use the
defaults.
Signed-off-by: Alyssa Ross <hi@alyssa.is>
---
host/rootfs/Makefile | 4 +-
host/rootfs/default.nix | 37 ++++++++--------
host/rootfs/file-list.mk | 43 +++++++++++++++----
.../etc/s6-linux-init/env/XDG_RUNTIME_DIR | 1 -
.../s6-linux-init/env/XDG_RUNTIME_DIR.license | 2 -
.../run-image/service/root-terminal/run | 2 +-
.../dependencies.d/systemd-udevd-coldplug | 0
.../{weston => cosmic-comp}/notification-fd | 0
.../notification-fd.license | 0
.../etc/s6-rc/{weston => cosmic-comp}/run | 26 ++++-------
.../etc/s6-rc/{weston => cosmic-comp}/type | 0
.../{weston => cosmic-comp}/type.license | 0
.../dependencies.d/cosmic-comp} | 0
host/rootfs/image/etc/s6-rc/cosmic-panel/run | 12 ++++++
.../etc/s6-rc/{weston => cosmic-panel}/type | 0
.../image/etc/s6-rc/cosmic-panel/type.license | 2 +
.../weston => ok-all/contents.d/cosmic-panel} | 0
.../vm-env/contents.d/{weston => cosmic-comp} | 0
.../com.system76.CosmicAppList/v1/favorites | 7 +++
.../com.system76.CosmicPanel.Dock/v1/anchor | 4 ++
.../com.system76.CosmicPanel.Dock/v1/autohide | 9 ++++
.../v1/border_radius | 4 ++
.../v1/exclusive_zone | 4 ++
.../v1/expand_to_edges | 4 ++
.../v1/keyboard_interactivity | 4 ++
.../com.system76.CosmicPanel.Dock/v1/margin | 4 ++
.../com.system76.CosmicPanel.Dock/v1/name | 4 ++
.../com.system76.CosmicPanel.Dock/v1/opacity | 4 ++
.../v1/plugins_center | 6 +++
.../com.system76.CosmicPanel.Dock/v1/size | 4 ++
.../v1/autohide | 4 ++
.../v1/border_radius | 4 ++
.../v1/keyboard_interactivity | 4 ++
.../com.system76.CosmicPanel.Panel/v1/margin | 4 ++
.../com.system76.CosmicPanel.Panel/v1/name | 4 ++
.../com.system76.CosmicPanel.Panel/v1/opacity | 4 ++
.../com.system76.CosmicPanel.Panel/v1/padding | 4 ++
.../v1/plugins_center | 6 +++
.../v1/plugins_wings | 9 ++++
.../com.system76.CosmicPanel.Panel/v1/size | 4 ++
.../com.system76.CosmicPanel/v1/entries | 7 +++
host/rootfs/image/etc/xdg/weston/autolaunch | 7 ---
host/rootfs/image/etc/xdg/weston/weston.ini | 15 -------
.../org.spectrum_os.RootTerminal.desktop | 9 ++++
44 files changed, 199 insertions(+), 73 deletions(-)
delete mode 100644 host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR
delete mode 100644 host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR.license
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/dependencies.d/systemd-udevd-coldplug (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/notification-fd (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/notification-fd.license (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/run (77%)
copy host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/type (100%)
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-comp}/type.license (100%)
copy host/rootfs/image/etc/s6-rc/{vm-env/contents.d/weston => cosmic-panel/dependencies.d/cosmic-comp} (100%)
create mode 100644 host/rootfs/image/etc/s6-rc/cosmic-panel/run
rename host/rootfs/image/etc/s6-rc/{weston => cosmic-panel}/type (100%)
create mode 100644 host/rootfs/image/etc/s6-rc/cosmic-panel/type.license
copy host/rootfs/image/etc/s6-rc/{vm-env/contents.d/weston => ok-all/contents.d/cosmic-panel} (100%)
rename host/rootfs/image/etc/s6-rc/vm-env/contents.d/{weston => cosmic-comp} (100%)
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size
create mode 100644 host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries
delete mode 100755 host/rootfs/image/etc/xdg/weston/autolaunch
delete mode 100644 host/rootfs/image/etc/xdg/weston/weston.ini
create mode 100644 host/rootfs/image/usr/share/applications/org.spectrum_os.RootTerminal.desktop
diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile
index cddf2835..532c6dd6 100644
--- a/host/rootfs/Makefile
+++ b/host/rootfs/Makefile
@@ -32,10 +32,12 @@ DIRS = \
etc/s6-linux-init/run-image/service/vmm/instances \
etc/s6-linux-init/run-image/service/vmm/template/data \
etc/s6-linux-init/run-image/service/vmm/template/env \
- etc/s6-linux-init/run-image/user \
etc/s6-linux-init/run-image/vm/by-id \
etc/s6-linux-init/run-image/vm/by-name \
etc/s6-linux-init/run-image/vsock \
+ etc/xdg/cosmic/com.system76.CosmicComp/v1 \
+ etc/xdg/cosmic/com.system76.CosmicSettings.Shortcuts/v1 \
+ etc/xdg/cosmic/com.system76.CosmicSettings.WindowRules/v1 \
home \
media \
proc \
diff --git a/host/rootfs/default.nix b/host/rootfs/default.nix
index a3b02d54..e54144be 100644
--- a/host/rootfs/default.nix
+++ b/host/rootfs/default.nix
@@ -4,18 +4,19 @@
import ../../lib/call-package.nix (
{ callSpectrumPackage, config, spectrum-build-tools
-, src, pkgsMusl, inkscape, lndir, linuxPackagesFor, linux_latest
+, src, pkgsMusl, lndir, linuxPackagesFor, linux_latest
}:
pkgsMusl.callPackage (
{ spectrum-host-tools, spectrum-router
, lib, stdenvNoCC, nixos, runCommand, writeClosure, erofs-utils, s6-rc
-, btrfs-progs, bubblewrap, busybox, cloud-hypervisor, cosmic-files
-, crosvm, cryptsetup, dejavu_fonts, dbus, execline, foot, fuse3
+, btrfs-progs, bubblewrap, busybox, cloud-hypervisor, cosmic-applets
+, cosmic-comp, cosmic-files, cosmic-panel, crosvm, cryptsetup
+, dejavu_fonts, dbus, execline, fira, foot, fuse3, hicolor-icon-theme
, iproute2, inotify-tools, jq, kmod, lvm2, mdevd, mesa, mount-flatpak
-, s6, s6-linux-init, shadow, socat, systemd, util-linuxMinimal, virtiofsd
-, westonLite, xdg-desktop-portal, xdg-desktop-portal-gtk
-, xdg-desktop-portal-spectrum-host
+, pop-icon-theme, s6, s6-linux-init, shadow, socat, systemd
+, util-linuxMinimal, virtiofsd, xdg-desktop-portal
+, xdg-desktop-portal-gtk, xdg-desktop-portal-spectrum-host
}:
let
@@ -25,12 +26,11 @@ let
trivial;
packages = [
- btrfs-progs bubblewrap cloud-hypervisor cosmic-files crosvm cryptsetup dbus
- execline fuse3 inotify-tools iproute2 jq kmod mdevd mount-flatpak s6
- s6-linux-init s6-rc shadow socat spectrum-host-tools spectrum-router
- virtiofsd xdg-desktop-portal-spectrum-host
-
- (foot.override { allowPgo = false; })
+ btrfs-progs bubblewrap cloud-hypervisor cosmic-comp cosmic-panel
+ crosvm cryptsetup dbus execline fuse3 inotify-tools iproute2 jq
+ kmod mdevd mount-flatpak s6 s6-linux-init s6-rc shadow socat
+ spectrum-host-tools spectrum-router virtiofsd
+ xdg-desktop-portal-spectrum-host
(busybox.override {
# Use a separate file as it is a bit too big.
@@ -63,8 +63,11 @@ let
# It doesn't get picked up from libsystemd-shared.so's RUNPATH due to
# https://inbox.vuxu.org/musl/20251017-dlopen-use-rpath-of-caller-dso-v1-1-46c69eda1473@iscas.ac.cn/
usrPackages = [
- appvm dejavu_fonts firmware kernel.modules kmod.lib lvm2 mesa
- netvm systemd westonLite
+ appvm cosmic-applets cosmic-files dejavu_fonts fira firmware
+ hicolor-icon-theme kernel.modules kmod.lib lvm2 mesa
+ pop-icon-theme netvm systemd
+
+ (foot.override { allowPgo = false; })
];
appvms = {
@@ -75,7 +78,6 @@ let
};
packagesSysroot = runCommand "packages-sysroot" {
- depsBuildBuild = [ inkscape ];
nativeBuildInputs = [ lndir ];
src = builtins.path { name = "os-release"; path = ./os-release.in; };
} ''
@@ -88,11 +90,6 @@ let
lndir -ignorelinks -silent "$pkg" "$out/usr"
done
- # Weston doesn't support SVG icons.
- inkscape -w 20 -h 20 \
- -o $out/usr/share/icons/hicolor/20x20/apps/com.system76.CosmicFiles.png \
- ${cosmic-files}/share/icons/hicolor/24x24/apps/com.system76.CosmicFiles.svg
-
ln -st $out/usr/bin \
${concatMapStringsSep " " (p: "${p}/bin/*") packages} \
${xdg-desktop-portal}/libexec/xdg-document-portal \
diff --git a/host/rootfs/file-list.mk b/host/rootfs/file-list.mk
index 3899d620..22503354 100644
--- a/host/rootfs/file-list.mk
+++ b/host/rootfs/file-list.mk
@@ -9,7 +9,6 @@ FILES = \
image/etc/login \
image/etc/parse-devname \
image/etc/s6-linux-init/env/WAYLAND_DISPLAY \
- image/etc/s6-linux-init/env/XDG_RUNTIME_DIR \
image/etc/s6-linux-init/run-image/etc/group \
image/etc/s6-linux-init/run-image/etc/passwd \
image/etc/s6-linux-init/run-image/service/getty-tty2/run \
@@ -53,8 +52,29 @@ FILES = \
image/etc/vm-sysupdate.d/50-verity.transfer \
image/etc/vm-sysupdate.d/60-root.transfer \
image/etc/vm-sysupdate.d/70-kernel.transfer \
- image/etc/xdg/weston/autolaunch \
- image/etc/xdg/weston/weston.ini \
+ image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size \
+ image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries \
image/usr/bin/assign-devices \
image/usr/bin/create-vm-dependencies \
image/usr/bin/mount-userdata \
@@ -69,6 +89,7 @@ FILES = \
image/usr/bin/vm-stop \
image/usr/bin/xdg-open \
image/usr/libexec/net-add \
+ image/usr/share/applications/org.spectrum_os.RootTerminal.desktop \
image/usr/share/dbus-1/services/org.freedesktop.portal.Documents.service
LINKS = \
@@ -84,6 +105,14 @@ LINKS = \
S6_RC_FILES = \
image/etc/s6-rc/core/type \
image/etc/s6-rc/core/up \
+ image/etc/s6-rc/cosmic-comp/dependencies.d/systemd-udevd-coldplug \
+ image/etc/s6-rc/cosmic-comp/notification-fd \
+ image/etc/s6-rc/cosmic-comp/run \
+ image/etc/s6-rc/cosmic-comp/type \
+ image/etc/s6-rc/cosmic-panel/dependencies.d/cosmic-comp \
+ image/etc/s6-rc/cosmic-panel/run \
+ image/etc/s6-rc/cosmic-panel/type \
+ image/etc/s6-rc/ok-all/contents.d/cosmic-panel \
image/etc/s6-rc/ok-all/contents.d/sys-vmms \
image/etc/s6-rc/ok-all/contents.d/systemd-udevd-coldplug \
image/etc/s6-rc/ok-all/contents.d/vm-env \
@@ -99,15 +128,11 @@ S6_RC_FILES = \
image/etc/s6-rc/systemd-udevd/notification-fd \
image/etc/s6-rc/systemd-udevd/run \
image/etc/s6-rc/systemd-udevd/type \
+ image/etc/s6-rc/vm-env/contents.d/cosmic-comp \
image/etc/s6-rc/vm-env/contents.d/static-nodes \
image/etc/s6-rc/vm-env/contents.d/systemd-udevd-coldplug \
- image/etc/s6-rc/vm-env/contents.d/weston \
image/etc/s6-rc/vm-env/type \
image/etc/s6-rc/vmm-env/contents.d/core \
image/etc/s6-rc/vmm-env/contents.d/static-nodes \
image/etc/s6-rc/vmm-env/contents.d/systemd-udevd-coldplug \
- image/etc/s6-rc/vmm-env/type \
- image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug \
- image/etc/s6-rc/weston/notification-fd \
- image/etc/s6-rc/weston/run \
- image/etc/s6-rc/weston/type
+ image/etc/s6-rc/vmm-env/type
diff --git a/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR b/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR
deleted file mode 100644
index 70a66717..00000000
--- a/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR
+++ /dev/null
@@ -1 +0,0 @@
-/run/user/0
diff --git a/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR.license b/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR.license
deleted file mode 100644
index 555b5d4f..00000000
--- a/host/rootfs/image/etc/s6-linux-init/env/XDG_RUNTIME_DIR.license
+++ /dev/null
@@ -1,2 +0,0 @@
-SPDX-FileCopyrightText: 2024 Alyssa Ross <hi@alyssa.is>
-SPDX-License-Identifier: CC0-1.0
diff --git a/host/rootfs/image/etc/s6-linux-init/run-image/service/root-terminal/run b/host/rootfs/image/etc/s6-linux-init/run-image/service/root-terminal/run
index 86b9a1ef..9997d2a5 100755
--- a/host/rootfs/image/etc/s6-linux-init/run-image/service/root-terminal/run
+++ b/host/rootfs/image/etc/s6-linux-init/run-image/service/root-terminal/run
@@ -14,4 +14,4 @@ exec -c
/bin/export WAYLAND_DISPLAY ""
s6-sudod
cd /
-weston-terminal
+foot -a org.spectrum_os.RootTerminal -T "Root Terminal"
diff --git a/host/rootfs/image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug b/host/rootfs/image/etc/s6-rc/cosmic-comp/dependencies.d/systemd-udevd-coldplug
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/weston/dependencies.d/systemd-udevd-coldplug
rename to host/rootfs/image/etc/s6-rc/cosmic-comp/dependencies.d/systemd-udevd-coldplug
diff --git a/host/rootfs/image/etc/s6-rc/weston/notification-fd b/host/rootfs/image/etc/s6-rc/cosmic-comp/notification-fd
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/weston/notification-fd
rename to host/rootfs/image/etc/s6-rc/cosmic-comp/notification-fd
diff --git a/host/rootfs/image/etc/s6-rc/weston/notification-fd.license b/host/rootfs/image/etc/s6-rc/cosmic-comp/notification-fd.license
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/weston/notification-fd.license
rename to host/rootfs/image/etc/s6-rc/cosmic-comp/notification-fd.license
diff --git a/host/rootfs/image/etc/s6-rc/weston/run b/host/rootfs/image/etc/s6-rc/cosmic-comp/run
similarity index 77%
rename from host/rootfs/image/etc/s6-rc/weston/run
rename to host/rootfs/image/etc/s6-rc/cosmic-comp/run
index 8b065ee9..4e2155d4 100644
--- a/host/rootfs/image/etc/s6-rc/weston/run
+++ b/host/rootfs/image/etc/s6-rc/cosmic-comp/run
@@ -1,6 +1,6 @@
#!/bin/execlineb -WP
# SPDX-License-Identifier: EUPL-1.2+
-# SPDX-FileCopyrightText: 2021, 2025 Alyssa Ross <hi@alyssa.is>
+# SPDX-FileCopyrightText: 2021, 2023, 2025-2026 Alyssa Ross <hi@alyssa.is>
importas -Siu WAYLAND_DISPLAY
@@ -24,26 +24,17 @@ background {
fdclose 4
fdclose 5
-# Workaround for
-# https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1911
-if { mkdir -p -m 0700 /run/user/0 }
-
-backtick USER { id -un }
-backtick HOME {
- importas -i user USER
- homeof $user
-}
-
if { install -do wayland -g wayland -m 0770 /run/wayland }
if { chown wayland /dev/tty0 /dev/tty1 }
+export XDG_CONFIG_HOME /etc/xdg
redirfd -r 0 /dev/tty1
-importas -i home HOME
-cd $home
if { udevadm settle }
+s6-notify-fd-from-socket -33
s6-setuidgid wayland
bwrap
- # no --unshare-net, breaks udev hotplug
+ # no --unshare-net, broke Weston's udev hotplug and readiness notification
+ # uses abstract namespace socket.
--unshare-ipc
--unshare-uts
--unshare-cgroup
@@ -84,8 +75,9 @@ bwrap
--dev-bind /dev/tty0 /dev/tty0
# Kernel console
--dev-bind /dev/console /dev/console
- # So that Weston can create its listening socket
- --bind /run/user/0 /run/user/0
+ # Listening socket
--bind /run/wayland /run/wayland
+ # Workaround for https://github.com/pop-os/cosmic-comp/pull/2547
+ --dir /run/systemd/system
--
-weston -S $WAYLAND_DISPLAY
+cosmic-comp --no-xwayland --socket-path $WAYLAND_DISPLAY
diff --git a/host/rootfs/image/etc/s6-rc/weston/type b/host/rootfs/image/etc/s6-rc/cosmic-comp/type
similarity index 100%
copy from host/rootfs/image/etc/s6-rc/weston/type
copy to host/rootfs/image/etc/s6-rc/cosmic-comp/type
diff --git a/host/rootfs/image/etc/s6-rc/weston/type.license b/host/rootfs/image/etc/s6-rc/cosmic-comp/type.license
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/weston/type.license
rename to host/rootfs/image/etc/s6-rc/cosmic-comp/type.license
diff --git a/host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston b/host/rootfs/image/etc/s6-rc/cosmic-panel/dependencies.d/cosmic-comp
similarity index 100%
copy from host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston
copy to host/rootfs/image/etc/s6-rc/cosmic-panel/dependencies.d/cosmic-comp
diff --git a/host/rootfs/image/etc/s6-rc/cosmic-panel/run b/host/rootfs/image/etc/s6-rc/cosmic-panel/run
new file mode 100644
index 00000000..37b13f0f
--- /dev/null
+++ b/host/rootfs/image/etc/s6-rc/cosmic-panel/run
@@ -0,0 +1,12 @@
+#!/bin/execlineb -P
+# SPDX-License-Identifier: EUPL-1.2+
+# SPDX-FileCopyrightText: 2021, 2023 Alyssa Ross <hi@alyssa.is>
+
+# Really cosmic-panel should look here by default, but it doesn't
+# properly implement the XDG Base Directories spec.
+export XDG_CONFIG_HOME /etc/xdg
+
+# TODO: this should be fixed in Nixpkgs libcosmicAppHook
+export XDG_DATA_DIRS /usr/share
+
+cosmic-panel
diff --git a/host/rootfs/image/etc/s6-rc/weston/type b/host/rootfs/image/etc/s6-rc/cosmic-panel/type
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/weston/type
rename to host/rootfs/image/etc/s6-rc/cosmic-panel/type
diff --git a/host/rootfs/image/etc/s6-rc/cosmic-panel/type.license b/host/rootfs/image/etc/s6-rc/cosmic-panel/type.license
new file mode 100644
index 00000000..a941ca49
--- /dev/null
+++ b/host/rootfs/image/etc/s6-rc/cosmic-panel/type.license
@@ -0,0 +1,2 @@
+SPDX-License-Identifier: CC0-1.0
+SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
diff --git a/host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston b/host/rootfs/image/etc/s6-rc/ok-all/contents.d/cosmic-panel
similarity index 100%
copy from host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston
copy to host/rootfs/image/etc/s6-rc/ok-all/contents.d/cosmic-panel
diff --git a/host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston b/host/rootfs/image/etc/s6-rc/vm-env/contents.d/cosmic-comp
similarity index 100%
rename from host/rootfs/image/etc/s6-rc/vm-env/contents.d/weston
rename to host/rootfs/image/etc/s6-rc/vm-env/contents.d/cosmic-comp
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites
new file mode 100644
index 00000000..d590137c
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicAppList/v1/favorites
@@ -0,0 +1,7 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+[
+ "org.spectrum_os.RootTerminal",
+ "com.system76.CosmicFiles",
+]
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor
new file mode 100644
index 00000000..9d8289d3
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/anchor
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+Bottom
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide
new file mode 100644
index 00000000..a174e885
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/autohide
@@ -0,0 +1,9 @@
+// SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+Some((
+ wait_time: 500,
+ transition_time: 200,
+ handle_size: 2,
+ unhide_delay: 200,
+))
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius
new file mode 100644
index 00000000..6c134b61
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/border_radius
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+12
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone
new file mode 100644
index 00000000..649e8da1
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/exclusive_zone
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+false
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges
new file mode 100644
index 00000000..649e8da1
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/expand_to_edges
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+false
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity
new file mode 100644
index 00000000..8c8f42ee
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/keyboard_interactivity
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+OnDemand
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin
new file mode 100644
index 00000000..975df65f
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/margin
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name
new file mode 100644
index 00000000..765e2670
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/name
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+"Dock"
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity
new file mode 100644
index 00000000..6fc91781
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/opacity
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+1.0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center
new file mode 100644
index 00000000..7c9eaffa
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/plugins_center
@@ -0,0 +1,6 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+Some([
+ "com.system76.CosmicAppList",
+])
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size
new file mode 100644
index 00000000..09edcd5e
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Dock/v1/size
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+L
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide
new file mode 100644
index 00000000..705322df
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/autohide
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+None
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius
new file mode 100644
index 00000000..975df65f
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/border_radius
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity
new file mode 100644
index 00000000..8c8f42ee
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/keyboard_interactivity
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+OnDemand
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin
new file mode 100644
index 00000000..975df65f
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/margin
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name
new file mode 100644
index 00000000..ddea5ce9
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/name
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+"Panel"
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity
new file mode 100644
index 00000000..6fc91781
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/opacity
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+1.0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding
new file mode 100644
index 00000000..964ccc50
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/padding
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2026 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+0
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center
new file mode 100644
index 00000000..a6566936
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_center
@@ -0,0 +1,6 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+Some([
+ "com.system76.CosmicAppletTime",
+])
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings
new file mode 100644
index 00000000..2078e056
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/plugins_wings
@@ -0,0 +1,9 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+Some((
+ [
+ "com.system76.CosmicAppletWorkspaces",
+ ],
+ [],
+))
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size
new file mode 100644
index 00000000..ada95c5c
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel.Panel/v1/size
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+XS
diff --git a/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries
new file mode 100644
index 00000000..07b08d8e
--- /dev/null
+++ b/host/rootfs/image/etc/xdg/cosmic/com.system76.CosmicPanel/v1/entries
@@ -0,0 +1,7 @@
+// SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+// SPDX-License-Identifier: CC0-1.0
+
+[
+ "Panel",
+ "Dock",
+]
diff --git a/host/rootfs/image/etc/xdg/weston/autolaunch b/host/rootfs/image/etc/xdg/weston/autolaunch
deleted file mode 100755
index 196c1377..00000000
--- a/host/rootfs/image/etc/xdg/weston/autolaunch
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/execlineb -WP
-# SPDX-License-Identifier: EUPL-1.2+
-# SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is>
-
-# Notify readiness
-fdmove 1 3
-echo
diff --git a/host/rootfs/image/etc/xdg/weston/weston.ini b/host/rootfs/image/etc/xdg/weston/weston.ini
deleted file mode 100644
index a4763c6d..00000000
--- a/host/rootfs/image/etc/xdg/weston/weston.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-# SPDX-FileCopyrightText: 2021, 2024 Alyssa Ross <hi@alyssa.is>
-
-[autolaunch]
-path=/etc/xdg/weston/autolaunch
-
-[launcher]
-icon=/usr/share/weston/icon_terminal.png
-displayname=Root Terminal
-path=/bin/root-terminal
-
-[launcher]
-icon=/usr/share/icons/hicolor/20x20/apps/com.system76.CosmicFiles.png
-displayname=Files
-path=/bin/cosmic-files
diff --git a/host/rootfs/image/usr/share/applications/org.spectrum_os.RootTerminal.desktop b/host/rootfs/image/usr/share/applications/org.spectrum_os.RootTerminal.desktop
new file mode 100644
index 00000000..ff46caf1
--- /dev/null
+++ b/host/rootfs/image/usr/share/applications/org.spectrum_os.RootTerminal.desktop
@@ -0,0 +1,9 @@
+# SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+# SPDX-License-Identifier: CC0-1.0
+
+[Desktop Entry]
+Type=Application
+Name=Root Terminal
+Icon=foot
+Exec=/bin/root-terminal
+StartupWMClass=foot
--
2.54.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL"
2026-07-10 19:59 ` [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL" Alyssa Ross
@ 2026-07-10 20:49 ` Demi Marie Obenour
2026-07-12 18:05 ` Alyssa Ross
0 siblings, 1 reply; 10+ messages in thread
From: Demi Marie Obenour @ 2026-07-10 20:49 UTC (permalink / raw)
To: Alyssa Ross, devel; +Cc: colbyt
[-- Attachment #1.1: Type: text/plain, Size: 1186 bytes --]
On 7/10/26 15:59, Alyssa Ross wrote:
> This reverts commit 1ffefee2ae391e934a265294164596b341b2c77a.
>
> This was disabled because it wasn't necessary at the time, and enabled
> development on systems without GPU acceleration. COSMIC needs it
> though, so we have to raise our requirement.
Will this break running spectrum on systems with no GPU?
I generally do my development on a remote server that doesn't have
a GPU, as it is able to perform builds very quickly.
> Signed-off-by: Alyssa Ross <hi@alyssa.is>
> ---
> host/rootfs/Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/host/rootfs/Makefile b/host/rootfs/Makefile
> index 489bd6a3..873a4d15 100644
> --- a/host/rootfs/Makefile
> +++ b/host/rootfs/Makefile
> @@ -137,7 +137,7 @@ run: build/empty build/live.img $(ROOTFS_VERITY_ROOTHASH)
> -machine virtualization=on \
> -kernel $(KERNEL) \
> -initrd $(INITRAMFS) \
> - -display gtk \
> + -display gtk,gl=on \
> -gdb unix:build/gdb.sock,server,nowait \
> -qmp unix:build/vmm.sock,server,nowait \
> -monitor vc \
--
Sincerely,
Demi Marie Obenour (she/her/hers)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL"
2026-07-10 20:49 ` Demi Marie Obenour
@ 2026-07-12 18:05 ` Alyssa Ross
2026-07-13 17:02 ` Demi Marie Obenour
0 siblings, 1 reply; 10+ messages in thread
From: Alyssa Ross @ 2026-07-12 18:05 UTC (permalink / raw)
To: Demi Marie Obenour; +Cc: colbyt, devel
[-- Attachment #1: Type: text/plain, Size: 577 bytes --]
Demi Marie Obenour <demiobenour@gmail.com> writes:
> On 7/10/26 15:59, Alyssa Ross wrote:
>> This reverts commit 1ffefee2ae391e934a265294164596b341b2c77a.
>>
>> This was disabled because it wasn't necessary at the time, and enabled
>> development on systems without GPU acceleration. COSMIC needs it
>> though, so we have to raise our requirement.
>
> Will this break running spectrum on systems with no GPU?
>
> I generally do my development on a remote server that doesn't have
> a GPU, as it is able to perform builds very quickly.
Can they use llvmpipe?
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL"
2026-07-12 18:05 ` Alyssa Ross
@ 2026-07-13 17:02 ` Demi Marie Obenour
0 siblings, 0 replies; 10+ messages in thread
From: Demi Marie Obenour @ 2026-07-13 17:02 UTC (permalink / raw)
To: Alyssa Ross; +Cc: colbyt, devel
[-- Attachment #1.1: Type: text/plain, Size: 751 bytes --]
On 7/12/26 14:05, Alyssa Ross wrote:
> Demi Marie Obenour <demiobenour@gmail.com> writes:
>
>> On 7/10/26 15:59, Alyssa Ross wrote:
>>> This reverts commit 1ffefee2ae391e934a265294164596b341b2c77a.
>>>
>>> This was disabled because it wasn't necessary at the time, and enabled
>>> development on systems without GPU acceleration. COSMIC needs it
>>> though, so we have to raise our requirement.
>>
>> Will this break running spectrum on systems with no GPU?
>>
>> I generally do my development on a remote server that doesn't have
>> a GPU, as it is able to perform builds very quickly.
>
> Can they use llvmpipe?
Almost certainly yes, unless it's missing something important.
--
Sincerely,
Demi Marie Obenour (she/her/hers)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-07-13 17:02 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-10 19:59 [RFC PATCH 0/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 1/6] pkgs: s6: fix s6-notify-fd-from-socket Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 2/6] pkgs: cosmic-comp: support custom socket path Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 3/6] Revert "host/rootfs/Makefile: don't pass -display to QEMU" Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 4/6] Revert "host/rootfs: Makefile: don't use QEMU with GL" Alyssa Ross
2026-07-10 20:49 ` Demi Marie Obenour
2026-07-12 18:05 ` Alyssa Ross
2026-07-13 17:02 ` Demi Marie Obenour
2026-07-10 19:59 ` [RFC PATCH 5/6] host/rootfs: make run: use virgl virtio-gpu Alyssa Ross
2026-07-10 19:59 ` [RFC PATCH 6/6] host/rootfs: switch from Weston to cosmic-comp Alyssa Ross
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).