LinuxDoors AppImage Store

One file. Download and run.

Each of these is a single self-contained executable — the whole application plus the runtime it needs — that you download, mark executable, and run. Nothing to install, nothing left behind, and it runs the same on Debian, Ubuntu and other Linux distributions that can launch an AppImage.

Some are LinuxDoors' own work. Others are trusted upstream builds — we mirror them here unmodified, so you can get them from the same place as the rest of the system, each with a SHA-256 you can check against the project's own. Every app shows who made it and where it really comes from.

LinuxDoors Games Games have their own shelf — 4 games, free, one file, download and play. Browse Games →

A recommended way imho to keep AppImages

This is Stan Switaj’s recommendation for how per-user AppImages should be stored — a tidy layout for the ones you download from the Store, with a real Desktop launcher for each.

One folder per user. Every AppImage a user keeps lives in ~/AppImages/ — for the default account, /home/linuxdoors/AppImages/. The AppImage files sit directly in that folder: /home/linuxdoors/AppImages/FlashScp.AppImage, and so on for every other one.

One subfolder, for icons only. That folder holds exactly one subfolder, images/, and nothing else. Each AppImage’s icon goes there as a PNG: /home/linuxdoors/AppImages/images/FlashScp.png.

A Desktop launcher per AppImage. For each one, a launcher is placed on the Desktop. Its Exec= line calls LinuxDoors’ own AppImage runner — Exec=linuxdoors-run-appimage /home/linuxdoors/AppImages/FlashScp.AppImage — and its icon comes from the matching PNG (Icon=/home/linuxdoors/AppImages/images/FlashScp.png), so the Desktop shows a real, recognizable icon for launching the program instead of a generic one.

Why the runner. LinuxDoors has no FUSE, so an AppImage unpacks itself before it starts; and /tmp is cleared on every reboot, so a bare Exec= path re-unpacks the whole app on the first launch after each boot — several seconds with nothing on screen, which reads as “I clicked the icon and nothing happened.” linuxdoors-run-appimage (in /usr/bin, on every LinuxDoors install) unpacks into a persistent ~/.cache/appimage-run/ instead — so each AppImage unpacks once, ever, every later launch is instant, and that one first run shows a “Starting… unpacking” notification. You can still run any AppImage directly; the runner is just the friendlier path for a Desktop shortcut.

In short: ~/AppImages/<Name>.AppImage for the program, ~/AppImages/images/<Name>.png for its icon, and a Desktop launcher (Exec=linuxdoors-run-appimage …) wiring the two together.

No terminal? Here’s the same thing with a mouse

An AppImage has to be marked executable before it will run — normally a one-line chmod +x in a terminal. Every graphical file manager offers the exact same switch from its Properties dialog, with no terminal needed. These are real screenshots from a LinuxDoors desktop (Thunar, LinuxDoors’ default MATE file manager), using LinuxUltraOffice.AppImage right after downloading it as the example.

1Right-click the downloaded file. Right-clicking LinuxUltraOffice.AppImage in a file manager shows a context menu with Properties at the bottom In your Downloads folder (or wherever you saved it), right-click the .AppImage file. Look for Properties near the bottom of the menu — it's on every mainstream Linux file manager (Thunar, Caja/Nautilus, Dolphin, PCManFM-Qt), though the exact wording of the checkbox in step 3 can vary slightly by file manager.
2Open the Permissions tab. The Properties dialog for LinuxUltraOffice.AppImage, showing General, Emblems, Highlight and Permissions tabs The Properties dialog opens showing file details first (name, size, kind, dates). Click the Permissions tab along the top.
3Find the “run as a program” checkbox. The Permissions tab, unchecked, showing the Allow this file to run as a program checkbox with a security warning below it Down near the bottom, under Program:, there's a checkbox — on Thunar it reads “Allow this file to run as a program” (Caja/Nautilus phrases the same checkbox as “Allow executing file as program”). It starts unchecked on a fresh download, and the file manager shows a short security note under it — worth reading once: only mark a file executable if you trust where it came from.
4Check it, then close. The same Permissions tab with the Allow this file to run as a program checkbox now checked Check the box and close the dialog. That's the whole procedure — it takes effect immediately, the same way chmod +x does from a terminal, because it is chmod +x: the file manager is just setting the same executable bit through a checkbox instead of a command. Double-click the AppImage from here on and it runs.

If a checkbox for this isn't where you expect, look for an Executable or Permissions section in whatever your file manager calls its Properties/Info panel — the control is universal on Linux desktops even where the exact wording differs.

On LinuxDoors’ optional MATE desktop, the default file manager is Caja instead of Thunar — same idea, slightly different dialog. These are real screenshots from a LinuxDoors desktop using Caja, walking through an .AppImage right after downloading it.

1Right-click the downloaded file. Right-clicking an AppImage in Caja shows a context menu with Properties at the bottom In your Downloads folder, right-click the .AppImage file and choose Properties near the bottom of the menu.
2Open the Permissions tab. The Properties dialog in Caja, showing Basic, Emblems, Permissions, Open With and Notes tabs Caja’s Properties dialog opens on the Basic tab (name, type, size, location). Click Permissions along the top.
3Find the “Allow executing file as program” checkbox. The Permissions tab in Caja, unchecked, showing owner/group/others access plus an Allow executing file as program checkbox Down under Execute:, Caja phrases the same checkbox as “Allow executing file as program”. It starts unchecked on a fresh download.
4Check it, then close. The same Permissions tab in Caja with the Allow executing file as program checkbox now checked Check the box and close the dialog — the file is executable immediately, the same chmod +x effect as Thunar’s checkbox above, just under Caja’s own wording. Double-click the AppImage from here on and it runs.

AppImages 11–18 of 18.

Kdenlive icon

Kdenlive$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

KDE's non-linear video editor -- a multi-track timeline on top of MLT and FFmpeg.

by KDE Community · mirrored September 11, 2026

↓  Download Kdenlive.AppImage ↓  Source Download .tar.gz (20.0 MB) icon (.png) Version 26.08.1 (stable)  ·  215.3 MB  ·  57 downloads  ·  single file, download and run
SHA256 354570ab360fcc4e6ef2825754489a2f24ba73068ecd5b9dc911c72df20a25de
Kdenlive is a full non-linear video editor that KDE has developed since 2003. It gives you as many video and audio tracks as you need on one timeline, drag-and-drop of clips, images, titles and colour, keyframable effects and compositing, a titler with its own animation, and audio and video scopes for checking levels and colour. It reads and writes whatever FFmpeg does, and it can build low-resolution proxy clips so 4K and multi-cam projects stay responsive on ordinary hardware. It is built on the MLT framework, the same engine behind Shotcut.
chmod +x Kdenlive.AppImage ./Kdenlive.AppImage
Mirrored, unmodified. This is KDE's official stable AppImage from download.kde.org, served here exactly as they release it -- not repackaged. The SHA-256 above is of that file (and matches KDE's own published .sha256), so you can verify it against KDE's own checksum. LinuxDoors mirrors it so it sits alongside everything else you get from here.
Upstream download: https://kdenlive.org/download/

The timeline

Unlimited video and audio tracks, with the usual set of tools -- razor, spacer, insert and overwrite, ripple and roll. Effects and transitions are keyframable, so a blur, a crop, a colour grade or a position can move over time; compositing between tracks is a track property, not a manual step. The titler is a small vector editor of its own, with templates and keyframe animation. Audio and video scopes (waveform, vectorscope, histogram, RGB parade) dock in the window for checking exposure and levels.

Formats and staying responsive

