Bug 2456922 - Review Request: linuxpods - AirPods control and battery monitor for KDE Plasma 6
Summary: Review Request: linuxpods - AirPods control and battery monitor for KDE Plasma 6
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Neal Gompa
QA Contact: Fedora Extras Quality Assurance
URL: https://github.com/Puerh0x1/LinuxPods
Whiteboard:
Depends On:
Blocks: FE-NEEDSPONSOR
TreeView+ depends on / blocked
 
Reported: 2026-04-09 15:23 UTC by Nikita Sizikov
Modified: 2026-04-23 16:31 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:
ngompa13: fedora-review?


Attachments (Terms of Use)
The .spec file difference from Copr build 10308826 to 10311860 (6.45 KB, patch)
2026-04-10 14:44 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10311860 to 10319924 (5.64 KB, patch)
2026-04-13 18:22 UTC, Fedora Review Service
no flags Details | Diff
The .spec file difference from Copr build 10339549 to 10339850 (8.44 KB, patch)
2026-04-16 16:47 UTC, Fedora Review Service
no flags Details | Diff

Description Nikita Sizikov 2026-04-09 15:23:54 UTC
Spec URL: https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.2/linuxpods.spec
SRPM URL: https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.2/linuxpods-1.0.2-1.fc43.src.rpm

Description:
LinuxPods is a native Linux application for Apple AirPods management via the
reverse-engineered Apple Accessory Protocol (AAP) over Bluetooth L2CAP.

It provides a headless D-Bus daemon and a native KDE Plasma 6 system tray widget.

Features:
- Battery monitoring
- Noise control (ANC/Transparency/Adaptive)
- Ear detection with auto-pause
- Conversational Awareness

Upstream:
https://github.com/Explor3Universe/LinuxPods

COPR:
https://copr.fedorainfracloud.org/coprs/explor3universe/linuxpods/

License:
GPL-3.0-or-later

This is my first package, I need a sponsor.

Fedora Account System Username:
explor3universe

Comment 1 Fedora Review Service 2026-04-09 15:36:43 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10308826
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10308826-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 2 Dan Horák 2026-04-10 10:12:19 UTC
The spec file doesn't follow the guidelines for the Source tag, please see https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/

Comment 3 leigh scott 2026-04-10 10:42:05 UTC
1:

Change

Source0:        %{name}-%{version}.tar.gz

to

Source0:        %{URL}/%{name}-%{version}.tar.gz


2:

Add this to the main package

Requires:      hicolor-icon-theme


3:


Change

Requires:       %{name} = %{version}-%{release}

to

Requires:       %{name}%{?_isa} = %{version}-%{release}


4:

change, you must own the directory

%{_datadir}/librepods/translations/librepods_tr.qm

to

%{_datadir}/librepods/

Comment 4 Nikita Sizikov 2026-04-10 14:37:06 UTC
Thanks Dan and Leigh for the review — much appreciated, especially as this is my first package.

I updated the spec addressing all points:

* Source0 now follows the SourceURL guideline (%{URL}/...)
* Removed the need for hicolor-icon-theme (GUI front-end is no longer shipped)
* Updated sub-package dependency to use %{?_isa}
* Fixed directory ownership (no longer creating /usr/share/librepods/)

I also addressed several rpmlint issues and improved licensing:

* Added SPDX headers to project files
* Removed non-redistributable assets (SF Symbols font)
* Added man pages and a basic %check section
* Declared bundled QR library

Spec URL: https://raw.githubusercontent.com/Explor3Universe/LinuxPods/main/linuxpods.spec
SRPM URL: https://download.copr.fedorainfracloud.org/results/explor3universe/linuxpods/srpm-builds/10311771/linuxpods-0.2.0-2.fc43.src.rpm
COPR build: https://copr.fedorainfracloud.org/coprs/build/10311771

Please let me know if anything else needs to be fixed. Thanks again!

Comment 5 Fedora Review Service 2026-04-10 14:44:03 UTC
Created attachment 2136589 [details]
The .spec file difference from Copr build 10308826 to 10311860

