upvote
Yeah. I just dropped another repackaging repo for Wispr Flow. https://github.com/wispr-flow-linux/wispr-flow-linux

A lot of that is keyboard shortcuts for push-to-talk. Easy right?

X11 is mostly fine, but the world is moving into Wayland. Wayland doesn't have shortcuts native and relies on xdg-desktop-portal, which in turn relies on each backend to implement it's own version.

COSMIC from the Pop!OS team's xdg-desktop-cosmic doesn't support GlobalShortcuts yet (might now, haven't checked in a bit). So XWayland for them.

Tray icons? GNOME doesn't have a tray out of the box, but there's an extension. There's no standard for whether it's light mode or dark mode across distros and when you map out the options, no api's indicate whether the tray is light or dark while in light/dark mode. At some point you have to just accept it's not always perfect or patch in an override.

reply
A lot of us are happy gnome doesn’t support tray icons. We are sick of devs thinking their app is so important it needs a visual presence at all times. If I need your app I’ll bring it to the foreground, we have the technology.

Global shortcuts definitely a pain point with Wayland but the portals are making progress.

reply
Yeah, I don't want want to take away from anyone. The COSMIC team is doing amazing and hard work. I started dev on claude-desktop-debian with Pop!OS COSMIC as my daily. We're just in a weird spot for that particular issue right now. In 3 years, it'll be something else. That's the nature of fragmentation.

While GNOME tray lovers and haters both exist, only one of those two groups is liable to submit an issue against my repo looking for help getting icons working correctly.

reply
> A lot of us are happy gnome doesn’t support tray icons.

A lot of us = very few people in total, apparently.

There's a reason Dash to Dock and AppIndicator are packaged by default on most Gnome distros and overwhelmingly installed on those that don't have it. Even Gnome itself has started development on a native systray, although in classic Gnome NIH fashion they either want to implement a new standard or are were even considering using the deprecated snixembed standard instead of using what 99% of Linux does :+)

(Technically they want it for pretty good reasons, but good luck forcing all Linux applications to implement yet another standard, especially the commercial applications)

reply
> There's a reason Dash to Dock and AppIndicator are packaged by default on most Gnome distros

Back when I still had a need for it it was solely because some apps do not have proper support for missing tray icons (you can only fully close them via the tray icon), not because I actually like the feature.

I appreciate that GNOME tries to move on from this. Unfortunately it doesn't have the market control that Windows has, so not all app developers follow suit.

reply
The tray icon dock/panel in KDE is fully removable. You can just delete it. So the opposite of that is also a thing. No one is forcing you to always have a visual presence of a program. Even Windows let's you hide tray icons forever if you want.
reply
But then you run into the problem of apps assuming the tray icon exists or is visible, but isn't, leading to problems such as the program just disappearing when you close it's window with no way to reopen it (some do reopen when you try re-executing it, others do nothing or just spawn a whole new instance...) or even having no access to some function that is exclusive to the tray icon menu.

All these issues can happen in any platform, Linux is just the more annoying/unpredictable one, with GNOME taking the cake for being so obtuse. There is either a carelessness from the developer or the ad-hoc nature of those "tray icon" systems is to blame.

reply
I don't like tray icons. What I like less is an app that runs in the background anyway when I didn't ask it to and that behavior is hidden. It's infuriating to "quit" an app and it's still there. At least gnome finally addressed that with the little background apps widget.
reply
How do I bring your app to the foreground if I can't see an icon anywhere? I just installed Ubuntu for the first time a few weeks ago and genuinely don't see how people are supposed to use it, coming from a Windows/Mac background. How does a Linux user know what's running, without going to a terminal and running top?

The lack of desktop UI affordances in the leading "user-friendly" Linux distribution should be seen as a five-alarm fire by anyone interested in promoting wider Linux acceptance on the desktop. There are reasons why Linux can't get past low single-digit adoption no matter how badly Apple and Microsoft screw their users, and I'm sure the half-assed desktop UI is one of them.

reply
Did you try pressing the super key
reply
> How do I bring your app to the foreground if I can't see an icon anywhere?

On GNOME? Alt-tab, super overview, or click the dock icon. It's literally not any more complex than multitasking on an iPad.

reply
It's literally not any more complex than multitasking on an iPad.

That point would hold some water if the iPad were intended as a first-class multitasking platform, like a desktop OS. I don't know what the 'super' key in GNOME is, and don't much care, because if that kind of thing isn't obvious it might as well not exist. Having never used *nix on a graphical desktop before, I'm just blown away by how primitive the experience is.

Fortunately Claude Code was happy to install dash-to-panel for me when I asked it what the deal was with this particular flavor of airline food.

reply
> I don't know what the 'super' key in GNOME is, and don't care

This is like having someone tell you that they refuse to use an iPad because the home button confuses them. That's your choice.

I've used GNOME professionally for 7 years now, and I've taught kids to use it at robotics workshops. If you can believe it, many of them are unable to use macOS and Windows at all, because their school districts don't buy them laptops anymore. I'm sorry that GNOME isn't a carbon copy of your favorite OS, but it's not hard to use whatsoever.

reply
Oh please. The super key is the windows key. You come across as someone who has never used a computer before.
reply
You come across as someone who’s never talked to a normal human being
reply
You might be happier with a consumer OS.
reply
I don't have experience with Electron, but... IMO if you compile on something like Ubuntu 20, many applications will work reliably on Ubuntu 20, 22, 24,+, and Debian 2020 editions +. (Assuming same CPU arch as the compiling computer).

Obviously this will probably fail on other distros, but I've found in the past similar groupings. Backwards compatibility is different: I expect a package a compile on Ubuntu 24 not to work on Ubuntu 22.

This is anecdotal, and in the context of rust + EGUI, so I'm not sure how applicable it is to Electron.

I recently hit a Wayland snag: It doesn't support Device Events other than mouse movement. I worked around it by changing to Window events. I could see that being annoying if this substitution weren't acceptable, but it was in this case.

reply
Reminds me that I occasionally have to set _JAVA_AWT_WM_NONREPARENTING=1 because it's not always inherited from my login shell. Otherwise Java windows won't display anything because I suppose Java waits for them to be reparented.
reply
On systemd, you can use ~/.config/environment.d to set it. Don't rely on your shell.
reply
> they’re running an unknown distribution on a 13 year old ThinkPad.

"Tony Stark can do it in a cave! With rocks!"

reply
This does feel like the perfect setup for Claude though.

Much easier to create a vm testing swarm of 100 disitributions with llms

reply
Did you hire a Linux release engineer? Or was the situation the typical team of devs maining macOS that have never heard the term “Wayland” before plus That One Guy who switched to Ubuntu last year and advocated for it?

There are companies that do this right. But it often requires a hire. Too many companies think they can just yolo it because Linux isn’t a serious OS or whatever and then are surprised when it doesn’t work out well.

reply
> Did you hire a Linux release engineer

That's often a great idea!

But a full time hire? The GP's post implies that wouldn't make business sense for them, as even half a day occasionally on it is too much...

>> So your engineers spend a half day installing that in a VM and debugging it, but the problem is in upstream somewhere. The number of tickets with Linux issues keeps growing and each one is taking more time to debug, all for a number of customers that is so small you can’t justify doing it.

Of course an experienced Linux release engineer can do it faster and more reliably. That's probably the cheaper option. But the business still has to decide their Linux customer or user base is large enough, or strategically worth supporting, to justify the cost however they do it.

For many businesses even fractional Linux support is not justifiable for the small number of Linux users and support requests they're unable to handle. Though I can't imagine that being the case for Anthropic!

(Hint: This is one of the things I consult on, if anyone is looking to pay for quality Linux release engineering and platform testing. I have hundreds of historical and current Linux VMs, multiple architectures old and new (esp. x86, ARM and RISC-V), some of them embedded, fairly deep knowledge of how the kernel and libraries work together, and test harnesses. Also I test some compiled applications for portability across other OSes and architectures, including Windows, MS-DOS, MacOS, BSDs, SunOS, HP-UX, etc. going all the way back to the early Unix lineage.)

reply
Even for those who do this right, some things change under your feet because OSS maintainers of kernel feature A want to stop supporting V1 of A when V2 has been out for a decade. But the features missing in V2 are supposed to be provided by userspace B - and they are yet to tackle the functionality altogether. So now your app will just have to regress in features. It is very easy to ship OSS code as a maintainer of a project, it is very difficult to keep up with Linux as a developer unless you stick to libc. There is no one source of truth with regards to how things should work, there is no one roadmap, and maintainers care a lot more about complexity than maintaining feature parity of backwards compatibility. I do not blame them, but then it is difficult to target linux. Much easier to support a platform with guarantees and a shared vision. Saying this as someone who has only used Linux at home for 20 years.
reply
Thanks to the Linux kernel's extremely high backward compatibility, and virtually all the libraries being open source, you can ship old or frozen versions of libraries with your application if you have to. You can defensively set shipped binaries as fallbacks in the event the application is running on a newer system that dropped critical functionality, while using the distro version if that's more up to date and still has the functionality. You can do the same for auxiliary programs your application uses.

I agree that sticking to libc is most reliable, if you can. But the experience is poor if you do that for desktop applications.

There's no singular source of truth, but there's a de facto frontier of only a few mainstream distros, as well as upstream heads for your dependencies.

It's extra work, but there are systematic workarounds to the feature drift over time and the tendancy of some open source projects to aggressively deprecate older functionality and older system compatilbilty.

You can, to an extent, automate testing on newer versions of distros to be alerted when something no longer works, and often you can do this before the official distro release date.

