Looking for a desktop environment suitable for use as a phone interface in FreeBSD installed on a phone.

Hello.

Since I’m building a (smart ?) phone with FreeBSD as OS, I’d like a desktop environment suitable for use as a phone interface. So it needs to provide the basic features you would expect from a phone: a dial pad for making calls, a call log for received and missed calls, a contacts/address book with people’s phone numbers, and a photo gallery for storing and viewing pictures.

I’m fine with either a complete desktop environment or even an installable theme, as long as it runs on top of FreeBSD, which is the operating system installed on the phone.

If there is nothing ready-made, I can build it by finding relevant pieces of code online and then integrating them together. GitHub would be preferable as a source.

Alternatively, I could port something that has already been written for Linux, as long as the porting effort is not too complicated.

I found a list a number of possible approaches and ideas that I would like to discuss with you.

First, an important distinction: a theme only changes the graphical appearance. A phone dialer, incoming calls, call history, contacts, and modem management require real applications and services. So at the very least I need:

mobile shell + virtual keyboard + applications + telephony service + audio management.

1. Port Phosh to FreeBSD​


This is the most natural idea, because Phosh is built around GTK, Wayland, and GNOME components that are already fairly close to the FreeBSD ecosystem.

The current situation is interesting:
  • phoc, the mobile Wayland compositor used by Phosh, is already available in the FreeBSD Ports Collection;
  • squeekboard, the virtual keyboard, is already available;
  • feedbackd, for vibrations, sounds, and notifications, is already available;
  • GNOME Contacts is already available;
  • an old phosh port used to exist, but it was removed and would need to be rebuilt around the current version.
The main problem would therefore not be drawing the interface itself, but dealing with dependencies on Linux services such as ModemManager, NetworkManager, UPower, and some sensors handled through udev.

For calls, I could port GNOME Calls, which already provides a dial pad, call history, contacts, incoming calls, and SIP support. For cellular calls, however, it relies on ModemManager; for SIP it uses Sofia-SIP and GStreamer.

Assessment: excellent final result; medium effort for the shell, difficult for the cellular telephony layer.



2. Create “Sxmo for FreeBSD”​

Sxmo is probably the easiest system to port. It is not a huge desktop environment: it is a collection of small programs and POSIX scripts that together build a minimalist phone interface.

The project itself describes it as a collection of programs and scripts that can easily be modified through hooks.

I would need to replace, in its scripts:
  • Linux commands with FreeBSD equivalents;
  • battery and brightness handling;
  • ModemManager calls;
  • Linux audio handling;
  • any /sys and /proc paths.
I could keep the menu, gestures, launcher, call logic, and simply rewrite the backend.

This would probably be the fastest route to a genuinely usable prototype, although the interface is intentionally sparse and strongly aimed at technical users.

Assessment: relatively easy port; appearance less similar to Android or iOS.



3. Build a “Cubie Phone Shell” on top of Phoc​


This is the solution I consider the best fit for the project.

I would not port the whole of Phosh. I would use only what FreeBSD already has:

FreeBSD

├── DRM/KMS + touchscreen
├── Phoc
├── Squeekboard
├── feedbackd
├── Cubie Phone Shell
└── phone applications

Shell would only need to provide:
  • home screen;
  • launcher;
  • top bar;
  • lock screen;
  • notification center;
  • special incoming-call window;
  • large buttons and touch gestures.
I could write it in GTK4/libadwaita, using C, Vala, or Rust. FreeBSD already has GTK, GNOME, and responsive libraries such as libhandy, so there would be no need to invent a graphical toolkit.

The telephony part would be separated into a service called, for example:

bsd-telephonyd

It would expose operations over D-Bus such as:

Dial(number)
Answer(call_id)
Hangup(call_id)
ListCalls()
GetSignalStrength()
GetSIMStatus()

The dialer would therefore be only a graphical interface. It would not communicate with the modem directly.

Assessment: more initial work than Sxmo, but a much cleaner, controllable, and genuinely FreeBSD-native architecture.



4. Use Gammu as the first telephony backend​


FreeBSD already has a Gammu port, available on arm64 as well. Gammu can manage:
  • starting and controlling calls;
  • call lists;
  • SMS;
  • modem or SIM phonebooks;
  • network and phone information.
This would allow us to initially avoid porting ModemManager.

The first version of bsd-telephonyd could simply use libGammu. Later, I could replace it with a more modern backend based directly on:
  • AT commands;
  • MBIM;
  • QMI;
  • a protocol specific to the modem I choose.
FreeBSD already provides drivers such as u3g(4) for cellular modems exposing serial ports and umb(4) for MBIM devices, although data support does not automatically mean that voice calls will work.

This is not a complete user interface, but it is the component that could make any shell I choose into an actual phone.



5. Quickly create a “GNOME Phone Mode”​


I could start from a normal GNOME or Wayland environment and turn it into a phone-oriented kiosk mode:
  • a full-screen launcher;
  • large icons;
  • applications always maximized;
  • Squeekboard;
  • GNOME Contacts;
  • dialer;
  • a custom top bar;
  • gThumb or Shotwell as the photo album.
GNOME Contacts is already ported. gThumb and Shotwell are also available on FreeBSD and can respectively browse/import images and organize photos by date and metadata.

This would be the fastest way to create a visual prototype, but it would not yet be a true phone shell: incoming calls, lock-screen integration, and notifications would still require own components.

Assessment: fast prototype; less elegant as a final solution.



6. Port only selected Plasma Mobile components​


I would not port the entire Plasma Mobile environment at first. Instead, I would consider porting individual applications or QML interfaces:
  • dialer;
  • contacts;
  • Koko for photos;
  • Index as a file manager;
  • some Kirigami panels and components.
Plasma Mobile is built on top of Plasma, KWin, Qt, and Kirigami. Its official documentation also lists ModemManager for telephony and PulseAudio/PipeWire for audio.

Much of the Qt/KDE framework already exists on FreeBSD, but the mobile shell and its telephony integration are not available as a finished product. Porting only the QML applications and connecting them to bsd-telephonyd would be much more realistic than porting the entire environment.

Assessment: technically possible, but more complex than Phosh and Sxmo.



7. Use Lomiri as a source of interface components​


Lomiri, the Ubuntu Touch environment, has a user interface very well suited to phones and is written mostly in Qt/QML.

The dialer exists as a separate project, but depends on:
  • telephony-service;
  • history-service;
  • the contacts application.
Instead of porting the entire Lomiri environment, I could reuse:
  • dialer layouts;
  • in-call screen;
  • call history;
  • QML components;
  • ideas for the launcher and gestures.
I would then completely replace the Ubuntu services with own FreeBSD backend.

Assessment: useful as a code and design donor; full porting would be too invasive.



8. Reuse components from LuneOS/webOS​


LuneOS includes phone applications and a contacts application rewritten with Enyo, so it relies heavily on web technologies.

The complete system, however, has become fairly heavy: it uses components from webOS OSE, Qt 6, Luna Surface Manager, WebAppManager, and Chromium.

I could reuse some web applications or their design inside a WebView, but I would not port the complete system to FreeBSD.

Assessment: interesting for isolated applications; poor candidate as the main platform.



9. Reuse Maemo/Hildon​


Maemo has a genuinely Unix-phone philosophy: home screen, notifications, applets, touch interface, and GTK/X11 applications. The Hildon Home source code is still available and manages the home screen, notifications, and applets.

The problems are:
  • the appearance is dated;
  • many components use GTK2;
  • it was designed for the screen and hardware of the Nokia N900;
  • even Maemo Leste still lists ongoing work on the phone interface.
I could use it to study how a traditional Unix system organized notifications and telephony applications, but I would not use it as a modern foundation.

Assessment: excellent historical reference material; poor long-term investment.



10. Start with SIP and add the cellular modem later​


I could immediately build and test:
  • dial pad;
  • call log;
  • active-call screen;
  • accept/reject;
  • speakerphone;
  • contacts;
  • notifications;
using a SIP account initially. GNOME Calls already supports SIP, so I would not have to wait for the cellular modem to work.

Later, I could replace or complement the SIP provider with bsd-telephonyd.

This separates three problems that would otherwise become mixed together:

phone user interface

cellular modem control

call audio routing

Call audio is in fact a separate subsystem: on Linux mobile systems it is often handled by callaudiod. FreeBSD has both PulseAudio and PipeWire on arm64, but I would need to explicitly configure the microphone–modem–speaker path required by the hardware.

This proposal sounds interesting...​


FreeBSD 15/arm64

├── Phoc
├── Squeekboard
├── feedbackd

├── Cubie Phone Shell
│ ├── home
│ ├── launcher
│ ├── lock screen
│ └── notifications

├── Cubie Dialer
│ ├── dial pad
│ ├── recent calls
│ ├── missed calls
│ └── active call

├── GNOME Contacts
├── gThumb or Shotwell

└── bsd-telephonyd
├── Gammu/AT backend
├── SQLite database
├── calls
├── SMS
├── SIM
└── network status

The practical ranking is:

GoalChoice
Fastest prototypeAdapted Sxmo
Best already-designed resultPhosh port
Best long-term architectureCubie Phone Shell on top of Phoc
Most customizable interfacePlasma/Kirigami components
Code to borrow ideas fromLomiri, LuneOS, Maemo
First cellular backendGammu + AT commands


The real critical point will not be the photo album or the dial pad: it will be the exact modem model, its support for voice calls, and the way it transports call audio. Once those three elements are identified, I can make the final choice between Gammu, direct AT commands, or a modem-specific backend.

What do you think ?
 
Which kind of desktop manager is used by the PinePhone ? Do you know if there is a public github for giving a look at the source code ? if it has already been ported,I can contribute to improve it and to make available the reimplementation.
 
