I take my shitposts very seriously.


From the sole developer responsible for Factorio’s Linux-native port: https://www.factorio.com/blog/post/fff-408
“Why don’t most games support macOS and Linux?” is a sentiment I often see echoed across the internet. Supporting a new platform is a lot more than just changing some flags and hitting compile. Windows, macOS, Linux, and the Nintendo Switch all use different compilers, different implementations of the C++ standard library, and have different implementation quirks, bugs, and features. You need to set up CI for the new platform, expand your build system to support the new compiler(s) and architecture(s), and have at least one person on the team that cares enough about the platform to actively maintain it. If you are a video game, you will likely need to add support for another graphics backend (Vulkan or OpenGL) as well, since DirectX is Windows-exclusive.
Many developers will take one look at the Windows market share and decide that it is not worth the trouble to support other platforms. Also, with the meteoric rise of the Steam Deck and Proton, it is easier than ever for game developers to ignore Linux support because Valve does some black magic that lets their game run anyway.
The list of Linux-first games is so short it’s not even a factor. It’s very difficult to justify the additional effort of implementing a platform that serves exclusively the playerbase with a ~3% market share, especially when a different method exists to serve that same playerbase that works just as well and also serves the 90%+ with no additional effort.
The article I linked also contains an explanation as to why GNOME’s decision to drop server-side decorations is fucking stupid.


Very important! When mounting an NTFS filesystem that is also used by Windows, always specify the windows_names option, both in /etc/fstab and when using mount.ntfs.
Windows is not fully compliant with the NTFS specs, which is a bloody genius move on Microsoft’s part. NTFS allows file names and paths to contain characters that are illegal in Windows, like the : character. If you create a file with such a name, it will make the volume unmountable. Ask me how I know. The windows_names option prevents that.


At work, we use PiSignage for a large overhead screen. It’s based on Debian and uses a fullscreen Firefox running in the labwc compositor. The developer advertises a management server (cloud or self-hosted) to manage multiple connected devices, but it’s completely optional (superfluous in my opinion) and the standalone web UI is perfectly usable.


I tried it recently. They changed the rootkit and it’s a coin flip on Linux. Genshin is supposed to work, but I’ve never been able to launch the game.


You can absolutely use it without a reverse proxy. A proxy is just another fancy HTTP client that contacts the server on the original client’s behalf and forwards the response back to it, usually wrapped in HTTPS. A man in the middle that you trust.
All you have to do is expose the desired port(s) to all addresses:
# ...
- ports:
- 8080:8080
…and obviously to set the URL environment variables to localhost or whatever address the server uses.


I don’t know which feature you mean, can you link the documentation?


I used it for a while, and it’s a decent solution. Similar to Tailscale’s subnet router, but it always uses a relay and doesn’t do all the UDP black magic. I think it uses TCP to create the tunnel, which might introduce some network latency compared to Tailscale or bare Wireguard.
Right… my mistake, I guess I had SSH config entries in Termux and never questioned whether SSH was using those or DNS.
Still, try to find some way to check which server is being queried. It might reveal connectivity problems with the local DNS server.
Install Termux, then use either the dig or nslookup command to query the DNS name, and check which DNS server is queried. If it’s the private server’s address, you might be having connectivity issues. If it’s 100.100.100.100, the resolver is still trying to query Tailscale’s MagicDNS.
private dns setting of android
Probably. If that setting is enabled, Android (including Graphene) defaults to 8.8.8.8 if the higher-priority DNS servers (manual or received from DHCP) don’t support DNS-over-TLS or DNS-over-HTTPS.


Some people will still argue that hating Epic for how it handles its games is unfair.


Proxmox is my number one choice. It’s based on Debian, and has an excellent, extremely straightforward web UI for managing virtual machines and LXC containers.
I can’t imagine living without a numpad.
It’s perfectly reasonable from the perspective of corporate scum: take away a standard feature, then sell it back as an extra. As far as I know, the modem still had UPnP for applications that rely on it.
No, I got it from the horse’s mouth: my WAN address was publicly routable all along, the ISP just disabled those NAT-related features remotely.
I finally got my ISP to enable bridge mode on my modem.
I also learned that I didn’t lose port forwarding and related services because I had been moved behind CGNAT or transitioned to IPv6 – they simply no longer offer port forwarding to residential customers. Ruminate on the implications of that statement so I’m not the only one with blood pressure in the high hundreds.


Even in the open source community, the libre-ness of a product is just one of many factors. The fitness for a purpose, the initial difficulty of the setup, the continuous difficulty of operation and maintenance, the pace of development (if applicable), the professional or community support structure, the projected longevity of the product or service, and the general insanity of the people involved are all important factors that can, and often do outweigh the importance of open software.
Local Unbound with Tailscale’s split DNS has been solid for me. I use it as an OPNsense service with the web GUI, but the standalone YAML config looks simple enough.


I’ve never used Linkwarden, but the /data folder is often used by Docker containers to store the application’s data, so it’s likely an internal path. You’ll have to create a volume that exposes the internal /data path to the host filesystem, then whatever is written into that directory will be made available to both the container and the host system. Any file or directory in the container can be exposed this way.
I usually put my data volumes in /srv (where my large RAID array is mounted) and config volumes in /config, into a subdirectory named after the service, and with the minimal necessary privileges to run the container and the service. You could, for example, create volumes like this:
/srv/linkwarden/postgres_data:/var/lib/postgresql/data
/srv/linkwarden/linkwarden_data:/data/data
/srv/linkwarden/meili_data:/meili_data
The volume path (left side of the colon) can be anything. The right side is where the services expect their files to appear inside the container.
The market share is never a precise number because not everybody is asked to do the hardware survey, and not everybody who is asked does. But the Linux userbase is small enough that “~3%” is in the ballpark.
Version control of dependencies is not as difficult as it seems. Unix systems can easily implement bundled dependencies like Windows does, even without sandboxed or monolithic packaging formats. The important thing is to tell the dynamic linker (
ld.soin Linux’s case) where to look for the library files, similar to howPATHis used to locate executables. This is similar to how containerization works to a lesser extent, and the Steam client actually does this by loading its own.sofiles from~/.local/share/Steam/.... I’m sure there are additional challenges, my knowledge is superficial and approximate at best.But the point still stands: in most cases, Linux-native ports are simply not worth the effort, either because of limited resources in small teams, or because of profits in large studios. BG3 and Factorio are definite outliers.