Skip to content

Zen Browser update breaks color scheme template application #1839

Description

@AnAnonymousAuditor

Description

Zen Browser now follows the XDG Base Directory Specification as of version v1.18.6b (2026/02/12), which means that the profiles are now stored under ~/.config/zen/ rather than ~/.zen/. This prevents Noctalia from applying the templates, since Noctalia assumes that the ~/.zen/ directory exists and is where the profiles are located.

Zen will still use the ~/.zen/ directory if it is already present, so thankfully existing users shouldn't be affected, unless they attempt to migrate their profiles (like I did).

Steps to Reproduce

  1. Install Zen Browser v1.18.6b or later.
  2. Run Zen Browser and set it up according to the docs.
  3. Enable the Zen Browser template from Noctalia color scheme settings.
  4. Run Zen Browser again.
  5. Color scheme template is not applied.

Expected Behavior

The color scheme template is applied properly.

Screenshots

Image Using default Noctalia color scheme.

Environment

  • Distro: Arch Linux
  • Compositor: Hyprland
  • Noctalia-shell Version: v4.4.3

Additional Context

The problem seems to be in line 273 of Services/Theming/TemplateRegistry.qml:

"postProcess": ()
               => "sh -c 'CSS_CHROME=\"$HOME/.cache/noctalia/zen-browser/zen-userChrome.css\"; CSS_CONTENT=\"$HOME/.cache/noctalia/zen-browser/zen-userContent.css\"; LINE_CHROME=\"@import \\\"$CSS_CHROME\\\";\"; LINE_CONTENT=\"@import \\\"$CSS_CONTENT\\\";\"; find \"$HOME/.zen\" -mindepth 2 -maxdepth 2 -type d -name chrome -print0 | while IFS= read -r -d \"\" dir; do USER_CHROME=\"$dir/userChrome.css\"; USER_CONTENT=\"$dir/userContent.css\"; mkdir -p \"$dir\"; touch \"$USER_CHROME\" \"$USER_CONTENT\"; sed -i \"/zen-browser\\/zen-userChrome\\.css/d\" \"$USER_CHROME\"; sed -i \"/zen-browser\\/zen-userContent\\.css/d\" \"$USER_CONTENT\"; if ! grep -Fq \"$LINE_CHROME\" \"$USER_CHROME\"; then printf \"%s\\n\" \"$LINE_CHROME\" >> \"$USER_CHROME\"; fi; if ! grep -Fq \"$LINE_CONTENT\" \"$USER_CONTENT\"; then printf \"%s\\n\" \"$LINE_CONTENT\" >> \"$USER_CONTENT\"; fi; done'"

The shell command only checks for $HOME/.zen, which will fail on a new installation of Zen Browser since the directory won't exist.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions