Skip to content

Lockscreen crash (Oopsie daisy) caused by invalid wallpaperPath when switching wallpapers offline #2883

@MematiBas42

Description

@MematiBas42

Step 1. Before you submit

  • I have read the Troubleshooting and Usage pages.
  • I've successfully updated to the latest version following the guidance.
  • I've successfully updated the system packages to the latest.
  • I've ticked the checkboxes without reading their contents

Step 2. Quick diagnose info

Quick diagnose
<!-- Run `./diagnose` inside the repo, and paste the result here! -->
/========================\
| Checking git repo info |
\========================/

[===diagnose===] git remote get-url origin
https://github.com/end-4/dots-hyprland
[---SUCCESS---]

[===diagnose===] git rev-parse HEAD
60fd1ea030ce532be5ae7ff3116acd8f325e45a3
[---SUCCESS---]

[===diagnose===] git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean
[---SUCCESS---]

[===diagnose===] git submodule status --recursive
 7f0f0709ec5bbe4c3158c7f5fc68fd890af46618 dots/.config/quickshell/ii/modules/common/widgets/shapes (heads/main-3-g7f0f070)
[---SUCCESS---]

/=================\
| Checking distro |
\=================/

[===diagnose===] _check_distro_id
distro ID: arch
distro ID_LIKE:
[---SUCCESS---]

[===diagnose===] cat os-release
cat: os-release: No such file or directory
[---EXIT 1---]

/====================\
| Checking variables |
\====================/

[===diagnose===] declare -p XDG_CACHE_HOME
/home/nitro/.cache/dots-hyprland/diagnose: line 36: declare: XDG_CACHE_HOME: not found
[---EXIT 1---]

[===diagnose===] declare -p XDG_CONFIG_HOME
/home/nitro/.cache/dots-hyprland/diagnose: line 36: declare: XDG_CONFIG_HOME: not found
[---EXIT 1---]

[===diagnose===] declare -p XDG_DATA_HOME
/home/nitro/.cache/dots-hyprland/diagnose: line 36: declare: XDG_DATA_HOME: not found
[---EXIT 1---]

[===diagnose===] declare -p XDG_STATE_HOME
/home/nitro/.cache/dots-hyprland/diagnose: line 36: declare: XDG_STATE_HOME: not found
[---EXIT 1---]

[===diagnose===] declare -p ILLOGICAL_IMPULSE_VIRTUAL_ENV
declare -x ILLOGICAL_IMPULSE_VIRTUAL_ENV="~/.local/state/quickshell/.venv"
[---SUCCESS---]

/============================\
| Checking directories/files |
\============================/

[===diagnose===] ls -l /home/nitro/.local/state/quickshell/.venv
total 12
-rw-r--r-- 1 nitro nitro  43 Jan  7 20:40 CACHEDIR.TAG
drwxr-xr-x 1 nitro nitro 434 Jan  7 20:40 bin
drwxr-xr-x 1 nitro nitro   8 Jan  7 20:40 include
drwxr-xr-x 1 nitro nitro  20 Jan  7 20:40 lib
lrwxrwxrwx 1 nitro nitro   3 Jan  7 20:40 lib64 -> lib
-rw-r--r-- 1 nitro nitro 191 Jan  7 20:40 pyvenv.cfg
[---SUCCESS---]

/===================\
| Checking versions |
\===================/

[===diagnose===] Hyprland --version
Hyprland 0.53.1 built from branch v0.53.1 at commit ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09 clean (version: bump to 0.53.1).
Date: Fri Jan 2 21:20:57 2026
Tag: v0.53.1, commits: 6766

Libraries:
Hyprgraphics: built against 0.5.0, system has 0.5.0
Hyprutils: built against 0.11.0, system has 0.11.0
Hyprcursor: built against 0.1.13, system has 0.1.13
Hyprlang: built against 0.6.7, system has 0.6.8
Aquamarine: built against 0.10.0, system has 0.10.0

Version ABI string: ab1d80f3d6aebd57a0971b53a1993b1c1dfe0b09_aq_0.10_hu_0.11_hg_0.5_hc_0.1_hlg_0.6
no flags were set

[---SUCCESS---]

[===diagnose===] _check_quickshell_version
illogical-impulse-quickshell-git 0.1.0.r1-6
qt6-base 6.10.1-1
[---SUCCESS---]

[===diagnose===] _check_PKGBUILD_version
illogical-impulse-audio 1.0-2
illogical-impulse-backlight 1.0-1
illogical-impulse-basic 1.0-2
illogical-impulse-bibata-modern-classic-bin 2.0.6-1
illogical-impulse-fonts-themes 1.0-4
illogical-impulse-hyprland 1.0-4
illogical-impulse-kde 1.0-2
illogical-impulse-microtex-git r494.0e3707f-2
illogical-impulse-microtex-git-debug r494.0e3707f-2
illogical-impulse-portal 1.0-2
illogical-impulse-python 1.1-4
illogical-impulse-quickshell-git 0.1.0.r1-6
illogical-impulse-screencapture 1.0-1
illogical-impulse-toolkit 1.0-2
illogical-impulse-widgets 1.0-6
[---SUCCESS---]

Step 3. Describe the issue

Description:
Firstly
A lockscreen crash occurs in the end-4/dots-hyprland setup when the wallpaper switching script (switchwall.sh) is triggered while the system is offline. This results in an invalid or truncated path bein
saved to the configuration (specifically ending in a dot . instead of a file extension). Consequently, when the lockscreen app (Quickshell or Hyprlock) attempts to load this invalid image path, it fails a
displays the "Oopsie daisy, it looks like your lockscreen app died" error.

Steps to Reproduce:
(Ensure "lock": { "launchOnStartup": true } is enabled in ~/.config/illogical-impulse/config.json.)

  1. Disconnect the system from the internet.
  2. Trigger the wallpaper switch (e.g., via the "Random Wallpaper" button/keybind which calls ~/.config/quickshell/ii/scripts/colors/switchwall.sh).
  3. Observe that the script fails to download/create the image correctly due to the lack of connection.
  4. Check ~/.config/illogical-impulse/config.json. The wallpaperPath entry will likely be truncated (e.g., /path/to/random_wallpaper.).
  5. Lock the screen (manually or wait for hypridle timeout).

Actual Behavior:
The lockscreen fails to render the background because the file path is invalid, leading to a crash loop or the "Lockscreen app died" error screen. The user is stuck on a black screen or the error message
until the config is manually fixed.

Technical Root Cause:
The switchwall.sh script (or the process it calls) updates the wallpaperPath in config.json without verifying if the target image file was successfully generated or downloaded. When hypridle trigger
the lockscreen, the lockscreen application attempts to read this non-existent file path and crashes.

Suggested Fix:
The switchwall.sh script should verify if the new wallpaper file exists and is a valid image before updating the wallpaperPath in config.json. If the download or generation fails (e.g., due to no
internet), it should abort the config update and potentially notify the user, retaining the previous valid wallpaper.

Reminder

  • I agree that it's usually impossible for others to help me without my logs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ISSUEGeneral issues

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions