From: Alyssa Ross <hi@alyssa.is>
To: devel@spectrum-os.org
Cc: colbyt <colby@colbyt.com>
Subject: [RFC PATCH 6/6] host/rootfs: switch from Weston to cosmic-comp
Date: Fri, 10 Jul 2026 21:59:07 +0200 [thread overview]
Message-ID: <20260710195907.98981-7-hi@alyssa.is> (raw)
In-Reply-To: <20260710195907.98981-1-hi@alyssa.is>
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
prev parent reply other threads:[~2026-07-10 20:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
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 ` Alyssa Ross [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260710195907.98981-7-hi@alyssa.is \
--to=hi@alyssa.is \
--cc=colby@colbyt.com \
--cc=devel@spectrum-os.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).