Skip to content

chore (vicinae): add layer-shell-qt runtime dependency#12589

Open
aamirsahmad wants to merge 2 commits into
terrapkg:frawhidefrom
aamirsahmad:vicinae/add-layer-shell-qt-requires
Open

chore (vicinae): add layer-shell-qt runtime dependency#12589
aamirsahmad wants to merge 2 commits into
terrapkg:frawhidefrom
aamirsahmad:vicinae/add-layer-shell-qt-requires

Conversation

@aamirsahmad
Copy link
Copy Markdown

Summary

  • Adds Requires: layer-shell-qt to anda/system/vicinae/vicinae.spec.
  • Bumps Release from 1 to 2 and adds a %changelog entry.

Why

Vicinae imports org.kde.layershell as a QML plugin at runtime — not as a linked shared library. RPM's automatic dependency generator only inspects the binary's NEEDED entries, so the dependency on layer-shell-qt is invisible to it and never lands in Requires.

Without layer-shell-qt installed, the launcher silently fails:

QQmlApplicationEngine failed to load component
qrc:/Vicinae/LauncherWindowLayerShell.qml:1:1: module "org.kde.layershell" is not installed

The window is never created, but vicinae-server still marks itself as "open" — so vicinae open reports Failed to open: Already opened and the user sees nothing. Reported in #12588.

The build side already has BuildRequires: cmake(LayerShellQt), so no build change is needed; only the missing runtime Requires is added.

The Vicinae upstream Copr packaging hit the same bug and resolved it the same way — see vicinaehq/vicinae#1388.

Test plan

  • Build the package: anda build -c terra-rawhide-x86_64 anda/system/vicinae
  • On a system without layer-shell-qt pre-installed: sudo dnf install ./vicinae-0.21.1-2.*.rpm — verify layer-shell-qt is pulled in automatically
  • rpm -q --requires vicinae | grep layer-shell-qt returns the dep
  • systemctl --user start vicinae && vicinae toggle — window appears on first invocation

Closes #12588

Vicinae imports `org.kde.layershell` as a QML plugin at runtime,
which RPM's automatic dependency generator does not detect (the
module isn't dynamically linked from the binary). Without
layer-shell-qt installed, the QML window component fails to load
and the launcher window never appears — meanwhile the server
reports itself as "open", desyncing UX from reality.

Bumps Release to 2 and adds a %changelog entry.

Refs: terrapkg#12588

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Aamir Ahmad <aamirahmad@outlook.com>
@nothingneko
Copy link
Copy Markdown
Member

just to confirm, did you start the server with the app menu icon before trying vicinae toggle? i've found it not starting can sometimes be cause by that

otherwise this pr looks good

@aamirsahmad
Copy link
Copy Markdown
Author

Yes — vicinae-server was already running when I tested. The failure mode is specifically the QML module load, not the server failing to start:

$ pgrep -af vicinae-server
232723 vicinae-server …

$ journalctl --user -u vicinae --since "10 min ago" | grep -i layershell
QQmlApplicationEngine failed to load component
qrc:/Vicinae/LauncherWindowLayerShell.qml:1:1: module "org.kde.layershell" is not installed

vicinae ping succeeded, but vicinae open returned Failed to open: Already opened because the server marks itself as open even though the QML window never instantiates. After sudo dnf install layer-shell-qt and systemctl --user restart vicinae.service, vicinae toggle showed the window on the first try with no other changes.

So the launch path (menu icon vs toggle) doesn't matter here — both ultimately load LauncherWindowLayerShell.qml, which is what was failing.

Comment thread anda/system/vicinae/vicinae.spec Outdated
@Owen-sz
Copy link
Copy Markdown
Member

Owen-sz commented May 25, 2026

Is this tested working?

Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com>
Signed-off-by: Aamir Ahmad <aamirahmad@outlook.com>
@aamirsahmad
Copy link
Copy Markdown
Author

The runtime dependency is confirmed working — per the log above, without layer-shell-qt the QML window fails to instantiate, and installing it resolves the issue with no other changes.

I also parsed the modified spec with rpmspec to confirm it's valid and the dependency is emitted:

$ rpmspec -q --requires --define 'dist .fc43' vicinae.spec
/bin/sh
/bin/sh
/bin/sh
layer-shell-qt
nodejs-npm

I haven't done a full mock/anda rebuild locally, so I can't claim end-to-end install testing of the rebuilt RPM — but the change is just a declarative one-line Requires: (mirroring the existing nodejs-npm line) plus a release bump and changelog entry, with no build-path changes. It matches what upstream's Copr packaging did for the same bug (vicinaehq/vicinae#1388). Happy to run a full build if you'd like that confirmation before merging.

@madonuko
Copy link
Copy Markdown
Member

since you have a test plan I guess we can merge after you have finished and are ready

note that we do not accept untested patches according to our policies: http://docs.terrapkg.com/contributing/policies/#submission-policy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

vicinae: missing runtime Requires: layer-shell-qt — server starts but window never appears

4 participants