Because it sits on FFmpeg, Kdenlive imports and exports essentially any codec and container in common use, and its render dialog ships profiles for the usual targets (MP4/H.264, WebM, ProRes, image sequences) with room to add your own. Proxy editing swaps in small stand-in clips while you cut and switches back to the originals at render time, which is what makes 4K, high-frame-rate and multi-camera projects usable on a laptop. Rendering runs in the background so you can keep working.

Mirrored, not repackaged

LinuxDoors did not build this and does not alter it. It is KDE's official stable release AppImage from download.kde.org, served here byte for byte, with its SHA-256 published so you can confirm it. The authoritative home -- source, manual, forums, bug tracker -- is kdenlive.org, linked on the card. Kdenlive is also a native LinuxDoors package (kdenlive) if you would rather it use the Qt and KDE Frameworks already on your system instead of carrying its own.

Running it -- nothing to install

Download the AppImage, mark it executable, run it. Qt, the KDE Frameworks, MLT and FFmpeg are all inside the single file. Your projects are ordinary files wherever you save them; preferences live under ~/.config. On first run Kdenlive checks for its helper tools (ffmpeg, ffplay, melt) and reports any that are missing -- in this bundle they are all included.

Prefer the package manager? Kdenlive is also an installable LinuxDoors package — kdenlive — which uses the copy of Python and Qt already on your system instead of carrying its own.

KDE's AppImage bundles Qt, the KDE Frameworks, MLT and FFmpeg, so it runs on most current Linux distributions with FUSE (or via ./Kdenlive.AppImage --appimage-extract). Built for x86-64.

OpenShot icon

OpenShot$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

A straightforward non-linear video editor -- trim, arrange, title and export, with a native timeline.

by The OpenShot Development Team · packaged October 10, 2026

↓  Download OpenShot.AppImage ↓  Source Download .tar.gz (174.6 MB) icon (.png) Version 4.0.1  ·  472.8 MB  ·  49 downloads  ·  single file, download and run
SHA256 0d00816cda8d1578c3375b612caca8f7026e15bbdcdbf3fa8af2d34e92dada17
OpenShot is an approachable video editor: drag clips onto an unlimited number of tracks, trim and slip them on the timeline, add cross-fades and transitions, keyframe position, scale and opacity for simple motion, drop in titles and 3D animated titles, and render to MP4, WebM, MOV, MKV and more through FFmpeg. Version 4.0 replaces the old web-based timeline with a native Qt widget timeline, so scrolling, zooming and dragging are quicker and the whole editor is one process. This build carries its own Python 3, PySide6 and Qt 6 alongside libopenshot and FFmpeg.
chmod +x OpenShot.AppImage ./OpenShot.AppImage # print version and exit: ./OpenShot.AppImage --version
Packaged by LinuxDoors. OpenShot is Jonathan Thomas and the OpenShot team's free software, unchanged. What LinuxDoors built is this AppImage: our own packages/openshot (openshot-qt 4.0.1, libopenshot 1.0.1, libopenshot-audio, ZeroMQ, SWIG) bundled with a Python 3, PySide6, Qt 6 and FFmpeg into one self-contained file. The SHA-256 above is of the file we built and is authoritative for it.

An editor built around a timeline

Add as many video and audio tracks as a project needs, then work directly on the timeline: drag to move a clip, drag its edge to trim, split at the playhead, and snap clips together. Transitions are a drag between two overlapping clips; a per-clip properties panel keyframes position, scale, rotation, opacity, volume and colour over time for straightforward motion and fades. A preview pane plays the composited result as you edit.

Native timeline in 4.0

OpenShot 4.0 drops the old browser-based timeline entirely and draws it with native Qt widgets instead. The practical effect is that zooming, scrolling and dragging are more responsive, the editor runs as a single process, and this AppImage does not have to carry a browser engine -- keeping it a fraction of the size a Chromium-backed build would be.

libopenshot and FFmpeg

The editing engine underneath the interface is libopenshot -- it composites the tracks, applies effects and keyframes, and hands frames to FFmpeg for decoding and encoding. Both are bundled here, so import and export cover the common formats (MP4/H.264, WebM/VP9, MOV, MKV, animated GIF, plus audio-only outputs) with nothing else installed. Export presets cover web, DVD, device and broadcast frame sizes, or set width, height, frame rate and bitrate by hand.

Titles and effects

OpenShot includes a title editor (SVG templates you can recolour and retype) and, where an SVG/Blender pipeline is available on the host, 3D animated titles. Clip effects include chroma key, brightness and saturation, blur, pixelate, deinterlace and a handful of others, each keyframable over the length of the clip.

Packaged by LinuxDoors, from our own build

The OpenShot project publishes its own AppImage; this is not a mirror of it. It is assembled by LinuxDoors from packages/openshot -- the same openshot-qt 4.0.1 that installs as a native LinuxDoors package -- bundled with Python 3, PySide6, Qt 6 and FFmpeg into one file. OpenShot's code is untouched; the authoritative home for source, docs and bug reports is openshot.org. If you would rather OpenShot use the Python and Qt already on your system, install the openshot package from the Packages page instead.

Running it -- nothing to install

Download the AppImage, mark it executable, run it. It carries its own glibc, so it is not tied to the host's glibc version. Your projects (.osp files) and rendered videos are ordinary files wherever you save them; OpenShot's settings and cache live under ~/.openshot_qt. On a system with FUSE it runs directly; without FUSE (including LinuxDoors itself) the bundled runtime extracts to a temp directory first -- same result, a slower first start.

Prefer the package manager? OpenShot is also an installable LinuxDoors package — openshot — which uses the copy of Python and Qt already on your system instead of carrying its own.

The single file carries Python 3, PySide6, Qt 6 (Core/Gui/Widgets/Svg), libopenshot, libopenshot-audio, ZeroMQ, the FFmpeg libraries and its own glibc (loader + C library) -- so it does not depend on the host's glibc version and runs on x86-64 Debian 12/13, Ubuntu 22.04+ and other current distributions. Use it with FUSE, or with ./OpenShot.AppImage --appimage-extract-and-run where FUSE is absent (LinuxDoors' own kernel has no FUSE; the bundled runtime falls back to extraction automatically). First start is slower while it unpacks. Note: on some PipeWire/PulseAudio setups libopenshot cannot open an audio output for the preview player, so preview playback is silent -- this is a libopenshot limitation, it is logged rather than shown as an error, and it does not affect editing or the exported file's audio. Rebuilt 2026-10-10 on Qt 6.12, PySide6 6.12, libopenshot 1.0.1 and FFmpeg 9.

GIMP icon

GIMP$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

The GNU Image Manipulation Program -- a full raster editor for photo work, painting and design.

by The GIMP Development Team · packaged September 11, 2026

↓  Download GIMP.AppImage ↓  Source Download .tar.gz (35.0 MB) icon (.png) Version 3.2.6  ·  476.6 MB  ·  55 downloads  ·  single file, download and run
SHA256 64df88dcb8df445259862163c243c915531ba127e63ac53826c9fff4d6ef6527
GIMP is a complete image editor: layers and layer groups, masks and channels, selections and paths, a deep brush engine for painting and retouching, and hundreds of filters. GIMP 3 moves the whole pipeline onto GEGL, so most operations work at higher bit depths and can be non-destructive, and it reads and writes the formats you would expect -- PNG, JPEG, TIFF, WebP, PSD, and its own layered XCF. It scripts itself two ways -- Script-Fu (Scheme) and Python-Fu -- both included and working in this build.
chmod +x GIMP.AppImage ./GIMP.AppImage # batch / no display: ./GIMP.AppImage --console -i --batch-interpreter plug-in-script-fu-eval -b '(gimp-version)' -b '(gimp-quit 0)'
Packaged by LinuxDoors. GIMP is the GIMP team's free software, unchanged. What LinuxDoors built is this AppImage: our own packages/gimp (GIMP 3.2.6, with babl, GEGL, librsvg and a bundled Python 3 for Python-Fu) rolled into one self-contained file. GIMP publishes no official AppImage of its own, so this is packaged from our native build rather than mirrored. The SHA-256 above is of the file we built and is authoritative for it.

