Recommeded cross-platform applications

Root cause

Over the last few years, I have changed my daily driver system at least 3 times. For around 5 years I’m using different flavors of linux as my main system. Taking into account unforeseeable circumstances of course dual boot was always present on my laptop/pc - I was not able to remember when I started windows last time. The main reasons would be wine/proton for games and open source replacements (or crossplatform alternatives) of applications which I was using in my workflow.

Why apps are more crossplatform?

I guess there are a few reasons for that.

Rise of electron

A few years back (before Slack) if company did not want to host for example Jabber instance, the only popular choice for Skype/Skype for Business. Everyone would agree that non-homogeneous, disappearing chat history and ‘buggy’ to say at least communicator/screen sharing is not the best way to cooperate in the business. That is why the appearance of Slack was like revelation - all started to make logical sense. This idyll lasted for some time. The company started to gain momentum and was not able to hide anymore beneath Microsoft’s radar - the idea for a new product (competitor) was born. Today we have the fruit of this undertaking - Microsoft Teams. Company with such engineering resources, business-oriented ecosystem (Office/Outlook) and in-house hosting solution was guaranteed to find a way to monetize this concept. A went a bit off-topic - the question was why electron? Roughly speaking we can show each electron app as (from my non-web dev level of knowledge):

Electron app = Chromium engine + NodeJS backend + HTML/CSS

Each application is small web browser (which works on multiple operating systems) with additions. It helps to shorten the time for development (or even allow that was not possible) for companies and FOSS projects to run on Windows/Mac/Linux. Of course there is a huge drawback - memory consumption. People would say that, 200-500 MB of RAM is nothing (enough for the whole OS…) but it grows at terrifying rate. Right know we have electron based applications for almost everything:

  • communicators
  • IDEs
  • mail clients
  • ISO flashing
Frameworks strikes back

Another approach can be found on frameworks like Qt - abstraction layer over standard (in this example C++) libraries. There are of course a few caveats mostly related to lower level stuff like Bluetooth or UART but it allows to compile code for different OS or architecture without a lot of effort. For some specific use cases some #ifdef should be sufficient.

Worth mentioning is also progress made on Mono - open-source C# framework which tries to be compatible with proprietary .NET.

I’m certain a lot of different languages/frameworks also helped to achieve current state of art but were not mentioned by me here.

The new hope of gaming

Except drivers/software for dedicated use cases, the main factor which was stopping quite a lot of people was gaming. Of course there were some natively crossplatform games and WINE but last few years were simply astonishing for Linux.

Proton/Dxvk/Vulcan/Dxvk/Lutris to name a few - all of these projects massively helped to popularize gaming on Linux.

As a result of joint effort of companies (Valve, Crossworks etc.) and the community, a device like Steam Deck was able to come to existence. Personally, I own such ‘portable console’ and surely would recommend them but only to the user who has an idea what can be done with them. In a telegraphic summary:

  • x86 platform CPU, Vega Graphics, 1280x720 resolution, bigger and better ergonomics than Nintendo Switch
  • SteamOS based on Arch+KDE, desktop mode which works fine on docking station (USB-C)
  • possibility to run a lot of games from Steam without any effort and with some using GOG and other launchers
  • possiblity to become THE emulation station

After this lengthy introduction to the subject, this is personal recommendation list.

Webbrowser - Firefox

Sadly, after year of competition currently on the market only 2 engines are relevant:

  • Chromium’s Blink in Chromium/Chrome/Opera/Vivaldi/Brave etc.
  • Firefox’s Gecko

Monopoly is always bad for ‘customers’. For years I’m using personally Firefox as a habit and preservation of ‘second option’. If you are not really into this argumentation remember changes which are going to be implemented for Manifest v3. If this still doesn’t convince you, please do your own research and choose a browser with reduced tracking features in place of Chrome.

Mail client - Thunderbird

Surely, like everyone at some point, I have used web browser mail client only. Things have changed when it was necessary for me to use multiple accounts. Application for that should be free to use without limitations and modern (to at least some degree). It left me with one choice - Thunderbird.

It stopped looking like from ‘10 thanks to UI update in the last few months. Both with Firefox are travelling with me between multiple OS reinstalls/machines - keep in mind when manually moving profile, it grows massively and sometimes need manual cleaning. From my experience from full profile with backup of all mails (~11GB), it’s possible to leave ~30MB of basic configuration for fresh install and redownload only valid emails.

File manager - Double Commander

