mirror of
https://github.com/outbackdingo/hyprcosmic.git
synced 2026-08-25 14:53:21 +00:00
Autostart: set the wallpaper through the current symlink
The line named a wallpaper inside the theme directory directly, so importing a different theme left it pointing at a path that no longer existed -- a blank screen at the next login, with nothing in the log to say why, because nobody asked for a wallpaper and so nothing reported one missing. It now names ~/.local/share/wallpapers/hyprcosmic/current, the symlink `import-theme --assets` maintains. rofi's local.rasi shows the same image in the launcher sidebar and names the same link, so the two cannot drift. Changing the wallpaper is now `ln -sfn`, not an edit to this file, which the comment says so that the next person does not undo the indirection. The path stays literal. This file is not a shell -- deliberately, so that a file naming programs cannot be escalated into arbitrary execution -- so `~` and `$HOME` would be passed through as text.
This commit is contained in:
+39
-1
@@ -46,5 +46,43 @@ waybar -c /usr/share/hyprcosmic/waybar/config.jsonc -s /home/dingo/.config/hyprc
|
||||
# Packaged in the alebastr/sway-extras COPR.
|
||||
#
|
||||
# The daemon only holds the surface -- it shows nothing until an image is set.
|
||||
# Set one once with `awww img /path/to/wallpaper` and it is remembered.
|
||||
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.
|
||||
#
|
||||
# `sh -c` rather than a bare `awww img`, for one reason: awww-daemon above has
|
||||
# only just been forked and is not listening yet, so an immediate `awww img`
|
||||
# loses a race and fails silently. The loop waits for the daemon to answer
|
||||
# before setting the image.
|
||||
#
|
||||
# This does not weaken the no-shell rule in the header. That rule exists so a
|
||||
# file naming programs cannot be escalated into arbitrary execution; naming
|
||||
# `sh` explicitly is just naming a program, and anyone able to write this file
|
||||
# could already name any binary on the system.
|
||||
#
|
||||
# `current` is a symlink `cosmic-conf import-theme --assets` maintains beside
|
||||
# the wallpapers it copies, pointing at one of them. It is named here rather
|
||||
# than a real file so that this line 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 this pointing at a path that no
|
||||
# longer exists.
|
||||
#
|
||||
# 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
|
||||
sh -c 'until awww query >/dev/null 2>&1; do sleep 0.2; done; exec awww img "/home/dingo/.local/share/wallpapers/hyprcosmic/current"'
|
||||
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user