A full editor, not a viewer

Layers, layer groups, layer masks, channels and paths; parametric and pixel selections; a brush engine with dynamics, symmetry painting and a real clone/heal workflow; text on paths; and a filter set that covers blur, sharpen, distort, render, edge-detect, colour grading and more. GIMP 3 runs these through GEGL, so an image can be 8-, 16- or 32-bit per channel and many adjustments stay editable rather than being baked in immediately.

GEGL and babl

GEGL is the graph-based image engine underneath GIMP 3 -- every paint stroke and filter is a node in a processing graph -- and babl is the pixel-format library that lets it convert between colour models and bit depths without losing precision. Both are bundled in this AppImage, along with GIMP's own plug-ins, so filters, the colour-managed display path and file import/export all work with nothing else installed.

Scripting: Script-Fu and Python-Fu

GIMP scripts itself two ways, both working in this build: Script-Fu (a built-in Scheme console and batch interpreter -- Filters > Script-Fu > Console) and Python-Fu (the same idea in Python 3 through GObject introspection). This AppImage carries its own Python 3 and the introspection typelibs, so both run even on a system that has neither. Batch example: ./GIMP.AppImage --console -i --batch-interpreter plug-in-script-fu-eval -b '(gimp-version)' -b '(gimp-quit 0)'.

Packaged by LinuxDoors, from our own build

GIMP does not release an official AppImage. This one is assembled by LinuxDoors from packages/gimp -- the same GIMP 3.2.6 that installs as a native LinuxDoors package -- bundled with its GTK 3, GEGL, babl and Python dependencies into one file. GIMP's code is untouched; the authoritative home for source, docs and bug reports is gimp.org. If you would rather GIMP use the GTK and Python already on your system, install the gimp package from the Packages page instead.

Running it -- nothing to install

Download the AppImage, mark it executable, run it. It carries its own glibc, so it is not tied to the host's glibc version. Your images are ordinary files wherever you save them; GIMP's settings and any brushes or scripts you add live under ~/.config/GIMP. On a system with FUSE it runs directly; without FUSE (including LinuxDoors itself) the bundled runtime extracts to a temp directory first -- same result, a slower first start.

Prefer the package manager? GIMP is also an installable LinuxDoors package — gimp — which uses the copy of Python and Qt already on your system instead of carrying its own.

The single file carries GTK 3, GEGL, babl, the GIMP plug-ins, a Python 3 for scripting, the GObject-Introspection typelibs, and its own glibc (loader + C library) -- so it does not depend on the host's glibc version and runs on x86-64 Debian 12/13, Ubuntu 22.04+ and other current distributions. Use it with FUSE, or with ./GIMP.AppImage --appimage-extract-and-run where FUSE is absent (LinuxDoors' own kernel has no FUSE; the bundled runtime falls back to extraction automatically). First start is slower while it unpacks.

PhotoCraft icon

PhotoCraft$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

A clean-room, open-source take on Photoshop -- layers, masks, adjustment layers and real PSD files, written in pure Rust.

by ArtCraft (storytold) · mirrored October 8, 2026

↓  Download PhotoCraft.AppImage ↓  Source Download .tar.gz (14.4 MB) icon (.png) Version 0.5.0 (early alpha)  ·  64.3 MB  ·  13 downloads  ·  single file, download and run
SHA256 f54d863807053bbdfcffa0d624ef7e49d3fd41310c7bb1ede48536f69929d22f
PhotoCraft is ArtCraft's image editor: an open-source, clean-room reimplementation of Adobe Photoshop, rebuilt from scratch in Rust. It has layers and layer masks, 16 non-destructive adjustment layers (Curves, Levels, Vibrance, Hue/Saturation, Channel Mixer, Gradient Map, Color Lookup and more), layer styles (drop shadow, glows, bevel, stroke, overlays), editable type, vector shape layers and the Pen tool, smart selections, brushes, and it opens and saves real layered PSD files. The menus, panels and shortcuts sit where Photoshop users expect them. It works offline, with no account. Upstream describes it as early alpha.
chmod +x PhotoCraft.AppImage ./PhotoCraft.AppImage # on LinuxDoors: linuxdoors-run-appimage ~/AppImages/PhotoCraft.AppImage
Mirrored, unmodified. This is ArtCraft's official x86-64 AppImage (photocraft-0.5.0-linux-x86_64.AppImage) from the PhotoCraft GitHub release, served here exactly as they release it -- not repackaged. The SHA-256 above is of that file and matches ArtCraft's own published SHA256SUMS.txt, so you can verify it against theirs. The source download is GitHub's archive of the same v0.5.0 tag.
Upstream download: https://github.com/storytold/photocraft/releases/tag/v0.5.0

Familiar by design

PhotoCraft deliberately mirrors Photoshop's layout: the tool strip down the left, the options bar across the top, Color/Swatches, Properties/Adjustments and Layers/Channels/Paths panels on the right, and the same keyboard shortcuts. Adjustment layers keep every edit live -- stack them, mask them to an area, reorder or switch them off -- and your original pixels never change. Layer styles stay editable and can be copied between layers.

Real PSD files

It opens, edits and saves layered Photoshop documents rather than flattening them. Upstream reports that re-saving keeps the render of 307 of the 309 files in the psd-tools test corpus, and that all 116 shape layers in its PSD corpus match Photoshop's pixels. Everyday formats -- PNG, JPEG, TIFF, WebP, GIF, BMP, TGA, AVIF, OpenEXR, HDR and more -- open directly too.

Early alpha -- know before you rely on it

ArtCraft labels PhotoCraft early alpha, and versions are arriving days apart (0.2, 0.3 and 0.5 all landed in the first week of October 2026). Expect rough edges and missing features; keep originals of anything important. In a VM or on a machine without working GPU acceleration it shows a one-time 'Switched to CPU rendering' notice and carries on with its CPU compositor -- that is expected, choose Keep Using CPU.

Mirrored, not repackaged

LinuxDoors did not build this and does not alter it. It is ArtCraft's own official x86-64 AppImage from the PhotoCraft GitHub release, served here byte for byte; the SHA-256 above matches the SHA256SUMS.txt ArtCraft publishes with that release. The matching source code for this exact version (the v0.5.0 tag) is offered beside it. Tested on LinuxDoors v1.39 in a virtual machine and on real LinuxDoors hardware before listing.

Running it -- nothing to install

Download the AppImage, mark it executable and run it. On LinuxDoors the easiest way is linuxdoors-run-appimage ~/AppImages/PhotoCraft.AppImage, which unpacks it once into your cache so later launches are instant. On first run PhotoCraft adds its own menu entry and icon under ~/.local/share so your desktop shows the right icon; set PHOTOCRAFT_NO_DESKTOP_INTEGRATION=1 to skip that. The AppImage also contains photocraft-cli for scripted, batch use.

ArtCraft's AppImage bundles its own libraries and draws its interface with a GPU compositor (wgpu); with no usable GPU it falls back to CPU rendering automatically, so it also runs in virtual machines. Needs an x86-64 CPU and glibc 2.35 or newer -- LinuxDoors, Debian 12/13, Ubuntu 22.04+, Mint 21+ and Fedora are all fine. It runs on LinuxDoors without FUSE (linuxdoors-run-appimage, or --appimage-extract-and-run).

LinuxUltraOffice icon

LinuxUltraOffice$9.99

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

LinuxDoors Payments

Checks or money orders sent to the LinuxDoors programmer:

To: Stanley Switaj
3438 Eden Street
Philadelphia, PA 19114

Honor system

You download it first — there is no payment wall, no licence key, no trial timer. Install it, use it for real work, and if it earns a place in what you do and you like it, then pay the price shown. If it is not for you, you owe nothing.

A paid copy and an unpaid copy are the same program and behave the same way. Paying is simply you choosing to support the person who provided it, after it has proven useful to you. The software itself is the work of its upstream authors — the great programmers who wrote it; the price supports the person who packaged this build and provides it here.

If you think it is worth more — say, compared to the price of similar software elsewhere — and you feel it is right to do so, paying more than the price shown is always welcome. Every little bit helps, thank you.

A full productivity suite -- Writer, Calc and Impress -- built and rebranded for LinuxDoors OS.

from LinuxDoors.com · packaged October 10, 2026

A LinuxDoors AppImage Software Product

↓  Download LinuxUltraOffice.AppImage ↓  Source Download .tar.gz (302.6 MB) icon (.png) Version 26.8.1.1  ·  283.1 MB  ·  74 downloads  ·  single file, download and run
SHA256 61ffbfb6fef7ad3948b9618e9ac621bc29174025fb70a0b2ae79a8e43295de9e
LinuxUltraOffice is a complete office suite derived from LibreOffice and rebranded throughout for LinuxDoors: Writer for documents, Calc for spreadsheets, Impress for presentations, with Draw, Math and Base along for the ride in the same binary. It reads and writes OpenDocument natively and handles Microsoft Word, Excel and PowerPoint files -- .docx, .xlsx, .pptx and the older formats -- plus PDF export. No account, no subscription, no cloud; your documents are ordinary files wherever you put them.
chmod +x LinuxUltraOffice.AppImage ./LinuxUltraOffice.AppImage # Start Center ./LinuxUltraOffice.AppImage --writer # or --calc, --impress, --draw, --math, --base
LinuxDoors original. LinuxUltraOffice is a LinuxDoors product -- LibreOffice source, deep-rebranded (splash, About box, window titles, icons) and built as our own package. This AppImage bundles that build -- the full soffice program and data tree with its GTK 3 dependencies -- into one file. LibreOffice's code is unmodified beyond the branding; it stays under the Mozilla Public License 2.0. The SHA-256 above is of the file we built and is authoritative for it. (2026-09-02 build: bundles the complete matching NSS crypto set so first-time printing no longer crashes. 2026-09-14 build: re-bundled from the native package's own real LibreOffice 26.8.1.1 rebuild -- a minor-series upgrade from the prior 26.2.6.3-based build, verified via a real --version and extract-and-run smoke test.) Rebuilt 2026-10-10 on LibreOffice 26.8.1.1; headless PDF export now works from the AppImage too.

Writer, Calc, Impress -- and the rest

Writer is a full word processor: styles, tables, sections, footnotes, mail merge, change tracking, a bibliography database. Calc is a real spreadsheet with pivot tables, several hundred functions, multi-sheet references, charts and a solver. Impress builds slide decks with master slides, custom animation and presenter tools. Draw (vector diagrams and simple page layout), Math (formula editor) and Base (database front end) are the same binary launched with a different flag -- pass --draw, --math or --base, or pick them from the Start Center.

Formats -- OpenDocument and Microsoft Office

The native format is OpenDocument (.odt, .ods, .odp) -- an ISO standard, plain zipped XML. It also opens and saves the Microsoft formats in daily use: .docx, .xlsx, .pptx and the older .doc / .xls / .ppt. Export to PDF is built in (File > Export as PDF, or --convert-to pdf from a script), including PDF/A for archiving. RTF, CSV, HTML and a long list of others are there too.

A LinuxDoors product

This is not a mirror of someone else's build. LinuxUltraOffice is LibreOffice source that LinuxDoors rebrands and compiles as its own package -- the splash screen, the About dialog, the window titles and the icon set all say LinuxUltraOffice. The engine, filters and file formats are LibreOffice's, unchanged, under the Mozilla Public License 2.0. The suite also installs as the native linuxultraoffice package from the Packages page, which shares the GTK already on your system instead of carrying its own.

Running it -- nothing to install

Download the AppImage, mark it executable, run it. With no argument you get the Start Center; --writer, --calc and --impress jump straight into an app. It carries its own glibc, so it is not tied to the host's glibc version. Your settings live under ~/.config/libreoffice; your documents are wherever you save them. On a system with FUSE it runs directly; without FUSE (including LinuxDoors itself) the bundled runtime extracts to a temp directory first -- same result, a slower first start.

Prefer the package manager? LinuxUltraOffice is also an installable LinuxDoors package — linuxultraoffice — which uses the copy of Python and Qt already on your system instead of carrying its own.

The single file carries the whole office suite, its GTK 3 stack, and its own glibc (loader + C library), so it does not depend on the host's glibc version -- it runs on x86-64 Debian 12/13, Ubuntu 22.04+ and other current distributions, with FUSE or via ./LinuxUltraOffice.AppImage --appimage-extract-and-run where FUSE is absent (LinuxDoors' own kernel has no FUSE; the bundled runtime falls back to extraction automatically). First start is slower while it unpacks.

PdfCraft icon

PdfCraft$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

A clean-room, open-source take on Acrobat -- read, organize, combine, split, sign and secure PDFs, written in pure Rust.

by ArtCraft (storytold) · mirrored October 8, 2026

↓  Download PDFCraft.AppImage ↓  Source Download .tar.gz (11.3 MB) icon (.png) Version 0.4.0 (early alpha)  ·  52.3 MB  ·  11 downloads  ·  single file, download and run
SHA256 e21ce7de49910acc8f032a4b906141da42b39002383fb9ef33a9d86dbbec05d6
PdfCraft is ArtCraft's PDF workbench: an open-source, clean-room reimplementation of Adobe Acrobat, rebuilt from scratch in Rust. It reads PDFs faithfully (complex and right-to-left scripts, vertical Japanese, colour emoji, transparency), searches and copies text in the right reading order, and has tools to organize pages, combine and split files, comment and highlight, fill and sign forms, redact, compress, protect with a password and remove hidden information. Every save appends rather than rewriting, so the original bytes are never lost. It works offline, with no account and no telemetry. Upstream describes it as early in development.
chmod +x PDFCraft.AppImage ./PDFCraft.AppImage # on LinuxDoors: linuxdoors-run-appimage ~/AppImages/PDFCraft.AppImage
Mirrored, unmodified. This is ArtCraft's official x86-64 AppImage (pdfcraft-0.4.0-linux-x86_64.AppImage) from the PdfCraft GitHub release, served here exactly as they release it -- not repackaged. The SHA-256 above is of that file and matches ArtCraft's own published SHA256SUMS.txt, so you can verify it against theirs. The source download is GitHub's archive of the same v0.4.0 tag.
Upstream download: https://github.com/storytold/pdfcraft/releases/tag/v0.4.0

Read anything, find anything

Pages render in tiles, so text stays sharp at any zoom, and each page renders in isolation so a damaged document is repaired rather than crashing the viewer -- upstream reports 0 crashes across the 983-file pdf.js test corpus. Continuous, single-page, two-up, full-screen and a distraction-free Read mode, light and dark themes, bookmarks, thumbnails and page labels. Search runs as you type and selected text copies out in proper reading order, columns and CJK included.

The tools

The All tools panel covers Export, Fill & Sign, Edit, Create, Combine files, Organize pages (page grid, rotate, insert, delete), Add comments (sticky notes, highlight, underline), Scan & OCR, Protect, Redact, Compress, Prepare a form, Add a stamp and Use a certificate. Saves append changes and are written atomically, with deep undo.