For me Total Commander (based on Midnight Commander) was a program without which I was not able to perform operations on files without infuriating. Except for the cost of licensing (not expensive and in my opinion 100% deserved) the only issue was supporting only Windows. There are multiple similar application but after testing the best (probably because of similarities and partial compatibility) is Double Commander.

For Linux there is version for GTK and Qt - choose which better suits your DE.

There are still some missing details like additional ‘root’ folder with all drives or missing possibility to import settings from TotalCmd config but regardless it’s quite mature product.

As a bonus my config can be found >here<.
It contains my coloring scheme ported from TotalCmd.

Graphics

For semi-advanced graphical usage I advice:

  • Pinta (raster graphics)
  • Inkscape (vector graphics)

As for image viewer, for most people builtin would be sufficient - if not please try (‘free’ for personal usage)

  • Irfan - windows native, Linux not officially supported but works fine under Wine. There is a new Snap installer as a ready solution
  • XnView - native

Advanced screenshoting can be done using:

  • ShareX - more share/manage approach as a default
  • Flameshot - similar to Lightshot, easy and fast to use (except awful default color scheme)

Multimedia

For music player I use:

  • Audacious (as replacement for AIMP/WinAmp). It’s possible to use WinAmp skins (copy to ~/.local/share/audacious/Skins/ or /usr/share/audacious/Skins/ and in menu change interface)
  • Aimp - there is official package with wine
  • VLC - the king of video playback (and not only)
  • Mediainfo - helpful media information from context menu

IM - Discord/Signal

For Instant Messaging:

  • Discord - gaming related stuff
  • Signal - personal contacts, for me it wins in comparison with Telegram

IDE - VSCode

Personally I use Visual Studio Code as ‘universal’ IDE with Dracula theme, custom font and a few addons. Earlier I used Qt Creator for C++ and sometimes PyCharm Community Edition for Python

3D Printing

As for 3D printing we have 2 main type of programs:

  1. Slicers - I use Superslicer, Cura is also good choice
  2. 3D modelling software - here we have a bigger issue. Without going into details regarding system support and licensing:
    • OpenScad for basic models
    • FreeCad and any web-based software as an alternative

P2P

On Windows for years, I have used ’the last true’ µTorrent version (without adware etc.) 2.2.1.
There are a few good crossplatform clients but I advice to use QBittorrent. It supports all ‘basic’ requirements like downloading, using SOCKS5 proxy and have WebUI option.

VPN - Wireguard

As for VPNs, for my private networks (and bought one VPN) I prefer wireguard. Setup is much simpler than OpenVPN and overhead is also smaller. It works on Linux/Windows/Android.

Text Editor

The best windows text editor is Notepad++. It uses WinAPI but it works fine under wine - there is even snap package with wine included. For truly crossplatform alternative we have ‘clones’:

  • NotepadQQ - on the slower side and not developed anymore
  • Notepad Next - works fine but still lacks a lot of features from the original

If not, it’s always possible to use Kate or Vim. Vim should be included in more sections here but I don’t have enough free time to setup and learn about that…

PDF

For PDF there is a lot of proprietary software (with free tiers for personal usage):

  • Okular - my personal choice (at least for Linux)
  • Foxit PDF Reader
  • MasterPdfEdit - brilliant editing software

PDF printers are 100% not compatible between operating systems - how and why it’s working is a subject for the whole post.

  • Windows - PDF Creator
  • Linux - simply CUPS

Notes and Diagrams

For diagrams I prefer Draw.io - it’s possible to download and use application locally.

Notes are a complicated topic - it depends what you expect from application:

  • notes storage format
  • image support
  • compatibility with standard markdown
  • synchronization option
  • simple notes or complex interconnected information structure

Currently, I use QOwnNotes but other popular choices are:

  • Joplin
  • Obsidian
  • Trillium Notes
  • Zettlr
  • Logseq

Bonus - tip after Linux install

If you are trying to change your daily system to Linux (e.g. Endeavour OS - ‘Arch-based’) check a few more things:

  • when dual booting and Windows is shut down with fast boot, NTFS partitions will be mount read-only - to mitigate this use ntfsfix
  • assuming your monitor does not have builtin calibrator, it’s a good idea to install colord and include .icc profiles dedicated for your model - those found on the internet will not truly ‘calibrate’ but it’s better than nothing
  • check HDD power saving features, it may be necessary to manually create service to apply hddparam call to set spin timeouts
<End of Post>

Marek Pawlak