How do you know what and how much I'm investing in my projects ? Do you calculate only on a set of ideas written on paper but not yet put into practice? Do you think that even if Claude were to write the code, it wouldn't still be a commitment for me to direct and control it ? Do you think that the time, attention, money, lost sleep, my desire to create value like a phone and a lot of code inside it, then distribute it for free,has no value ? I enjoy building new implementations. The problems I pick are usually ones nobody else is working on; the RK3566 display stack or the qemu+bhyve + GPU passthrough + a nice mobile desktop manager for phones on FreeBSD was not going to get written otherwise. Even if the code is written by Claude,I'm creating a lot of new tools. Is this a reason to deny me a little help ? I have many ideas in my head. I couldn't realize any of them without Claude. And what I create is useful to everyone. Perhaps it would be wise for you to see this, to see how much effort I put into learning, into completing projects even without knowing how to program (I see this as an added value, not a fault, because I insist on trying to learn and create value for everyone, despite carrying the burden of the lack of freedom that programmers have, who can choose exactly how to create the implementation).
 
Just saying the question came across like a prompt for a llm

Which kind of desktop manager is used by the PinePhone ? Do you know if there is a public github for giving a look at the source code ?

Its not a question directly about Freebsd,
so probably not likely anyone would know the answer

And it could give the impression rightly or wrongly
that you expect people to search for the answer

Also probably best not to have one massive block of text if you want people to read it
a few paragraphs wouldnt go a miss
 
I would never use something from a person that was recently scammed for huge amount of money.

Studies show that law enforcement officers and security experts also fall victim to scams at significant rates.

While there is no public database that separates the personal complaints of officers from those of regular citizens, empirical simulation tests and studies on human behavior highlight that no one is immune.


📊 What the Percentages and Studies Say :
  1. Success Rate in Internal Tests (Phishing Benchmark):
    • In unannounced corporate and government security tests, between 20% and 40% of employees (including government and public safety departments) click on fraudulent links before receiving specific training.
    • With simulations based on artificial intelligence or highly targeted communications (spear phishing), the scammers' success rate reaches peaks of 50% to 54%, deceiving both technical profiles and investigative personnel.
  2. Personal Vulnerability vs. Professional Competence:
    • Research conducted by organizations like The Police Foundation and various institutes of criminology shows that vulnerability to a scam does not depend solely on knowledge of the law, but on universal psychological triggers (urgency, fear, fatigue, trust in authority or family).
    • When an officer is off-duty and interacting in daily life (e.g., online shopping, classified ads, counterfeit banking emails), their alertness drops to the levels of the general population, where between 20% and 25% of adults fall victim to economic fraud.
  3. The Underreporting Problem:
    • Academic studies indicate that the reporting rate for scams in the general population is lower than 15% to 20% due to shame and guilt.
    • In law enforcement and specialized personnel, this "shame effect" is amplified: admitting to being scammed is perceived as a threat to professional credibility, leading to a strong reluctance to formalize the incident.
 
Just saying the question came across like a prompt for a llm



Its not a question directly about Freebsd,
so probably not likely anyone would know the answer

And it could give the impression rightly or wrongly
that you expect people to search for the answer

Also probably best not to have one massive block of text if you want people to read it
a few paragraphs wouldnt go a miss

Don't you think that offering a wide range of possibilities I have created knowledge, I created new opportunities to think on / about, with the aim of better evaluating which is the most interesting path to take ?
 
I would expect the real problem is going to be a FreeBSD-compatible computer with full privilege to the physical user that also has full-privilege control over the radio API and is validated and accepted by common mobile networks. But I'm far from expert on this. I haven't seen a mobile device that runs native FreeBSD and supports phone calls on it, though. Is it possible?
 
Speaking from experience posting on the forum about new projects

Like mounting wayland, pulse audio sockets in a jail for Davinci Resolve,
or using Podman to get Cuda working in a container

The issue is that if you are inventing something new

Then by definition people wont know about it,
otherwise it would already exist

So you wont get a lot of feedback
People only tend to be interested when you have a final product
 
Speaking from experience posting on the forum about new projects

Like mounting wayland, pulse audio sockets in a jail for Davinci Resolve,
or using Podman to get Cuda working in a container

The issue is that if you are inventing something new

Then by definition people wont know about it,
otherwise it would already exist

So you wont get a lot of feedback
People only tend to be interested when you have a final product

But I have well defined what's the perimeter of the post. Let's not talk about the phone,but of how to build a desktop manager that's specifically tailored for a mobile phone. You can also forget the phone that I'm building and start thinking about your phone. Imagine that it runs FreeBSD and it needs a desktop manager that should be different from the Android one (because I dislike it) :)
 
See you cross posted to reddit


This is basically a chatgpt response pasted into a Reddit post, right?

The cadence/formatting smells like Claude/Anthropic to me, but yes. This is almost certainly AI output pasted or posted directly.

Should be a moderation rule for such posts.

reddit can be quite toxic

especially when it comes to ai generated posts
seems to be something that reddit users really dont like
 
See you cross posted to reddit








reddit can be quite toxic

especially when it comes to ai generated posts
seems to be something that reddit users really dont like

ehy bro. Is the cross posting a violation of some rule ? I'm starting to feel persecuted. Whatever I write, it's not good. And why it is not good ? I don't think because it's stupid. But just because I use an AI.
 
Back
Top