Comment 6 Fedora Review Service 2026-04-10 14:44:05 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10311860
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10311860-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 7 Ruslan Bekenev 2026-04-11 12:37:57 UTC
hey Nick! Thanks for packaging it. 
- looks like url in the spec file is 404 [1]. Doesn't match the upstream url you mentioned above. 
- considering that upstream doesn't have any versioning I think you shouldn't use it in the package either (you have it set to 0.2.0). 
 - check out Versioning Guidelines and snapshot type of it [2] if you want to refer to a specific commit (e.g 0^commitsha)
 - as far as I understand you're the upstream's author, is there anything that blocks you from making a release? (it's not a blocker though, it's ok if there is no release)

[1] https://github.com/Puerh0x1/LinuxPods
[2] https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/

Comment 8 Nikita Sizikov 2026-04-11 14:25:41 UTC
Hi Ruslan, thanks for the review!

Both issues have been addressed in the v1.0.0 release:

1. URL:
   The spec now points to the correct upstream:
   https://github.com/Explor3Universe/LinuxPods
   The previous reference was stale due to upstream repository relocation.

2. Versioning:
   Switched to a proper upstream release (v1.0.0) instead of snapshot versioning.
   The project is now tagged, and Source0 fetches the archive from:
   %{URL}/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz

Updated package:

* Spec:  https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.0/linuxpods.spec
* SRPM:  https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.0/linuxpods-1.0.0-1.fc43.src.rpm
* Release: https://github.com/Explor3Universe/LinuxPods/releases/tag/v1.0.0

Verification:

* spectool --get-files resolves Source0 successfully
* rpmbuild -ba builds cleanly from the release tarball
* Copr build (10313908) succeeded for fedora-42, fedora-43, and rawhide:
  https://copr.fedorainfracloud.org/coprs/build/10313908

Please let me know if anything else needs to be addressed.

Comment 9 Andrei 2026-04-13 11:25:51 UTC
Hello. Looking forward for this package to land! Although I was quite hyped about GUI in the tray. What made you stop shipping it? IMO it loses all point? How to control modes etc without it?

Comment 10 Andrei 2026-04-13 11:28:12 UTC
> Please let me know if anything else needs to be addressed.
I guess description, if there is no widget anymore.

inuxpods.spec:
> Summary:        AirPods control daemon and KDE Plasma 6 widget

Comment 11 Andrei 2026-04-13 11:42:10 UTC
My bad GUI frontend != plasmoid widget. Nvm.

Although I have few things to point after testing:
1. Why is ctl called *libre*pods and main daemon *linux*pods?
2. librepods-ctl does not work for me:
> $ librepods-ctl noise:off
> Could not connect to librepods (is it running?) - Yes it is, in a second terminal.
3. Would be nice if there was some 'usage' hints.
4. My personal nitpick: let me control modes from tray icon:)

Comment 12 Nikita Sizikov 2026-04-13 16:32:57 UTC
Hi Andrei, thanks a lot for testing and for the detailed feedback!

You were absolutely right — the CLI issue was a real bug caused by a mismatch between the socket name used by the CLI and the daemon.

I’ve fixed this along with a few related improvements and updated the package to a new upstream release (v1.0.1), which now supersedes the previously submitted version for this review.

Changes relevant to your feedback:

* Fixed CLI connectivity issue
* Renamed CLI for consistency (linuxpods)
* Added basic usage/help output
* Improved runtime handling ($XDG_RUNTIME_DIR)

Documentation and usage examples are also available in the upstream repository:
https://github.com/Explor3Universe/LinuxPods

Updated package:

* Spec:  https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.1/linuxpods.spec
* SRPM:  https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.1/linuxpods-1.0.1-1.fc43.src.rpm
* Copr build: https://copr.fedorainfracloud.org/coprs/explor3universe/linuxpods/build/10319280/
* Release: https://github.com/Explor3Universe/LinuxPods/releases/tag/v1.0.1