Early in development -- know before you rely on it

ArtCraft is releasing PdfCraft quickly (it was called PrintCraft up to 0.2.1 and became PdfCraft at 0.4.0, a few days later), so expect rough edges and features still being filled in. Keep a copy of any PDF you can't afford to lose before editing it. Without GPU acceleration it renders through the CPU automatically.

Mirrored, not repackaged

LinuxDoors did not build this and does not alter it. It is ArtCraft's own official x86-64 AppImage from the PdfCraft GitHub release, served here byte for byte; the SHA-256 above matches the SHA256SUMS.txt ArtCraft publishes with that release. The matching source code for this exact version (the v0.4.0 tag) is offered beside it. Tested on LinuxDoors v1.39 in a virtual machine and on real LinuxDoors hardware before listing.

Running it -- nothing to install

Download the AppImage, mark it executable and run it. On LinuxDoors the easiest way is linuxdoors-run-appimage ~/AppImages/PDFCraft.AppImage, which unpacks it once into your cache so later launches are instant. The AppImage also contains pdfcraft-cli for scripted work on PDFs.

ArtCraft's AppImage bundles its own libraries and draws its interface with a GPU compositor (wgpu); with no usable GPU it falls back to CPU rendering automatically, so it also runs in virtual machines. Needs an x86-64 CPU and glibc 2.35 or newer -- LinuxDoors, Debian 12/13, Ubuntu 22.04+, Mint 21+ and Fedora are all fine. It runs on LinuxDoors without FUSE (linuxdoors-run-appimage, or --appimage-extract-and-run).

LinuxDoors System Status icon

LinuxDoors System Status$0.00

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

A professional, WCAG-checked system monitor -- CPU, memory, disks, live network connections, and process control in one window.

from LinuxDoors.com · created September 12, 2026

A LinuxDoors AppImage Software Product

↓  Download LinuxDoorsSystemStatus.AppImage ↓  Source Download .tar.gz (18.1 KB) icon (.png) Version 1.0  ·  436.9 MB  ·  40 downloads  ·  single file, download and run
SHA256 b2877dfc06a02e7f0b529cde0932d1c3cbf7ae8fe4067c21b5605335a05c1f56
LinuxDoors System Status is a PySide6 system monitor built in LinuxDoors' own visual style: live per-core CPU bars and a scrolling usage chart, RAM and swap with their own chart, a real file-system usage table, a live network throughput chart alongside an actual connections table (protocol, address, state, and the owning process), and full process control -- sortable columns, End Process, and Change Priority. A Summary tab shows every area at a glance; dedicated CPU, Memory, File Systems, Network, and Processes tabs give each one a full window's worth of room. Opens in light mode by default, with a one-click switch to dark -- both checked against WCAG 2.1 contrast requirements -- and a +/- zoom scales the whole interface. This build carries its own Python 3 and Qt 6, so it runs without either already being installed.
chmod +x LinuxDoorsSystemStatus.AppImage ./LinuxDoorsSystemStatus.AppImage # on a system with no FUSE (including LinuxDoors itself): ./LinuxDoorsSystemStatus.AppImage --appimage-extract-and-run
LinuxDoors original. Built by LinuxDoors.com -- this is our own application, not a mirror. The SHA-256 above is authoritative.

Everything at a glance, or one area at a time

The Summary tab shows CPU, Memory, File Systems, Network, and Processes stacked together, each with its own (+) / (-) fold toggle -- collapse what you don't need without losing it; a folded section keeps updating underneath, so reopening it never shows a stale reading. Prefer more room for one area? Dedicated CPU, Memory, File Systems, Network, and Processes tabs give each the whole window, with bigger charts and taller tables, reading the same live data as the Summary view.

Real numbers, not estimates

CPU and memory come straight from /proc/stat and /proc/meminfo -- the same source top itself uses. Disk usage reads /proc/mounts and statvfs() directly. The network connections table and the process list both shell out to ss and ps -- well-tested tools already on any real Linux system -- rather than re-implementing kernel-interface parsing by hand.

A live connections table, not just a graph

Alongside a scrolling network-throughput chart, the Network tab lists actual live connections -- protocol, local and remote address, state, and the process that owns each one -- sortable by any column. The Processes tab is a full process manager: sort by CPU, memory, or name, end a runaway process, or change its scheduling priority, elevating to a password prompt automatically when a target process needs it.

Built to LinuxDoors' own visual standard

Opens in light mode by default, with a one-click switch to dark. Both themes are checked against the real WCAG 2.1 contrast-ratio formula before shipping, not eyeballed -- every text/background pairing in the interface, including the chart labels and grid lines, passes. A +/- zoom control scales the entire interface's base font size, so the whole window stays legible and proportional at a larger size rather than just one panel growing.

Packaged by LinuxDoors, from our own build

This AppImage is assembled from packages/linuxdoors-system-status, the same application that installs as a native LinuxDoors package. It carries its own Python 3, PySide6, and Qt 6, so it needs nothing pre-installed and isn't tied to the host's own library versions. If you'd rather it use the Python and Qt already on your system, install the linuxdoors-system-status package from the Packages page instead.

Why 417 MB for a 45 KB program

The application itself is one Python file of about 45 kilobytes -- the rest of the download is the toolkit it runs on, bundled in so the file works on its own regardless of what the host machine already has installed. That's a full Python 3 interpreter and standard library (the host may have no Python at all, or the wrong version), the Qt 6 modules the interface is drawn with -- Core, Gui, Widgets, and Charts for the live graphs -- along with the font, text-shaping, and image libraries Qt itself depends on to draw anything, plus PySide6, the bridge between the Python code and Qt. Underneath all of that sits a bundled copy of glibc, the C library and dynamic loader, so the file runs correctly on an older or newer host C library than the one it was actually built against. None of it is unused padding -- it's the complete, working set of libraries the interface needs, compressed as tightly as the format allows. A distribution's package manager installs most of this once and shares it between many programs; a single portable file can't do that, so it carries its own copy instead -- the same reason every self-contained Qt-based AppImage in this Store, GIMP and OpenShot included, lands in a broadly similar size range.

Prefer the package manager? LinuxDoors System Status is also an installable LinuxDoors package — linuxdoors-system-status — which uses the copy of Python and Qt already on your system instead of carrying its own.

