Skip to content

New package: cosmic-1.5.0 - #61854

Closed
mendescotta wants to merge 102 commits into
void-linux:masterfrom
mendescotta:cosmic-1.5.0-testing
Closed

New package: cosmic-1.5.0#61854
mendescotta wants to merge 102 commits into
void-linux:masterfrom
mendescotta:cosmic-1.5.0-testing

Conversation

@mendescotta

Copy link
Copy Markdown

Summary

Adds the COSMIC desktop environment (v1.5.0) to Void Linux, packaging the full System76/Pop!_OS COSMIC stack (compositor, panel, settings, app launcher, greeter, applets, etc.) plus supporting dependencies.

This builds on and cross-references #61599, which proposed the same desktop earlier. Relative to that PR:

  • A handful of packages (cosmic-comp, cosmic-bg, cosmic-greeter, cosmic-launcher, cosmic-notifications, cosmic-settings, cosmic-term) track newer upstream commits past the epoch-1.5.0 tag to pick up fixes landed since the tag.
  • cosmic-panel and cosmic-session include two additional fixes:
    • cosmic-panel: patches the vendored iced_winit SCTK event loop so it exits cleanly instead of panicking when the compositor tears down the Wayland connection (e.g. on logout).
    • cosmic-session: lowers the default tracing filter from INFO to WARN so session startup doesn't spam raw log lines to tty1 before the compositor takes over the display, consistent with the rest of the session binaries in this set.
  • Adds blocaled, cosmic-initial-setup, and cosmic-store, plus a top-level cosmic meta-package matching Void's convention for desktop environments (gnome, kde5, xfce4, ...), folded in from New package: cosmic-1.5.0 #61599 for completeness.

Test plan

  • ./xbps-src pkg cosmic builds the full dependency chain from a clean masterdir
  • Boots into a COSMIC session via start-cosmic / display manager (tested locally with cosmic-greeter)
  • Logout does not panic cosmic-panel (regression check for the iced_winit fix)
  • cosmic-store and cosmic-initial-setup launch and function

mendescotta and others added 26 commits July 19, 2026 13:42
elogind ships a D-Bus activation file for org.freedesktop.login1. If
anything requests that name at boot before the supervised elogind has
claimed it, dbus spawns an unsupervised elogind that wins the race and
holds the name forever; the runit elogind service then crash-loops
("elogind is already running as PID x") and the greeter's
'sv check elogind' gate never passes, so greetd never starts. The race
direction is a coin flip on every boot.

Before the elogind check, kill any elogind process whose PID does not
match runit's supervise/pid so the supervised instance can claim the
name on its next restart. No-op on healthy boots; skipped when the
elogind service isn't enabled so a deliberately unsupervised elogind is
never touched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…alls

Two bugs left every fresh install without a working _cosmicgreeter
account:

- _cosmicgreeter_groups used a space separator, but the system-accounts
  trigger passes it to 'useradd -G', which takes a comma-separated
  list. 'input' became a stray positional argument and useradd failed
  with a usage error the trigger discards, so the user was silently
  never created. Use video,input.