Please let me know if anything else needs to be addressed.

Comment 13 Fedora Review Service 2026-04-13 18:22:46 UTC
Created attachment 2136998 [details]
The .spec file difference from Copr build 10311860 to 10319924

Comment 14 Fedora Review Service 2026-04-13 18:22:49 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10319924
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10319924-linuxpods/fedora-review/review.txt

Found issues:

- Upstream MD5sum check error, diff is in /var/lib/copr-rpmbuild/results/linuxpods/diff.txt
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/
- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 15 Nikita Sizikov 2026-04-13 19:32:41 UTC
Updated package (v1.0.1) with fixes for review comments:

Spec URL: https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.1/linuxpods.spec
SRPM URL: https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.1/linuxpods-1.0.1-1.fc43.src.rpm

[ fedora-review-service-build ]

Comment 16 Fedora Review Service 2026-04-13 19:42:36 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10320450
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10320450-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 17 Andrei 2026-04-15 15:19:32 UTC
Hi, me again.

- It says I am supposed to see a popup from tray icon allowing to control modes: does not happen, only battery % on hover.
- Its still possible to run linuxpods noise:off when AirPods are disconnected with no error, might want to check that.
- Another nitpick: `linuxpods noise:off` does not have any autocomplete options by pressing tab, needing to type whole thing every time.
- No option to disable conversation awareness.

I should have probably typed it into issues of the repo as improvement suggestions, but well, at least first point is a legit bug for me.

Comment 18 Nikita Sizikov 2026-04-15 18:37:05 UTC
Hi Andrei, thanks again for your testing — this helped clarify the situation.

There was a misunderstanding related to how the plasmoid is intended to be used.

The widget integrates into the system tray automatically via:
X-Plasma-NotificationArea: "true"

So normally:

* the icon appears automatically when AirPods are connected
* clicking it opens the popup UI

If the system tray plasmoid (org.kde.plasma.systemtray) is not present, the icon will not appear automatically. In that case it may look like there is no GUI.

What likely happened is that the plasmoid was added manually as a standalone widget. In this mode it is not managed by the system tray, and originally click handling was not implemented, since the tray itself provides that behavior.

To avoid this confusion, I’ve now updated the plasmoid:

* click handling works even when added manually
* the popup opens in both tray and standalone modes

Regarding other points:

* CLI behavior when disconnected
  The CLI communicates with the daemon via a one-way Unix socket and currently does not receive a response. The plasmoid, on the other hand, uses D-Bus and has full state awareness.
  I agree this can be improved and plan to address it.

* Autocomplete
  Not implemented yet, noted as an improvement.

* Conversation Awareness
  Available in the GUI.
  It was missing in the CLI before — now implemented, and usage is included in the CLI help output.

Updated package:

* Spec:  https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.2/linuxpods.spec
* SRPM:  https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.2/linuxpods-1.0.2-1.fc43.src.rpm
* Copr build: https://copr.fedorainfracloud.org/coprs/explor3universe/linuxpods/build/10332586/
* Release: https://github.com/Explor3Universe/LinuxPods/releases/tag/v1.0.2

Thanks again for your feedback.

Comment 20 Neal Gompa 2026-04-16 12:02:53 UTC
Some spec feedback here:

> Source0:        %{URL}/archive/refs/tags/v%{version}.tar.gz#/%{name}-%{version}.tar.gz

This should be "%{url}/archive/v%{version}/%{name}-%{version}.tar.gz"

Cf. https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/#_git_tags

> BuildRequires:  qt6-qtbase-devel
> BuildRequires:  qt6-qtconnectivity-devel

These should be converted to their "cmake()" virtual names. For example, your CMakeLists has the following:

> find_package(Qt6 REQUIRED COMPONENTS Core Bluetooth DBus)

That would become:

BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6Bluetooth)
BuildRequires: cmake(Qt6DBus)

> BuildRequires:  pulseaudio-libs-devel

This is requested via pkgconfig in CMake, it seems:

> pkg_check_modules(PULSEAUDIO REQUIRED libpulse)

So this would become

BuildRequires: pkgconfig(libpulse)

> %build
> pushd src
> %cmake -DLINUXPODS_BUILD_GUI=OFF
> %cmake_build
> popd

This should be broken up into %conf and %build like so

%conf
pushd src
%cmake -DLINUXPODS_BUILD_GUI=OFF
popd

%build
pushd
%cmake_build
popd

> * Wed Apr 15 2026 Nick <noreply> - 1.0.2-1%{?dist}

This formatting isn't correct. The author needs to be *you* with a contactable email address. You are permitted to obscure it from spam harvesting, but the idea is that people need to be able to contact you if needed. You also shouldn't put "%{?dist}" there.

Cf. https://docs.fedoraproject.org/en-US/packaging-guidelines/manual-changelog/

Comment 21 Neal Gompa 2026-04-16 12:05:14 UTC
Also, just as a tip, I notice you have a lot of section comments. You can structure a spec file such that all the declarative parts are grouped together.

You can see a simple example of that here: https://src.fedoraproject.org/rpms/redhat-systemd-presets/blob/rawhide/f/redhat-systemd-presets.spec

Comment 22 Neal Gompa 2026-04-16 12:14:36 UTC
Oh and one more thing:

> %{_userpresetdir}/90-linuxpods.preset

This is *not allowed* in any package *except* redhat-systemd-presets. Please drop this file and follow the process described below once your package is in Fedora to get the service enabled.

Cf. https://docs.fedoraproject.org/en-US/packaging-guidelines/DefaultServices/#_how_to_enable_a_service_by_default

Comment 23 Fedora Review Service 2026-04-16 14:31:58 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10339524
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10339524-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 24 Fedora Review Service 2026-04-16 14:37:13 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10339549
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10339549-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 25 Nikita Sizikov 2026-04-16 16:39:39 UTC
Hi Neal, thanks a lot for taking the time to review this — really appreciate the detailed feedback.

I’ve gone through all your points and pushed an updated build (1.0.2-3).

Changes:

Source0 updated to:
%{url}/archive/v%{version}/%{name}-%{version}.tar.gz
BuildRequires switched to virtual provides:
cmake(Qt6Core), cmake(Qt6Bluetooth), cmake(Qt6DBus), cmake(Qt6Network),
pkgconfig(openssl), pkgconfig(libpulse)
CMake macros split into %conf and %build
Changelog cleaned up and updated with proper maintainer info
Section comments simplified
Removed the preset file; the daemon is now enabled manually via:
systemctl --user enable --now linuxpods-daemon

Additionally:

License tag updated to GPL-3.0-or-later AND MIT (bundled components)
Dropped %{?_isa} from the noarch plasmoid subpackage

Updated package:

Spec: https://raw.githubusercontent.com/Explor3Universe/LinuxPods/v1.0.2/linuxpods.spec
SRPM: https://github.com/Explor3Universe/LinuxPods/releases/download/v1.0.2/linuxpods-1.0.2-3.fc43.src.rpm
Copr build: https://copr.fedorainfracloud.org/coprs/build/10339679
Release: https://github.com/Explor3Universe/LinuxPods/releases/tag/v1.0.2

Let me know if there’s anything else I should adjust.

Comment 26 Fedora Review Service 2026-04-16 16:47:34 UTC
Created attachment 2137374 [details]
The .spec file difference from Copr build 10339549 to 10339850

Comment 27 Fedora Review Service 2026-04-16 16:47:37 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/10339850
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2456922-linuxpods/fedora-rawhide-x86_64/10339850-linuxpods/fedora-review/review.txt

Found issues:

- Systemd user unit service file(s) in linuxpods
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 28 Nikita Sizikov 2026-04-23 16:31:10 UTC
Hi Neal, just a gentle ping in case this got buried.

I believe I’ve addressed the points from your previous review. Would appreciate a look when you have time.

Thanks!


Note You need to log in before you can comment on or make changes to this bug.