Written for LinuxDoors, but nothing in it is LinuxDoors-specific -- it carries its own Python 3, PySide6, Qt 6 (Core/Gui/Widgets/Charts) and glibc, so it runs on Debian- and Ubuntu-type systems and on any other current x86-64 Linux distribution, independent of what Python or Qt version the host has installed. Use it directly where FUSE is available, or with ./LinuxDoorsSystemStatus.AppImage --appimage-extract-and-run where it is not (LinuxDoors' own kernel has no FUSE at all -- this is the normal way to run any AppImage on LinuxDoors itself). The first launch after each system boot is slower while it extracts; later launches from the same extracted copy are fast. Verified running cleanly under all seven LinuxDoors desktop environments (XFCE, MATE, GNOME, Cinnamon, KDE Plasma, LXQt, and Enlightenment).

=============================================================================== LinuxDoors System Status — for the LinuxDoors AppImage Store =============================================================================== Name: LinuxDoors System Status Price: $0.00 Maker: LinuxDoors.com Created: September 12, 2026 Kind: A LinuxDoors AppImage Software Product File: LinuxDoorsSystemStatus.AppImage Size: 417M (single file, download and run) SHA256: b2877dfc06a02e7f0b529cde0932d1c3cbf7ae8fe4067c21b5605335a05c1f56 CARD DESCRIPTION (the one line the store shows under the name) A professional, WCAG-checked system monitor — CPU, memory, disks, live network connections, and process control in one window. ------------------------------------------------------------------------------- DESCRIPTION ------------------------------------------------------------------------------- A system monitor built to look and feel like part of LinuxDoors itself, rather than a utility borrowed from somewhere else. It watches the machine the way the built-in tools of a well-finished desktop do: per-core CPU load, memory and swap, how full each mounted disk is, what the network is actually doing right now, and which processes are running — with the ability to act on any of that, not just look at it. A Summary tab shows every area at once, each with its own fold toggle so a section can be tucked away without losing it — folded sections keep updating underneath, so opening one again never shows a stale reading. Prefer more room for one thing at a time? Dedicated CPU, Memory, File Systems, Network, and Processes tabs each get the whole window, reading the same live data as the Summary view. Written for LinuxDoors, though nothing in it is specific to LinuxDoors — it runs on Debian and Ubuntu type systems, and on any other Linux distribution that can run an AppImage. ------------------------------------------------------------------------------- What is in the program ------------------------------------------------------------------------------- CPU Every core shown as its own live bar, sized to however many cores the machine actually has, plus an overall-usage line chart scrolling in real time. Numbers come straight from /proc/stat — the same source top itself reads — not a guess or an average smoothed past recognition. MEMORY RAM and swap, each as a bar with the real figures beside it (used and total), and a scrolling chart of RAM usage over time. Read from /proc/meminfo directly. FILE SYSTEMS A table of every real mounted filesystem — device, mount point, size, used, free, and percentage — read from /proc/mounts and statvfs(), with no guessing at what "real" means: pseudo-filesystems are left out. NETWORK A scrolling chart of upload and download throughput sits above a live connections table: protocol, local and remote address, state, and the process that owns each connection. The table comes from ss, the process list from ps — both well-tested tools already on any real Linux system, rather than a hand-rolled reimplementation of a kernel interface. PROCESSES A full, sortable process table — PID, user, CPU, memory, priority, command. Select a process to end it or change its scheduling priority; if the action needs a password, the program asks for one rather than failing silently. LIGHT AND DARK, MEASURED NOT GUESSED Opens in light mode by default, with a one-click switch to dark. Both themes are checked against the real WCAG 2.1 contrast-ratio formula before shipping — every text and background pairing in the interface, including chart labels and grid lines — rather than judged by eye. A self-test (--check-contrast) reports any failing pair; there are none. ZOOM A single +/- control scales the whole interface's base font size, so the window stays legible and proportional at a larger size rather than one panel growing while the rest stays put. ------------------------------------------------------------------------------- Verified across every LinuxDoors desktop ------------------------------------------------------------------------------- LinuxDoors offers a choice of desktop environments, each with its own window manager, and this program was checked under all seven rather than assumed to work everywhere because it worked somewhere: XFCE, MATE, GNOME, Cinnamon, KDE Plasma, LXQt, and Enlightenment. It launches cleanly and renders correctly under each. ------------------------------------------------------------------------------- Why 417M for a program this small ------------------------------------------------------------------------------- The program itself is one Python file of about 45 kilobytes. Everything else in the download is the machinery carried alongside it so the file runs on its own, on a machine that may have none of the following already installed, or a different version of any of them: - Its own copy of Python 3, complete with the standard library, since the AppImage cannot assume the host has Python installed at all. - Its own copy of the Qt 6 toolkit (the parts this program actually uses: the core, the windowing and widget libraries, and the charting library for the live graphs) plus PySide6, the layer that lets the Python code drive Qt. Qt's own graphics, font and text libraries come with it, since they are not optional parts of Qt — they are how it draws anything at all. - Its own copy of glibc, the C library and dynamic loader every one of the above is built on. This is what lets the same file run correctly whether the host is running an older or a newer C library than the one it was built against — the file does not have to match the host's version, because it never uses the host's copy. None of this is unused padding: it is the complete, working set of libraries the interface is drawn with, compressed as tightly as the format allows (zstd at its highest setting). A distribution's own package manager would install most of this once and share it between many programs; a single portable file cannot do that, so it brings its own copy of everything it needs instead. This is the same reason every other self-contained Qt-based AppImage in the LinuxDoors Store — GIMP, OpenShot, LinuxUltraOffice — lands in a broadly similar size range: the floor is set by the toolkit each one carries, not by how much of that program's own code there is. ------------------------------------------------------------------------------- What it does not do, plainly ------------------------------------------------------------------------------- It is better to know the edges of a program before downloading it. - No historical logging. Charts scroll a recent live window; nothing is written to disk for later review. - No remote monitoring. It watches the machine it runs on, not another one over the network. - No alerting or thresholds. It shows what is happening; deciding whether a number is a problem is left to you. ------------------------------------------------------------------------------- LinuxDoors original ------------------------------------------------------------------------------- Built by LinuxDoors.com — this is our own application, not a mirror and not a repackaging of somebody else's build. The SHA-256 above is authoritative. It carries its own Python 3, its own Qt 6, and its own glibc, so it does not depend on the host's Python or Qt version, or its C library. Nothing is installed on the machine and nothing on the machine is disturbed. ------------------------------------------------------------------------------- Running it — nothing to install ------------------------------------------------------------------------------- chmod +x LinuxDoorsSystemStatus.AppImage ./LinuxDoorsSystemStatus.AppImage On LinuxDoors, which has no FUSE, run it the way LinuxDoors runs any AppImage: ./LinuxDoorsSystemStatus.AppImage --appimage-extract-and-run or through linuxdoors-run-appimage, which does that for you and unpacks it once rather than on every launch. The first launch is slower while it extracts; later launches from the same extracted copy are fast.
LinuxUltraGrep icon

LinuxUltraGrep$1.50

Open code, fair pay

The source stays open — free to read, build on and share. A price, where there is one, is not for the code as that is opensource. It is for the work around it: the servers and bandwidth that carry the download to you, and the hours a programmer spent designing, building, testing and looking after the app — hours that support them and the people they love, the same as any other profession in the workplace economy.

A share of what the paid apps earn goes back to the Linux and free-software projects they are built on. That community gave its work away so all of this should exist; paying the people who keep it alive is how it stays alive.

Anything marked $0.00 is exactly that — free, no asterisk.

LinuxDoors Payments

Checks or money orders sent to the LinuxDoors programmer:

To: Stanley Switaj
3438 Eden Street
Philadelphia, PA 19114

Honor system

You download it first — there is no payment wall, no licence key, no trial timer. Install it, use it for real work, and if it earns a place in what you do and you like it, then pay the price shown. If it is not for you, you owe nothing.

A paid copy and an unpaid copy are the same program and behave the same way. Paying is simply you choosing to support the person who provided it, after it has proven useful to you. The software itself is the work of its upstream authors — the great programmers who wrote it; the price supports the person who packaged this build and provides it here.

If you think it is worth more — say, compared to the price of similar software elsewhere — and you feel it is right to do so, paying more than the price shown is always welcome. Every little bit helps, thank you.

Search inside files, and search for files, with the speed of grep.

from LinuxDoors.com · created September 17, 2026

A LinuxDoors AppImage Software Product

↓  Download LinuxUltraGrep.AppImage ✉  Source code provided with payment (send email) icon (.png) Version 1.1  ·  38.1 MB  ·  40 downloads  ·  single file, download and run
SHA256 475f56f6e6051a75fb36875fe8d813319379c47d5564e49ea2e63ed1aa13a7f4
A grepWin-style search and replace tool for Linux: text or regular-expression search inside files, file-name search across a whole tree -- folder names too, not just files -- and replace-with-preview across thousands of files before anything is written. It runs both real GNU grep and a built-in Python engine, picks whichever is genuinely faster on the machine it's running on, and cross-checks the two so a wrong count never goes unnoticed. Everything it needs travels with it -- no Python to install, no Qt to match. This one has a real price: $2.99, honor system, same as every other paid AppImage in this Store.
chmod +x LinuxUltraGrep.AppImage ./LinuxUltraGrep.AppImage ./LinuxUltraGrep.AppImage ~/code # start in a folder ./LinuxUltraGrep.AppImage -r 'def .*self' ~/code # command line, no window ./LinuxUltraGrep.AppImage --files test --folders ~/code # match folder names too # on LinuxDoors (no FUSE): ./LinuxUltraGrep.AppImage --appimage-extract-and-run # or via linuxdoors-run-appimage, which unpacks it once rather than on every launch
LinuxDoors original. Built by LinuxDoors -- this is our own application, not a mirror and not a repackaging of somebody else's build. The SHA-256 above is authoritative for this AppImage. It carries its own Python and its own Qt, so the window and the search work on a computer with nothing installed on it. The filters, the two search engines, the replacing and the matching are all the program's own code -- GNU grep is used when it's on the machine and is faster, and there is always a backup, secondary way to do the counting. GoodsAppStore.com, a separate storefront for quality apps, will soon carry an Android build (mLinuxUltraGrep.apk) as well -- a different file, with its own separate checksum.

Two engines, and neither one guessed at

Measured over /usr/include (4,692 files, warm caches): GNU grep across 10 processes finishes in 0.029s, GNU grep -r alone in 0.081s, the built-in Python engine across 10 processes in 0.168s. Threads make the Python engine slower than not using them at all -- Python's regular-expression engine holds the interpreter lock while it works, so the pool here is a process pool and never a thread pool. The two engines also don't naturally agree on a count (grep counts matching lines, Python counts matches, and a line with three hits is one line and three matches) -- so the fast program is never asked for a count at all. It's asked only which lines match, which is what it's extraordinarily good at, and the exact matches within those few lines are worked out afterwards, in one place, in one way. --check runs every engine over the same folder and fails if any of them disagree by so much as one. On a machine with no grep at all, the built-in engine still runs across every core but two, maps large files rather than reading them, and stops at the first null byte that says a file isn't text.

Looking inside files, and looking for files

Two tabs, because they're two different questions. Contents looks inside files for text or a regular expression -- match case, whole words, inverse search, search again within the results, dot-matches-newline for patterns that span lines -- and shows a file, then every matching line in it, the matched part picked out, with the line number beside it; double-click and it opens in your editor at that exact line and column. File names looks at the names themselves -- wildcards or a full regular expression, and a pattern with a slash in it matches the path instead. The two tabs share the same filters underneath, so switching between them doesn't mean setting everything up again: which files by name or extension, which folders to skip, hidden and binary files (both off by default), symbolic links (off by default, and a loop of links won't hang it), and size or date limits.

Now it can find folders too, not just files

Include folders, in the filters, makes a file-name search also match the folders themselves -- a question you can only ask of names, so it greys out on the Contents tab instead of disappearing, which would leave you wondering where it went. A folder in the results carries an arrow: open it and it lists what's inside, folders first, so a match can be walked down into rather than only glanced at -- read only when opened, not up front, so a search that matches thousands of folders never means thousands of directory reads nobody asked for. Three of the file filters deliberately sit out of it -- name patterns, size, and age are questions about files, not folders -- while hidden, skipped, and whether subfolders get walked still apply to both. On the command line, --folders does the same thing: matching folders print with a trailing slash, the way ls -F writes them.

Replacing, shown before it happens

Replace shows what it will do before it does it -- every match, the line as it stands and the line as it would become, with a tick beside each one. Untick what you'd rather keep; nothing is written until you press the button, and only what's still ticked gets changed. Backups are on by default, beside the file or in a folder of your choosing, and file modification dates can be kept on request. \1 and \2 put the groups from the search into the replacement.

The command line is the same program

The same search, without the window, using grep's own short flags since anyone reaching for this already knows them: -r to recurse, -i/-w/-v/-F/-E for case/whole-word/inverse/fixed/regex, -l/-c/-o for names-only/counts/matched-part-only, --include and --exclude-dir for which files and folders, --replace and --dry-run to change things or just see what would change, --open to jump straight into an editor at the match, and --engine to force grep or the built-in Python engine instead of letting it choose. With no pattern and no --files, the window opens instead.

The rest of it

A regular-expression tester -- try a pattern against text you type and see every match and what each group caught, before turning it loose on ten thousand files. Saved searches, so a search you use often loads back in one click with its pattern, folder and filters intact. Export to a text file or CSV. A text-size slider under Tools -- a slider rather than a pair of buttons, since the real question is how big, not one step bigger, and it applies to the results already on screen as it moves. Light and dark themes, with every colour pair measured against the WCAG contrast standard rather than judged by eye -- Tools, Check the colours, tells you so itself.

Prefer the package manager? LinuxUltraGrep is also an installable LinuxDoors package — linuxultragrep — which uses the copy of Python and Qt already on your system instead of carrying its own.

Written for LinuxDoors, though nothing in it is specific to LinuxDoors -- it runs on Debian and Ubuntu type systems, and on any other Linux distribution that can run an AppImage.

=============================================================================== LinuxUltraGrep — for the LinuxDoors AppImage Store =============================================================================== Name: LinuxUltraGrep Price: $0.00 Author: Stan Switaj Provider: GoodsAppStore.com Created: September 17, 2026 Updated: September 18, 2026 Kind: A LinuxDoors AppImage Software Product File: LinuxUltraGrep.AppImage Size: 38M (single file, download and run) SHA256: 475f56f6e6051a75fb36875fe8d813319379c47d5564e49ea2e63ed1aa13a7f4 Bug reports: bug-reports-linuxultragrep@linuxdoors.com CHANGED, 3 OCTOBER 2026 -- FIXED: DID NOT START ON SOME REAL DESKTOPS On Linux Mint 22.3 and some Ubuntu-family desktops, this AppImage failed to open at all, printing "qt.qpa.plugin: ... xcb-cursor0 or libxcb-cursor0 is needed" and exiting. The AppImage bundles its own Qt, but was missing one small library (libxcb-cursor, plus its own two helper libraries) that Qt's screen code needs -- present on Debian and LinuxDoors by other means, but not installed by default on Mint or Ubuntu. That library is now bundled inside the AppImage itself, so it no longer depends on the host having it. CARD DESCRIPTION (the one line the store shows under the name) Search inside files, and search for files, with the speed of grep. ------------------------------------------------------------------------------- DESCRIPTION ------------------------------------------------------------------------------- A search program. Type what you are looking for, say where to look, press Find. It looks inside files the way grep does, and it looks for files by name the way find does, and it can replace what it finds across a thousand files after showing you exactly what it intends to change. It does what grepWin does on Windows, which is the program people miss most when they come to Linux and discover that the searching is all on the command line. Everything grepWin offers is here — text or regular expression, match case, whole words, inverse search, searching again inside what was found, file name patterns, folders to skip, size and date limits, hidden and binary files, symbolic links, replace with backups, saved searches, a regular expression tester and an export. Two searches, two tabs. Contents looks inside files. File names looks at the names themselves. They are separate because they are separate questions, and mixing them means half your results are always the kind you did not ask for. They share the filters underneath, so switching tabs does not mean setting it all up again. Everything it needs travels with it. There is no Python to install first and no Qt to match, and nothing on the machine for it to disagree with — which is the point of shipping it as one file. Written for LinuxDoors, though nothing in it is specific to LinuxDoors — it runs on Debian and Ubuntu type systems, and on any other Linux distribution that can run an AppImage. ------------------------------------------------------------------------------- What does the searching, and why ------------------------------------------------------------------------------- Whichever is quickest, and the answer is not always the same program. Measured over /usr/include — 4,692 files — best of three runs, warm caches: GNU grep across 10 processes 0.029s GNU grep -r 0.081s python, 10 processes 0.168s python, one thread 0.406s python, 10 threads 0.628s Two things in that table decided how the program is built. The first is that threads make Python searching *slower* — slower than not using them at all. Python's regular expression engine holds the interpreter lock while it works, so ten threads take turns rather than run together. The pool here is a process pool and never a thread pool. The second is that the two engines did not agree on the answer. grep counted 32,580 where Python counted 36,770, because `grep -c` counts *lines that match* while Python was counting *matches* — a line with three hits is one line and three matches. A search that reports a different number depending on which program happened to run is worse than a slow one. So the fast program is never asked for a count. It is asked only *which lines match*, which is the part it is extraordinarily good at, and the exact matches within those few lines are worked out afterwards, in one place, in one way. The status bar names the engine that ran, and `--check` runs every engine over the same folder and fails if any of them disagree by so much as one. On a machine with no grep at all there is still the built-in engine, and it is not a toy: it maps large files rather than reading them, stops at the first null byte that says a file is not text, and runs across every core but two. Nothing here *requires* an external program. ------------------------------------------------------------------------------- Looking inside files ------------------------------------------------------------------------------- Text or regular expression Python's own, which is very close to what grepWin gives through boost Match case exactly as typed Whole words needle, not needless Inverse search the files with no match at all Search within the results narrow a search rather than start over Dot matches newline for patterns that span lines The results are a file, then every line in it that matched, with the matched part picked out and the line number beside it. Double-click and the file opens in your editor at that line — and at the column the match starts on, not merely the top of the file. ------------------------------------------------------------------------------- Looking for files ------------------------------------------------------------------------------- A pattern matches the file name. Put a slash in it — test/fixtures — and it matches the path instead. Wildcards * ? [ ] work, or tick Regular expression for the full thing. The folder you are searching in is never part of what is matched. It is part of every result, so if its name happened to contain what you typed, everything would match — and turning on Match case would appear to fix it while fixing nothing. Include folders, in the filters, matches the folders themselves and not only what is inside them. It is a question you can only ask of names — there is no such thing as grepping a directory — so it greys out on the Contents tab rather than disappearing, which would leave you hunting for where it went. Three of the file filters deliberately do not apply to folders. Name matches would wipe out every folder the moment it said *.py, which is what it says nearly always; size and age are about files. All three would read as the option being broken rather than as a filter doing its job. What does apply is what is about folders: hidden ones, skipped ones, and whether subfolders are being walked at all. A folder in the results has an arrow. Open it and it lists what is in it, folders first, and those open too, so a match can be walked down into rather than only glanced at. What is inside is read when you open it and not when you search: a name search can match thousands of folders, and reading every one of them to fill rows nobody has scrolled to would turn a search of a disk into that search plus thousands of directory reads. Expand all reads the first two hundred and says so; the rest read themselves as they are opened. ------------------------------------------------------------------------------- Which files get looked at ------------------------------------------------------------------------------- Name matches *.py, *.txt — or a regular expression Skip folders .git, node_modules and the rest, and editable Include subfolders or just the one Include hidden files off by default Include binary files off by default; a null byte in the first few kilobytes is what says a file is not text Follow symbolic links off by default, and a loop of links will not hang it Size smaller or bigger than a figure you set Changed before or after a date The panel comes back the way you left it, open or closed, with every box in it as it was. A filter that quietly resets itself overnight is a fine way to wonder why the same search now finds something else. ------------------------------------------------------------------------------- Replacing ------------------------------------------------------------------------------- Replace shows you what it will do before it does it: every match, the line as it stands and the line as it would become, with a tick beside each one. Untick what you would rather keep. Nothing is written until you press the button, and what is written is only what is still ticked. Backups are on by default, beside the file or in a folder of your choosing. File dates can be kept, because changing a thousand modification times is a rotten way to find out you meant a different folder. \1 and \2 put the groups from the search into the replacement. ------------------------------------------------------------------------------- The command line ------------------------------------------------------------------------------- The same search, without the window. The short flags are grep's, because anybody reaching for this already knows them. LinuxUltraGrep.AppImage -r 'def .*self' ~/code LinuxUltraGrep.AppImage -rl --include '*.py' TODO ~/code LinuxUltraGrep.AppImage --files '*.conf' /etc LinuxUltraGrep.AppImage --files test --folders ~/code LinuxUltraGrep.AppImage -r --replace new old ~/code --dry-run LinuxUltraGrep.AppImage --column -o -E '\bclass \w+' ~/code -i -s -w -v -F -E case, whole words, inverse, fixed, regex -l -c -h -q -o names only, counts, no file name, quiet, just the matched part -r --no-recursive into subfolders, or not --include --exclude-dir which files, which folders to skip --hidden --binary --follow --column file:line:column:text --files search names rather than contents --folders match folder names too; they print with a trailing slash, the way ls -F writes them --replace --dry-run change things, or see what would change --open --open-with open every match in an editor --engine auto, grep or python --check --bench prove the engines agree; time them With no pattern and no --files, the window opens. ------------------------------------------------------------------------------- The rest of it ------------------------------------------------------------------------------- A regular expression tester. Try a pattern against text you type, see every match and what each group caught, before turning it loose on ten thousand files. Saved searches. Keep a search you use often and load it back in one click, with its pattern, its folder and its filters. A results toolbar. Expand all, Minimize all, Search within, Export and Clear results, with a box that narrows the list you already have without searching again. Export. The results to a text file or a CSV, file and line and text. How results open. It uses whichever editor it finds — LinuxNoteText first — and opens at the line and column of the match. If you would rather it ran something else, say so once: a command of your own with {file}, {line}, {column}, {dir} and {name} in it, quoted as a shell would, so a path with a space in it stays one argument. Text size. Tools, Text size — a slider rather than a pair of buttons, because the question is "how big", not "one step bigger": with buttons you find the size you want by pressing until it looks right, and with a slider you put it where you want it. It applies as it slides, and it reaches the results already on screen rather than only the next ones. Light and dark. Every colour pair that sits on top of another is measured against the WCAG contrast standard rather than judged by eye, in both themes, and the program will tell you so itself — Tools, Check the colours. ------------------------------------------------------------------------------- Built by LinuxDoors — this is our own application, not a mirror and not a repackaging of somebody else's build. The SHA-256 above is authoritative. It carries its own Python and its own Qt, so the window and the search work on a computer with nothing installed on it. The filters, the two engines, the replacing and the matching are all the program's own code. GNU grep is used when it is on the machine and is faster, and never trusted to do the counting. ------------------------------------------------------------------------------- Running it — nothing to install ------------------------------------------------------------------------------- chmod +x LinuxUltraGrep.AppImage ./LinuxUltraGrep.AppImage Or give it a folder to start in: ./LinuxUltraGrep.AppImage ~/code On LinuxDoors, which has no FUSE, run it the way LinuxDoors runs any AppImage: ./LinuxUltraGrep.AppImage --appimage-extract-and-run or through linuxdoors-run-appimage, which does that for you and unpacks it once rather than on every launch. Settings live in ~/.linuxultragrep.save, written mode 0600 when the program closes. Nothing secret goes in it — there is nothing secret to put — but it holds where you have been looking and what you have been looking for, which is nobody else's business. Deleting that file puts everything back as it started.