# 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//" \ # ~/.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