📞 your phone is ringing in the other room. answer it from your desk.
Make and receive phone calls on your KDE desktop, through a phone paired over Bluetooth.
The calling part of Windows Phone Link, for Linux. No account, no cloud.
Foner is a dialler for KDE Plasma. It sends commands to your phone over the Bluetooth hands-free profile (HFP). The call audio comes through this computer. The call itself stays on the phone and the mobile network. Foner has no account, no cloud service and no telemetry.
Foner 0.1.0 is the first release. It was tested with one Android phone and one iPhone, on Arch Linux with Plasma. No other desktop is tested yet.
- PipeWire 1.4 or newer, with its telephony module.
- BlueZ.
- A phone that is paired and connected over HFP.
If one of these is missing, Foner starts and reports that no phone is connected.
Download the install script, read it, then run it as a normal user. The script installs the dependencies, builds Foner, runs the tests, and installs to /usr/local. It asks for sudo only for the package install and the final copy.
curl -fsSLO https://raw.githubusercontent.com/AminBlg/foner/main/scripts/install.sh
less install.sh
sh install.shTo install into ~/.local instead, set FONER_PREFIX:
FONER_PREFIX=~/.local sh install.shThe script knows the package names for Arch, Debian, Ubuntu, Fedora, openSUSE and their derivatives. On another distribution, it stops and prints the dependency list. Install those dependencies yourself, then run the script again with FONER_SKIP_PACKAGES=1.
| Distribution | Status |
|---|---|
| Arch Linux, CachyOS, EndeavourOS, Manjaro | Works |
| Fedora 42 and newer | Works |
| Ubuntu and Kubuntu 25.10 and newer | Works |
| Debian 13 | Works |
| openSUSE Tumbleweed, Leap 16.0 | Works |
| Ubuntu and Kubuntu 25.04 | Builds, but PipeWire 1.2 has no telephony module, so no calls |
| KDE neon | Builds, but PipeWire from the Ubuntu 24.04 base has no telephony module, so no calls |
| Ubuntu 24.04, Debian 12, RHEL 9, openSUSE Leap 15.6 | No KDE Frameworks 6, so no build |
Only Arch Linux with Plasma ran against a real phone. The other rows come from the package versions that each distribution ships.
Foner needs Qt 6.5 and KDE Frameworks 6.8. scripts/install.sh lists the package names for each distribution. Install them, then run:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
ctest --test-dir build --output-on-failure
sudo cmake --install buildRun foner, then connect your phone. When the phone connects, Foner reads the phonebook and the call history.
To try the contact list with no phone, open docs/demo-contacts.vcf with File > Import vCard. It holds invented contacts.
- Dial, answer and end calls. Answer from a desktop notification.
- Hold one call and answer another. Swap between two calls, or join them.
- Mute the microphone, set the speaker level, and send keypad tones.
- Pull the call audio onto this computer.
- Read the contacts and the call history from the phone, and keep them on disk.
- Search contacts by name, by number, or by keypad letters:
254finds "Ali". - Import and export vCard files.
- Close the window, and Foner keeps running in the system tray.
- Open
tel:links from other applications.
Two calls at once, service codes and vCard export are built, but nobody tested them against a phone yet. docs/STATUS.md lists what works and the known limits.
KDE Connect tells you that the phone is ringing. Foner answers it. You dial and talk from the desktop, and the call audio comes through this computer. Windows has this in Phone Link. Foner brings it to Plasma.
HandsFree for Linux does a similar job with its own hands-free stack. Its README asks you to keep WirePlumber from claiming the hands-free role. Foner uses the telephony module that ships with PipeWire 1.4, so it works with the audio stack that you already run.
Does KDE Connect do this? KDE Connect lists notifications, SMS, a shared clipboard and remote control in its README. That list has no call dialing, and the wiki was not checked. Foner covers the calls.
Which phones work? Foner was tested with one Android phone and one iPhone. Any phone that pairs over the Bluetooth hands-free profile can connect in theory, but only those two ran.
Do I need a phone to try it? You can start Foner without one and import docs/demo-contacts.vcf to try the contact search. Calls need a paired phone.
Does it work outside Plasma? Foner is built with Qt and KDE Frameworks. Other desktops were not tested.
Does Foner send my contacts anywhere? Foner has no account and no cloud service. It keeps the phonebook and the call history on your disk.
- Keyboard-only operation. The keypad keys cannot be reached with Tab yet.
- Test more phones and more desktops.
- Package Foner for more distributions.
docs/STATUS.md has the details.
The install script saves the list of installed files in ~/.local/share/foner/install_manifest.txt. To delete the files on that list, run:
xargs rm < ~/.local/share/foner/install_manifest.txtIf you installed to /usr/local, run the same command with sudo before xargs.
- docs/STATUS.md: what works, what does not, and why.
- docs/M0-selfio-notes.md: how the PipeWire telephony interface behaves with a live phone.
- CONTRIBUTING.md: the build, the tests and the checks for a pull request.
- CHANGELOG.md: what changed in each release.
- SECURITY.md: how to report a vulnerability privately.
GPL-3.0-or-later. See LICENSE.
Foner is an independent project. It is not affiliated with Microsoft or KDE e.V. Phone Link is a trademark of Microsoft.