- make_dirs had only a path, but the mkdirs trigger expects
  'path mode owner group' (also the cause of the 'shift: can't shift
  that many' warning on removal), so /var/lib/cosmic-greeter was never
  created. Use 0755 _cosmicgreeter _cosmicgreeter, matching regreet.

Existing installs never hit this because their account predated these
vars; verified by fresh install from a fully purged system (no user,
group, or homedir): both are now created correctly by the triggers.

Bump revision to 5 (also covers the previous commit's run script fix).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lformed Dark builder palette)

Two bugs in resources/default_schema shipped to /usr/share/cosmic:

- com.system76.CosmicTheme.{Dark,Light}/v2/ lack the list_button key
  that Theme #[version = 2] requires (libcosmic 8cb10bf); cosmic-config
  does not fall back to v1, so cosmic-greeter-daemon logged
  GetKey("list_button", NotFound) on every boot.
- com.system76.CosmicTheme.Dark.Builder/v2/palette is a bare
  CosmicPaletteInner struct, but ThemeBuilder.palette is the externally
  tagged CosmicPalette enum, so RON parsing failed with
  ExpectedIdentifier at 1:1. Wrap it in Dark(...) to match the already
  correct Light builder palette.

Both errors were non-fatal (defaults were substituted) but spammed
tty1 and the daemon log on every boot.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…iles

resources/default_schema was missing the defaults key for
com.system76.CosmicSettings.Shortcuts and the tiling_exception_defaults
key for com.system76.CosmicSettings.WindowRules, causing GetKey(NotFound)
/ NoConfigDirectory errors on every cosmic-comp startup (non-fatal,
falls back to empty defaults, but noisy).
Re-focusing/re-confirming the already-selected username in the login
field was falling back to the user's last-used session and clobbering
whatever session the user had just picked from the session dropdown.
Only reset the session pick when the username actually changes.
tracing-journald is an unconditional dependency (not gated on the
"systemd" cargo feature this template already disables), so cosmic-comp
always tried to connect to /run/systemd/journal/socket and printed a
WARN on every boot when it wasn't there. runit has no journald, so
remove the attempt entirely instead of just living with the warning;
the stdout/stderr fmt_layer was the only logger that ever worked here.
Bump all 26 templates (24 pop-os components + cosmic-desktop-full/minimal
metapackages) to COSMIC Epoch 1.4.0, revisions reset to 1, checksums
regenerated against the real epoch-1.4.0 tags.

Drop cosmic-comp/patches/fix-logind-feature-imports.patch: upstream PR
pop-os/cosmic-comp#2582 merged the identical fix.

Add configure_args="--no-default-features" to xdg-desktop-portal-cosmic:
1.4.0 flips its "systemd" cargo feature on by default, pulling in
tracing-journald and reproducing the same journald boot-noise class of bug
already fixed in cosmic-comp. Building without the default feature avoids
it entirely (confirmed tracing-journald is no longer compiled in).

All other existing patches (cosmic-comp x3, cosmic-greeter x6,
cosmic-settings x2, cosmic-applets x1) verified to still apply cleanly and
did apply during a full rebuild of all 26 packages, which succeeded
end-to-end and was installed on the host.
Every boot printed "failed to connect to journald" from cosmic-greeter,
cosmic-greeter-daemon, and the session locker on this runit system, since
there's no journald socket to connect to. The logind feature transitively
re-enables the systemd feature (and tracing-journald with it), so disabling
--no-default-features alone didn't stop the probe. Patches out the journald
layer attempt in all three binaries, always using the working stdout/stderr
fmt_layer, matching the same fix already applied to cosmic-comp. Reboot-tested
and confirmed the line is gone.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… warning

The guard read /var/service/elogind/supervise/pid before confirming via
sv check that runsv had actually written it, so on a fresh boot it could
compare against a stale/zero PID and kill the real, just-started elogind
instead of a stray - breaking pam_elogind's session-release D-Bus
connection ("Failed to release session: Transport endpoint is not
connected"). Move sv check elogind before the read to close the window.

Also split the pgrep pattern into two <=15-char calls so procps stops
warning about pattern length on every cosmic-greeter start.
Upstream repo also renamed cosmic-utils/cosmic-tweaks -> cosmic-utils/tweaks;
updated homepage/distfiles URLs to match.
Was pinned to 1.2.7; latest is a tag with no GitHub Release object so
it's easy to miss. Builds from source locally instead of relying on
the repo.sys109.de binary.
New epoch-1.4.0 COSMIC sound theme, packaging the sound files System76
ships alongside the rest of the desktop.
Power-profile management daemon. Ships a runit service instead of the
upstream systemd unit; D-Bus policy/interface/polkit files installed
as-is since those are init-system independent.
CFS/process-priority tuning daemon for desktop responsiveness. Ships a
runit service instead of the upstream systemd unit. Wires up the
optional execsnoop process-monitoring feature against Void's bcc-tools
(binary is plain "execsnoop", no -bpfcc suffix).

Needed two build workarounds for the pipewire crate's bindgen step:
Void's libclang21 only ships versioned sonames (no bare libclang.so),
so shim one in locally and point BINDGEN_EXTRA_CLANG_ARGS at the
matching clang resource-dir, since loading libclang through the shim
symlink breaks its own resource-dir autodetection.
Bumps cosmic-applets, cosmic-applibrary, cosmic-bg, cosmic-comp,
cosmic-desktop-full, cosmic-desktop-minimal, cosmic-edit, cosmic-files,
cosmic-greeter, cosmic-icons, cosmic-idle, cosmic-launcher, cosmic-monitor,
cosmic-notifications, cosmic-osd, cosmic-panel, cosmic-player, cosmic-randr,
cosmic-screenshot, cosmic-session, cosmic-settings, cosmic-settings-daemon,
cosmic-sound-theme, cosmic-term, cosmic-wallpapers, cosmic-workspaces-epoch,
pop-launcher, and xdg-desktop-portal-cosmic to epoch-1.5.0/1.5.0.

Fixes the cosmic-idle/cosmic-comp busy-loop-on-DPMS-off bug present in 1.4.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes Bella109/void-packages#7: start-cosmic hung silently when
launched from a manual TTY -> .zprofile flow, because it assumed a
greeter's PAM session had already created /run/user/$UID. Export and
create the directory if missing before proceeding.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Only mkdir when the directory is actually missing, instead of
unconditionally mkdir -p, so a pre-existing custom XDG_RUNTIME_DIR
pointing somewhere unusual is left untouched.
- system76-scheduler: new package should start at revision=1, not 2
- cosmic-greeter: add missing explanatory headers to
  disable-journald-logging.patch and 03_fix_pam.patch, matching the
  other patches in the tree
- cosmic-desktop-full: pull in cosmic-sound-theme and cosmic-tweaks,
  both missing from the metapackage's depends despite being packaged
Don't assert elogind specifically as the cause of the missing
/run/user/$UID -- the same symptom can happen for any non-PAM-managed
launch path, not just an elogind registration race.
epoch-1.5.0 (2026-07-29) is still the newest tagged release across all
pop-os/cosmic-* repos, but several component repos have real (non-i18n)
fixes on master since the tag was cut. Pin those to the specific commit
instead of waiting for the next tag, following the existing
_commit=/version=x.y.z.YYYYMMDD convention used elsewhere in the tree:

- cosmic-comp: wl-dmabuf v6 support + weblate i18n updates
- cosmic-settings: fix search unloading the active page
- cosmic-bg: dependency bump + default-config syntax fix
- cosmic-term: configurable pane borders + subpixel glyph-rect rounding
- cosmic-greeter: detect/enable logind support at runtime
- cosmic-launcher: fix flicker/close when Ctrl used as a modifier
- cosmic-notifications: delay popup creation until parent size is known

All existing patches for these packages were verified to apply cleanly
against the new sources (checked via dry-run patch against the fetched
tarballs). cosmic-session checked and confirmed already at the tag
(0 commits ahead), left unchanged. All other cosmic-*/pop-launcher/
xdg-desktop-portal-cosmic packages checked and confirmed up to date.
download.savannah.nongnu.org is broken/unreliable; switch to the
mirror host. Also updates hddtemp's hardcoded URL to match.

Based on borisv's fix:
https://codeberg.org/borisv/void-packages/commit/48a428e94262d3575edf29ff18b53b9550cfef04
…aders

- cosmic-comp: drop no_features.patch (dead code: it patches the
  Makefile's `all` target's ARGS, but do_install runs `make install`,
  and the real cargo invocation already passes --no-default-features
  via configure_args)
- cosmic-comp: fix typo in remove-systemd_servies.patch filename
- cosmic-greeter/cosmic-desktop-full/cosmic-desktop-minimal: drop
  skip_extraction=yes — it never matches a real distfile basename, so
  it silently did nothing; misleading leftover, not an intentional
  extraction skip
- cosmic-desktop-full: bump revision (missed in cbc4b65, which added
  cosmic-sound-theme/cosmic-tweaks to depends without one)
- add missing explanatory headers to the remaining patches that predate
  the cbc4b65 housekeeping pass (cosmic-greeter x4, cosmic-comp x2,
  cosmic-applets x1), matching the format already used elsewhere in
  the tree
…ping-pass content changes

Missed alongside the cosmic-desktop-full revision bump in the previous
commit -- patch content changed for all three (dropped dead
no_features.patch, renamed a typo'd patch filename, added rationale
headers to several patches), so xbps-install -u wasn't picking up the
rebuilt packages even though local binaries were rebuilt.
libcosmic's vendored iced_winit fork panics instead of exiting cleanly
when the compositor tears down the Wayland connection (e.g. on
logout): the SCTK event-loop thread re-dispatches forever after a
fatal IO error until an unrelated unwrap() further down eventually
panics.

That dependency is a cargo git dependency pinned in cosmic-panel's own
Cargo.lock, not part of this package's source tree, so it can't be
fixed with a normal srcpkgs patches/ entry. Fetch it in pre_build and
patch the checkout in place before cargo build compiles it.
cosmic-session defaults its tracing filter to INFO, unlike
cosmic-greeter's daemon/greeter/locker binaries in this checkout
(disable-journald-logging.patch), which already default to WARN.
Since there's no journald here (cosmic-session's own
disable-journald-logging.patch), every INFO line goes straight to the
raw stdout fmt_layer, which lands on tty1 during boot/login before the
compositor takes over the display.

Bring cosmic-session's default in line with the rest of this
checkout's session binaries: WARN by default, still overridable via
RUST_LOG.
Folds in packages from benjcal's void-linux#61599 that
this branch was missing: blocaled (standalone localed D-Bus service,
a dependency of cosmic-initial-setup), cosmic-initial-setup, and
cosmic-store, plus the top-level "cosmic" meta-package matching
Void's convention for desktop environments (gnome, kde5, xfce4, ...).

cosmic's depends list references this branch's existing
cosmic-applibrary package rather than adding a duplicate
cosmic-app-library -- same upstream project (pop-os/cosmic-applibrary
was renamed to cosmic-app-library upstream but the archive checksum
is identical), just keeping this branch's existing pkgname since
cosmic-desktop-full/-minimal already depend on it.
@classabbyamp

Copy link
Copy Markdown
Member

first of all, there's already an open PR for this

second of all, this does not comply with our contribution policy

@mendescotta

Copy link
Copy Markdown
Author

@classabbyamp, sorry newbie mistake 🙇🏽

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants