mirror of
https://github.com/outbackdingo/hyprcosmic.git
synced 2026-08-25 14:53:21 +00:00
Seeding the config gets the bar and the keybindings up, and then leaves
you looking at a black screen, because the autostart line that sets the
wallpaper named ~/.local/share/wallpapers/hyprcosmic/current directly.
That is a symlink import-theme --assets maintains, so it does not exist
until a theme has been imported -- which on a machine that has just
installed the package it has not.
The same line waited for the daemon with an unbounded loop:
until awww query >/dev/null 2>&1; do sleep 0.2; done
awww is a Recommends and lives in a COPR, so on a machine that never
enabled that repository nothing ever answered and the loop spun at 5 Hz
for the length of the session.
Both now live in hyprcosmic-wallpaper, which falls back to the
distribution's own images when there is no link yet, gives up on the
daemon after ten seconds, and exits 0 on every path so autostart is never
left supervising a process that cannot finish. Fedora recommends
cosmic-wallpapers so the fallback has something to find; nothing in the
dependency chain pulled it in before.
Verified against all five paths: no awww at all, a daemon that never
answers, a fresh machine with no link, a link pointing at a real file,
and a link left dangling by a deleted theme.
95 lines
4.9 KiB
Plaintext
95 lines
4.9 KiB
Plaintext
# Programs the HyprCosmic session starts after COSMIC's own components.
|
|
#
|
|
# Installed to ~/.config/hyprcosmic/autostart and read by cosmic-session's
|
|
# profile module. One command per line. Arguments and quoting work, but this is
|
|
# NOT a shell: no $VAR, no ~, no globs, no $(...). Paths must be absolute.
|
|
#
|
|
# `#` starts a comment where a word would start, so `--color=#1a1b26` is fine
|
|
# but `--color #1a1b26` is not; quote it as '#1a1b26' if you need the latter.
|
|
|
|
# Keep cosmic-config in step with cosmic.conf for the whole session: compile
|
|
# once at login, then again on every edit to it or to anything it sources.
|
|
#
|
|
# First in the file because its startup pass is what makes "the file wins" true
|
|
# at login rather than only when you last ran `apply` by hand -- whatever
|
|
# COSMIC's settings UI stored since then is overwritten before the desktop
|
|
# settles. The bar does not read cosmic-config, so the ordering is for the
|
|
# compositor's benefit, not waybar's.
|
|
#
|
|
# No --config: the default is derived from XDG_CONFIG_HOME (or HOME) inside the
|
|
# process, so unlike the waybar line below this needs no shell to find a home
|
|
# directory for it.
|
|
#
|
|
# A malformed edit is not fatal. It is reported to the session log and the last
|
|
# good configuration stays in place, so a typo cannot leave you at a broken
|
|
# desktop -- fix the file and the next save applies.
|
|
hyprcosmic-conf watch
|
|
|
|
# The bar. The layout is shared and lives under /usr/share, but the stylesheet
|
|
# has to be per-user: it imports a sibling theme.css holding the installed HyDE
|
|
# theme's palette, and a relative @import resolves against the importing file.
|
|
#
|
|
# So the style path has to name a home directory, and this file is not a shell:
|
|
# `~` and `$HOME` on a bare command line here are literal text, not expansions.
|
|
# `sh -c` is what gets them expanded, for the same reason and under the same
|
|
# terms as the wallpaper line below -- naming `sh` is naming a program, which
|
|
# this file was always allowed to do.
|
|
#
|
|
# `exec` matters. Without it sh stays in the process tree as waybar's parent,
|
|
# and cosmic-session would be supervising the shell rather than the bar: a
|
|
# waybar that died would leave sh alive, so the restart that should have
|
|
# happened never would.
|
|
sh -c 'exec waybar -c /usr/share/hyprcosmic/waybar/config.jsonc -s "$HOME/.config/hyprcosmic/waybar/style.css"'
|
|
|
|
# rofi is not a daemon. It is launched on demand by a keybinding, which COSMIC
|
|
# stores in com.system76.CosmicSettings.Shortcuts rather than here. Set those
|
|
# with `bind` lines in cosmic.conf and `cosmic-conf apply`; see config/cosmic.conf.
|
|
|
|
# Wallpaper. The hyprcosmic profile does not start cosmic-bg, so without this
|
|
# there is nothing drawing a background at all.
|
|
#
|
|
# HyDE calls this swww; upstream renamed it to awww at 0.12 and the Fedora
|
|
# package Obsoletes swww < 0.12.0. /usr/bin/swww is a shim that prints a
|
|
# deprecation warning and is documented as going away, so use the real name.
|
|
# Packaged in the alebastr/sway-extras COPR.
|
|
#
|
|
# The daemon only holds the surface -- it shows nothing until an image is set.
|
|
awww-daemon
|
|
|
|
# ...which is what this does. Without it the daemon runs, draws nothing, and you
|
|
# get a blank screen below the bar with no error anywhere: the failure is that
|
|
# nobody asked for a wallpaper, so nothing reports one missing.
|
|
#
|
|
# It sets ~/.local/share/wallpapers/hyprcosmic/current, a symlink
|
|
# `hyprcosmic-conf import-theme --assets` maintains beside the wallpapers it
|
|
# copies. The link is used rather than a real path so that this and rofi's
|
|
# local.rasi -- which shows the same image in the launcher's sidebar -- cannot
|
|
# drift apart, and so that importing a different theme does not leave either
|
|
# pointing at a file that no longer exists.
|
|
#
|
|
# Until a theme has been imported there is no such link, so on a machine that
|
|
# has just installed the package it falls back to whatever the distribution
|
|
# ships, /usr/share/backgrounds/cosmic first. A first login gets a desktop.
|
|
#
|
|
# Change the wallpaper by repointing the link, not by editing this file:
|
|
#
|
|
# ln -sfn ~/".local/share/wallpapers/hyprcosmic/<theme>/<image>" \
|
|
# ~/.local/share/wallpapers/hyprcosmic/current
|
|
#
|
|
# A program rather than the `sh -c` this used to be, because waiting for the
|
|
# daemon needs a bound: awww is a Recommends in a COPR, and the old unbounded
|
|
# `until awww query` loop spun for the whole session on a machine without it.
|
|
hyprcosmic-wallpaper
|
|
|
|
# A terminal, unconditionally, as the way back in.
|
|
#
|
|
# Everything above assumes the keybindings work. If they do not -- a bad
|
|
# `bind` line, a shortcut COSMIC declines to register, a compositor that came
|
|
# up without input -- then there is no way to launch rofi, no way to launch a
|
|
# terminal, and the only remaining option is a VT switch. Starting one terminal
|
|
# at login costs a window you can close and removes that entire failure class.
|
|
#
|
|
# Last in the file so it is the most recently mapped window, and therefore on
|
|
# top of anything else that opened during startup.
|
|
cosmic-term
|