Unfortunately even libc is not reliable. Unless it's a static build, Glibc is often broken (with symbol version errors) when trying to run a binary compiled on one distro on another distro, or an older version of the same distro. Static binaries have other problems, though work very well if the application is self contained and isn't a GUI.

One thing that I find works very compatibly, though, is OpenGL / Vulkan binary-compatibility across distros and versions. There was a lot of work done on making libGL something you can link to or dynamically load reliably and take it from there. The OpenGL extension spaghetti is an interesting problem from then on, but that's more to do with the individual user's GPU and GPU drivers, independent of the Linux distro or even which OS it's running on.

reply
> You can defensively set shipped binaries as fallbacks in the event the application is running on a newer system that dropped critical functionality

Not if they're GPL licensed you can't. And that's a headache most commercial people do not want at all when trying to write software that's often for a marginal part of their audience anyway.

reply
Show me the part of the GPL which forbids you from shipping compiled binaries.
reply
> Not if they're GPL licensed you can't.

Wrong, misleading and possibly FUD. Yes you can ship GPL licensed software with your application, even a proprietary, closed source application.

You have to comply with the GPL terms, but that's easy to do for every library or auxiliary program that you'd link to or call in a Linux distro.

The GPL is designed to support this use case, with it's "mere aggregation" clause making it clear that it's allowed.

The one thing you can't do if you're shipping a closed source application is link to GPL-licensed code (unless there's an special exception clause, or it's LGPL, or it's dual-licensed to allow this). But for this type of GPL library, you can't use the Linux distro's shipped version either. So the GPL constraint makes no difference to the question of whether you can ship a frozen or fallback version with your application in lieu of the distro version.

If there's a corner case the above doesn't cover, I'm not aware of it and I've studied GPL compliance more thoroughly than most people. So I'd like to know about it :-)

reply
You compile for the lowest possible Linux kernel and bundle your libs. Don't use container formats for stuff like this. tar.gz with an installer script is king.

I dunno why this is always so difficult.

reply
It's mostly dealing with different backends\compositors\etc.

My reply to the comment below outlines the shape of the problem.

https://news.ycombinator.com/item?id=48434436#48435801

reply
Just ship a flatpak?
reply
[flagged]
reply
Flatpak mostly solves this for GUI apps.
reply
It does not. You just get more vocal angry customers who hate Flatpak and hate you for using it.
reply
There is a difference between mandating that your customers use one specific Linux distro which is maintained by a controversial company, and supporting all Linux distros through an imperfect-but-fully-working method.

Sure, you'll still get a few complaints from ideological purists, but there's no avoiding that regardless of what you do.

reply
Can confirm, I hate flatpak
reply
Why?
reply
I'm not the one who hates flatpak, but I will point you to this comment a little further up: https://news.ycombinator.com/item?id=48435993

Flatpak serves a need, there are plenty of users who like it and there are probably even more who just use it without thinking much about it. Personally, I like it for a few reasons: - Being able to install something dependency-heavy with just one package - Sandboxing - Getting a newer package than what my distro provides - Being able to update apps independently of the rest of the OS - Being able to easily install apps that my distro doesn't provide

The people who hate it, especially without giving a reason, are largely irrelevant when flatpak is filling a need for so many other people. Design for the people who are using and who like your product. Make adjustments based on their feedback. Ignore the people who just make noise.

reply
> Design for the people who are using and who like your product. Make adjustments based on their feedback. Ignore the people who just make noise.

And how do you know the userbase for GP's specific product is all Flatpak users? In fact, based on their comment, it appears as though they are explicitly not, hence their vocal frustration.

reply
This feels analogous to the old Google latency improvement story - improve performance and p99 goes up, not down, because more people are now able to use your product.

These angry customers are a symptom of having more customers; in this direction (compatibility) companies shouldn't be KPI'ing on angry customers.

It is very legitimate that high compatibility means more very obscure, low value, high cost, bug reports that are hard to classify as such. And my gosh, I hate working with rude ticket writers.

reply
> These angry customers are a symptom of having more customers;

No, it's a symptom of having more of a very specific type of customer who is more demanding and difficult to please than your other customers.

When you don't officially support Linux, the Linux users are not surprised. It's normal for them. They find other ways to use the product.

When you do announce Linux support, you open Pandora's box of complaints. They're extra angry that you claim Linux support but it doesn't work perfectly on their unique combination of laptop, distro, display protocol, and window manager.

You gained a small number of happy customers, but picked up a disproportionately large number of angry, vocal customers in the process.

reply
You start with 'no', but rather than disagree, you've effectively restated my comment.

I wasn't looking to anger you, just to provide a different lens in which to view the situation.

reply
This is when you say "We support Ubuntu", and honestly that's fine.
reply
Indeed. You make anything past that the customer's problem. I have a few Ubuntu apps that needed a bit of jiggery-pokery to make them run on not-Ubuntu.
reply
https://news.ycombinator.com/item?id=48434436#48435801

Made comment about flatpack below the comment above.

reply