diff --git a/README.md b/README.md index 0dffbdf..4684c9c 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ how a section type looks, edit its partial. | `stats` | `items` of `value` + `label` (numbers count up) | | `table` | `headers`, `rows` (lists; the first cell labels the row) | | `siblings` | The sibling directory, from `data/siblings.yaml` (see the comment at its top). `emptyText` and `emptyCtas` set what shows while it's empty | +| `catalog` | The software catalog: every page in `content/software/`, grouped by `params.softwareGroups`, with a filter box | | `faq` | `items` of `q` + `a` | | `callout` | `text` | | `final-cta` | `headline`, `body`, `ctas` (the navy closing band) | @@ -58,13 +59,28 @@ Every type also takes `kicker`, `headline`, `lede` and `id` (an anchor; without one, it's made from the kicker or headline). `ctas` is a list of `label`, `url` and `style` (`primary`, `ghost` or `text`). +## The software catalog + +Each title CoreDesktop installs has a page in `content/software/`, rendered by +`layouts/software/single.html`; `content/software/_index.md` is the Software +page itself. A title's facts go in its front matter: `category` (one of the +`params.softwareGroups` names in `hugo.toml`, which also sets the order of +the groups), `tagline`, `source` (`pacman`, `AUR`, `Flathub`, `installer`, +`mise` or `extension`), `package`, `command`, `replaces`, `website`, `code` +(the source repository) and `links`. The body has three sections: What it +is, Why it's here and On CoreDesktop. To add a title: + +```sh +hugo new content software/.md --kind software +``` + Code blocks and `command` sections get a Copy button from the script in `layouts/_default/baseof.html`. ## Where things live - `hugo.toml` — site settings (`params.repoUrl`, `params.installCommand`) and the menus -- `content/` — one file per page +- `content/` — one file per page; `content/software/` holds one per catalog title - `data/siblings.yaml` — the projects listed in the sibling directory - `layouts/` — templates and section partials - `static/css/style.css` — the whole design system diff --git a/archetypes/software.md b/archetypes/software.md new file mode 100644 index 0000000..86feff4 --- /dev/null +++ b/archetypes/software.md @@ -0,0 +1,18 @@ +--- +title: "{{ replace .File.ContentBaseName "-" " " | title }}" +category: "" # must match a name in params.softwareGroups in hugo.toml +tagline: "" # one sentence, shown in the catalog and under the title +source: "pacman" # pacman, AUR, Flathub, installer, mise or extension +package: "" # the package name, or the Flathub app ID +command: "" # what you type to run it; leave out for GUI-only apps +replaces: [] # proprietary products it can stand in for +website: "" +code: "" # the public source repository +links: [] +--- + +## What it is + +## Why it's here + +## On CoreDesktop diff --git a/content/software/_index.md b/content/software/_index.md index ddf2615..db33806 100644 --- a/content/software/_index.md +++ b/content/software/_index.md @@ -9,11 +9,15 @@ sections: subhead: "CoreDesktop installs a lot of useful software, mostly for work at Federated Computer, but you may find it useful too. Missing something? Suggest it, or send in a PR." tiles: ["neovim", "Firefox", "Element"] ctas: + - label: "Browse the catalog" + url: "#catalog" + style: primary - label: "Suggest a title" url: "/contribute/" - style: primary + style: ghost - type: table + id: sources kicker: "Four sources" headline: "Where the software comes from." lede: "Each source has its own list in the repository, so you can see exactly what's installed." @@ -24,72 +28,11 @@ sections: - ["Flathub", "48 desktop apps in their own sandboxes", "[install-flatpaks.sh](https://gitea.federated.computer/Federated_Computer/coredesktop/src/branch/main/install-flatpaks.sh)"] - ["mise", "Ruby and Rails", "[install-mise-ruby-rails.sh](https://gitea.federated.computer/Federated_Computer/coredesktop/src/branch/main/install-mise-ruby-rails.sh)"] - - type: cards - kicker: "From Flathub" - headline: "48 desktop apps, ready on first login." - lede: "Want more? Visit [flathub.org](https://flathub.org)." - columns: 3 - items: - - label: "Browsers" - title: "Every browser you test against" - body: "Chrome, Chromium, Firefox, Brave, Zen and Vivaldi, plus Helium from the AUR as the default. Pick another in Settings › Apps › Default Apps." - - label: "Messaging" - title: "Talk to anyone" - body: "Signal, Telegram, Discord, Revolt and FluffyChat, Element from pacman, and Zoom for meetings." - - label: "Email & notes" - title: "Write it down" - body: "Thunderbird and Evolution for email; Obsidian, Logseq and Xournal++ for notes; Apostrophe for Markdown writing." - - label: "Media" - title: "Make and play media" - body: "Kdenlive for video editing, OBS for recording, Audacity for audio, Inkscape for vector graphics, Scribus for page layout, Spotify and Jellyfin." - - label: "Developers" - title: "Code and data" - body: "VS Code and VSCodium (VS Code without the Microsoft telemetry), Postman, DBeaver and Beekeeper Studio." - - label: "Local AI" - title: "Models on your own machine" - body: "Alpaca and LM Studio run language models locally, with nothing leaving your computer." - - label: "Remote" - title: "Reach other machines" - body: "Remmina and RustDesk for remote desktops, LocalSend to send files to nearby devices, and Trayscale for Tailscale." - - label: "Utilities" - title: "The useful little things" - body: "Boxes for virtual machines, Impression to write ISOs to USB sticks, Warehouse to manage Flatpaks, Extension Manager for [GNOME](https://www.gnome.org), and Helvum for audio routing." - - label: "And more" - title: "Downtime included" - body: "qBittorrent, RetroArch and others. See [install-flatpaks.sh](https://gitea.federated.computer/Federated_Computer/coredesktop/src/branch/main/install-flatpaks.sh) for the full list." - - - type: split - kicker: "Development tools" - headline: "A full toolchain, out of the box." - lede: "Everything you need to build, run and ship, including three terminals: the GNOME console, kitty and ghostty." - columns: - - title: "Languages & runtimes" - items: - - "Go, Rust, Python, Node.js, npm and Bun" - - "Ruby and Rails, through mise" - - "Hugo and Dart Sass for websites" - - "Docker, Docker Compose and lazydocker" - - "pandoc and TeX Live for documents" - - title: "In the terminal" - items: - - "neovim (with kickstart.nvim), vim and tmux (with tpm)" - - "herdr, lazygit and difftastic" - - "ripgrep, fd, fzf, bat, eza, zoxide and yazi" - - "btop, htop, fastfetch and hyperfine" - - "nmap, mtr, sniffnet and whois" - - - type: checklist - kicker: "On the desktop" - headline: "Also from pacman and the AUR." - items: - - "**LibreOffice** for documents, spreadsheets and slides" - - "**Bitwarden** for passwords" - - "**Element** for Matrix chat" - - "**GIMP**, **Flameshot** and **ImageMagick** for images" - - "**VLC** and **mpv** for video" - - "**Winboat** to run Windows apps" - - "**Cline Desktop**, in the AI sandbox" - - "**GNOME Tweaks** and the extra GNOME apps" + - type: catalog + id: catalog + kicker: "Catalog" + headline: "Everything CoreDesktop installs." + lede: "Grouped by what you'd use it for. Open a title for what it does, how CoreDesktop sets it up, and links to its website and source code. The libraries and plumbing behind them are in [packages.conf](https://gitea.federated.computer/Federated_Computer/coredesktop/src/branch/main/packages.conf)." - type: final-cta headline: "Something missing?" diff --git a/content/software/age.md b/content/software/age.md new file mode 100644 index 0000000..b3baf44 --- /dev/null +++ b/content/software/age.md @@ -0,0 +1,28 @@ +--- +title: "age" +category: "Backup, files and security" +tagline: "Simple, modern file encryption with small keys and no configuration." +source: "pacman" +package: "age" +command: "age" +website: "https://age-encryption.org/" +code: "https://github.com/FiloSottile/age" +--- + +## What it is + +age encrypts files. You encrypt to someone's short public key, or to a passphrase, and only the matching private key or passphrase can decrypt the result. It does one job, has no settings to get wrong, and is a simpler alternative to GPG for sending or storing a file safely. `age-keygen` makes a key pair, and age can also encrypt to SSH public keys. + +``` +age -p -o notes.txt.age notes.txt +``` + +## Why it's here + +- **Hard to misuse.** There are no ciphers or options to pick. +- **Small keys.** A public key fits on one line, so it's easy to share. +- **Works with SSH keys.** Encrypt a file to a colleague's existing `ssh-ed25519` key. + +## On CoreDesktop + +age is installed from pacman, with nothing extra configured. Run `age` in a terminal. `update` keeps it current with the rest of the Arch packages. diff --git a/content/software/alpaca.md b/content/software/alpaca.md new file mode 100644 index 0000000..43e6448 --- /dev/null +++ b/content/software/alpaca.md @@ -0,0 +1,25 @@ +--- +title: "Alpaca" +category: "AI" +tagline: "A GNOME app for chatting with AI models, including ones that run entirely on your computer." +source: "Flathub" +package: "com.jeffser.Alpaca" +website: "https://jeffser.com/alpaca/" +code: "https://github.com/Jeffser/Alpaca" +--- + +## What it is + +Alpaca is a chat app for AI language models, built for the GNOME desktop. It runs open models locally through Ollama, so your conversations never leave your computer, and can also connect to online providers when you want a larger model. + +You download models from inside the app, then chat with them much as you would with an online assistant: ask questions, attach documents and images, and keep several conversations side by side. + +## Why it's here + +- **Private.** With a local model, nothing you type is sent anywhere. +- **Native.** It looks and behaves like the rest of the GNOME desktop. +- **Easy models.** Find, download and switch models without touching a terminal. + +## On CoreDesktop + +Alpaca is installed from Flathub. Open it from the app menu. Local models run on your own hardware, so larger ones need plenty of memory and work best with a capable GPU. `update` keeps Alpaca current with the rest of the Flatpaks. diff --git a/content/software/apostrophe.md b/content/software/apostrophe.md new file mode 100644 index 0000000..22979fd --- /dev/null +++ b/content/software/apostrophe.md @@ -0,0 +1,24 @@ +--- +title: "Apostrophe" +category: "Office, notes and writing" +tagline: "A distraction-free Markdown editor for GNOME, with live preview and export." +source: "Flathub" +package: "org.gnome.gitlab.somas.Apostrophe" +replaces: ["iA Writer", "Typora"] +website: "https://apps.gnome.org/Apostrophe/" +code: "https://gitlab.gnome.org/World/apostrophe" +--- + +## What it is + +Apostrophe is a Markdown editor for writing prose. Its window is a clean page with a focus mode that dims everything but the current sentence, a word and character count, and a live preview of the formatted text. Behind the scenes it uses Pandoc, so you can export to HTML, PDF, Word documents and other formats. + +## Why it's here + +- **Room to write.** Nothing on screen but your text, for essays, posts and drafts. +- **Plain Markdown.** Files are ordinary `.md` text that any other tool can open. +- **Export anywhere.** Pandoc turns a draft into a document in the format you need. + +## On CoreDesktop + +CoreDesktop installs Apostrophe as a Flatpak from Flathub. Open it from the app grid, or open a Markdown file with it from Files. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/asdf.md b/content/software/asdf.md new file mode 100644 index 0000000..c12ad6f --- /dev/null +++ b/content/software/asdf.md @@ -0,0 +1,27 @@ +--- +title: "asdf" +category: "Languages and runtimes" +tagline: "A plugin-based version manager for languages and tools, driven by .tool-versions files." +source: "AUR" +package: "asdf-vm" +command: "asdf" +website: "https://asdf-vm.com/" +code: "https://github.com/asdf-vm/asdf" +links: + - name: "Getting started with asdf" + url: "https://asdf-vm.com/guide/getting-started.html" +--- + +## What it is + +asdf manages several versions of programming languages and tools, such as Node.js, Ruby, Python or Elixir, through plugins. A `.tool-versions` file in a project lists the versions it needs, and asdf uses them whenever you work in that directory. + +## Why it's here + +- **One manager, many languages.** Plugins cover hundreds of tools. +- **Shared project files.** Many projects already ship a `.tool-versions` file. +- **An alternative to mise.** For teams and scripts that expect asdf. + +## On CoreDesktop + +asdf is installed from the AUR, but CoreDesktop doesn't add it to your shell: follow asdf's getting started guide to put its shims on your PATH. CoreDesktop manages Ruby with [mise](/software/mise/), which reads `.tool-versions` files too. `update` keeps asdf current with the rest of the AUR packages. diff --git a/content/software/audacity.md b/content/software/audacity.md new file mode 100644 index 0000000..052ef85 --- /dev/null +++ b/content/software/audacity.md @@ -0,0 +1,23 @@ +--- +title: "Audacity" +category: "Audio and video" +tagline: "Record and edit audio: podcasts, voiceovers, interviews and music." +source: "Flathub" +package: "org.audacityteam.Audacity" +replaces: ["Adobe Audition"] +website: "https://www.audacityteam.org/" +code: "https://github.com/audacity/audacity" +--- + +## What it is + +Audacity is an open-source audio editor and recorder. You record from a microphone or open existing audio files, then cut, copy, mix and arrange them on multiple tracks. Built-in effects handle noise reduction, normalizing, compression and equalization, and it exports to formats such as WAV, MP3, FLAC and Ogg. + +## Why it's here + +- **Clean up recordings.** Remove background noise, trim mistakes and even out levels in a voice recording. +- **Podcasts and voiceovers.** Multitrack editing is enough for interviews and narration. + +## On CoreDesktop + +CoreDesktop installs Audacity as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/bat.md b/content/software/bat.md new file mode 100644 index 0000000..eb8ad04 --- /dev/null +++ b/content/software/bat.md @@ -0,0 +1,26 @@ +--- +title: "bat" +category: "Terminal and shell" +tagline: "cat with syntax highlighting, line numbers and Git changes." +source: "pacman" +package: "bat" +command: "bat" +code: "https://github.com/sharkdp/bat" +--- + +## What it is + +bat prints files to the terminal like `cat`, but with syntax highlighting for most languages, line numbers, and markers for lines changed since the last Git commit. Long files open in a pager so you can scroll. + +``` +bat script.sh +``` + +## Why it's here + +- **Readable code in the terminal.** Highlighting makes config files and scripts easier to scan. +- **Good previews.** Other tools use it to show file contents, such as fzf's preview pane. + +## On CoreDesktop + +bat is installed from pacman. Type `bat` in a terminal. CoreDesktop's `ff` alias uses it to preview files while you fuzzy-find them with fzf. `update` keeps bat current along with the rest of the pacman packages. diff --git a/content/software/beekeeper-studio.md b/content/software/beekeeper-studio.md new file mode 100644 index 0000000..7cfb52e --- /dev/null +++ b/content/software/beekeeper-studio.md @@ -0,0 +1,24 @@ +--- +title: "Beekeeper Studio" +category: "Developer tools" +tagline: "A clean, easy SQL editor and database manager for PostgreSQL, MySQL, SQLite and more." +source: "Flathub" +package: "io.beekeeperstudio.Studio" +replaces: ["TablePlus"] +website: "https://www.beekeeperstudio.io/" +code: "https://github.com/beekeeper-studio/beekeeper-studio" +--- + +## What it is + +Beekeeper Studio is a database client focused on being simple to use. You connect to a database such as PostgreSQL, MySQL, SQLite or SQL Server, write queries in tabs with autocompletion, and browse and edit table data in a spreadsheet-like view. Saved queries and query history are kept for each connection. + +## Why it's here + +- **Easy to pick up.** A modern interface without the clutter of larger database tools. +- **Everyday SQL.** Fast for writing queries and checking data during development. +- **Open source.** The Community edition is free. + +## On CoreDesktop + +Beekeeper Studio is installed from Flathub. Open it from the app menu. `update` keeps it current with the rest of the Flatpaks. diff --git a/content/software/bitwarden.md b/content/software/bitwarden.md new file mode 100644 index 0000000..7b4aba7 --- /dev/null +++ b/content/software/bitwarden.md @@ -0,0 +1,32 @@ +--- +title: "Bitwarden" +category: "Backup, files and security" +tagline: "An open-source password manager that syncs across your devices and doubles as your SSH agent." +source: "pacman" +package: "bitwarden" +command: "bitwarden-desktop" +replaces: ["1Password", "LastPass"] +website: "https://bitwarden.com/" +code: "https://github.com/bitwarden/clients" +links: + - name: "Bitwarden SSH agent" + url: "https://bitwarden.com/help/ssh-agent/" +--- + +## What it is + +Bitwarden is a password manager. It keeps your passwords, passkeys, card details and secure notes in an encrypted vault that only your master password can open, and syncs it between the desktop app, your phone and browser extensions. + +The desktop app can also store SSH keys and act as an SSH agent, so `ssh` and `git` ask Bitwarden for a key instead of reading one from `~/.ssh`. + +## Why it's here + +- **Open source and audited.** The clients and server code are public, and the encryption happens on your device. +- **Everywhere you are.** The same vault works on Linux, Windows, macOS, Android, iOS and in every major browser. +- **Somewhere safe for the important things.** Such as the backup passphrase `configure` shows you once. + +## On CoreDesktop + +CoreDesktop installs the Bitwarden desktop app from pacman. Open it from the app menu, or run `bitwarden-desktop`. Install and every `update` make sure your `~/.bashrc` has a line that points `SSH_AUTH_SOCK` at `~/.bitwarden-ssh-agent.sock`, so once you turn on the SSH agent in Bitwarden's settings, your terminal uses the keys in your vault. + +When you set up [backups](/utilities/#configure), save the passphrase in Bitwarden. The [AI sandbox](/ai-sandbox/) keeps agents out of `~/.config/Bitwarden`. `update` keeps Bitwarden current with the rest of the Arch packages. diff --git a/content/software/bluez.md b/content/software/bluez.md new file mode 100644 index 0000000..9e888c3 --- /dev/null +++ b/content/software/bluez.md @@ -0,0 +1,26 @@ +--- +title: "BlueZ" +category: "Desktop and system" +tagline: "The Linux Bluetooth stack, turned on, so headphones, mice and keyboards just pair." +source: "pacman" +package: "bluez" +command: "bluetoothctl" +code: "https://git.kernel.org/pub/scm/bluetooth/bluez.git" +links: + - name: "Bluetooth on the Arch wiki" + url: "https://wiki.archlinux.org/title/Bluetooth" +--- + +## What it is + +BlueZ is the official Bluetooth stack for Linux. Its service talks to your Bluetooth adapter and handles pairing and connections, and GNOME's Bluetooth settings are built on it. bluez-utils adds `bluetoothctl`, a command-line tool for scanning, pairing and connecting devices. + +## Why it's here + +- **Wireless devices work.** Headphones, speakers, mice, keyboards and game controllers. +- **Managed from Settings.** Pairing happens in GNOME, no terminal needed. +- **A fallback in the terminal.** `bluetoothctl` helps when a device won't behave. + +## On CoreDesktop + +CoreDesktop installs BlueZ and bluez-utils from pacman and enables `bluetooth.service`. Pair devices in **Settings › Bluetooth**. `update` keeps both current. diff --git a/content/software/borg.md b/content/software/borg.md new file mode 100644 index 0000000..0f5d5b1 --- /dev/null +++ b/content/software/borg.md @@ -0,0 +1,31 @@ +--- +title: "BorgBackup" +category: "Backup, files and security" +tagline: "Deduplicating, compressed, encrypted backups to a disk or a server over SSH." +source: "pacman" +package: "borg" +command: "borg" +website: "https://www.borgbackup.org/" +code: "https://github.com/borgbackup/borg" +links: + - name: "Borg documentation" + url: "https://borgbackup.readthedocs.io/" +--- + +## What it is + +BorgBackup, or Borg, makes backups into a repository on a local disk or on a server you reach over SSH. Each backup is a full snapshot you can browse or mount, but Borg stores only the chunks of data that changed, so daily backups take little extra space. Data is compressed and can be encrypted before it leaves your machine. + +``` +borg create /mnt/usb/borg::{now} ~/Documents +``` + +## Why it's here + +- **Space-efficient.** Deduplication means a year of daily backups can fit where a few full copies would. +- **Encrypted.** Repositories can be encrypted with a key only you hold. +- **Good for your own backups.** To a USB drive, a NAS or any server with SSH. + +## On CoreDesktop + +Borg is installed from pacman for backups you set up yourself. CoreDesktop's own daily [backups](/utilities/#backups) use [restic](/software/restic/) instead, so Borg doesn't run unless you use it. The [AI sandbox](/ai-sandbox/) keeps agents out of `~/.config/borg`, where Borg keeps its keys. `update` keeps it current with the rest of the Arch packages. diff --git a/content/software/boxes.md b/content/software/boxes.md new file mode 100644 index 0000000..ecd5572 --- /dev/null +++ b/content/software/boxes.md @@ -0,0 +1,24 @@ +--- +title: "GNOME Boxes" +category: "Desktop and system" +tagline: "Run other operating systems in virtual machines, set up in a few clicks." +source: "Flathub" +package: "org.gnome.Boxes" +replaces: ["VMware Workstation", "Parallels Desktop"] +website: "https://apps.gnome.org/Boxes/" +code: "https://gitlab.gnome.org/GNOME/gnome-boxes" +--- + +## What it is + +GNOME Boxes creates and runs virtual machines: whole computers running inside a window. Pick an operating system from its list and Boxes downloads it, or point it at an ISO file. It uses QEMU and KVM underneath, the same virtualization Linux servers use, but hides the details. + +## Why it's here + +- **Try before you install.** Test another Linux distribution without touching your disk. +- **A clean test machine.** Check software or a website on a fresh system, then throw it away. +- **Simple.** Sensible defaults and a short setup instead of pages of options. + +## On CoreDesktop + +Boxes is installed from Flathub. Open it from the app menu. Virtual machines need virtualization turned on in your computer's firmware settings. The Flatpak update keeps Boxes current. diff --git a/content/software/brave.md b/content/software/brave.md new file mode 100644 index 0000000..72ee902 --- /dev/null +++ b/content/software/brave.md @@ -0,0 +1,28 @@ +--- +title: "Brave" +category: "Web browsers" +tagline: "A Chromium-based browser that blocks ads and trackers out of the box." +source: "Flathub" +package: "com.brave.Browser" +replaces: ["Google Chrome", "Microsoft Edge"] +website: "https://brave.com/" +code: "https://github.com/brave/brave-browser" +--- + +## What it is + +Brave is a web browser built on Chromium with privacy features added on top. Its built-in Shields block ads, trackers and fingerprinting by default, and it includes a private window that routes through Tor, its own search engine, and an optional AI assistant. + +Because it's Chromium underneath, Chrome extensions install from the Chrome Web Store and sites built for Chrome work as expected. + +## Why it's here + +- **Blocking without setup.** Ads and trackers are blocked from the first page you open. +- **Chrome-compatible.** Web apps, video calls and extensions behave as they do in Chrome. +- **Tor when you need it.** A private window with Tor is one menu item away. + +## On CoreDesktop + +CoreDesktop installs Brave as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Brave the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read your Brave profile. `update` keeps Brave current along with your other Flatpaks. diff --git a/content/software/btop.md b/content/software/btop.md new file mode 100644 index 0000000..00ee36e --- /dev/null +++ b/content/software/btop.md @@ -0,0 +1,23 @@ +--- +title: "btop" +category: "Desktop and system" +tagline: "A colorful terminal monitor for CPU, memory, disks, network and processes." +source: "pacman" +package: "btop" +command: "btop" +code: "https://github.com/aristocratos/btop" +--- + +## What it is + +btop is a resource monitor for the terminal. It shows CPU use per core, memory, disk and network activity as live graphs, with a sortable, filterable list of processes underneath that you can inspect or stop. It works with the mouse as well as the keyboard. + +## Why it's here + +- **The whole machine at a glance.** See what's busy without opening several tools. +- **Find the culprit.** Sort processes by CPU or memory and stop the one misbehaving. +- **Works over SSH.** Check a remote machine from your terminal. + +## On CoreDesktop + +btop is installed from pacman, with nothing extra configured. Run `btop` in a terminal and press q to quit. `update` keeps it current. diff --git a/content/software/bubblewrap.md b/content/software/bubblewrap.md new file mode 100644 index 0000000..478ba9f --- /dev/null +++ b/content/software/bubblewrap.md @@ -0,0 +1,23 @@ +--- +title: "Bubblewrap" +category: "Backup, files and security" +tagline: "The unprivileged sandboxing tool that keeps AI agents and Flatpak apps in their own box." +source: "pacman" +package: "bubblewrap" +command: "bwrap" +code: "https://github.com/containers/bubblewrap" +--- + +## What it is + +Bubblewrap runs a program in a sandbox: a private view of the file system in which it sees only the folders it's been given, optionally without network access. It uses the kernel's namespaces, so no root daemon is involved. It's a building block for other tools rather than something most people run directly. + +## Why it's here + +- **It contains the AI agents.** The sandbox that limits which files they can read and write is built on it. +- **It contains Flatpak apps.** Flatpak runs every app inside a Bubblewrap sandbox. +- **No root needed.** Sandboxes are set up by your user, not a privileged service. + +## On CoreDesktop + +Bubblewrap is installed from pacman. CoreDesktop's [AI sandbox](/ai-sandbox/) uses Anthropic's sandbox runtime, which relies on Bubblewrap and socat, to run opencode, Hermes Agent and Cline Desktop, and Claude Code's own built-in sandbox uses it too. You don't need to run `bwrap` yourself. `update` keeps it current. diff --git a/content/software/bun.md b/content/software/bun.md new file mode 100644 index 0000000..348cd99 --- /dev/null +++ b/content/software/bun.md @@ -0,0 +1,31 @@ +--- +title: "Bun" +category: "Languages and runtimes" +tagline: "A JavaScript runtime, package manager, bundler and test runner in one fast tool." +source: "pacman" +package: "bun" +command: "bun" +website: "https://bun.com/" +code: "https://github.com/oven-sh/bun" +links: + - name: "Bun documentation" + url: "https://bun.com/docs" +--- + +## What it is + +Bun runs JavaScript and TypeScript, like Node.js, and also installs packages, bundles code and runs tests, all from one binary. It aims to work as a drop-in replacement for Node.js in most projects, and runs TypeScript files directly without a separate build step. + +## Why it's here + +- **Fast installs.** `bun install` reads `package.json` and installs dependencies much faster than npm. +- **TypeScript without setup.** `bun run file.ts` just works. +- **Fewer tools.** Runtime, package manager, bundler and test runner in one. + +## On CoreDesktop + +Bun is installed from pacman, alongside Node.js, so you can use either per project. `update` keeps it current with the rest of the pacman packages. + +``` +bun run index.ts +``` diff --git a/content/software/chromium.md b/content/software/chromium.md new file mode 100644 index 0000000..887ed15 --- /dev/null +++ b/content/software/chromium.md @@ -0,0 +1,25 @@ +--- +title: "Chromium" +category: "Web browsers" +tagline: "The open-source browser that Chrome, Brave, Vivaldi and Helium are built on." +source: "Flathub" +package: "org.chromium.Chromium" +replaces: ["Google Chrome", "Microsoft Edge"] +website: "https://www.chromium.org/Home/" +code: "https://chromium.googlesource.com/chromium/src" +--- + +## What it is + +Chromium is the open-source web browser project behind Google Chrome. Chrome, Microsoft Edge, Brave, Vivaldi and Helium all start from its code and add their own features. Chromium on its own is the plain version: the same engine and interface as Chrome, without Google's branding, sign-in prompts or automatic background updater. + +## Why it's here + +- **Chrome without the extras.** Sites and extensions that work in Chrome work here, built entirely from open source. +- **A clean testing browser.** It's useful as a separate browser with its own profile for testing web apps or keeping work and personal browsing apart. + +## On CoreDesktop + +CoreDesktop installs Chromium as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Chromium the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read your Chromium profile. `update` keeps Chromium current along with your other Flatpaks. diff --git a/content/software/clang.md b/content/software/clang.md new file mode 100644 index 0000000..3e739c8 --- /dev/null +++ b/content/software/clang.md @@ -0,0 +1,24 @@ +--- +title: "Clang" +category: "Languages and runtimes" +tagline: "The LLVM compiler for C, C++ and Objective-C, alongside Arch's standard build tools." +source: "pacman" +package: "clang" +command: "clang" +website: "https://clang.llvm.org/" +code: "https://github.com/llvm/llvm-project" +--- + +## What it is + +Clang is a compiler for C, C++ and Objective-C, part of the LLVM project. It turns source code into programs, with clear error messages and fast compiles, and comes with tools such as `clang-format` for formatting code and `clang-tidy` for finding bugs. It's the default compiler on macOS and is used to build Chrome and Firefox. + +## Why it's here + +- **Readable errors.** Its messages point to the exact spot and often suggest the fix. +- **Needed for builds.** Some software compiles only with Clang, or needs its libraries. +- **Code tools.** Formatting and static analysis for C and C++ projects. + +## On CoreDesktop + +Clang is installed from pacman. CoreDesktop includes it, with [CMake](/software/cmake/), because Hermes Agent's Matrix support builds a library that needs `clang++`. CoreDesktop also installs `base-devel`, Arch's group of build tools: GCC, make, pkgconf and the rest of what's needed to compile software and build AUR packages. `update` keeps them all current with the rest of the pacman packages. diff --git a/content/software/claude-code.md b/content/software/claude-code.md new file mode 100644 index 0000000..118f6dd --- /dev/null +++ b/content/software/claude-code.md @@ -0,0 +1,33 @@ +--- +title: "Claude Code" +category: "AI" +tagline: "Anthropic's coding agent for the terminal, with its built-in sandbox turned on for every command it runs." +source: "installer" +command: "claude" +website: "https://claude.com/product/claude-code" +links: + - name: "Claude Code documentation" + url: "https://code.claude.com/docs/en/overview" + - name: "Claude Code sandboxing" + url: "https://code.claude.com/docs/en/sandboxing" +--- + +## What it is + +Claude Code is Anthropic's AI coding agent. You run it in a terminal inside a project, describe what you want in plain language, and it reads the code, edits files, runs commands and tests, and explains what it did. It asks before it does anything you haven't allowed. + +It works with Git, understands large codebases, and can be extended with your own commands, hooks and MCP servers. + +## Why it's here + +- **Works where the code is.** It runs in your terminal and project directory, next to your editor and tools. +- **Reads before it writes.** It looks through the codebase to understand it, then makes focused changes you can review. +- **Contained.** Every command it runs goes through its own sandbox, limited to your project and an allow list of sites. + +## On CoreDesktop + +CoreDesktop installs Claude Code with Anthropic's official native installer, which puts `claude` in `~/.local/bin` and keeps itself up to date; CoreDesktop adds `~/.local/bin` to your PATH. If you don't already have `~/.claude/settings.json`, it writes one with hooks that show a desktop notification when Claude needs your input and when it finishes a task. + +The other agents run in CoreDesktop's sandbox, but Claude Code can't, because bubblewrap can't run inside itself. Instead CoreDesktop turns on Claude Code's own built-in sandbox and gives it the same list of allowed sites; anything you've already set in the `sandbox` section of your settings wins. Type `/sandbox` inside Claude to see it. The other agents can't read Claude's login. See [AI sandbox](/ai-sandbox/) for how the sandboxes work. + +Before the first use, run `configure claude` and choose how you pay: a Claude subscription (Pro, Max, Team or Enterprise) or the Anthropic Console. Then start it from a project directory with `claude`. diff --git a/content/software/cliamp.md b/content/software/cliamp.md new file mode 100644 index 0000000..f3685fd --- /dev/null +++ b/content/software/cliamp.md @@ -0,0 +1,27 @@ +--- +title: "cliamp" +category: "Entertainment" +tagline: "A retro terminal music player inspired by Winamp, for local files, streams and podcasts." +source: "AUR" +package: "cliamp" +command: "cliamp" +website: "https://www.cliamp.stream/" +code: "https://github.com/bjarneo/cliamp" +--- + +## What it is + +cliamp is a music player for the terminal, styled after Winamp 2. It plays local files and folders, internet radio and podcasts, and can connect to streaming services and media servers such as Spotify, YouTube Music, SoundCloud, Navidrome, Plex and Jellyfin. + +``` +cliamp ~/Music +``` + +## Why it's here + +- **Music without leaving the terminal.** Play a folder or a stream from the shell you're already in. +- **Winamp, in a terminal.** A spectrum visualizer, parametric equalizer and playlists, in a Winamp-style layout. + +## On CoreDesktop + +CoreDesktop installs cliamp from the AUR. Run `cliamp` in a terminal. `update` keeps it current with the rest of the AUR packages. diff --git a/content/software/cline-desktop.md b/content/software/cline-desktop.md new file mode 100644 index 0000000..da4c0ca --- /dev/null +++ b/content/software/cline-desktop.md @@ -0,0 +1,28 @@ +--- +title: "Cline Desktop" +category: "AI" +tagline: "The Cline coding agent as a desktop app, sandboxed to your projects in ~/Projects." +source: "AUR" +package: "cline-desktop" +command: "cline-desktop" +website: "https://cline.bot/desktop" +code: "https://github.com/cline/cline" +--- + +## What it is + +Cline is an open-source AI coding agent, best known as an extension for VS Code. Cline Desktop is the same agent as a standalone app: you open a project folder, talk to the agent in a chat window, and it reads, edits and runs your code while showing the project and Git branch it's working on. + +You bring your own API key for any provider, such as Anthropic, OpenAI, Gemini or a local model, or sign in with a Cline account. Sessions are kept in a sidebar, and you can edit an earlier message to rewind the project and try again from there. + +## Why it's here + +- **No editor required.** A coding agent in its own window, for when you don't want a full IDE open. +- **Any provider.** Use the models you already pay for, and switch mid-project. +- **Open source.** The same open Cline agent as the editor extension and command line. + +## On CoreDesktop + +Cline Desktop comes from the AUR as an unofficial Linux build, compiled from Cline's source. Opened from the app menu, it runs in CoreDesktop's [AI sandbox](/ai-sandbox/) and starts in `~/Projects`: it can change files there, open projects elsewhere only to read them, and reach Cline's own servers (cline.bot) along with AI providers and common developer sites. It can't read your SSH keys, passwords, browser data or the other agents' logins. + +It draws through your Wayland session but can't reach the session's other sockets, so it runs without D-Bus, the keyring or the GPU. To run it without the sandbox, type `unsandboxed cline-desktop`. `update` keeps it current with the rest of the AUR packages. diff --git a/content/software/cmake.md b/content/software/cmake.md new file mode 100644 index 0000000..24a1ca2 --- /dev/null +++ b/content/software/cmake.md @@ -0,0 +1,27 @@ +--- +title: "CMake" +category: "Languages and runtimes" +tagline: "The cross-platform build system generator most C and C++ projects use." +source: "pacman" +package: "cmake" +command: "cmake" +website: "https://cmake.org/" +code: "https://gitlab.kitware.com/cmake/cmake" +--- + +## What it is + +CMake describes how to build a C or C++ project in a `CMakeLists.txt` file, then generates the build files for whatever tool does the compiling, such as make or Ninja. The same project builds on Linux, macOS and Windows. + +## Why it's here + +- **The common standard.** Most open-source C and C++ projects build with it. +- **Needed for installs.** Some Python and Rust packages run CMake to compile their native parts. + +## On CoreDesktop + +CMake is installed from pacman. CoreDesktop includes it, with [Clang](/software/clang/), because Hermes Agent's Matrix support builds python-olm, which needs it; when `update` updates Hermes, it tells CMake how to build python-olm's older build files. `update` keeps CMake current with the rest of the pacman packages. + +``` +cmake -B build && cmake --build build +``` diff --git a/content/software/codd.md b/content/software/codd.md new file mode 100644 index 0000000..bbea079 --- /dev/null +++ b/content/software/codd.md @@ -0,0 +1,23 @@ +--- +title: "Codd" +category: "Developer tools" +tagline: "A lightweight, native PostgreSQL client for GNOME." +source: "Flathub" +package: "io.github.anil_e.Codd" +code: "https://github.com/anil-e/codd" +--- + +## What it is + +Codd is a PostgreSQL client built for the GNOME desktop with GTK and libadwaita. It saves your connections, with passwords stored in the keyring, and lets you browse tables and views, inspect their columns, indexes and constraints, and write SQL with highlighting and schema-aware completion. You can page through and edit table rows, staging changes and committing them together in one transaction. + +It's named after Edgar F. Codd, who introduced the relational model behind SQL databases. + +## Why it's here + +- **Native and light.** A GNOME app, not a browser in a window. +- **Focused on PostgreSQL.** The everyday jobs, done simply. + +## On CoreDesktop + +Codd is installed from Flathub. Open it from the app menu. `update` keeps it current with the rest of the Flatpaks. diff --git a/content/software/cups.md b/content/software/cups.md new file mode 100644 index 0000000..74a36fa --- /dev/null +++ b/content/software/cups.md @@ -0,0 +1,26 @@ +--- +title: "CUPS" +category: "Desktop and system" +tagline: "The printing system for Linux, turned on, with a PDF printer included." +source: "pacman" +package: "cups" +website: "https://openprinting.github.io/cups/" +code: "https://github.com/OpenPrinting/cups" +links: + - name: "CUPS on the Arch wiki" + url: "https://wiki.archlinux.org/title/CUPS" +--- + +## What it is + +CUPS is the printing service on Linux and most Unix systems. Apps send it documents, and it queues them and talks to your printers, over USB or the network. Most current network printers work with it without a driver, using the IPP Everywhere standard. + +## Why it's here + +- **Printing works.** Add a printer and print from any app. +- **Driverless for most printers.** Modern network printers are found and set up automatically. +- **Print to PDF.** cups-pdf adds a virtual printer that saves to a file. + +## On CoreDesktop + +CoreDesktop installs CUPS from pacman with cups-pdf and gtk3-print-backends, which lets GTK apps see your printers, and turns `cups.service` on. Add printers in **Settings › Printers**. Only this computer can reach the printing service: [audit](/utilities/#audit) lists it on port 631. As the [System page](/system/) notes, printing to other CoreDesktop machines may need more work. `update` keeps CUPS current. diff --git a/content/software/curl.md b/content/software/curl.md new file mode 100644 index 0000000..90463db --- /dev/null +++ b/content/software/curl.md @@ -0,0 +1,31 @@ +--- +title: "curl" +category: "Networking and remote access" +tagline: "Transfer data to and from URLs: download files, call APIs, test web servers." +source: "pacman" +package: "curl" +command: "curl" +website: "https://curl.se/" +code: "https://github.com/curl/curl" +links: + - name: "GNU Wget" + url: "https://www.gnu.org/software/wget/" +--- + +## What it is + +curl sends requests to URLs and prints or saves what comes back. It speaks HTTP and HTTPS along with FTP, SFTP and many other protocols, and lets you set headers, methods and request bodies, which makes it the standard tool for testing web APIs and downloading in scripts. + +``` +curl -L -o file.zip https://example.com/file.zip +``` + +## Why it's here + +- **APIs from the terminal.** Send any HTTP request and see the full response. +- **Downloads in scripts.** Installers and scripts everywhere use it. +- **Debugging web servers.** `curl -I` shows a site's headers and redirects. + +## On CoreDesktop + +curl is installed from pacman. CoreDesktop also installs GNU Wget, `wget`, which is simpler for downloading files and can fetch whole directories recursively; CoreDesktop's own install command uses it. `update` keeps both current with the pacman packages. diff --git a/content/software/dart-sass.md b/content/software/dart-sass.md new file mode 100644 index 0000000..40b34aa --- /dev/null +++ b/content/software/dart-sass.md @@ -0,0 +1,27 @@ +--- +title: "Dart Sass" +category: "Languages and runtimes" +tagline: "The reference Sass compiler, for writing CSS with variables, nesting and mixins." +source: "pacman" +package: "dart-sass" +command: "sass" +website: "https://sass-lang.com/" +code: "https://github.com/sass/dart-sass" +--- + +## What it is + +Sass is a stylesheet language that compiles to CSS. It adds variables, nesting, mixins and modules, so large stylesheets stay organized. Dart Sass is the main implementation, maintained by the Sass team, and the one that gets new features first. + +## Why it's here + +- **Better CSS.** Reuse values and patterns instead of repeating them. +- **Works with Hugo.** Hugo can compile a site's Sass with Dart Sass. + +## On CoreDesktop + +Dart Sass is installed from pacman and provides the `sass` command. `update` keeps it current with the rest of the pacman packages. + +``` +sass --watch styles.scss styles.css +``` diff --git a/content/software/davfs2.md b/content/software/davfs2.md new file mode 100644 index 0000000..0e4031d --- /dev/null +++ b/content/software/davfs2.md @@ -0,0 +1,30 @@ +--- +title: "davfs2" +category: "Backup, files and security" +tagline: "Mounts a WebDAV share, such as your Nextcloud files, as an ordinary folder." +source: "pacman" +package: "davfs2" +website: "https://savannah.nongnu.org/projects/davfs2" +code: "https://github.com/alisarctl/davfs2" +links: + - name: "cadaver" + url: "https://notroj.github.io/cadaver/" +--- + +## What it is + +davfs2 is a file system driver for WebDAV, the protocol Nextcloud and many other file servers use. It mounts a WebDAV share at a folder, so any app can open and save files there as if they were on your disk. It keeps a local cache so files you've opened stay quick. + +cadaver, installed alongside it, is a command-line WebDAV client: it browses a share and uploads or downloads files with FTP-style commands, without mounting anything. + +## Why it's here + +- **Your Nextcloud in Files.** Open and save your Core's files from any app. +- **No sync client needed.** Files stay on the server instead of being copied to every machine. +- **A quick check from the terminal.** cadaver lists or fetches files on a WebDAV server in seconds. + +## On CoreDesktop + +When you connect your Core with [configure](/utilities/#configure), it mounts your Nextcloud files with davfs2 at `/mnt/{your domain}`. It adds the mount to `/etc/fstab` so you can mount it without sudo, adds you to the `network` group, saves a Nextcloud app password in `~/.davfs2/secrets`, mounts it each time you log in, and adds it to the Files sidebar under your domain name. + +The [backups](/utilities/#backups) don't use this mount, and the [AI sandbox](/ai-sandbox/) keeps agents out of `~/.davfs2`. Both davfs2 and cadaver come from pacman, and `update` keeps them current. diff --git a/content/software/dbeaver.md b/content/software/dbeaver.md new file mode 100644 index 0000000..c45523b --- /dev/null +++ b/content/software/dbeaver.md @@ -0,0 +1,26 @@ +--- +title: "DBeaver Community" +category: "Developer tools" +tagline: "A free database tool that connects to PostgreSQL, MySQL, SQLite and dozens more." +source: "Flathub" +package: "io.dbeaver.DBeaverCommunity" +replaces: ["DataGrip", "Navicat"] +website: "https://dbeaver.io/" +code: "https://github.com/dbeaver/dbeaver" +--- + +## What it is + +DBeaver is a database client: it connects to a database so you can browse its tables, view and edit data, and write and run SQL with completion and highlighting. The free Community edition works with almost any database that has a JDBC driver, including PostgreSQL, MySQL, MariaDB, SQLite, Oracle and SQL Server, and downloads the driver it needs when you first connect. + +It also draws diagrams of how tables relate, and imports and exports data in formats such as CSV and JSON. + +## Why it's here + +- **One tool for every database.** The same interface whatever the project uses. +- **Full featured.** Schema browsing, data editing, diagrams and data transfer. +- **Free and open source.** + +## On CoreDesktop + +DBeaver Community is installed from Flathub. Open it from the app menu. `update` keeps it current with the rest of the Flatpaks. diff --git a/content/software/difftastic.md b/content/software/difftastic.md new file mode 100644 index 0000000..664933e --- /dev/null +++ b/content/software/difftastic.md @@ -0,0 +1,29 @@ +--- +title: "difftastic" +category: "Developer tools" +tagline: "A diff tool that understands code syntax, so it shows what really changed." +source: "pacman" +package: "difftastic" +command: "difft" +website: "https://difftastic.wilfred.me.uk/" +code: "https://github.com/Wilfred/difftastic" +--- + +## What it is + +difftastic compares files by their structure rather than line by line. It parses the code for dozens of languages, so a reformatted or re-indented block isn't shown as changed, and moved or wrapped code is matched up correctly. Results are shown side by side with syntax highlighting. + +## Why it's here + +- **Less noise.** Formatting changes don't hide the real ones. +- **Works with Git.** Use it as Git's diff tool for any command that shows a diff. + +## On CoreDesktop + +difftastic is installed from pacman as the `difft` command. CoreDesktop doesn't make it Git's default diff tool; to use it for one command: + +``` +GIT_EXTERNAL_DIFF=difft git diff +``` + +`update` keeps it current with the rest of the pacman packages. diff --git a/content/software/discord.md b/content/software/discord.md new file mode 100644 index 0000000..12d4993 --- /dev/null +++ b/content/software/discord.md @@ -0,0 +1,21 @@ +--- +title: "Discord" +category: "Messaging and meetings" +tagline: "Voice, video and text chat for communities, gaming groups and friends." +source: "Flathub" +package: "com.discordapp.Discord" +website: "https://discord.com/" +--- + +## What it is + +Discord is a chat service organized around servers: communities with their own text channels, always-on voice channels and screen sharing. It started with gamers and is now used by open-source projects, classes and hobby groups of all kinds. The app and service are closed source and run by Discord Inc. + +## Why it's here + +- **Where communities meet.** Many projects and groups do their support and discussion on Discord. +- **Drop-in voice.** Voice channels let you join a conversation without scheduling a call. + +## On CoreDesktop + +CoreDesktop installs Discord as a Flatpak from Flathub. Open it from the app grid and sign in. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/docker.md b/content/software/docker.md new file mode 100644 index 0000000..4300fae --- /dev/null +++ b/content/software/docker.md @@ -0,0 +1,39 @@ +--- +title: "Docker" +category: "Developer tools" +tagline: "Run apps and services in containers, with Docker Compose, a working firewall and no sudo." +source: "pacman" +package: "docker" +command: "docker" +website: "https://www.docker.com/" +code: "https://github.com/moby/moby" +links: + - name: "Docker Compose" + url: "https://docs.docker.com/compose/" + - name: "ufw-docker" + url: "https://github.com/chaifeng/ufw-docker" +--- + +## What it is + +Docker runs software in containers: isolated packages that hold an app with everything it needs, from libraries to configuration. A container runs the same on your laptop as on a server, so you can start a database, a web app or a whole development stack with one command, and remove it without leaving anything behind. + +Docker Compose describes a set of containers that work together, such as an app, its database and a cache, in one `compose.yaml` file, and starts them all with `docker compose up`. + +## Why it's here + +- **Clean installs.** Try or run services without installing them on the system. +- **The same everywhere.** What runs in a container here runs the same in production. +- **Whole stacks at once.** Compose brings up every service a project needs. + +## On CoreDesktop + +CoreDesktop installs Docker and Docker Compose from pacman, enables and starts the Docker service, and adds you to the `docker` group so you can run `docker` without sudo. The group takes effect at your next login. The aliases `d` for `docker` and `ld` for [lazydocker](/software/lazydocker/) are set up too. + +Ports that Docker containers publish would normally get around the ufw firewall, so CoreDesktop also installs ufw-docker. To let a container's port through: + +``` +sudo ufw-docker allow +``` + +`audit` lists ports containers publish. The AI agents in the [AI sandbox](/ai-sandbox/) can't reach the Docker socket or your Docker credentials. `update` keeps Docker current with the rest of the pacman packages. diff --git a/content/software/element.md b/content/software/element.md new file mode 100644 index 0000000..4b6dff1 --- /dev/null +++ b/content/software/element.md @@ -0,0 +1,30 @@ +--- +title: "Element" +category: "Messaging and meetings" +tagline: "The Matrix chat app, set up to use your Federated Computer Core's chat server." +source: "pacman" +package: "element-desktop" +command: "element-desktop" +replaces: ["Slack", "Microsoft Teams"] +website: "https://element.io/" +code: "https://github.com/element-hq/element-desktop" +links: + - name: "Matrix" + url: "https://matrix.org/" +--- + +## What it is + +Element is a chat and calling app for Matrix, an open standard for messaging. Matrix works like email: anyone can run a server, and people on different servers can talk to each other. Element gives you direct messages, group rooms, threads, file sharing, and voice and video calls, with end-to-end encryption on by default for private chats. + +## Why it's here + +- **Your own chat server.** Your Federated Computer Core runs a Matrix server, and Element is the desktop app for it. +- **Team chat without a vendor.** Rooms, threads and spaces cover what teams use Slack or Teams for. +- **Encrypted by default.** Direct messages and private rooms are end-to-end encrypted. + +## On CoreDesktop + +CoreDesktop installs Element from pacman. Running `configure core` points it at your Core's Matrix server (`matrix.`), so you only choose **Sign in** and log in with your Core account through single sign-on. Reboot once after installing CoreDesktop so Element can find the keychain it keeps its encryption keys in. + +Open Element from the app grid or run `element-desktop`. The sandboxed AI agents can't read its data in `~/.config/Element`. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/embellish.md b/content/software/embellish.md new file mode 100644 index 0000000..aa964f6 --- /dev/null +++ b/content/software/embellish.md @@ -0,0 +1,21 @@ +--- +title: "Embellish" +category: "Graphics and design" +tagline: "Browse, preview and install Nerd Fonts, and copy their icons." +source: "Flathub" +package: "io.github.getnf.embellish" +code: "https://github.com/getnf/embellish" +--- + +## What it is + +Embellish is a small GNOME app for Nerd Fonts: programming fonts patched with thousands of extra icons for terminals, prompts and editors. It lists every available Nerd Font, previews them, and installs or removes one with a click. It also has a searchable cheat sheet of the icons, so you can copy one into your prompt or config. + +## Why it's here + +- **Fonts for the terminal.** Prompts, file listings and editor plugins use Nerd Font icons, and Embellish makes picking a font easy. +- **No manual downloads.** No zip files to unpack into font folders. + +## On CoreDesktop + +CoreDesktop installs Embellish as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/evolution.md b/content/software/evolution.md new file mode 100644 index 0000000..4cc9afc --- /dev/null +++ b/content/software/evolution.md @@ -0,0 +1,23 @@ +--- +title: "Evolution" +category: "Email and calendar" +tagline: "GNOME's all-in-one email, calendar, contacts and tasks app." +source: "Flathub" +package: "org.gnome.Evolution" +replaces: ["Microsoft Outlook"] +website: "https://gitlab.gnome.org/GNOME/evolution/-/wikis/home" +code: "https://gitlab.gnome.org/GNOME/evolution" +--- + +## What it is + +Evolution is the GNOME project's personal information manager. In one window it brings together email, calendars, an address book, tasks and memos, in the style of Microsoft Outlook. It speaks IMAP and SMTP for mail, CalDAV and CardDAV for calendars and contacts, and can connect to Microsoft Exchange and Microsoft 365 accounts. + +## Why it's here + +- **Everything in one place.** Mail, calendar, contacts and tasks share one app, as many people are used to from Outlook. +- **Exchange support.** It's one of the few Linux apps that connects to Exchange and Microsoft 365 directly. + +## On CoreDesktop + +CoreDesktop installs Evolution as a Flatpak from Flathub. Open it from the app grid and add your accounts in its setup assistant. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/extension-manager.md b/content/software/extension-manager.md new file mode 100644 index 0000000..56207f7 --- /dev/null +++ b/content/software/extension-manager.md @@ -0,0 +1,26 @@ +--- +title: "Extension Manager" +category: "Desktop and system" +tagline: "Browse, install and configure GNOME Shell extensions without a web browser." +source: "Flathub" +package: "com.mattjakeman.ExtensionManager" +website: "https://mattjakeman.com/apps/extension-manager" +code: "https://github.com/mjakeman/extension-manager" +links: + - name: "GNOME Extensions" + url: "https://extensions.gnome.org/" +--- + +## What it is + +Extension Manager is an app for GNOME Shell extensions, the add-ons that change how the desktop looks and behaves. It searches and installs extensions from extensions.gnome.org, shows screenshots and ratings, and lets you turn installed extensions on and off, open their settings, or remove them. + +## Why it's here + +- **One place for extensions.** No browser add-on or website needed. +- **See before you install.** Descriptions, screenshots and user ratings are in the app. +- **Quick settings.** Each extension's preferences are a click away. + +## On CoreDesktop + +Extension Manager is installed from Flathub. Open it from the app menu. It shows the extensions CoreDesktop installs, Tiling Shell and Tailscale, alongside any you add, and you can open Tiling Shell's settings from there. `update` updates your extensions, and the Flatpak update keeps Extension Manager itself current. diff --git a/content/software/eza.md b/content/software/eza.md new file mode 100644 index 0000000..2e9162a --- /dev/null +++ b/content/software/eza.md @@ -0,0 +1,33 @@ +--- +title: "eza" +category: "Terminal and shell" +tagline: "A modern ls with colors, icons, Git status and tree views. CoreDesktop's ls." +source: "pacman" +package: "eza" +command: "eza" +website: "https://eza.rocks/" +code: "https://github.com/eza-community/eza" +--- + +## What it is + +eza lists files, like `ls`, with clearer output: file types in color, human-readable sizes, icons, Git status for each file, and a built-in tree view. It's the maintained community fork of the earlier `exa` project. + +## Why it's here + +- **Easier to read.** Colors and icons make file types stand out. +- **Git-aware.** Long listings can show which files are modified or new. +- **Trees built in.** No separate tool needed to see a directory's structure. + +## On CoreDesktop + +eza is installed from pacman, and CoreDesktop's shell setup makes it the default for listing files. All of these list directories first and show icons where the terminal supports them: + +``` +ls # eza +ll # long listing with sizes +la # long listing including hidden files +lt # two-level tree with Git status +``` + +Type `command ls` if you need the original. `update` keeps eza current with the pacman packages. diff --git a/content/software/fastfetch.md b/content/software/fastfetch.md new file mode 100644 index 0000000..3005488 --- /dev/null +++ b/content/software/fastfetch.md @@ -0,0 +1,26 @@ +--- +title: "fastfetch" +category: "Terminal and shell" +tagline: "Show your system's details next to a distro logo in the terminal." +source: "pacman" +package: "fastfetch" +command: "fastfetch" +code: "https://github.com/fastfetch-cli/fastfetch" +--- + +## What it is + +fastfetch prints a summary of your system, such as the OS, kernel, desktop, CPU, GPU, memory and disk usage, beside an ASCII logo of your distribution. It's a faster, maintained successor to neofetch. + +``` +fastfetch +``` + +## Why it's here + +- **System details in one command.** Handy when asking for help or checking a new machine. +- **Quick.** It's written in C and returns instantly. + +## On CoreDesktop + +fastfetch is installed from pacman. Type `fastfetch` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/fd.md b/content/software/fd.md new file mode 100644 index 0000000..c6faf86 --- /dev/null +++ b/content/software/fd.md @@ -0,0 +1,27 @@ +--- +title: "fd" +category: "Terminal and shell" +tagline: "A simpler, faster way to find files by name." +source: "pacman" +package: "fd" +command: "fd" +code: "https://github.com/sharkdp/fd" +--- + +## What it is + +fd finds files and directories by name. It's an easier alternative to `find`: you type part of a name instead of a list of flags, matches are highlighted, and it skips hidden files and anything in `.gitignore` by default. + +``` +fd config ~/.config +``` + +## Why it's here + +- **Short commands.** `fd name` replaces `find . -iname '*name*'`. +- **Fast.** It searches directories in parallel. +- **Respects .gitignore.** Build output and dependencies stay out of the results. + +## On CoreDesktop + +fd is installed from pacman. Type `fd` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/firefox.md b/content/software/firefox.md new file mode 100644 index 0000000..68d7158 --- /dev/null +++ b/content/software/firefox.md @@ -0,0 +1,28 @@ +--- +title: "Firefox" +category: "Web browsers" +tagline: "Mozilla's independent, open-source browser, with its own engine and a deep add-on library." +source: "Flathub" +package: "org.mozilla.firefox" +replaces: ["Google Chrome", "Microsoft Edge"] +website: "https://www.firefox.com/" +code: "https://github.com/mozilla-firefox/firefox" +--- + +## What it is + +Firefox is the web browser made by Mozilla, a nonprofit. Unlike most browsers today it isn't built on Chromium: it runs on Mozilla's own Gecko engine, which keeps one real alternative to Google's engine alive on the web. + +It blocks many trackers by default with Enhanced Tracking Protection, syncs bookmarks, passwords and tabs through an optional Mozilla account, and has a large catalog of add-ons, including uBlock Origin. + +## Why it's here + +- **A second engine.** When a site misbehaves in a Chromium browser, Firefox is the quickest way to tell whether it's the site or the browser. +- **Privacy built in.** Tracker blocking and container tabs keep sites from following you around. +- **Add-ons that go further.** Firefox still supports the full-strength versions of content blockers and other extensions. + +## On CoreDesktop + +CoreDesktop installs Firefox as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Firefox the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read your Firefox profile. `update` keeps Firefox current along with your other Flatpaks. diff --git a/content/software/flameshot.md b/content/software/flameshot.md new file mode 100644 index 0000000..21b7864 --- /dev/null +++ b/content/software/flameshot.md @@ -0,0 +1,28 @@ +--- +title: "Flameshot" +category: "Graphics and design" +tagline: "Take a screenshot, mark it up with arrows, boxes and text, then save or copy it." +source: "pacman" +package: "flameshot" +command: "flameshot" +replaces: ["Snagit"] +website: "https://flameshot.org/" +code: "https://github.com/flameshot-org/flameshot" +--- + +## What it is + +Flameshot is a screenshot tool with built-in annotation. You drag to select part of the screen, then draw arrows, boxes, numbered markers and text, blur sensitive details, and save the result, copy it to the clipboard or pin it on screen, all before the capture closes. + +``` +flameshot gui +``` + +## Why it's here + +- **Annotate in one step.** No need to open an image editor to point at something. +- **Blur before you share.** Hide emails, names or tokens before a screenshot leaves your machine. + +## On CoreDesktop + +CoreDesktop installs Flameshot from pacman. Open it from the app grid, or run `flameshot gui` to start a capture. CoreDesktop doesn't bind it to a key, so Print Screen still opens GNOME's own screenshot tool. `update` keeps Flameshot current with the rest of the pacman packages. diff --git a/content/software/fluffychat.md b/content/software/fluffychat.md new file mode 100644 index 0000000..f58b6ae --- /dev/null +++ b/content/software/fluffychat.md @@ -0,0 +1,22 @@ +--- +title: "FluffyChat" +category: "Messaging and meetings" +tagline: "A friendly, simple Matrix chat app that feels like a phone messenger." +source: "Flathub" +package: "im.fluffychat.Fluffychat" +website: "https://fluffychat.im/" +code: "https://github.com/krille-chan/fluffychat" +--- + +## What it is + +FluffyChat is a chat app for Matrix, the open messaging standard your Core's chat server uses. Where Element is built around teams, rooms and spaces, FluffyChat looks and feels like a phone messenger: a list of chats, bubbles, stickers and voice messages. It supports end-to-end encryption and works with any Matrix server. + +## Why it's here + +- **A simpler Matrix client.** It's an easy way into Matrix for people who find Element busy. +- **Same account, same chats.** Sign in with your Core account and your rooms and messages are all there. + +## On CoreDesktop + +CoreDesktop installs FluffyChat as a Flatpak from Flathub. Open it from the app grid and sign in with your Matrix server's address and your account. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/fwupd.md b/content/software/fwupd.md new file mode 100644 index 0000000..f606adc --- /dev/null +++ b/content/software/fwupd.md @@ -0,0 +1,29 @@ +--- +title: "fwupd" +category: "Desktop and system" +tagline: "Firmware updates for your laptop, drives and peripherals, from the vendors themselves." +source: "pacman" +package: "fwupd" +command: "fwupdmgr" +website: "https://fwupd.org/" +code: "https://github.com/fwupd/fwupd" +--- + +## What it is + +fwupd updates the firmware in your hardware: the system BIOS or UEFI, SSDs, docks, keyboards, mice and more. Hardware vendors publish their updates to the Linux Vendor Firmware Service (LVFS), and fwupd downloads and installs the ones that apply to your devices, so you don't need the vendor's Windows tool. + +``` +fwupdmgr get-updates +fwupdmgr update +``` + +## Why it's here + +- **Security fixes below the OS.** Firmware has bugs too, and some are serious. +- **No Windows required.** Many vendors ship their updates through LVFS. +- **Signed updates.** Firmware is checked before it's installed. + +## On CoreDesktop + +fwupd is installed from pacman, and `fwupd-refresh.timer` is enabled so the list of available firmware stays current. Each [`update`](/utilities/#update) checks for firmware updates and tells you if there are any, but doesn't install them, as firmware often needs a reboot. When it says there are, run `fwupdmgr update`. diff --git a/content/software/fzf.md b/content/software/fzf.md new file mode 100644 index 0000000..12ff41c --- /dev/null +++ b/content/software/fzf.md @@ -0,0 +1,26 @@ +--- +title: "fzf" +category: "Terminal and shell" +tagline: "A fuzzy finder for files, command history and anything else you can list." +source: "pacman" +package: "fzf" +command: "fzf" +website: "https://junegunn.github.io/fzf/" +code: "https://github.com/junegunn/fzf" +--- + +## What it is + +fzf takes any list, such as file names, command history or Git branches, and lets you filter it by typing a few letters in any order. You pick a line with the arrow keys and Enter, and fzf prints it so other commands can use it. + +## Why it's here + +- **Find things without exact names.** A few letters are enough to narrow thousands of entries. +- **Works with everything.** Pipe any command's output into it. +- **Shell shortcuts.** Its key bindings make history search and path entry much quicker. + +## On CoreDesktop + +fzf is installed from pacman, and CoreDesktop's shell setup turns on its Bash key bindings: **Ctrl-R** searches your command history, **Ctrl-T** inserts a file path, and **Alt-C** changes into a directory you pick. + +CoreDesktop also adds two aliases. `ff` fuzzy-finds a file with a [bat](/software/bat/) preview of its contents, and `eff` opens the file you pick in your editor (Neovim unless you've set `$EDITOR`). `update` keeps fzf current with the pacman packages. diff --git a/content/software/ghostty.md b/content/software/ghostty.md new file mode 100644 index 0000000..12997eb --- /dev/null +++ b/content/software/ghostty.md @@ -0,0 +1,26 @@ +--- +title: "Ghostty" +category: "Terminal and shell" +tagline: "A fast, native terminal emulator with GPU rendering, tabs and splits." +source: "pacman" +package: "ghostty" +command: "ghostty" +website: "https://ghostty.org/" +code: "https://github.com/ghostty-org/ghostty" +--- + +## What it is + +Ghostty is a terminal emulator: the window where you type commands. It draws text on the GPU so scrolling and large outputs stay smooth, and it uses native GTK on Linux, so its tabs, splits and menus look like the rest of GNOME. It works with sensible defaults and needs no configuration file to get started. + +## Why it's here + +- **Fast.** GPU rendering keeps it responsive with long logs and full-screen terminal apps. +- **Native.** It follows GNOME's look and behaves like a desktop app, not a port. +- **Modern terminal features.** Splits, tabs, ligatures and inline images work out of the box. + +## On CoreDesktop + +Ghostty is installed from pacman. Open it from the app grid or type `ghostty`. When CoreDesktop's update notification asks you to run an update, it opens a terminal to run `update` in; if GNOME's own terminal isn't available it uses Ghostty. + +`update` keeps Ghostty current along with the rest of the pacman packages. diff --git a/content/software/gimp.md b/content/software/gimp.md new file mode 100644 index 0000000..cec271c --- /dev/null +++ b/content/software/gimp.md @@ -0,0 +1,24 @@ +--- +title: "GIMP" +category: "Graphics and design" +tagline: "The GNU Image Manipulation Program, for photo editing, retouching and image work." +source: "pacman" +package: "gimp" +command: "gimp" +replaces: ["Adobe Photoshop"] +website: "https://www.gimp.org/" +code: "https://gitlab.gnome.org/GNOME/gimp" +--- + +## What it is + +GIMP is an open-source raster image editor. It handles photo retouching, color correction, cropping and resizing, compositing with layers and masks, and painting. It opens most image formats, including Photoshop's PSD files, and can be extended with plugins and scripts. + +## Why it's here + +- **Photo editing without a subscription.** Layers, masks, selections and filters cover most of what people use Photoshop for. +- **Everyday image jobs.** Cropping a screenshot, resizing for the web or blurring a detail takes a minute. + +## On CoreDesktop + +CoreDesktop installs GIMP from pacman. Open it from the app grid or run `gimp`. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/git.md b/content/software/git.md new file mode 100644 index 0000000..ac1dc83 --- /dev/null +++ b/content/software/git.md @@ -0,0 +1,33 @@ +--- +title: "Git" +category: "Developer tools" +tagline: "The version control system almost every software project uses, with CoreDesktop's shortcuts." +source: "pacman" +package: "git" +command: "git" +website: "https://git-scm.com/" +code: "https://github.com/git/git" +links: + - name: "Pro Git (free book)" + url: "https://git-scm.com/book/en/v2" +--- + +## What it is + +Git records the history of a project's files. Each commit is a snapshot you can go back to, compare or undo, and branches let you work on several changes at once and merge them when they're ready. It's distributed: every copy of a repository has the full history, and you share work by pushing and pulling between copies, often through GitHub, GitLab or Gitea. + +## Why it's here + +- **The standard.** Nearly every open-source and commercial project uses it. +- **Safe experiments.** Branch, try something, and throw it away if it doesn't work. +- **Needed by everything else.** Editors, AI agents and installers all use Git. + +## On CoreDesktop + +Git is installed from pacman. CoreDesktop adds shell shortcuts for it: + +- `g` for `git`, and `lg` for [lazygit](/software/lazygit/) +- `gcm "message"` commits with a message, `gcam "message"` commits all changed files, and `gcad` adds changed files to the last commit +- `ga ` creates a worktree for a new branch next to the current repository, in `../--`, and moves you into it; `gd`, run inside it, removes the worktree and its branch + +`update` keeps Git current with the rest of the pacman packages. diff --git a/content/software/gnome-disks.md b/content/software/gnome-disks.md new file mode 100644 index 0000000..0ddfd9a --- /dev/null +++ b/content/software/gnome-disks.md @@ -0,0 +1,24 @@ +--- +title: "GNOME Disks" +category: "Desktop and system" +tagline: "Format, partition, check and image your drives from one window." +source: "pacman" +package: "gnome-disk-utility" +command: "gnome-disks" +website: "https://apps.gnome.org/DiskUtility/" +code: "https://gitlab.gnome.org/GNOME/gnome-disk-utility" +--- + +## What it is + +GNOME Disks shows every drive in your computer, internal or plugged in, and what's on it. It formats and partitions drives, sets up encryption, mounts and unmounts partitions, and changes how they're mounted at boot. It also reads a drive's SMART health data, benchmarks its speed, and creates or restores disk images. + +## Why it's here + +- **Prepare a drive.** Format a USB stick or external disk, encrypted if you like, in a couple of clicks. +- **Check a drive's health.** SMART data warns you before a disk fails. +- **Image a whole disk.** Save a drive to a file, or write one back. + +## On CoreDesktop + +GNOME Disks is installed from pacman as one of CoreDesktop's maintenance tools. Open it from the app menu as **Disks**, or run `gnome-disks`. `update` keeps it current with the rest of the Arch packages. diff --git a/content/software/gnome-keyring.md b/content/software/gnome-keyring.md new file mode 100644 index 0000000..cd69fe2 --- /dev/null +++ b/content/software/gnome-keyring.md @@ -0,0 +1,22 @@ +--- +title: "GNOME Keyring" +category: "Desktop and system" +tagline: "Keeps your passwords and secrets encrypted, and unlocks them when you log in." +source: "pacman" +package: "gnome-keyring" +code: "https://gitlab.gnome.org/GNOME/gnome-keyring" +--- + +## What it is + +GNOME Keyring stores passwords, keys and other secrets for your apps in an encrypted file. It's unlocked with your login password when you sign in, so apps can fetch the secrets they need without asking you each time. Apps reach it through the standard Secret Service interface, so browsers, mail clients and command-line tools can all use it. + +## Why it's here + +- **Fewer password prompts.** Apps remember your accounts without storing them in plain text. +- **Online Accounts use it.** The passwords for accounts you add in GNOME live here. +- **Scripts can use it too.** `secret-tool` stores and reads secrets from the terminal. + +## On CoreDesktop + +GNOME Keyring is installed from pacman as one of CoreDesktop's maintenance tools. When you [connect your Core](/utilities/#configure), the Nextcloud and email accounts added to Online Accounts keep their passwords here, and the daily [backups](/utilities/#backups) keep their Nextcloud app password and passphrase here, so they can run without asking. The [AI sandbox](/ai-sandbox/) keeps agents out of `~/.local/share/keyrings`. `update` keeps it current. diff --git a/content/software/gnome-tweaks.md b/content/software/gnome-tweaks.md new file mode 100644 index 0000000..df2f3f3 --- /dev/null +++ b/content/software/gnome-tweaks.md @@ -0,0 +1,23 @@ +--- +title: "GNOME Tweaks" +category: "Desktop and system" +tagline: "The GNOME settings that aren't in Settings: fonts, title bar buttons, keyboard and mouse options." +source: "pacman" +package: "gnome-tweaks" +command: "gnome-tweaks" +code: "https://gitlab.gnome.org/GNOME/gnome-tweaks" +--- + +## What it is + +GNOME Tweaks is a settings app for the options GNOME's own Settings leaves out. It sets interface and monospace fonts and their scaling, adds minimize and maximize buttons to title bars, chooses the theme for older apps, the cursor and icons, and changes keyboard and mouse behavior, such as what Caps Lock does. + +## Why it's here + +- **Fonts and scaling.** Pick a different font or make text slightly larger without changing the whole display scale. +- **Title bar buttons.** Bring back minimize and maximize if you miss them. +- **Keyboard options.** Turn Caps Lock into Ctrl or Escape, or change the key that opens the overview. + +## On CoreDesktop + +GNOME Tweaks is installed from pacman with nothing extra configured. Open it from the app menu as **Tweaks**, or run `gnome-tweaks`. `update` keeps it current with the rest of the Arch packages. diff --git a/content/software/gnome.md b/content/software/gnome.md new file mode 100644 index 0000000..1aa50e3 --- /dev/null +++ b/content/software/gnome.md @@ -0,0 +1,30 @@ +--- +title: "GNOME" +category: "Desktop and system" +tagline: "The desktop itself: clean, keyboard-friendly, and set up here for tiling." +source: "pacman" +package: "gnome" +website: "https://www.gnome.org/" +code: "https://gitlab.gnome.org/GNOME/gnome-shell" +links: + - name: "GNOME apps" + url: "https://apps.gnome.org/" +--- + +## What it is + +GNOME is a desktop environment for Linux: the top bar, the app launcher and overview, the Settings app, the Files manager and a set of core apps that share one look. It stays out of the way, works well with just a keyboard, and runs on Wayland by default. + +The `gnome` package group is the desktop and its core apps. `gnome-extra` adds more GNOME apps and tools on top. + +## Why it's here + +- **Calm and consistent.** One design across the desktop and its apps, with few settings to fiddle with. +- **Keyboard first.** Press Super and type to open anything. +- **Extensible.** Shell extensions such as Tiling Shell add what GNOME leaves out. + +## On CoreDesktop + +You install Arch with GNOME before CoreDesktop. The installer then makes sure the `gnome` and `gnome-extra` groups are there from pacman, enables the GDM login screen, and installs the Tiling Shell and Tailscale extensions with gext. It loads CoreDesktop's [tiling](/system/#tiling) settings for Tiling Shell from `gnome/gnome-settings.dconf`. + +`update` updates GNOME with the rest of Arch, then updates your extensions and reinstalls any that no longer support the current GNOME Shell. It reapplies CoreDesktop's extension settings only when CoreDesktop changes them, so your own tweaks stay. Log out and back in to load updated extensions. diff --git a/content/software/go.md b/content/software/go.md new file mode 100644 index 0000000..5d0c80d --- /dev/null +++ b/content/software/go.md @@ -0,0 +1,31 @@ +--- +title: "Go" +category: "Languages and runtimes" +tagline: "Google's simple, fast compiled language, popular for servers and command-line tools." +source: "pacman" +package: "go" +command: "go" +website: "https://go.dev/" +code: "https://github.com/golang/go" +links: + - name: "A Tour of Go" + url: "https://go.dev/tour/" +--- + +## What it is + +Go is a programming language created at Google. It compiles quickly to a single binary with no dependencies, has concurrency built into the language, and comes with its own tools for building, testing, formatting and managing modules. Docker, Kubernetes, Hugo and many command-line tools are written in it. + +## Why it's here + +- **Small and readable.** A short language specification and one standard formatting style. +- **One binary.** Programs build into a single file you can copy anywhere. +- **Everything in one command.** `go build`, `go test`, `go fmt` and `go get` come with it. + +## On CoreDesktop + +Go is installed from pacman. Downloaded modules go in `~/go/pkg/mod`. CoreDesktop's backups leave that folder out, since it can be downloaded again, and the AI agents in the [AI sandbox](/ai-sandbox/) can write to it and reach the Go module proxy. `update` keeps Go current with the rest of the pacman packages. + +``` +go run . +``` diff --git a/content/software/google-chrome.md b/content/software/google-chrome.md new file mode 100644 index 0000000..0dded63 --- /dev/null +++ b/content/software/google-chrome.md @@ -0,0 +1,24 @@ +--- +title: "Google Chrome" +category: "Web browsers" +tagline: "Google's browser, for sites and Google services that expect it." +source: "Flathub" +package: "com.google.Chrome" +website: "https://www.google.com/chrome/" +--- + +## What it is + +Google Chrome is the most widely used web browser. It's built on the open-source Chromium project, with Google's additions on top: sign-in and sync with your Google account, automatic updates, Google's translation and password features, and licensed media codecs. + +## Why it's here + +- **The reference browser.** Most web apps are built and tested in Chrome first, so it's the safe choice when something only works there. +- **Google account sync.** If your bookmarks, passwords and extensions live in a Google account, Chrome picks them up when you sign in. +- **Web developer tools.** Chrome DevTools is the standard many web tutorials assume. + +## On CoreDesktop + +CoreDesktop installs Chrome as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Chrome the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read your Chrome profile. `update` keeps Chrome current along with your other Flatpaks. diff --git a/content/software/helium.md b/content/software/helium.md new file mode 100644 index 0000000..1469213 --- /dev/null +++ b/content/software/helium.md @@ -0,0 +1,29 @@ +--- +title: "Helium" +category: "Web browsers" +tagline: "A private, fast Chromium-based browser, and CoreDesktop's default." +source: "AUR" +package: "helium-browser-bin" +command: "helium-browser" +replaces: ["Google Chrome", "Microsoft Edge"] +website: "https://helium.computer/" +code: "https://github.com/imputnet/helium-linux" +--- + +## What it is + +Helium is a web browser built on Chromium, the open-source project behind Google Chrome. It keeps Chrome's speed and compatibility but strips out the parts that phone home: no Google account sync nagging, no telemetry, and uBlock Origin built in to block ads and trackers from the first page you open. + +Because it's Chromium underneath, sites that work in Chrome work in Helium, and extensions from the Chrome Web Store install as usual. + +## Why it's here + +- **Private by default.** Ad and tracker blocking is on out of the box, with no settings to hunt for. +- **Chrome-compatible.** Web apps, video calls and extensions behave as they do in Chrome. +- **Light.** Without Google's background services it starts quickly and uses less memory. + +## On CoreDesktop + +Helium is installed from the AUR and set as your default browser once, at install. Links you click in other apps open in it. If you'd rather use another browser, pick it in **Settings › Apps › Default Apps**: CoreDesktop won't change it back. + +`update` keeps Helium current along with the rest of the AUR packages. diff --git a/content/software/helvum.md b/content/software/helvum.md new file mode 100644 index 0000000..5ac2933 --- /dev/null +++ b/content/software/helvum.md @@ -0,0 +1,21 @@ +--- +title: "Helvum" +category: "Audio and video" +tagline: "A patchbay for PipeWire: see and rewire how audio and video flow between apps." +source: "Flathub" +package: "org.pipewire.Helvum" +code: "https://gitlab.freedesktop.org/pipewire/helvum" +--- + +## What it is + +Helvum is a graphical patchbay for PipeWire, the system that handles sound and video on modern Linux desktops. It shows every app, microphone, speaker and camera as a box with ports, and the connections between them as lines. You drag between ports to connect them, for example to send one app's audio into a recording app, or to route a microphone to two places at once. + +## Why it's here + +- **See your audio.** When sound goes to the wrong place, the graph shows why. +- **Custom routing.** Connect apps and devices in ways the Sound settings can't. + +## On CoreDesktop + +CoreDesktop installs Helvum as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/herdr.md b/content/software/herdr.md new file mode 100644 index 0000000..8a0b756 --- /dev/null +++ b/content/software/herdr.md @@ -0,0 +1,35 @@ +--- +title: "herdr" +category: "AI" +tagline: "A terminal workspace for running several AI coding agents at once, and coming back to them later." +source: "AUR" +package: "herdr" +command: "herdr" +website: "https://herdr.dev/" +code: "https://github.com/herdrdev/herdr" +links: + - name: "herdr quick start" + url: "https://herdr.dev/docs/quick-start/" +--- + +## What it is + +herdr is a terminal workspace manager built for AI coding agents. It splits your terminal into panes, like tmux, and runs your agents in them: Claude Code, opencode and others. Each pane is marked working, blocked or idle, so you can see at a glance which agent is waiting for an answer. + +Its terminals keep running in a background server when you close the window or lose an SSH connection; run `herdr` again to pick up where you left off. It can also gather sessions from several machines into one window. + +## Why it's here + +- **Many agents, one view.** Run agents across projects side by side and spot the one that's stuck. +- **Walk away.** Detach with `ctrl+b q` and the agents keep working. +- **Uses what you have.** It doesn't replace your agents or your terminal; it runs them. + +## On CoreDesktop + +herdr is installed from the AUR. Start it in a project directory: + +``` +herdr +``` + +Agents you start by name in its panes, such as `opencode` or `hermes`, still run in CoreDesktop's [AI sandbox](/ai-sandbox/). `update` keeps herdr current with the rest of the AUR packages. diff --git a/content/software/hermes-agent.md b/content/software/hermes-agent.md new file mode 100644 index 0000000..ae98311 --- /dev/null +++ b/content/software/hermes-agent.md @@ -0,0 +1,30 @@ +--- +title: "Hermes Agent" +category: "AI" +tagline: "Nous Research's self-improving agent, in your terminal and over Matrix, running in CoreDesktop's sandbox." +source: "installer" +command: "hermes" +website: "https://hermes-agent.nousresearch.com/" +code: "https://github.com/NousResearch/hermes-agent" +links: + - name: "Hermes Agent documentation" + url: "https://hermes-agent.nousresearch.com/docs/" +--- + +## What it is + +Hermes Agent is an AI agent from Nous Research. It has a full terminal interface for coding and everyday tasks, and it learns as it works: it keeps memory across sessions, writes reusable skills after complex tasks and can search its past conversations. + +A background process called the gateway lets you talk to it from messaging apps such as Matrix, Telegram, Discord or Signal, and it can run scheduled jobs on its own. It works with Nous Portal, OpenRouter, OpenAI, Anthropic and other providers, or your own endpoint. + +## Why it's here + +- **Remembers.** Memory and skills carry over from one session to the next. +- **Reachable from your phone.** Through the gateway, you can message it from Matrix and other chat apps. +- **Any model.** Switch providers and models with `hermes model`. + +## On CoreDesktop + +CoreDesktop installs Hermes Agent with its official installer from hermes-agent.nousresearch.com, skipping its setup questions and background service, and `update` runs `hermes update` to keep it current. Typing `hermes` or `hermes-agent` runs it in CoreDesktop's [AI sandbox](/ai-sandbox/): it can change files only in the directory you start it from and in `~/.hermes`, and reach only AI providers and common developer sites. Its sandbox allows local sockets, so it can talk to its gateway, but hides your session's D-Bus and SSH agent, Docker, Tailscale, X11, tmux and browsers. To run it without the sandbox, type `unsandboxed hermes`. + +If you set up the gateway, CoreDesktop runs it in the sandbox too, and lets it reach the Matrix server in Hermes' settings. For other messaging services, add their domains to `~/.config/coredesktop/sandbox/hermes.json`. Before the first use, run `configure hermes` and choose Nous Portal, where one sign-in covers the model, web search, images and more, or another provider such as OpenRouter, OpenAI, Anthropic or your own endpoint. diff --git a/content/software/htop.md b/content/software/htop.md new file mode 100644 index 0000000..4da1359 --- /dev/null +++ b/content/software/htop.md @@ -0,0 +1,24 @@ +--- +title: "htop" +category: "Desktop and system" +tagline: "The classic interactive process viewer for the terminal." +source: "pacman" +package: "htop" +command: "htop" +website: "https://htop.dev/" +code: "https://github.com/htop-dev/htop" +--- + +## What it is + +htop is an interactive process viewer: a better `top`. It lists running processes with their CPU and memory use, shows meters for each CPU core and for memory and swap, and lets you sort, search, filter, show processes as a tree, and send signals to stop one, all from the keyboard. + +## Why it's here + +- **Everywhere.** It's on nearly every Linux server, so it's worth knowing. +- **Quick to drive.** The function keys along the bottom do the common jobs. +- **Light.** It starts instantly and uses almost nothing itself. + +## On CoreDesktop + +htop is installed from pacman, with nothing extra configured. Run `htop` in a terminal and press F10 or q to quit. `update` keeps it current. diff --git a/content/software/hugo.md b/content/software/hugo.md new file mode 100644 index 0000000..7bfd704 --- /dev/null +++ b/content/software/hugo.md @@ -0,0 +1,28 @@ +--- +title: "Hugo" +category: "Languages and runtimes" +tagline: "A fast static site generator that turns Markdown into a complete website." +source: "pacman" +package: "hugo" +command: "hugo" +website: "https://gohugo.io/" +code: "https://github.com/gohugoio/hugo" +--- + +## What it is + +Hugo builds websites from Markdown files and templates. You write pages as plain text, choose or write a theme, and Hugo generates a folder of HTML, CSS and images you can host anywhere, with no database or server code. It builds even large sites in seconds, and its development server reloads the page in your browser as you edit. + +## Why it's here + +- **Fast.** Builds take milliseconds to seconds. +- **Simple hosting.** The output is static files, cheap to host and hard to break. +- **One binary.** No runtime or dependency tree to manage. + +## On CoreDesktop + +Hugo is installed from pacman, along with [Dart Sass](/software/dart-sass/), which Hugo can use to compile Sass stylesheets. `update` keeps it current with the rest of the pacman packages. Preview a site with: + +``` +hugo server +``` diff --git a/content/software/hyperfine.md b/content/software/hyperfine.md new file mode 100644 index 0000000..66e1644 --- /dev/null +++ b/content/software/hyperfine.md @@ -0,0 +1,26 @@ +--- +title: "hyperfine" +category: "Developer tools" +tagline: "Benchmark shell commands and compare how fast they run, with statistics." +source: "pacman" +package: "hyperfine" +command: "hyperfine" +code: "https://github.com/sharkdp/hyperfine" +--- + +## What it is + +hyperfine times commands. It runs each one many times, after warm-up runs, and reports the mean, spread and range, so you can tell whether one version of a script or a build setting is really faster than another. It can export results as Markdown, JSON or CSV. + +## Why it's here + +- **Real numbers.** Repeated runs and statistics instead of a single `time`. +- **Side-by-side comparisons.** Give it several commands and it says which is fastest, and by how much. + +## On CoreDesktop + +hyperfine is installed from pacman. `update` keeps it current with the rest of the pacman packages. + +``` +hyperfine 'grep -r foo .' 'rg foo' +``` diff --git a/content/software/imagemagick.md b/content/software/imagemagick.md new file mode 100644 index 0000000..f00a524 --- /dev/null +++ b/content/software/imagemagick.md @@ -0,0 +1,27 @@ +--- +title: "ImageMagick" +category: "Graphics and design" +tagline: "Convert, resize and edit images from the command line, one file or thousands." +source: "pacman" +package: "imagemagick" +command: "magick" +website: "https://imagemagick.org/" +code: "https://github.com/ImageMagick/ImageMagick" +--- + +## What it is + +ImageMagick is a command-line toolkit for working with images. It converts between more than 200 formats and can resize, crop, rotate, compress, add text and watermarks, and combine images. Because it runs from the terminal, it's ideal for scripts and batch jobs. + +``` +magick photo.png -resize 50% photo.jpg +``` + +## Why it's here + +- **Batch work.** Resize or convert a folder of images with one command. +- **A building block.** Many other tools and scripts call ImageMagick to handle images. + +## On CoreDesktop + +CoreDesktop installs ImageMagick from pacman. Run `magick` in a terminal. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/impala.md b/content/software/impala.md new file mode 100644 index 0000000..8f9a535 --- /dev/null +++ b/content/software/impala.md @@ -0,0 +1,22 @@ +--- +title: "impala" +category: "Networking and remote access" +tagline: "A terminal interface for managing Wi-Fi with iwd." +source: "pacman" +package: "impala" +command: "impala" +code: "https://github.com/pythops/impala" +--- + +## What it is + +impala is a text-based interface for Wi-Fi. It lists nearby networks, connects to them (including WPA Enterprise and hidden networks), and can share a network's details as a QR code, all from the keyboard. It works with iwd, the wireless daemon from Intel, rather than NetworkManager. + +## Why it's here + +- **Wi-Fi without a desktop.** Useful on a console or when GNOME isn't running. +- **Clear and quick.** Networks, signal strength and connection state on one screen. + +## On CoreDesktop + +impala is installed from pacman. It needs the iwd service running, and its authors recommend disabling NetworkManager while you use it to avoid conflicts. CoreDesktop manages Wi-Fi with NetworkManager, so for everyday use, **Settings › Wi-Fi** or `nmtui` is the simpler choice. `update` keeps impala current with the pacman packages. diff --git a/content/software/impression.md b/content/software/impression.md new file mode 100644 index 0000000..3c0294d --- /dev/null +++ b/content/software/impression.md @@ -0,0 +1,23 @@ +--- +title: "Impression" +category: "Desktop and system" +tagline: "Write a disk image to a USB drive to make a bootable installer." +source: "Flathub" +package: "io.gitlab.adhami3310.Impression" +website: "https://apps.gnome.org/Impression/" +code: "https://gitlab.com/adhami3310/Impression" +--- + +## What it is + +Impression makes bootable drives. Choose an ISO or other disk image, choose a USB drive, and it writes the image so the drive can start a computer, for example to install Linux or Windows. It can also download some popular Linux distributions for you. + +## Why it's here + +- **Simple.** No options to puzzle over, just the image and the drive. +- **Works for any system.** Linux distributions and Windows installers alike. +- **Handy for Arch.** Make a USB stick with the Arch ISO, which is what you'd boot to [roll back a snapshot](/system/#snapshots). + +## On CoreDesktop + +Impression is installed from Flathub. Open it from the app menu. The Flatpak update keeps it current. diff --git a/content/software/inkscape.md b/content/software/inkscape.md new file mode 100644 index 0000000..c8079d7 --- /dev/null +++ b/content/software/inkscape.md @@ -0,0 +1,23 @@ +--- +title: "Inkscape" +category: "Graphics and design" +tagline: "A vector graphics editor for logos, illustrations, diagrams and SVG." +source: "Flathub" +package: "org.inkscape.Inkscape" +replaces: ["Adobe Illustrator"] +website: "https://inkscape.org/" +code: "https://gitlab.com/inkscape/inkscape" +--- + +## What it is + +Inkscape is an open-source vector graphics editor. Vector images are made of shapes and paths rather than pixels, so they stay sharp at any size: the right format for logos, icons, illustrations, diagrams and print. Inkscape's native format is SVG, the web's standard vector format, and it also imports and exports PDF, EPS and PNG. + +## Why it's here + +- **Illustrator-style design.** Paths, the pen tool, text on paths, gradients and boolean operations are all there. +- **Native SVG.** Graphics for websites and apps come out as clean, standard SVG. + +## On CoreDesktop + +CoreDesktop installs Inkscape as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/jellyfin-desktop.md b/content/software/jellyfin-desktop.md new file mode 100644 index 0000000..e2265b7 --- /dev/null +++ b/content/software/jellyfin-desktop.md @@ -0,0 +1,23 @@ +--- +title: "Jellyfin Desktop" +category: "Entertainment" +tagline: "The desktop app for Jellyfin, the self-hosted media server for your films, shows and music." +source: "Flathub" +package: "org.jellyfin.JellyfinDesktop" +replaces: ["Plex"] +website: "https://jellyfin.org/" +code: "https://github.com/jellyfin/jellyfin-desktop" +--- + +## What it is + +Jellyfin is an open-source media server: you run it on a computer or server at home, point it at your films, TV shows and music, and stream them to any device. Jellyfin Desktop is the app for watching from your computer. It plays through mpv, so it supports hardware decoding, audio passthrough and more formats without the server having to convert them. + +## Why it's here + +- **Your own streaming service.** Watch your own media library without a subscription or an account with someone else. +- **Better playback than a browser.** Files play directly that the web interface would have to transcode. + +## On CoreDesktop + +CoreDesktop installs Jellyfin Desktop as a Flatpak from Flathub. Open it from the app grid and enter your Jellyfin server's address. It replaces the older Jellyfin Media Player Flatpak, which `update` removes. `update` keeps Jellyfin Desktop current along with your other Flatpaks. diff --git a/content/software/jq.md b/content/software/jq.md new file mode 100644 index 0000000..213f53f --- /dev/null +++ b/content/software/jq.md @@ -0,0 +1,27 @@ +--- +title: "jq" +category: "Terminal and shell" +tagline: "Read, filter and reshape JSON on the command line." +source: "pacman" +package: "jq" +command: "jq" +website: "https://jqlang.org/" +code: "https://github.com/jqlang/jq" +--- + +## What it is + +jq is a command-line processor for JSON. It pretty-prints JSON, pulls out the fields you want, and transforms data with a small filter language, which makes it the standard way to work with API responses and JSON files in scripts. + +``` +curl -s https://api.github.com/repos/jqlang/jq | jq '.stargazers_count' +``` + +## Why it's here + +- **JSON everywhere.** APIs and many tools output JSON, and jq makes it readable. +- **Scriptable.** Shell scripts use it to pick values out of JSON. + +## On CoreDesktop + +jq is installed from pacman. CoreDesktop's own scripts use it too, for example `configure` reads Tailscale's status with it. `update` keeps jq current along with the rest of the pacman packages. diff --git a/content/software/just.md b/content/software/just.md new file mode 100644 index 0000000..092fa53 --- /dev/null +++ b/content/software/just.md @@ -0,0 +1,30 @@ +--- +title: "just" +category: "Developer tools" +tagline: "A command runner: save a project's commands in a justfile and run them by name." +source: "pacman" +package: "just" +command: "just" +website: "https://just.systems/" +code: "https://github.com/casey/just" +links: + - name: "The just manual" + url: "https://just.systems/man/en/" +--- + +## What it is + +just saves the commands a project uses, such as building, testing or deploying, in a `justfile`, as named recipes. `just test` runs the test recipe; `just` on its own runs the first one, and `just --list` shows them all. It's like make for running commands, without make's quirks around files and tabs. + +## Why it's here + +- **Commands you don't have to remember.** Each project documents its own tasks. +- **Simple syntax.** Recipes can take arguments and depend on each other. + +## On CoreDesktop + +just is installed from pacman. `update` keeps it current with the rest of the pacman packages. + +``` +just --list +``` diff --git a/content/software/kdenlive.md b/content/software/kdenlive.md new file mode 100644 index 0000000..d7fb2dc --- /dev/null +++ b/content/software/kdenlive.md @@ -0,0 +1,23 @@ +--- +title: "Kdenlive" +category: "Audio and video" +tagline: "KDE's multitrack video editor, for everything from quick cuts to full projects." +source: "Flathub" +package: "org.kde.kdenlive" +replaces: ["Adobe Premiere Pro"] +website: "https://kdenlive.org/" +code: "https://invent.kde.org/multimedia/kdenlive" +--- + +## What it is + +Kdenlive is an open-source video editor from the KDE community. You arrange clips on a multitrack timeline, trim and split them, and add transitions, titles, effects and color correction. It handles most video and audio formats, uses proxy clips to keep editing smooth with large footage, and renders to common formats for the web or other devices. + +## Why it's here + +- **A real editor.** Multiple tracks, keyframed effects and audio mixing cover YouTube videos, tutorials and short films. +- **Works with OBS.** Record with OBS Studio, then cut and polish the recording here. + +## On CoreDesktop + +CoreDesktop installs Kdenlive as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/kitty.md b/content/software/kitty.md new file mode 100644 index 0000000..3711a6d --- /dev/null +++ b/content/software/kitty.md @@ -0,0 +1,26 @@ +--- +title: "kitty" +category: "Terminal and shell" +tagline: "A GPU-based terminal emulator you can script and extend." +source: "pacman" +package: "kitty" +command: "kitty" +website: "https://sw.kovidgoyal.net/kitty/" +code: "https://github.com/kovidgoyal/kitty" +--- + +## What it is + +kitty is a terminal emulator that renders on the GPU and is built to be driven from the keyboard. It has its own tabs and window layouts, a protocol for showing images in the terminal, and "kittens": small add-on programs for things like viewing images, diffing files or picking Unicode characters. Everything is set in a plain text file, `~/.config/kitty/kitty.conf`. + +## Why it's here + +- **Keyboard-first.** Tabs, splits and layouts are all on shortcuts. +- **Scriptable.** You can control a running kitty from the command line or from scripts. +- **Graphics in the terminal.** Tools that support its image protocol can show pictures inline. + +## On CoreDesktop + +kitty is installed from pacman. Open it from the app grid or type `kitty`. It's the last fallback CoreDesktop's update notification uses to open a terminal for `update`. + +`update` keeps kitty current along with the rest of the pacman packages. diff --git a/content/software/lazydocker.md b/content/software/lazydocker.md new file mode 100644 index 0000000..d45e82f --- /dev/null +++ b/content/software/lazydocker.md @@ -0,0 +1,28 @@ +--- +title: "lazydocker" +category: "Developer tools" +tagline: "A terminal interface for Docker and Compose: containers, logs and stats in one view." +source: "pacman" +package: "lazydocker" +command: "lazydocker" +code: "https://github.com/jesseduffield/lazydocker" +--- + +## What it is + +lazydocker is a full-screen terminal interface for Docker and Docker Compose. It lists your containers, images, volumes and Compose services, shows each one's logs and CPU and memory use as it runs, and lets you restart, stop, remove or open a shell in a container with a single key. + +## Why it's here + +- **Everything at a glance.** No more chains of `docker ps` and `docker logs`. +- **Quick fixes.** Restart a service or clean up old images in a keystroke. + +## On CoreDesktop + +lazydocker is installed from pacman, and CoreDesktop adds the alias `ld` for it: + +``` +ld +``` + +`update` keeps it current with the rest of the pacman packages. diff --git a/content/software/lazygit.md b/content/software/lazygit.md new file mode 100644 index 0000000..0f58899 --- /dev/null +++ b/content/software/lazygit.md @@ -0,0 +1,29 @@ +--- +title: "lazygit" +category: "Developer tools" +tagline: "A terminal interface for Git: stage, commit, branch and rebase with a few keystrokes." +source: "pacman" +package: "lazygit" +command: "lazygit" +code: "https://github.com/jesseduffield/lazygit" +--- + +## What it is + +lazygit is a full-screen terminal interface for Git. It shows your changed files, branches, commits and stashes in panels, and turns common jobs into single keys: stage a file or a single line, commit, push, switch branches, or reorder and squash commits in an interactive rebase. + +## Why it's here + +- **See everything at once.** Status, diff and history side by side. +- **Hard things made easy.** Partial staging, cherry-picks and rebases without memorizing commands. +- **Stays in the terminal.** Works over SSH and next to your editor. + +## On CoreDesktop + +lazygit is installed from pacman, and CoreDesktop adds the alias `lg` for it. Run it inside a repository: + +``` +lg +``` + +`update` keeps it current with the rest of the pacman packages. diff --git a/content/software/libreoffice.md b/content/software/libreoffice.md new file mode 100644 index 0000000..a4962d8 --- /dev/null +++ b/content/software/libreoffice.md @@ -0,0 +1,27 @@ +--- +title: "LibreOffice" +category: "Office, notes and writing" +tagline: "A full office suite: documents, spreadsheets, presentations, drawings and databases." +source: "pacman" +package: "libreoffice-fresh" +command: "libreoffice" +replaces: ["Microsoft Office"] +website: "https://www.libreoffice.org/" +code: "https://git.libreoffice.org/core" +--- + +## What it is + +LibreOffice is an open-source office suite from The Document Foundation. It includes Writer for documents, Calc for spreadsheets, Impress for presentations, Draw for diagrams, Base for databases and Math for formulas. It opens and saves Microsoft Office files (.docx, .xlsx, .pptx), and its native format is the OpenDocument standard. + +## Why it's here + +- **Office without a subscription.** It covers what most people use Word, Excel and PowerPoint for. +- **Opens what people send you.** Microsoft Office files open and save in their own formats. +- **Exports to PDF.** Any document exports to PDF in one step. + +## On CoreDesktop + +CoreDesktop installs LibreOffice from pacman as `libreoffice-fresh`, the branch with the newest features. If an older install had the LibreOffice Flatpak, `update` removes it in favor of this package. + +Open the apps from the app grid, or run `libreoffice`. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/lm-studio.md b/content/software/lm-studio.md new file mode 100644 index 0000000..ac95526 --- /dev/null +++ b/content/software/lm-studio.md @@ -0,0 +1,24 @@ +--- +title: "LM Studio" +category: "AI" +tagline: "Find, download and run open AI models on your own computer, with a chat window and a local API." +source: "Flathub" +package: "ai.lmstudio.lm-studio" +website: "https://lmstudio.ai/" +--- + +## What it is + +LM Studio is a desktop app for running AI language models locally. You browse and download open models such as Llama, Qwen, Gemma or Mistral from inside the app, then chat with them in a window, with no account and no data sent to a cloud service. + +It can also serve a loaded model over a local API that's compatible with OpenAI's, so other apps and scripts on your computer can use it in place of an online provider. + +## Why it's here + +- **Local and private.** Models run on your hardware, and your prompts stay on your computer. +- **A model catalog built in.** It shows which versions of a model will fit your memory. +- **A local server.** Point developer tools at it to test against a model without paying per request. + +## On CoreDesktop + +LM Studio is installed from Flathub. Open it from the app menu. Larger models need plenty of memory and run best with a capable GPU. `update` keeps LM Studio current with the rest of the Flatpaks. diff --git a/content/software/localsend.md b/content/software/localsend.md new file mode 100644 index 0000000..97a16ab --- /dev/null +++ b/content/software/localsend.md @@ -0,0 +1,24 @@ +--- +title: "LocalSend" +category: "Networking and remote access" +tagline: "Send files to nearby phones and computers over your local network." +source: "Flathub" +package: "org.localsend.localsend_app" +replaces: ["AirDrop"] +website: "https://localsend.org/" +code: "https://github.com/localsend/localsend" +--- + +## What it is + +LocalSend shares files and text between devices on the same network, without the internet or an account. Open it on both devices, they find each other, and you pick the files to send. It runs on Linux, Windows, macOS, Android and iOS, and transfers are encrypted. + +## Why it's here + +- **AirDrop for every platform.** Move photos from a phone or documents to a laptop in a few taps. +- **Stays local.** Files go straight between devices, not through a cloud service. +- **No account.** Install it and it works. + +## On CoreDesktop + +LocalSend is installed from Flathub. Open it from the app grid. CoreDesktop's firewall allows LocalSend's port, 53317, so other devices can find this one and send to it. `update` keeps LocalSend current with the rest of the Flatpaks. diff --git a/content/software/logseq.md b/content/software/logseq.md new file mode 100644 index 0000000..cc61c2c --- /dev/null +++ b/content/software/logseq.md @@ -0,0 +1,24 @@ +--- +title: "Logseq" +category: "Office, notes and writing" +tagline: "An outliner for notes and journals, stored as local Markdown files." +source: "Flathub" +package: "com.logseq.Logseq" +replaces: ["Roam Research"] +website: "https://logseq.com/" +code: "https://github.com/logseq/logseq" +--- + +## What it is + +Logseq is an open-source note-taking app built around an outline. Every note is a list of bullets that you can indent, fold, link and reference from other pages. Each day starts with a journal page, so you can write first and organize later through links and tags. Notes are stored as Markdown or Org files in a folder on your computer. + +## Why it's here + +- **Write first, file later.** The daily journal and links mean you don't have to decide where a note goes. +- **Local and open.** Your notes are plain files, and the app is open source. +- **Tasks in your notes.** TODOs and queries collect tasks from across your pages. + +## On CoreDesktop + +CoreDesktop installs Logseq as a Flatpak from Flathub. Open it from the app grid and choose a folder for your notes. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/lsd.md b/content/software/lsd.md new file mode 100644 index 0000000..6a7ef57 --- /dev/null +++ b/content/software/lsd.md @@ -0,0 +1,26 @@ +--- +title: "lsd" +category: "Terminal and shell" +tagline: "Another modern ls, with colors, icons and a tree view." +source: "pacman" +package: "lsd" +command: "lsd" +code: "https://github.com/lsd-rs/lsd" +--- + +## What it is + +lsd ("LSDeluxe") is a rewrite of `ls` that adds colors, file-type icons and a tree view, while keeping most of `ls`'s familiar options. It's an alternative to eza if you prefer its look. + +``` +lsd -l --tree --depth 2 +``` + +## Why it's here + +- **Familiar flags.** Most `ls` options work as you expect. +- **Choice.** Some people prefer its layout and colors to eza's. + +## On CoreDesktop + +lsd is installed from pacman with no aliases: CoreDesktop's `ls` aliases use eza. Type `lsd` to use it. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/mdns-tui-browser.md b/content/software/mdns-tui-browser.md new file mode 100644 index 0000000..b23a8c8 --- /dev/null +++ b/content/software/mdns-tui-browser.md @@ -0,0 +1,24 @@ +--- +title: "mdns-tui-browser" +category: "Networking and remote access" +tagline: "Browse the services that devices on your LAN announce over mDNS." +source: "AUR" +package: "mdns-tui-browser" +command: "mdns-tui-browser" +code: "https://github.com/hrzlgnm/mdns-tui-browser" +--- + +## What it is + +mdns-tui-browser is a terminal app that lists the services devices on your local network advertise over mDNS (also called Bonjour or Zeroconf): printers, SSH servers, media players, smart home devices and so on, with their host names, addresses and ports. + +## Why it's here + +- **Find devices by name.** See what's on your LAN without knowing IP addresses. +- **Check mDNS works.** Confirm your machines are announcing themselves. + +## On CoreDesktop + +mdns-tui-browser is installed from the AUR. CoreDesktop sets up mDNS so machines on your LAN can find each other: it enables `avahi-daemon`, allows mDNS (5353/udp) through the firewall, and advertises this machine's SSH server, so you can reach it as `.local`. When systemd-resolved is enabled, the installer also runs `fixmdns.sh`, which adds nss-mdns to `/etc/nsswitch.conf` ahead of systemd-resolved so `.local` names resolve. + +Type `mdns-tui-browser` to see what's announcing itself. `update` keeps it current with the AUR packages. diff --git a/content/software/midnight-commander.md b/content/software/midnight-commander.md new file mode 100644 index 0000000..39ffe66 --- /dev/null +++ b/content/software/midnight-commander.md @@ -0,0 +1,24 @@ +--- +title: "Midnight Commander" +category: "Terminal and shell" +tagline: "A two-pane terminal file manager in the style of Norton Commander." +source: "pacman" +package: "mc" +command: "mc" +website: "https://midnight-commander.org/" +code: "https://github.com/MidnightCommander/mc" +--- + +## What it is + +Midnight Commander is a terminal file manager with two side-by-side panes, function-key shortcuts and a menu bar, modeled on the DOS-era Norton Commander. It copies and moves files between panes, browses inside archives, and includes a text editor (`mcedit`) and file viewer. You can use the mouse in it, too. + +## Why it's here + +- **Easy to learn.** The function keys are labeled along the bottom of the screen. +- **Two panes.** Copying between directories is one keypress. +- **Handy on servers.** It runs anywhere there's a terminal. + +## On CoreDesktop + +Midnight Commander is installed from pacman with no extra setup. Type `mc` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/mise.md b/content/software/mise.md new file mode 100644 index 0000000..74f982c --- /dev/null +++ b/content/software/mise.md @@ -0,0 +1,27 @@ +--- +title: "mise" +category: "Languages and runtimes" +tagline: "Installs and switches versions of Ruby, Node, Python and other tools, per project." +source: "installer" +command: "mise" +website: "https://mise.jdx.dev/" +code: "https://github.com/jdx/mise" +--- + +## What it is + +mise is a version manager for programming languages and developer tools. It installs as many versions of Ruby, Node.js, Python, Go and hundreds of other tools as you need, and switches between them automatically as you move between projects, based on a `mise.toml` (or an asdf `.tool-versions` file) in each project. It can also set environment variables and run tasks for a project. + +## Why it's here + +- **The right version per project.** Change directory and the versions change with you. +- **One tool for every language.** No separate rbenv, nvm and pyenv. +- **Fast.** It changes your PATH directly instead of running every command through a wrapper. + +## On CoreDesktop + +CoreDesktop installs mise with its official installer from mise.run, which puts it in `~/.local/bin` and turns it on in `~/.bashrc`. CoreDesktop uses it to install [Ruby and Rails](/software/ruby-on-rails/), and `update` runs `mise self-update` and upgrades Ruby. Commands run over SSH can find tools installed with mise, and the `ga` function, which creates a Git worktree, trusts the new worktree's mise config. + +``` +mise use node@22 +``` diff --git a/content/software/mpv.md b/content/software/mpv.md new file mode 100644 index 0000000..fbcd3ec --- /dev/null +++ b/content/software/mpv.md @@ -0,0 +1,27 @@ +--- +title: "mpv" +category: "Audio and video" +tagline: "A minimal, keyboard-driven media player that plays almost anything." +source: "pacman" +package: "mpv" +command: "mpv" +website: "https://mpv.io/" +code: "https://github.com/mpv-player/mpv" +--- + +## What it is + +mpv is an open-source media player with almost no interface: a window with your video and a small on-screen controller. It's controlled from the keyboard, plays nearly every format, uses hardware decoding, and can be configured and scripted through plain text files and Lua. Given a URL, it can play online video through yt-dlp when that's installed. + +``` +mpv video.mkv +``` + +## Why it's here + +- **Fast and light.** It opens instantly and gets out of the way. +- **Great from the terminal.** Play a file, a folder or a stream with one command. + +## On CoreDesktop + +CoreDesktop installs mpv from pacman. Open it from the app grid, run `mpv` with a file, or drop a file on its window. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/mtr.md b/content/software/mtr.md new file mode 100644 index 0000000..78b090e --- /dev/null +++ b/content/software/mtr.md @@ -0,0 +1,27 @@ +--- +title: "mtr" +category: "Networking and remote access" +tagline: "traceroute and ping combined, updating live for every hop." +source: "pacman" +package: "mtr" +command: "mtr" +website: "https://www.bitwizard.nl/mtr/" +code: "https://github.com/traviscross/mtr" +--- + +## What it is + +mtr shows the path your traffic takes to another host and keeps measuring it: for each router along the way it shows packet loss and response times, updated continuously. It's the quickest way to see where a slow or dropping connection goes wrong. + +``` +mtr example.com +``` + +## Why it's here + +- **Find the bad hop.** See whether a problem is your Wi-Fi, your ISP or further away. +- **Live view.** Statistics build up over time instead of a single snapshot. + +## On CoreDesktop + +mtr is installed from pacman. Type `mtr` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/neovim.md b/content/software/neovim.md new file mode 100644 index 0000000..649046e --- /dev/null +++ b/content/software/neovim.md @@ -0,0 +1,31 @@ +--- +title: "Neovim" +category: "Code editors" +tagline: "The modern Vim, set up with kickstart.nvim so it's useful from the first launch." +source: "pacman" +package: "neovim" +command: "nvim" +website: "https://neovim.io/" +code: "https://github.com/neovim/neovim" +links: + - name: "kickstart.nvim" + url: "https://github.com/nvim-lua/kickstart.nvim" + - name: "Neovim documentation" + url: "https://neovim.io/doc/" +--- + +## What it is + +Neovim is a fork of Vim, the keyboard-driven text editor, rebuilt for extensibility. It keeps Vim's modal editing, where you switch between moving around, inserting text and running commands, and adds a built-in Lua scripting engine, a language server client for code completion and diagnostics, and Tree-sitter for accurate syntax highlighting. + +## Why it's here + +- **Fast everywhere.** It runs in any terminal, locally or over SSH, and opens instantly. +- **An IDE when you want one.** Language servers give it go-to-definition, completion and inline errors for most languages. +- **Yours to shape.** The whole configuration is Lua in `~/.config/nvim`. + +## On CoreDesktop + +CoreDesktop installs Neovim from pacman and, if you don't already have a configuration, clones [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) into `~/.config/nvim`. Kickstart is a single, well-commented `init.lua` that sets up a plugin manager, fuzzy finding, language servers and a color scheme. The first time you run `nvim`, it downloads its plugins. + +An existing `~/.config/nvim` is left alone. Neovim is also the editor the `eff` alias opens: it fuzzy-finds a file with fzf and opens the one you pick. diff --git a/content/software/nerdfetch.md b/content/software/nerdfetch.md new file mode 100644 index 0000000..ebdd530 --- /dev/null +++ b/content/software/nerdfetch.md @@ -0,0 +1,22 @@ +--- +title: "NerdFetch" +category: "Terminal and shell" +tagline: "A small system info script that uses Nerd Font icons." +source: "AUR" +package: "nerdfetch" +command: "nerdfetch" +code: "https://github.com/thatonecalculator/NerdFetch" +--- + +## What it is + +NerdFetch is a minimal "fetch" script: it prints a few lines about your system, such as the OS, kernel, uptime, packages and memory, each with an icon from Nerd Fonts. It's a plain POSIX shell script, so it's light and portable. + +## Why it's here + +- **Compact.** A short summary that fits beside your prompt. +- **Icons included.** CoreDesktop installs the Nerd Fonts symbols it uses. + +## On CoreDesktop + +NerdFetch is installed from the AUR, along with the `ttf-nerd-fonts-symbols` font package that provides its icons. Type `nerdfetch` in a terminal. `update` keeps it current along with the rest of the AUR packages. diff --git a/content/software/networkmanager.md b/content/software/networkmanager.md new file mode 100644 index 0000000..2f1c619 --- /dev/null +++ b/content/software/networkmanager.md @@ -0,0 +1,28 @@ +--- +title: "NetworkManager" +category: "Networking and remote access" +tagline: "Manages your wired, Wi-Fi and VPN connections behind GNOME's network settings." +source: "pacman" +package: "networkmanager" +command: "nmcli" +website: "https://networkmanager.dev/" +code: "https://gitlab.freedesktop.org/NetworkManager/NetworkManager" +--- + +## What it is + +NetworkManager is the service that brings your network connections up and keeps them working: it joins Wi-Fi networks, configures wired links, and handles VPNs and mobile broadband. GNOME's network settings and Quick Settings menu talk to it. It also has two terminal tools: `nmcli` for commands and scripts, and `nmtui` for a simple menu. + +``` +nmcli device wifi list +``` + +## Why it's here + +- **Networking that just works.** Connections come up on their own and roam between networks. +- **GNOME integration.** Wi-Fi and VPNs are managed in **Settings › Wi-Fi** and **Settings › Network**. +- **Terminal tools too.** `nmcli` and `nmtui` when there's no desktop. + +## On CoreDesktop + +NetworkManager is installed from pacman and `NetworkManager.service` is enabled. CoreDesktop masks `NetworkManager-wait-online.service` so the desktop doesn't wait for the network at boot. `update` keeps it current with the pacman packages. diff --git a/content/software/nmap.md b/content/software/nmap.md new file mode 100644 index 0000000..16132f5 --- /dev/null +++ b/content/software/nmap.md @@ -0,0 +1,27 @@ +--- +title: "Nmap" +category: "Networking and remote access" +tagline: "Discover devices on a network and see which ports and services they expose." +source: "pacman" +package: "nmap" +command: "nmap" +website: "https://nmap.org/" +code: "https://github.com/nmap/nmap" +--- + +## What it is + +Nmap is a network scanner. It finds which hosts are up on a network, which ports they have open, and often which services and versions are behind them. Administrators use it to take inventory and to check that a firewall exposes only what it should. + +``` +nmap -sn 192.168.1.0/24 # list the devices on your LAN +``` + +## Why it's here + +- **Know your network.** Find every device on your LAN and what it's running. +- **Check your firewall.** Scan your own machines from another one to confirm what's reachable. + +## On CoreDesktop + +Nmap is installed from pacman. Type `nmap` in a terminal; some scan types need `sudo`. Only scan networks you own or have permission to test. `update` keeps Nmap current with the pacman packages. diff --git a/content/software/nodejs.md b/content/software/nodejs.md new file mode 100644 index 0000000..ebb65e8 --- /dev/null +++ b/content/software/nodejs.md @@ -0,0 +1,29 @@ +--- +title: "Node.js and npm" +category: "Languages and runtimes" +tagline: "JavaScript outside the browser, with npm for the world's largest package registry." +source: "pacman" +package: "nodejs" +command: "node" +website: "https://nodejs.org/" +code: "https://github.com/nodejs/node" +links: + - name: "npm documentation" + url: "https://docs.npmjs.com/" +--- + +## What it is + +Node.js runs JavaScript on your computer instead of in a web browser. It's used for web servers, build tools and command-line apps, and most front-end tooling, from bundlers to linters, runs on it. + +npm is Node's package manager. It installs libraries and tools from the npm registry into your project, records them in `package.json`, and runs your project's scripts. + +## Why it's here + +- **Web development needs it.** Most JavaScript and TypeScript projects build and test with Node. +- **A huge package library.** The npm registry has a package for nearly everything. +- **Tools run on it.** Many developer tools install with `npm install --global` or run with `npx`. + +## On CoreDesktop + +CoreDesktop installs Node.js and npm from pacman. It uses npm itself to install the sandbox runtime behind the [AI sandbox](/ai-sandbox/) into `~/.local`, since npm's own global folder is under `/usr`; you can do the same for your own global tools with `npm install --global --prefix ~/.local `. npm's cache in `~/.npm` is left out of backups, and sandboxed AI agents can write to it and reach the npm registry. `update` keeps Node.js and npm current with the rest of the pacman packages. diff --git a/content/software/noto-fonts.md b/content/software/noto-fonts.md new file mode 100644 index 0000000..9e9cd90 --- /dev/null +++ b/content/software/noto-fonts.md @@ -0,0 +1,26 @@ +--- +title: "Noto fonts" +category: "Desktop and system" +tagline: "Fonts for nearly every language, color emoji, and the icon glyphs your terminal uses." +source: "pacman" +package: "noto-fonts" +website: "https://fonts.google.com/noto" +code: "https://github.com/notofonts" +links: + - name: "Nerd Fonts" + url: "https://www.nerdfonts.com/" +--- + +## What it is + +Noto is a font family from Google that aims to cover every script in Unicode, so text in any language shows up instead of as empty boxes. noto-fonts-emoji adds Noto Color Emoji, the full set of color emoji. ttf-nerd-fonts-symbols adds the Nerd Fonts symbols: icons for files, folders, Git and programming languages that terminal tools draw with. + +## Why it's here + +- **No empty boxes.** Web pages and documents in any language display properly. +- **Emoji everywhere.** In chats, mail and the terminal. +- **Icons in the terminal.** The starship prompt and the `ls` aliases use them. + +## On CoreDesktop + +CoreDesktop installs all three packages from pacman. Nothing needs setting up: apps pick the fonts up automatically, and the icons show in the starship prompt and in `ls`, `ll`, `la` and `lt`, which run eza with icons, as described in the [shell setup](/system/#shell). `update` keeps them current. diff --git a/content/software/obs-studio.md b/content/software/obs-studio.md new file mode 100644 index 0000000..a2bb920 --- /dev/null +++ b/content/software/obs-studio.md @@ -0,0 +1,22 @@ +--- +title: "OBS Studio" +category: "Audio and video" +tagline: "Record your screen and camera, or stream live, with scenes you build yourself." +source: "Flathub" +package: "com.obsproject.Studio" +website: "https://obsproject.com/" +code: "https://github.com/obsproject/obs-studio" +--- + +## What it is + +OBS Studio is open-source software for screen recording and live streaming. You build scenes from sources such as your screen, a window, a webcam, images and text, mix audio from your microphone and desktop, and switch between scenes as you go. It records to a file or streams to services such as YouTube and Twitch. + +## Why it's here + +- **Screen recordings and demos.** Tutorials, bug reports and walkthroughs, with your camera in the corner if you want. +- **Live streaming.** It's the standard tool for streaming to the major platforms. + +## On CoreDesktop + +CoreDesktop installs OBS Studio as a Flatpak from Flathub. Open it from the app grid; on GNOME, add a **Screen Capture (PipeWire)** source to record your screen. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/obsidian.md b/content/software/obsidian.md new file mode 100644 index 0000000..212d263 --- /dev/null +++ b/content/software/obsidian.md @@ -0,0 +1,22 @@ +--- +title: "Obsidian" +category: "Office, notes and writing" +tagline: "A notes app that keeps your notes as plain Markdown files, linked together." +source: "Flathub" +package: "md.obsidian.Obsidian" +website: "https://obsidian.md/" +--- + +## What it is + +Obsidian is a note-taking app built on plain Markdown files in a folder on your computer, which it calls a vault. You link notes to each other with `[[double brackets]]`, and Obsidian shows backlinks and a graph of how your notes connect. A large library of community plugins and themes extends it. The app is free for personal use and closed source; your notes stay ordinary files you can open with anything. + +## Why it's here + +- **Your notes are just files.** A vault is a folder of Markdown, so it works with Git, backups and any other editor. +- **Linked thinking.** Links and backlinks turn a pile of notes into a personal wiki. +- **Extensible.** Plugins add tasks, calendars, diagrams and more. + +## On CoreDesktop + +CoreDesktop installs Obsidian as a Flatpak from Flathub. Open it from the app grid and create a vault or open an existing folder. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/opencode.md b/content/software/opencode.md new file mode 100644 index 0000000..6d15c0c --- /dev/null +++ b/content/software/opencode.md @@ -0,0 +1,31 @@ +--- +title: "opencode" +category: "AI" +tagline: "An open-source coding agent for the terminal that works with almost any AI provider." +source: "pacman" +package: "opencode" +command: "opencode" +website: "https://opencode.ai/" +code: "https://github.com/anomalyco/opencode" +links: + - name: "opencode documentation" + url: "https://opencode.ai/docs/" +--- + +## What it is + +opencode is an AI coding agent that runs in your terminal. Inside a project, you ask it to explain code, fix a bug or build a feature, and it reads files, makes edits and runs commands to get there. + +It isn't tied to one company's models. You sign in to the providers you use, such as Anthropic, OpenAI, OpenRouter or a local model server, and switch between their models as you go. + +## Why it's here + +- **Open source.** The agent itself is free software you can read and change. +- **Any model.** One tool for every provider, so you can pick the model that suits the task or the budget. +- **A full terminal interface.** Sessions, file changes and command output in one place, next to your editor. + +## On CoreDesktop + +opencode is installed from pacman and runs in CoreDesktop's [AI sandbox](/ai-sandbox/). Typing `opencode` starts it sandboxed: it can change files only in the directory you start it from (plus its own settings and caches), can't read your SSH keys, passwords, browser data or the other agents' logins, and can reach only AI providers, opencode.ai and common developer sites. Start it from a project directory; it won't start in your home folder. To run it without the sandbox, type `unsandboxed opencode`. + +Before the first use, run `configure opencode`. It signs you in to a provider, or takes its API key, and offers to add more. Pick the model inside opencode with `/models`. `update` keeps opencode current with the rest of the pacman packages. diff --git a/content/software/openssh.md b/content/software/openssh.md new file mode 100644 index 0000000..0678224 --- /dev/null +++ b/content/software/openssh.md @@ -0,0 +1,30 @@ +--- +title: "OpenSSH" +category: "Networking and remote access" +tagline: "Log in to other machines securely, and let them log in to this one." +source: "pacman" +package: "openssh" +command: "ssh" +website: "https://www.openssh.com/" +code: "https://github.com/openssh/openssh-portable" +--- + +## What it is + +OpenSSH is the standard implementation of SSH, the encrypted protocol for logging in to another computer's shell, running commands on it and copying files (`scp`, `sftp`). It includes the client, `ssh`, and the server, `sshd`, that accepts connections, plus tools for creating and managing keys. + +``` +ssh you@machine.local +``` + +## Why it's here + +- **Remote shells.** Work on your other machines and servers from this one. +- **Secure file transfer.** Copy files with `scp`, `sftp` or `rsync` over SSH. +- **Tunnels.** Forward ports to reach services on another machine. + +## On CoreDesktop + +OpenSSH is installed from pacman and `sshd.service` is enabled, so you can SSH into this computer. The firewall allows SSH on port 22, and Avahi advertises it on your LAN, so other machines can reach this one as `.local`. Commands run with `ssh machine command` can find tools in `~/.local/bin` and mise. + +For the client, CoreDesktop sets keepalives so a dropped connection is noticed within a minute (your `~/.ssh/config` still wins per host) and points `SSH_AUTH_SOCK` at Bitwarden's SSH agent. It also adds shell functions for port forwarding: `fip ...` forwards local ports to the same ports on a host, `dip ...` stops them, and `lip` lists them. `update` keeps OpenSSH current with the pacman packages. diff --git a/content/software/pacman-contrib.md b/content/software/pacman-contrib.md new file mode 100644 index 0000000..5ba71e0 --- /dev/null +++ b/content/software/pacman-contrib.md @@ -0,0 +1,30 @@ +--- +title: "pacman-contrib" +category: "Desktop and system" +tagline: "Extra pacman tools: cache cleaning, update checks, dependency trees and more." +source: "pacman" +package: "pacman-contrib" +command: "paccache" +code: "https://gitlab.archlinux.org/pacman/pacman-contrib" +links: + - name: "Cleaning the package cache" + url: "https://wiki.archlinux.org/title/Pacman#Cleaning_the_package_cache" +--- + +## What it is + +pacman-contrib is a set of small tools that go with pacman, Arch's package manager. `paccache` cleans old package files out of pacman's cache, `checkupdates` lists available updates without touching your system, `pactree` shows what a package depends on, and `pacdiff` helps merge changed configuration files after an update. + +``` +pactree -r openssl +``` + +## Why it's here + +- **Disk space.** pacman keeps every package it downloads, and paccache trims that. +- **Answers about packages.** See why something is installed, or what depends on it. +- **Config merges.** pacdiff finds the `.pacnew` files updates leave behind. + +## On CoreDesktop + +pacman-contrib is installed from pacman as one of CoreDesktop's maintenance tools. At the end of each [`update`](/utilities/#update), `paccache` keeps the two most recent versions of each installed package in the cache and removes all cached versions of uninstalled ones. If `update` stops because `/` is low on space, `sudo paccache -rk1` frees more. diff --git a/content/software/pandoc.md b/content/software/pandoc.md new file mode 100644 index 0000000..4e53876 --- /dev/null +++ b/content/software/pandoc.md @@ -0,0 +1,27 @@ +--- +title: "Pandoc" +category: "Office, notes and writing" +tagline: "Converts documents between formats: Markdown, Word, HTML, PDF, EPUB and dozens more." +source: "pacman" +package: "pandoc-cli" +command: "pandoc" +website: "https://pandoc.org/" +code: "https://github.com/jgm/pandoc" +--- + +## What it is + +Pandoc is a command-line tool that converts documents from one markup format to another. It reads and writes Markdown, HTML, Word (.docx), OpenDocument, LaTeX, EPUB, reStructuredText and many more. With a LaTeX engine installed it also produces PDFs. + +``` +pandoc notes.md -o notes.docx +``` + +## Why it's here + +- **Write once, publish anywhere.** Draft in Markdown and hand people a Word file, a web page or a PDF. +- **PDFs out of the box.** TeX Live is installed too, so `pandoc notes.md -o notes.pdf` works. + +## On CoreDesktop + +CoreDesktop installs Pandoc from pacman; on Arch the `pandoc` command comes from the `pandoc-cli` package. Run `pandoc` in a terminal. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/pipx.md b/content/software/pipx.md new file mode 100644 index 0000000..5f0fdaf --- /dev/null +++ b/content/software/pipx.md @@ -0,0 +1,28 @@ +--- +title: "pipx" +category: "Languages and runtimes" +tagline: "Installs Python command-line apps, each in its own isolated environment." +source: "pacman" +package: "python-pipx" +command: "pipx" +website: "https://pipx.pypa.io/" +code: "https://github.com/pypa/pipx" +--- + +## What it is + +pipx installs Python applications, the kind you run as commands, into separate virtual environments and puts their commands in `~/.local/bin`. Each app gets its own copy of its dependencies, so apps can't break each other or the system's Python. + +## Why it's here + +- **Safe installs.** Python apps from PyPI without touching the system Python. +- **One command per app.** `pipx install`, `pipx upgrade` and `pipx uninstall`. +- **Try before you install.** `pipx run` runs an app once without keeping it. + +## On CoreDesktop + +pipx is installed from pacman, and CoreDesktop uses it to install terrahour and gext, the command-line tool that installs its GNOME extensions. `update` upgrades the pipx apps CoreDesktop installs, and when Arch moves to a new Python version, which breaks pipx environments, it rebuilds all of them. Apps you install yourself are upgraded by you: + +``` +pipx upgrade-all +``` diff --git a/content/software/postman.md b/content/software/postman.md new file mode 100644 index 0000000..aa1cc7e --- /dev/null +++ b/content/software/postman.md @@ -0,0 +1,27 @@ +--- +title: "Postman" +category: "Developer tools" +tagline: "Build, send and test API requests, and keep them organized in shareable collections." +source: "Flathub" +package: "com.getpostman.Postman" +website: "https://www.postman.com/" +links: + - name: "Postman documentation" + url: "https://learning.postman.com/docs/" +--- + +## What it is + +Postman is an app for working with web APIs. You build an HTTP request, with its method, headers, body and authentication, send it and inspect the response. Requests are saved in collections you can share with a team, and environments switch values such as server addresses and keys between development and production. + +It can also run test scripts against responses, and mock or document an API. + +## Why it's here + +- **APIs without code.** Try an endpoint before writing a line of client code. +- **Saved and shared.** Collections keep every request a project needs in one place. +- **A team standard.** Many APIs publish Postman collections to get started with. + +## On CoreDesktop + +Postman is installed from Flathub. Open it from the app menu and sign in with a Postman account. `update` keeps it current with the rest of the Flatpaks. diff --git a/content/software/python.md b/content/software/python.md new file mode 100644 index 0000000..d6f82e1 --- /dev/null +++ b/content/software/python.md @@ -0,0 +1,33 @@ +--- +title: "Python" +category: "Languages and runtimes" +tagline: "The general-purpose scripting language, with pip and a set of common libraries." +source: "pacman" +package: "python-pip" +command: "python" +website: "https://www.python.org/" +code: "https://github.com/python/cpython" +links: + - name: "pip documentation" + url: "https://pip.pypa.io/" +--- + +## What it is + +Python is a programming language known for readable code and a large standard library. It's used for scripts and automation, web services, data analysis and machine learning. pip is its package installer: it fetches libraries from the Python Package Index (PyPI). + +## Why it's here + +- **Readable and quick to write.** A good first language and a good tool for small jobs. +- **Libraries for everything.** PyPI has packages for almost any task. +- **Many tools need it.** A lot of Linux software is written in Python. + +## On CoreDesktop + +Python itself comes with Arch. CoreDesktop adds pip from pacman, along with Python libraries packaged by Arch: Pillow for images, PyGObject for GNOME apps, Pygments for syntax highlighting, and docutils and MyST-Parser for documentation. `update` keeps them current with the rest of the pacman packages. + +Arch doesn't let pip install into the system Python, so install libraries into a virtual environment for each project, use [uv](/software/uv/), or install Python apps with [pipx](/software/pipx/). + +``` +python -m venv .venv && source .venv/bin/activate && pip install requests +``` diff --git a/content/software/qbittorrent.md b/content/software/qbittorrent.md new file mode 100644 index 0000000..e50c91d --- /dev/null +++ b/content/software/qbittorrent.md @@ -0,0 +1,23 @@ +--- +title: "qBittorrent" +category: "Entertainment" +tagline: "An open-source BitTorrent client with search, RSS and no ads." +source: "Flathub" +package: "org.qbittorrent.qBittorrent" +replaces: ["uTorrent"] +website: "https://www.qbittorrent.org/" +code: "https://github.com/qbittorrent/qBittorrent" +--- + +## What it is + +qBittorrent is an open-source client for BitTorrent, the peer-to-peer protocol used to share large files such as Linux ISOs. It downloads from torrent files and magnet links, lets you pick files within a torrent and limit bandwidth, and has a built-in torrent search and RSS feed downloader. A web interface lets you control it from another device. + +## Why it's here + +- **Clean and ad-free.** It does what uTorrent did without the ads or bundled extras. +- **Works with Sonarr.** Sonarr can send downloads to qBittorrent and pick them up when they finish. + +## On CoreDesktop + +CoreDesktop installs qBittorrent as a Flatpak from Flathub. Open it from the app grid, or open a magnet link or `.torrent` file with it. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/rclone.md b/content/software/rclone.md new file mode 100644 index 0000000..bee29ad --- /dev/null +++ b/content/software/rclone.md @@ -0,0 +1,29 @@ +--- +title: "rclone" +category: "Backup, files and security" +tagline: "Copy, sync and mount files on dozens of cloud storage services from the command line." +source: "pacman" +package: "rclone" +command: "rclone" +website: "https://rclone.org/" +code: "https://github.com/rclone/rclone" +--- + +## What it is + +rclone is "rsync for cloud storage". It copies and syncs files between your computer and storage services such as S3, Backblaze B2, Google Drive, Dropbox, OneDrive and any WebDAV server, including Nextcloud. It can also mount a remote as a folder, check that two locations match, and encrypt files before they're uploaded. + +``` +rclone config +rclone sync ~/Photos b2:my-photos +``` + +## Why it's here + +- **One tool for every cloud.** The same commands work whichever service you use. +- **Safe syncing.** `--dry-run` shows what would change before anything does. +- **It carries the backups.** restic reaches your Nextcloud through it. + +## On CoreDesktop + +rclone is installed from pacman. CoreDesktop's [backups](/utilities/#backups) use it to give restic a direct WebDAV connection to your Nextcloud, with its own app password from your keyring, so they don't depend on the `/mnt` mount. That connection is set up with environment variables, not in your rclone config, so `rclone config` is yours to use for other remotes. `update` keeps it current. diff --git a/content/software/remmina.md b/content/software/remmina.md new file mode 100644 index 0000000..df4e466 --- /dev/null +++ b/content/software/remmina.md @@ -0,0 +1,24 @@ +--- +title: "Remmina" +category: "Networking and remote access" +tagline: "A remote desktop client for RDP, VNC, SSH and SPICE connections." +source: "Flathub" +package: "org.remmina.Remmina" +replaces: ["Microsoft Remote Desktop"] +website: "https://www.remmina.org/" +code: "https://gitlab.com/Remmina/Remmina" +--- + +## What it is + +Remmina connects to other computers' desktops. It speaks RDP, the protocol Windows uses for Remote Desktop, as well as VNC, SPICE and SSH, so one app covers Windows PCs, Linux machines and virtual machines. You save each connection as a profile and open it with a double-click. + +## Why it's here + +- **Windows desktops from Linux.** Connect to a Windows PC or server over RDP. +- **One app for many protocols.** RDP, VNC, SPICE and SSH in the same list. +- **Saved profiles.** Keep your connections and their settings in one place. + +## On CoreDesktop + +Remmina is installed from Flathub. Open it from the app grid. `update` keeps it current along with the rest of the Flatpaks. diff --git a/content/software/restic.md b/content/software/restic.md new file mode 100644 index 0000000..c0d13ca --- /dev/null +++ b/content/software/restic.md @@ -0,0 +1,34 @@ +--- +title: "restic" +category: "Backup, files and security" +tagline: "Fast, encrypted, deduplicated backups, and the engine behind CoreDesktop's daily backups." +source: "pacman" +package: "restic" +command: "restic" +website: "https://restic.net/" +code: "https://github.com/restic/restic" +links: + - name: "restic documentation" + url: "https://restic.readthedocs.io/" +--- + +## What it is + +restic is a backup program. It saves snapshots of your files into a repository on a local disk, an SFTP server or a cloud storage service. Every snapshot is encrypted, and data that hasn't changed since the last one is stored only once, so frequent backups stay small and quick. + +## Why it's here + +- **Encrypted by default.** A repository can't be read without its passphrase, wherever it's stored. +- **Small and fast.** Deduplication means each daily backup only uploads what changed. +- **Reaches almost anywhere.** Through rclone it can back up to dozens of storage services, including Nextcloud. + +## On CoreDesktop + +restic runs CoreDesktop's daily backups of your home folder to your Nextcloud files, once you run `configure backup`. How they work, what's left out and how long backups are kept is on the [Utilities page](/utilities/#backups). To look at your backups or get files back: + +``` +source ~/.local/share/coredesktop/system/backup-env.sh +restic snapshots +``` + +See [restoring from a backup](/utilities/#restoring-from-a-backup) for the rest. restic is installed from pacman, and `update` keeps it current. diff --git a/content/software/retroarch.md b/content/software/retroarch.md new file mode 100644 index 0000000..293524b --- /dev/null +++ b/content/software/retroarch.md @@ -0,0 +1,25 @@ +--- +title: "RetroArch" +category: "Entertainment" +tagline: "One app for emulating classic consoles and computers, with a controller-friendly menu." +source: "Flathub" +package: "org.libretro.RetroArch" +website: "https://www.retroarch.com/" +code: "https://github.com/libretro/RetroArch" +links: + - name: "RetroArch documentation" + url: "https://docs.libretro.com/" +--- + +## What it is + +RetroArch is an open-source frontend for emulators, game engines and media players. Each emulator is a plugin called a core, downloaded from inside the app, covering systems from early arcade machines and home consoles through to handhelds. RetroArch gives them all the same menu, controller setup, save states, shaders and netplay. + +## Why it's here + +- **One app for many systems.** Download the cores you need and play through a single interface. +- **Made for controllers.** The whole menu works from a gamepad, from the couch. + +## On CoreDesktop + +CoreDesktop installs RetroArch as a Flatpak from Flathub. Open it from the app grid, then use **Online Updater › Core Downloader** to get cores. Games aren't included: load your own. `update` keeps RetroArch current along with your other Flatpaks. diff --git a/content/software/revolt.md b/content/software/revolt.md new file mode 100644 index 0000000..f48458b --- /dev/null +++ b/content/software/revolt.md @@ -0,0 +1,23 @@ +--- +title: "Revolt" +category: "Messaging and meetings" +tagline: "An open-source chat platform with servers and channels, like Discord. Now called Stoat." +source: "Flathub" +package: "chat.revolt.RevoltDesktop" +replaces: ["Discord"] +website: "https://stoat.chat/" +code: "https://github.com/revoltchat/desktop" +--- + +## What it is + +Revolt is an open-source chat platform laid out like Discord: communities are servers with text and voice channels, roles and permissions, plus direct messages and friends lists. The project has since renamed itself Stoat. The desktop app here still installs under the Revolt name. + +## Why it's here + +- **Discord's layout, in open source.** Communities that want the server-and-channel model without a closed platform can use it. +- **Familiar from day one.** Anyone who has used Discord knows their way around. + +## On CoreDesktop + +CoreDesktop installs Revolt as a Flatpak from Flathub. Open it from the app grid and sign in. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/ripgrep.md b/content/software/ripgrep.md new file mode 100644 index 0000000..ae16601 --- /dev/null +++ b/content/software/ripgrep.md @@ -0,0 +1,27 @@ +--- +title: "ripgrep" +category: "Terminal and shell" +tagline: "Search file contents fast, skipping what your .gitignore ignores." +source: "pacman" +package: "ripgrep" +command: "rg" +code: "https://github.com/BurntSushi/ripgrep" +--- + +## What it is + +ripgrep searches files for a pattern, like `grep`, but recursively by default and much faster on large trees. It skips files listed in `.gitignore`, hidden files and binaries unless you ask for them, so results stay relevant in code projects. + +``` +rg "TODO" src/ +``` + +## Why it's here + +- **Fast on big projects.** It searches whole repositories in a moment. +- **Sensible defaults.** Ignored and binary files stay out of the results. +- **Used by other tools.** Editors such as Neovim's fuzzy finders call it for searching. + +## On CoreDesktop + +ripgrep is installed from pacman. Type `rg` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/ruby-on-rails.md b/content/software/ruby-on-rails.md new file mode 100644 index 0000000..77c4ec9 --- /dev/null +++ b/content/software/ruby-on-rails.md @@ -0,0 +1,36 @@ +--- +title: "Ruby and Rails" +category: "Languages and runtimes" +tagline: "The Ruby language and the Rails web framework, installed with mise and kept up to date." +source: "mise" +command: "rails" +website: "https://rubyonrails.org/" +code: "https://github.com/rails/rails" +links: + - name: "Ruby" + url: "https://www.ruby-lang.org/" + - name: "Rails Guides" + url: "https://guides.rubyonrails.org/" +--- + +## What it is + +Ruby is a programming language designed to be pleasant to read and write. Rails, or Ruby on Rails, is a web framework built on it: it gives a new web app a database layer, routing, templates and tests from the start, and favors sensible conventions over configuration. GitHub, Shopify and Basecamp were built with it. + +Ruby libraries are called gems; Bundler installs the ones a project needs from its `Gemfile`. + +## Why it's here + +- **Fast to build web apps.** `rails new` gives you a working app in minutes. +- **Batteries included.** Database migrations, background jobs, mail and tests are part of the framework. +- **Ruby itself.** A good language for scripts and automation, too. + +## On CoreDesktop + +CoreDesktop installs Ruby with [mise](/software/mise/) rather than pacman: it installs the latest Ruby and makes it your default (`mise use -g ruby@latest`), then installs the Bundler and Rails gems. Each `update` updates mise, moves you to the newest Ruby, and runs `gem update` to update your gems, Rails included. + +Start a new app with: + +``` +rails new myapp +``` diff --git a/content/software/rust.md b/content/software/rust.md new file mode 100644 index 0000000..fbb73a2 --- /dev/null +++ b/content/software/rust.md @@ -0,0 +1,33 @@ +--- +title: "Rust" +category: "Languages and runtimes" +tagline: "A fast, memory-safe systems language, with Cargo for building and packages." +source: "pacman" +package: "rust" +command: "cargo" +website: "https://www.rust-lang.org/" +code: "https://github.com/rust-lang/rust" +links: + - name: "The Rust Programming Language (book)" + url: "https://doc.rust-lang.org/book/" +--- + +## What it is + +Rust is a programming language for software that needs to be fast and reliable: command-line tools, servers, system components. Its compiler checks how memory is used, so whole classes of bugs, such as using freed memory or data races between threads, are caught before the program runs. + +It comes with Cargo, which creates projects, fetches libraries (called crates) from crates.io, builds, tests and documents your code. + +## Why it's here + +- **Speed without crashes.** Performance close to C, with memory safety checked at compile time. +- **Cargo.** One tool for dependencies, builds and tests. +- **Builds Rust tools.** Many modern command-line tools are written in Rust and install with `cargo install`. + +## On CoreDesktop + +CoreDesktop installs Arch's `rust` package, which provides `rustc` and `cargo` and is kept current by `update` with the rest of the pacman packages. Cargo's download cache in `~/.cargo/registry` is left out of backups, and the AI agents in the [AI sandbox](/ai-sandbox/) can write to it and reach crates.io. + +``` +cargo new hello && cd hello && cargo run +``` diff --git a/content/software/rustdesk.md b/content/software/rustdesk.md new file mode 100644 index 0000000..efec061 --- /dev/null +++ b/content/software/rustdesk.md @@ -0,0 +1,24 @@ +--- +title: "RustDesk" +category: "Networking and remote access" +tagline: "Open-source remote desktop for helping others or reaching your own machines." +source: "Flathub" +package: "com.rustdesk.RustDesk" +replaces: ["TeamViewer", "AnyDesk"] +website: "https://rustdesk.com/" +code: "https://github.com/rustdesk/rustdesk" +--- + +## What it is + +RustDesk is a remote desktop app in the style of TeamViewer. Each computer gets an ID; enter someone's ID and password to see and control their screen, transfer files or chat. It works across Linux, Windows, macOS and phones, and you can use RustDesk's public servers or run your own. + +## Why it's here + +- **Remote help.** Support family or colleagues without asking them to configure anything. +- **Cross-platform.** The same app on every operating system. +- **Self-hostable.** Run your own relay server if you don't want to use the public ones. + +## On CoreDesktop + +RustDesk is installed from Flathub. Open it from the app grid. `update` keeps it current along with the rest of the Flatpaks. diff --git a/content/software/screen.md b/content/software/screen.md new file mode 100644 index 0000000..4df5290 --- /dev/null +++ b/content/software/screen.md @@ -0,0 +1,27 @@ +--- +title: "GNU Screen" +category: "Terminal and shell" +tagline: "The classic terminal multiplexer: detachable sessions that keep running." +source: "pacman" +package: "screen" +command: "screen" +website: "https://www.gnu.org/software/screen/" +--- + +## What it is + +GNU Screen runs several shells inside one terminal and lets you detach from them and reattach later, with everything still running. It predates tmux and is found on almost every Unix system, which makes it useful when you're working on older servers. It can also connect to serial devices. + +``` +screen -S work # start a session; detach with Ctrl-a d, return with: screen -r work +``` + +## Why it's here + +- **Familiar.** If you learned Screen years ago, it's still here. +- **Detachable sessions.** Jobs keep running after you close the terminal or lose SSH. +- **Serial consoles.** `screen /dev/ttyUSB0 115200` talks to routers and boards. + +## On CoreDesktop + +Screen is installed from pacman with no extra setup. Type `screen` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/scribus.md b/content/software/scribus.md new file mode 100644 index 0000000..ffbde09 --- /dev/null +++ b/content/software/scribus.md @@ -0,0 +1,23 @@ +--- +title: "Scribus" +category: "Graphics and design" +tagline: "Desktop publishing and page layout for brochures, newsletters, posters and books." +source: "Flathub" +package: "net.scribus.Scribus" +replaces: ["Adobe InDesign"] +website: "https://www.scribus.net/" +code: "https://github.com/scribusproject/scribus" +--- + +## What it is + +Scribus is an open-source desktop publishing app. You lay out pages with frames for text and images, flow text between columns and pages, and set up master pages, styles and guides. It produces print-ready PDFs with CMYK color, spot colors and bleed, and can also make interactive PDF forms. + +## Why it's here + +- **Layout, not word processing.** Newsletters, flyers and magazines need precise placement that a word processor can't give. +- **Ready for the printer.** PDF/X export, color management and bleed are built in. + +## On CoreDesktop + +CoreDesktop installs Scribus as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/signal.md b/content/software/signal.md new file mode 100644 index 0000000..9de515a --- /dev/null +++ b/content/software/signal.md @@ -0,0 +1,23 @@ +--- +title: "Signal" +category: "Messaging and meetings" +tagline: "End-to-end encrypted messages and calls, linked to the Signal app on your phone." +source: "Flathub" +package: "org.signal.Signal" +replaces: ["WhatsApp", "iMessage"] +website: "https://signal.org/" +code: "https://github.com/signalapp/Signal-Desktop" +--- + +## What it is + +Signal is a messaging app run by the nonprofit Signal Foundation. Every message, call and attachment is end-to-end encrypted with the Signal Protocol, and the service keeps as little data about you as it can. Signal Desktop is the computer version: it links to the Signal app on your phone and shows the same chats. + +## Why it's here + +- **Private by design.** Encryption is always on, for everyone, with nothing to configure. +- **Type on a real keyboard.** Chats, group calls and file sharing from your phone work on the desktop too. + +## On CoreDesktop + +CoreDesktop installs Signal as a Flatpak from Flathub. Open it from the app grid and scan the QR code it shows with Signal on your phone (**Settings › Linked devices**). The sandboxed AI agents can't read Signal's data. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/sitra.md b/content/software/sitra.md new file mode 100644 index 0000000..6499495 --- /dev/null +++ b/content/software/sitra.md @@ -0,0 +1,21 @@ +--- +title: "Sitra" +category: "Graphics and design" +tagline: "Browse, preview and install fonts from Google Fonts." +source: "Flathub" +package: "io.github.sitraorg.sitra" +code: "https://github.com/sitraorg/sitra" +--- + +## What it is + +Sitra is a GNOME app for getting fonts from Google Fonts. You browse and filter the catalog by category, search by name, preview fonts, and install the ones you want on your computer. For web projects it also gives you the code to use a font through a CDN or npm. + +## Why it's here + +- **Fonts for documents and design.** Google Fonts' open-licensed families install in a click. +- **Previews that respect privacy.** Previews load through the Fontsource CDN rather than Google. + +## On CoreDesktop + +CoreDesktop installs Sitra as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/sniffnet.md b/content/software/sniffnet.md new file mode 100644 index 0000000..bd9e55d --- /dev/null +++ b/content/software/sniffnet.md @@ -0,0 +1,22 @@ +--- +title: "Sniffnet" +category: "Networking and remote access" +tagline: "See your network traffic as it happens: who you're talking to and how much." +source: "pacman" +package: "sniffnet" +website: "https://sniffnet.app/" +code: "https://github.com/GyulyVGC/sniffnet" +--- + +## What it is + +Sniffnet is a desktop app for watching network traffic. Pick a network adapter and it shows live charts of data in and out, the hosts and countries your computer is connecting to, and the apps and protocols involved. You can filter connections, set notifications for unusual activity and export a capture for analysis elsewhere. + +## Why it's here + +- **Know what's connecting.** Spot unexpected traffic from an app or device. +- **Readable.** A friendlier view than packet-level tools like Wireshark. + +## On CoreDesktop + +Sniffnet is installed from pacman, which gives it the network capture permissions it needs, so it runs without `sudo`. Open it from the app grid or type `sniffnet`. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/socat.md b/content/software/socat.md new file mode 100644 index 0000000..d264232 --- /dev/null +++ b/content/software/socat.md @@ -0,0 +1,26 @@ +--- +title: "socat" +category: "Networking and remote access" +tagline: "Connect any two data streams: sockets, ports, files or pipes." +source: "pacman" +package: "socat" +command: "socat" +website: "http://www.dest-unreach.org/socat/" +--- + +## What it is + +socat is a relay: it opens two connections and passes data between them in both directions. Either end can be a TCP or UDP port, a Unix socket, a file, a serial device or a program's input and output, which makes it a general tool for forwarding ports, testing network services and debugging sockets. + +``` +socat TCP-LISTEN:8080,fork TCP:localhost:3000 # forward port 8080 to 3000 +``` + +## Why it's here + +- **Glue for networking.** Forward a port, expose a Unix socket over TCP, or the reverse. +- **Debugging.** Talk to a service by hand to see what it sends. + +## On CoreDesktop + +socat is installed from pacman. CoreDesktop's AI agent sandbox uses it to connect Hermes Agent to its gateway through a local socket. Type `socat` in a terminal to use it yourself. `update` keeps it current with the pacman packages. diff --git a/content/software/sonarr.md b/content/software/sonarr.md new file mode 100644 index 0000000..cea394c --- /dev/null +++ b/content/software/sonarr.md @@ -0,0 +1,28 @@ +--- +title: "Sonarr" +category: "Entertainment" +tagline: "Tracks your TV shows and fetches new episodes automatically, from a web page on your machine." +source: "AUR" +package: "sonarr-bin" +website: "https://sonarr.tv/" +code: "https://github.com/Sonarr/Sonarr" +links: + - name: "Sonarr wiki" + url: "https://wiki.servarr.com/sonarr" +--- + +## What it is + +Sonarr is an open-source TV show manager that runs as a background service. You tell it which series you follow, and it watches your Usenet indexers and torrent trackers for new episodes, sends them to your download client, then renames and files the finished downloads into your library. Its interface is a web page you open in your browser. + +## Why it's here + +- **Hands-off TV.** New episodes arrive and are filed in your library without you checking for them. +- **Tidy libraries.** Consistent folder and file names suit media servers such as Jellyfin. +- **Pairs with qBittorrent.** It hands downloads to the torrent client CoreDesktop also installs. + +## On CoreDesktop + +CoreDesktop installs Sonarr from the AUR and enables and starts `sonarr.service` at install, so it's already running. Open [http://localhost:8989](http://localhost:8989) in your browser to set it up. The firewall doesn't open port 8989 to your local network; the page is reachable from this machine and over Tailscale. + +`audit` lists Sonarr with its port and lets you stop it, and `update` leaves it off if you do. `update` keeps Sonarr current with the rest of the AUR packages. diff --git a/content/software/sox.md b/content/software/sox.md new file mode 100644 index 0000000..69aae29 --- /dev/null +++ b/content/software/sox.md @@ -0,0 +1,26 @@ +--- +title: "SoX" +category: "Audio and video" +tagline: "The command-line Swiss Army knife for converting, editing and recording audio." +source: "pacman" +package: "sox" +command: "sox" +code: "https://codeberg.org/sox_ng/sox_ng" +--- + +## What it is + +SoX (Sound eXchange) is a command-line tool for audio. It converts between audio formats, changes sample rates, trims, joins and normalizes files, and applies effects such as fades, reverb and noise reduction. It also includes `play` and `rec` for playing and recording from the terminal. Arch's package is built from sox_ng, a maintained continuation of the original SoX. + +``` +sox input.wav output.flac rate 44100 +``` + +## Why it's here + +- **Audio in scripts.** Batch-convert or trim recordings without opening an editor. +- **Quick record and play.** `rec memo.wav` records from your microphone. + +## On CoreDesktop + +CoreDesktop installs SoX from pacman. Run `sox`, `play` or `rec` in a terminal. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/spotify.md b/content/software/spotify.md new file mode 100644 index 0000000..b240263 --- /dev/null +++ b/content/software/spotify.md @@ -0,0 +1,21 @@ +--- +title: "Spotify" +category: "Entertainment" +tagline: "The Spotify app, for streaming music and podcasts." +source: "Flathub" +package: "com.spotify.Client" +website: "https://www.spotify.com/" +--- + +## What it is + +Spotify is a music and podcast streaming service. The desktop app plays its catalog, your playlists and your library, and can control or hand off playback to Spotify on your phone, speakers and other devices with Spotify Connect. The service and app are closed source; it works with a free account or a paid Premium one. + +## Why it's here + +- **Your music, on the desktop.** Playlists and library sync from your account. +- **Spotify Connect.** Move playback between your computer, phone and speakers. + +## On CoreDesktop + +CoreDesktop installs Spotify as a Flatpak from Flathub. Open it from the app grid and sign in. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/starship.md b/content/software/starship.md new file mode 100644 index 0000000..2c7fe60 --- /dev/null +++ b/content/software/starship.md @@ -0,0 +1,29 @@ +--- +title: "Starship" +category: "Terminal and shell" +tagline: "A fast, configurable shell prompt that shows your Git branch and status." +source: "pacman" +package: "starship" +command: "starship" +website: "https://starship.rs/" +code: "https://github.com/starship/starship" +links: + - name: "Starship configuration" + url: "https://starship.rs/config/" +--- + +## What it is + +Starship draws the prompt your shell shows before each command. It works with Bash, Zsh, Fish and others, and shows context as you need it: the current directory, the Git branch and whether you have uncommitted changes, the language version in a project, and more. It's configured in one TOML file. + +## Why it's here + +- **Useful at a glance.** You see where you are and the state of your repository before you type. +- **Quick.** It's a single compiled program, so the prompt appears without delay. +- **Easy to change.** One file, `~/.config/starship.toml`, controls every part of it. + +## On CoreDesktop + +Starship is installed from pacman and turned on for Bash by CoreDesktop's shell setup. CoreDesktop's own config shows the machine's hostname (always, not only over SSH), the full directory path, the Git branch and status, all in cyan, followed by a `❯` that turns into `✗` when the last command failed. + +To use your own prompt instead, create `~/.config/starship.toml`: when that file exists, CoreDesktop's config is skipped. `update` keeps Starship current with the pacman packages. diff --git a/content/software/stow.md b/content/software/stow.md new file mode 100644 index 0000000..41fbce0 --- /dev/null +++ b/content/software/stow.md @@ -0,0 +1,27 @@ +--- +title: "GNU Stow" +category: "Terminal and shell" +tagline: "Manage your dotfiles as symlinks from one folder you keep in Git." +source: "pacman" +package: "stow" +command: "stow" +website: "https://www.gnu.org/software/stow/" +code: "https://github.com/aspiers/stow" +--- + +## What it is + +GNU Stow is a symlink manager. You keep files in one directory, organized into "packages", and Stow creates the symlinks that put them where they belong. Its most common use is dotfiles: keep your configs in a Git repository and link them into your home directory with one command. + +``` +cd ~/dotfiles && stow nvim # links ~/dotfiles/nvim/.config/nvim to ~/.config/nvim +``` + +## Why it's here + +- **Dotfiles in Git.** Version your configuration and set up a new machine quickly. +- **Easy to undo.** `stow -D` removes the links it made. + +## On CoreDesktop + +Stow is installed from pacman with no extra setup. Type `stow` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/tailscale.md b/content/software/tailscale.md new file mode 100644 index 0000000..827316b --- /dev/null +++ b/content/software/tailscale.md @@ -0,0 +1,29 @@ +--- +title: "Tailscale" +category: "Networking and remote access" +tagline: "A private network between your devices, joined to your Core's own Tailscale server." +source: "pacman" +package: "tailscale" +command: "tailscale" +website: "https://tailscale.com/" +code: "https://github.com/tailscale/tailscale" +links: + - name: "Tailscale documentation" + url: "https://tailscale.com/kb" +--- + +## What it is + +Tailscale is a mesh VPN built on WireGuard. Each device you add gets a private address, and they reach each other directly and encrypted wherever they are, at home, in the office or on a phone hotspot, without opening ports on your router. A coordination server keeps track of which devices belong to your network; Tailscale's own service can do that, or a self-hosted server such as headscale. + +## Why it's here + +- **Reach your machines from anywhere.** SSH, file shares and web apps on your other devices work as if they were on the same LAN. +- **Self-hosted.** On CoreDesktop it joins your Core's headscale server, not a third-party account. +- **Nothing to forward.** Connections work through NAT and firewalls. + +## On CoreDesktop + +Tailscale is installed from pacman, and its daemon, `tailscaled`, is enabled and started at install. Run `configure tailscale` (after `configure core`) to join your Core's network: it signs you in through `https://headscale.` with a link it shows you, accepts the routes your Core advertises, and makes you Tailscale's operator so you can control it without `sudo`. If the machine was on another tailnet, it moves it to your Core's. + +The firewall lets in everything arriving over Tailscale, while other incoming connections stay blocked. CoreDesktop also installs the Tailscale GNOME extension (`tailscale-gnome@diskmth.fr`), which adds Tailscale to the Quick Settings menu, and the [Trayscale](/software/trayscale/) app. `update` keeps Tailscale current with the pacman packages. diff --git a/content/software/tally.md b/content/software/tally.md new file mode 100644 index 0000000..d038734 --- /dev/null +++ b/content/software/tally.md @@ -0,0 +1,25 @@ +--- +title: "Tally for Plausible" +category: "Developer tools" +tagline: "A desktop app for your Plausible Analytics dashboard." +source: "Flathub" +package: "com.cassidyjames.plausible" +code: "https://github.com/cassidyjames/tally" +links: + - name: "Plausible Analytics" + url: "https://plausible.io/" +--- + +## What it is + +Tally is a desktop app for Plausible Analytics, a privacy-friendly alternative to Google Analytics. It wraps Plausible's web dashboard in a native window, so your site's visitors, sources and top pages are an app away instead of a browser tab. It works with plausible.io and with self-hosted Plausible servers. + +## Why it's here + +- **Your stats, one click away.** It remembers the view you were on when you closed it. +- **Fits the desktop.** A native header bar, light and dark styles, and swipe to go back. +- **Self-hosted too.** Point it at your own Plausible server. + +## On CoreDesktop + +Tally is installed from Flathub. Open it from the app menu and sign in to your Plausible account. `update` keeps it current with the rest of the Flatpaks. diff --git a/content/software/telegram.md b/content/software/telegram.md new file mode 100644 index 0000000..ef2f00c --- /dev/null +++ b/content/software/telegram.md @@ -0,0 +1,24 @@ +--- +title: "Telegram" +category: "Messaging and meetings" +tagline: "The official Telegram app, for chats, groups and channels on your desktop." +source: "Flathub" +package: "org.telegram.desktop" +website: "https://desktop.telegram.org/" +code: "https://github.com/telegramdesktop/tdesktop" +--- + +## What it is + +Telegram is a cloud-based messaging service. Your chats are stored on Telegram's servers and sync across your phone and computers, so you can pick up a conversation on any device. Besides one-to-one chats it has large groups, broadcast channels, bots and file sharing. Regular chats are encrypted between you and Telegram's servers; end-to-end encrypted "secret chats" are available on phones. + +Telegram Desktop, the app here, is open source; the Telegram server is not. + +## Why it's here + +- **Where the people are.** Many communities and projects run their groups and channels on Telegram. +- **Synced everywhere.** Log in and your full chat history is there, without your phone needing to be online. + +## On CoreDesktop + +CoreDesktop installs Telegram as a Flatpak from Flathub. Open it from the app grid and log in with your phone number or a QR code. The sandboxed AI agents can't read Telegram's data. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/terrahour.md b/content/software/terrahour.md new file mode 100644 index 0000000..58644f5 --- /dev/null +++ b/content/software/terrahour.md @@ -0,0 +1,22 @@ +--- +title: "terrahour" +category: "Terminal and shell" +tagline: "A world clock and meeting planner for the terminal, with a day and night map." +source: "pipx" +package: "terrahour" +command: "terrahour" +code: "https://github.com/ACoci86/terrahour" +--- + +## What it is + +terrahour is a world clock for the terminal. It shows a map of the world with day and night on it and, for every city you add, its local time and working hours. A row at the bottom shows when everyone is at their desk at once, which makes it a quick way to find a meeting time across time zones. It also warns you about upcoming daylight saving changes. + +## Why it's here + +- **Meetings across time zones.** See overlapping working hours at a glance. +- **Always at hand.** It runs in any terminal, without opening a website. + +## On CoreDesktop + +terrahour is a Python app, installed with pipx so it gets its own environment. Type `terrahour`, then press `a` to add a city and `?` to see every key. `update` upgrades it with the other pipx apps, and rebuilds it if an Arch Python upgrade would otherwise break it. diff --git a/content/software/texlive.md b/content/software/texlive.md new file mode 100644 index 0000000..31f1d28 --- /dev/null +++ b/content/software/texlive.md @@ -0,0 +1,27 @@ +--- +title: "TeX Live" +category: "Office, notes and writing" +tagline: "The standard LaTeX distribution, for typesetting papers, books and math." +source: "pacman" +package: "texlive" +command: "pdflatex" +website: "https://tug.org/texlive/" +code: "https://tug.org/texlive/svn/" +--- + +## What it is + +TeX Live is a complete distribution of TeX and LaTeX, the typesetting system used for academic papers, theses, books and anything heavy on mathematics. You write a plain-text `.tex` file with markup for structure and formulas, and LaTeX lays it out as a typeset PDF. TeX Live bundles the engines (pdfLaTeX, XeLaTeX, LuaLaTeX), common packages and fonts. + +``` +pdflatex paper.tex +``` + +## Why it's here + +- **Typesetting that looks right.** Equations, references and page layout come out to publication standard. +- **Pandoc's PDF engine.** Pandoc uses LaTeX to turn Markdown and other formats into PDFs. + +## On CoreDesktop + +CoreDesktop installs the `texlive` package group from pacman, which brings in the main TeX Live packages. Run `pdflatex`, `xelatex` or `lualatex` in a terminal. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/thunderbird.md b/content/software/thunderbird.md new file mode 100644 index 0000000..049e214 --- /dev/null +++ b/content/software/thunderbird.md @@ -0,0 +1,26 @@ +--- +title: "Thunderbird" +category: "Email and calendar" +tagline: "Mozilla's open-source email client, with calendars, contacts and feeds built in." +source: "Flathub" +package: "org.mozilla.Thunderbird" +replaces: ["Microsoft Outlook"] +website: "https://www.thunderbird.net/" +code: "https://github.com/thunderbird/thunderbird-desktop" +--- + +## What it is + +Thunderbird is a desktop email client from MZLA Technologies, part of the Mozilla Foundation. It handles several email accounts in one window, with a unified inbox, search, filters and OpenPGP encryption. It also includes a calendar and address book that sync over CalDAV and CardDAV, plus RSS feeds and chat. + +## Why it's here + +- **Real email on the desktop.** Fast search, offline mail and message filters work across all your accounts. +- **Your Core's calendar and contacts.** CalDAV and CardDAV connect it to Nextcloud. +- **Encrypted mail.** OpenPGP is built in, with no plugin needed. + +## On CoreDesktop + +CoreDesktop installs Thunderbird as a Flatpak from Flathub. Open it from the app grid and add your account with your email address and password. Your Core's mail server publishes its settings in Thunderbird's autoconfig format, so Thunderbird can fill in the server details for you. + +`update` keeps Thunderbird current along with your other Flatpaks. diff --git a/content/software/tiling-shell.md b/content/software/tiling-shell.md new file mode 100644 index 0000000..bdaa467 --- /dev/null +++ b/content/software/tiling-shell.md @@ -0,0 +1,25 @@ +--- +title: "Tiling Shell" +category: "Desktop and system" +tagline: "The GNOME extension behind CoreDesktop's flexible tiling, driven from the keyboard." +source: "extension" +package: "tilingshell@ferrarodomenico.com" +website: "https://extensions.gnome.org/extension/7065/tiling-shell/" +code: "https://github.com/domferr/tilingshell" +--- + +## What it is + +Tiling Shell is a GNOME Shell extension that arranges windows into layouts: columns, halves or any grid of tiles you draw yourself. New windows can fill the next free tile automatically, you can drag a window into a tile while holding Ctrl, and you switch layouts from an icon in the top bar. Unlike a tiling window manager, it adds to GNOME rather than replacing it, so the rest of the desktop works as usual. + +## Why it's here + +- **Made for wide screens.** Three columns put an ultrawide monitor to good use, and simpler layouts suit a laptop. +- **Keyboard control.** Super and the arrow keys move windows between tiles. +- **Your own layouts.** Draw new ones in the layout editor, with no config files. + +## On CoreDesktop + +CoreDesktop installs Tiling Shell from extensions.gnome.org with gext, turns it on, and loads its settings from `gnome/gnome-settings.dconf`: new windows tile automatically, window borders are off, and there are three layouts, three columns, two halves and one full-screen tile. Hold Super and use the arrow keys to move windows between tiles. See [tiling](/system/#tiling) on the System page. + +To change the layout, use the tiling icon in the top right of your screen. `update` keeps the extension current and reapplies CoreDesktop's settings only when CoreDesktop changes them. diff --git a/content/software/tmux.md b/content/software/tmux.md new file mode 100644 index 0000000..9deb201 --- /dev/null +++ b/content/software/tmux.md @@ -0,0 +1,34 @@ +--- +title: "tmux" +category: "Terminal and shell" +tagline: "Split one terminal into many, and keep sessions running after you disconnect." +source: "pacman" +package: "tmux" +command: "tmux" +code: "https://github.com/tmux/tmux" +links: + - name: "tmux wiki" + url: "https://github.com/tmux/tmux/wiki" + - name: "TPM, the tmux plugin manager" + url: "https://github.com/tmux-plugins/tpm" +--- + +## What it is + +tmux is a terminal multiplexer. Inside one terminal window it runs several shells in windows and split panes, and it keeps them running when you close the window or lose an SSH connection. Later you reattach and everything is where you left it. + +``` +tmux new -s work # start a session; detach with Ctrl-b d, return with: tmux attach -t work +``` + +## Why it's here + +- **Sessions that survive.** Long jobs on a remote machine keep running after you disconnect. +- **Panes and windows.** Several shells side by side, without extra terminal windows. +- **Works everywhere.** The same setup works locally and over SSH. + +## On CoreDesktop + +tmux is installed from pacman, and CoreDesktop clones [TPM](https://github.com/tmux-plugins/tpm), the tmux plugin manager, into `~/.tmux/plugins/tpm`. CoreDesktop doesn't ship a `~/.tmux.conf`: list the plugins you want there and load TPM at the end of it, as TPM's README shows. + +`update` keeps tmux current with the pacman packages, and also pulls the latest TPM and every plugin under `~/.tmux/plugins`. diff --git a/content/software/traceroute.md b/content/software/traceroute.md new file mode 100644 index 0000000..0646d07 --- /dev/null +++ b/content/software/traceroute.md @@ -0,0 +1,26 @@ +--- +title: "traceroute" +category: "Networking and remote access" +tagline: "Show the routers your packets pass through on the way to a host." +source: "pacman" +package: "traceroute" +command: "traceroute" +website: "https://traceroute.sourceforge.net/" +--- + +## What it is + +traceroute lists each router between your computer and a destination, with how long each one takes to answer. It runs once and prints the route, which makes it handy for scripts and for pasting into support requests. + +``` +traceroute example.com +``` + +## Why it's here + +- **See the route.** Find where traffic stops or slows down. +- **Familiar.** Network guides and support staff often ask for its output. + +## On CoreDesktop + +traceroute is installed from pacman. Type `traceroute` in a terminal; for a continuously updating view, use [mtr](/software/mtr/). `update` keeps traceroute current with the pacman packages. diff --git a/content/software/trayscale.md b/content/software/trayscale.md new file mode 100644 index 0000000..ce5797e --- /dev/null +++ b/content/software/trayscale.md @@ -0,0 +1,23 @@ +--- +title: "Trayscale" +category: "Networking and remote access" +tagline: "A desktop app for Tailscale: see your devices, switch it on and off, and pick exit nodes." +source: "Flathub" +package: "dev.deedles.Trayscale" +code: "https://github.com/DeedleFake/trayscale" +--- + +## What it is + +Trayscale is an unofficial graphical front end for Tailscale on Linux. It shows whether you're connected, lists the other devices on your network with their addresses, and lets you switch Tailscale on and off and choose an exit node, all without the command line. It can also sit in the system tray. + +## Why it's here + +- **Tailscale without a terminal.** The official Linux client is command-line only. +- **Your devices at a glance.** Copy a machine's address or see who's online. + +## On CoreDesktop + +Trayscale is installed from Flathub. Open it from the app grid. It needs you to be Tailscale's operator, which `configure tailscale` sets up when it joins this computer to your Core's network. + +`update` keeps Trayscale current along with the rest of the Flatpaks. diff --git a/content/software/tree.md b/content/software/tree.md new file mode 100644 index 0000000..d7be0e2 --- /dev/null +++ b/content/software/tree.md @@ -0,0 +1,26 @@ +--- +title: "tree" +category: "Terminal and shell" +tagline: "Show a directory and everything under it as an indented tree." +source: "pacman" +package: "tree" +command: "tree" +code: "https://gitlab.com/OldManProgrammer/unix-tree" +--- + +## What it is + +tree lists the contents of a directory recursively, drawing the structure with lines so you can see at a glance what's inside and how it's nested. + +``` +tree -L 2 ~/Projects +``` + +## Why it's here + +- **See structure quickly.** Useful for exploring a new project or explaining one. +- **Easy to share.** Its output pastes cleanly into documentation and chat. + +## On CoreDesktop + +tree is installed from pacman. Type `tree` in a terminal. For a tree with icons and Git status, CoreDesktop's `lt` alias uses eza instead. `update` keeps tree current with the pacman packages. diff --git a/content/software/ufw.md b/content/software/ufw.md new file mode 100644 index 0000000..54afa42 --- /dev/null +++ b/content/software/ufw.md @@ -0,0 +1,29 @@ +--- +title: "ufw" +category: "Backup, files and security" +tagline: "The Uncomplicated Firewall, turned on, with ufw-docker so containers can't get around it." +source: "pacman" +package: "ufw" +command: "ufw" +website: "https://launchpad.net/ufw" +code: "https://git.launchpad.net/ufw" +links: + - name: "ufw-docker" + url: "https://github.com/chaifeng/ufw-docker" + - name: "ufw on the Arch wiki" + url: "https://wiki.archlinux.org/title/Uncomplicated_Firewall" +--- + +## What it is + +ufw, the Uncomplicated Firewall, is a front end to the Linux kernel's packet filter. Instead of writing firewall rules by hand, you allow or deny ports and addresses with short commands like `ufw allow 8080/tcp`. + +## Why it's here + +- **On from the start.** A desktop shouldn't accept connections it doesn't expect. +- **Readable rules.** `sudo ufw status` shows what's open in plain terms. +- **Docker-aware.** ufw-docker, from the AUR, stops published container ports from bypassing it. + +## On CoreDesktop + +CoreDesktop installs ufw from pacman and ufw-docker from the AUR, then turns the firewall on: incoming connections are blocked except SSH, mDNS, LocalSend and anything over Tailscale. The [System page](/system/#firewall) lists the rules and the commands to open a port, and [audit](/utilities/#audit) shows every open port and who can reach it. `update` keeps both packages current. diff --git a/content/software/uv.md b/content/software/uv.md new file mode 100644 index 0000000..4f6de82 --- /dev/null +++ b/content/software/uv.md @@ -0,0 +1,28 @@ +--- +title: "uv" +category: "Languages and runtimes" +tagline: "A fast Python package and project manager that can stand in for pip, venv and pipx." +source: "pacman" +package: "uv" +command: "uv" +website: "https://docs.astral.sh/uv/" +code: "https://github.com/astral-sh/uv" +--- + +## What it is + +uv is a Python package installer and project manager written in Rust by Astral. It does the jobs of pip, virtualenv, pipx and pip-tools with one command, much faster: it creates environments, resolves and locks dependencies, installs Python versions and runs tools. + +## Why it's here + +- **Fast.** Installs and dependency resolution take a fraction of the time pip needs. +- **Projects made simple.** `uv init`, `uv add` and `uv run` manage a project's environment and lock file for you. +- **Run tools without installing them.** `uvx ruff check` runs a tool in a throwaway environment. + +## On CoreDesktop + +uv is installed from pacman. CoreDesktop also needs it for upgrades: pipx apps installed with pipx's uv backend, as Hermes Agent installs them, need uv to upgrade. `update` keeps uv current with the rest of the pacman packages. + +``` +uv run script.py +``` diff --git a/content/software/vim.md b/content/software/vim.md new file mode 100644 index 0000000..3b8df84 --- /dev/null +++ b/content/software/vim.md @@ -0,0 +1,31 @@ +--- +title: "Vim" +category: "Code editors" +tagline: "The classic modal text editor, installed alongside the original vi." +source: "pacman" +package: "vim" +command: "vim" +website: "https://www.vim.org/" +code: "https://github.com/vim/vim" +links: + - name: "The original vi (ex-vi)" + url: "https://ex-vi.sourceforge.net/" +--- + +## What it is + +Vim is a text editor that runs in the terminal and is driven entirely from the keyboard. It's modal: in normal mode keys move around and edit, in insert mode they type text, and short commands combine into precise edits, such as `dw` to delete a word or `ci"` to change the text inside quotes. + +It's found on almost every Unix-like system, so the skills carry over to any server you log in to. Run `vimtutor` for a half-hour introduction. + +## Why it's here + +- **Everywhere.** The same editor on your desktop and over SSH on any server. +- **Fast to start, fast to edit.** It opens instantly and keeps your hands on the keyboard. +- **The vi family.** Learn it here and Neovim, `vi` and Vim modes in other editors feel familiar. + +## On CoreDesktop + +Vim is installed from pacman. CoreDesktop also installs `vi` from the AUR package of the same name: the original ex/vi editor from the 1970s, kept for anyone who wants the real thing. CoreDesktop's own editor shortcuts, `n` and `eff`, open Neovim, which is set up with kickstart.nvim. `eff` uses `$EDITOR` if you've set it, so `export EDITOR=vim` makes it open Vim instead. + +`update` keeps Vim current with the rest of the pacman packages, and `vi` with the AUR packages. diff --git a/content/software/visual-studio-code.md b/content/software/visual-studio-code.md new file mode 100644 index 0000000..e6bf56a --- /dev/null +++ b/content/software/visual-studio-code.md @@ -0,0 +1,26 @@ +--- +title: "Visual Studio Code" +category: "Code editors" +tagline: "Microsoft's popular code editor, with a huge library of extensions." +source: "Flathub" +package: "com.visualstudio.code" +website: "https://code.visualstudio.com/" +--- + +## What it is + +Visual Studio Code is a code editor from Microsoft. It has syntax highlighting, code completion and debugging for most languages, a built-in terminal and Git support, and a marketplace of extensions that add languages, themes, linters and tools. + +It sits between a plain text editor and a full IDE: light enough to open a single file, capable enough for large projects. + +## Why it's here + +- **The extension marketplace.** Almost every language, framework and service has a VS Code extension. +- **Familiar.** Many developers already know it, and many tutorials assume it. +- **Microsoft's own build.** Some extensions, such as Live Share and the remote development tools, work only in Microsoft's release. + +## On CoreDesktop + +VS Code is installed from Flathub. Open it from the app menu. It runs in Flatpak's sandbox, so its built-in terminal and extensions don't see every tool installed on the system. If you'd prefer the same editor without Microsoft's telemetry and licensing, CoreDesktop also installs [VSCodium](/software/vscodium/). + +`update` keeps VS Code current with the rest of the Flatpaks. diff --git a/content/software/vivaldi.md b/content/software/vivaldi.md new file mode 100644 index 0000000..c3b554f --- /dev/null +++ b/content/software/vivaldi.md @@ -0,0 +1,26 @@ +--- +title: "Vivaldi" +category: "Web browsers" +tagline: "A Chromium-based browser you can rearrange to suit you, with mail and calendar built in." +source: "Flathub" +package: "com.vivaldi.Vivaldi" +website: "https://vivaldi.com/" +--- + +## What it is + +Vivaldi is a web browser built on Chromium by Vivaldi Technologies, a company started by former Opera developers. Its focus is customization: tabs can go on any side of the window and stack into groups, toolbars and keyboard shortcuts can be rearranged, and pages can be tiled side by side. + +It also includes a built-in ad and tracker blocker, notes, and optional mail, calendar and feed reader apps. Vivaldi's interface is not open source, though the Chromium code it builds on is. + +## Why it's here + +- **Arrange it your way.** Almost every part of the interface can be moved, hidden or remapped. +- **More in one window.** Mail, calendar and feeds sit alongside your tabs if you want them. +- **Chrome-compatible.** Chrome extensions install and Chrome-only sites work. + +## On CoreDesktop + +CoreDesktop installs Vivaldi as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Vivaldi the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read Vivaldi's profile, as they can't read any Flatpak app's data. `update` keeps Vivaldi current along with your other Flatpaks. diff --git a/content/software/vlc.md b/content/software/vlc.md new file mode 100644 index 0000000..e4803e9 --- /dev/null +++ b/content/software/vlc.md @@ -0,0 +1,25 @@ +--- +title: "VLC" +category: "Audio and video" +tagline: "The media player that plays almost any video or audio file, disc or stream." +source: "pacman" +package: "vlc" +command: "vlc" +website: "https://www.videolan.org/vlc/" +code: "https://code.videolan.org/videolan/vlc" +--- + +## What it is + +VLC is an open-source media player from the VideoLAN project. It plays nearly every video and audio format without extra codec packs, along with DVDs, network streams and podcasts. It can also convert files between formats, record streams and play subtitles in many formats. + +## Why it's here + +- **Plays what other players won't.** Odd formats and damaged files usually open in VLC. +- **More than playback.** Converting, streaming and capturing are in the **Media** menu. + +## On CoreDesktop + +CoreDesktop installs VLC from pacman together with `vlc-plugins-all`, so every codec and feature plugin is present. If an older install had the VLC Flatpak, `update` removes it in favor of this package. + +Open VLC from the app grid or run `vlc`. `update` keeps it current with the rest of the pacman packages. diff --git a/content/software/voxtype.md b/content/software/voxtype.md new file mode 100644 index 0000000..1f2444b --- /dev/null +++ b/content/software/voxtype.md @@ -0,0 +1,33 @@ +--- +title: "Voxtype" +category: "AI" +tagline: "Push-to-talk dictation: hold a key, speak, and the text appears at your cursor, transcribed locally." +source: "AUR" +package: "voxtype" +command: "voxtype" +replaces: ["Dragon NaturallySpeaking"] +website: "https://voxtype.io/" +code: "https://github.com/peteonrails/voxtype" +--- + +## What it is + +Voxtype turns speech into text on Linux. Hold a hotkey while you talk, let go, and it types what you said wherever your cursor is: an editor, a browser, a chat window. Transcription runs on your own computer with speech recognition models such as Whisper and Parakeet, with no cloud service or subscription. + +It handles punctuation, can pause your music while you dictate, and has a meeting mode that transcribes continuously and exports the result. + +## Why it's here + +- **Local.** Your audio stays on your machine. +- **Works in any app.** It types into whatever window has focus. +- **Fast on a plain CPU.** No GPU required, though it can use one. + +## On CoreDesktop + +Voxtype is installed from the AUR, and CoreDesktop leaves its setup to you. `voxtype setup` checks its dependencies, including the tool it types with, `voxtype setup model` picks and downloads a speech model, and `voxtype setup systemd` runs it in the background from login. GNOME shortcuts fire on a key press but not on its release, so use toggle mode: add a shortcut in **Settings › Keyboard › Keyboard Shortcuts** that runs: + +``` +voxtype record toggle +``` + +Press it once to start dictating and again to stop. `update` keeps Voxtype current with the rest of the AUR packages. diff --git a/content/software/vscodium.md b/content/software/vscodium.md new file mode 100644 index 0000000..bc56bb1 --- /dev/null +++ b/content/software/vscodium.md @@ -0,0 +1,27 @@ +--- +title: "VSCodium" +category: "Code editors" +tagline: "Visual Studio Code built from its open-source code, without Microsoft's telemetry." +source: "Flathub" +package: "com.vscodium.codium" +website: "https://vscodium.com/" +code: "https://github.com/VSCodium/vscodium" +--- + +## What it is + +VSCodium is Visual Studio Code built straight from Microsoft's open-source code, with the telemetry turned off and released under the MIT license. It's the same editor: the same interface, settings and keyboard shortcuts. + +Extensions come from Open VSX, an open registry, rather than Microsoft's marketplace. Most popular extensions are on both; a few Microsoft-only ones, such as Live Share and the remote development tools, aren't available. + +## Why it's here + +- **VS Code without the tracking.** No usage data sent to Microsoft. +- **Free software.** Built in the open, from the open-source code. +- **No relearning.** Anyone who knows VS Code knows VSCodium. + +## On CoreDesktop + +VSCodium is installed from Flathub. Open it from the app menu. Some of its extensions run local servers; `audit` lists their ports and shows that only this computer can reach them. + +`update` keeps VSCodium current with the rest of the Flatpaks. diff --git a/content/software/warehouse.md b/content/software/warehouse.md new file mode 100644 index 0000000..24e9dfc --- /dev/null +++ b/content/software/warehouse.md @@ -0,0 +1,22 @@ +--- +title: "Warehouse" +category: "Desktop and system" +tagline: "See and manage every Flatpak on your machine, their data and their versions." +source: "Flathub" +package: "io.github.flattool.Warehouse" +code: "https://github.com/flattool/warehouse" +--- + +## What it is + +Warehouse is a manager for Flatpak apps. It lists everything installed, system-wide and for your user, with each app's size, origin and runtime, and lets you uninstall apps and clean up the data they leave behind. It can also manage Flatpak remotes, take snapshots of an app's data, and switch an app to an earlier version when a new one breaks something. + +## Why it's here + +- **Everything in one list.** CoreDesktop installs dozens of Flatpaks, and Warehouse shows them all. +- **Clean up leftovers.** Find and remove data from apps you've already uninstalled. +- **Roll back an app.** Go back to a previous version until a fix lands. + +## On CoreDesktop + +Warehouse is installed from Flathub. Open it from the app menu. `update` updates your Flatpaks, including Warehouse, and removes runtimes no app needs anymore. diff --git a/content/software/whisp.md b/content/software/whisp.md new file mode 100644 index 0000000..6ee71f6 --- /dev/null +++ b/content/software/whisp.md @@ -0,0 +1,22 @@ +--- +title: "Whisp" +category: "Office, notes and writing" +tagline: "A quick scratchpad for passing thoughts: no titles, no files, just start typing." +source: "Flathub" +package: "io.github.tanaybhomia.Whisp" +website: "https://tanaybhomia.github.io/Whisp/" +code: "https://github.com/tanaybhomia/Whisp" +--- + +## What it is + +Whisp is a small note-taking app for GNOME, meant as a desktop scratchpad. There are no titles, files or folders: you open it and type. Notes sit side by side on a canvas you swipe through with the touchpad, Markdown renders as you write, and `Ctrl+D` deletes a note when you're done with it. Pasting an image with text in it runs OCR offline and inserts the text. + +## Why it's here + +- **Faster than a notes app.** Phone numbers, links and half-formed ideas go somewhere without deciding where. +- **Fits GNOME.** It's built with GTK4 and libadwaita, so it looks and behaves like the rest of the desktop. + +## On CoreDesktop + +CoreDesktop installs Whisp as a Flatpak from Flathub. Open it from the app grid. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/whois.md b/content/software/whois.md new file mode 100644 index 0000000..6b4c694 --- /dev/null +++ b/content/software/whois.md @@ -0,0 +1,26 @@ +--- +title: "whois" +category: "Networking and remote access" +tagline: "Look up who owns a domain name or IP address." +source: "pacman" +package: "whois" +command: "whois" +code: "https://github.com/rfc1036/whois" +--- + +## What it is + +whois queries the public registration databases for domain names and IP addresses. It finds the right server for the domain or network on its own and shows the registrar, the dates a domain was registered and expires, its name servers, and the organization behind an IP range. + +``` +whois example.com +``` + +## Why it's here + +- **Domain details.** Check when a domain expires or which registrar holds it. +- **IP ownership.** Find which network or provider an address belongs to. + +## On CoreDesktop + +whois is installed from pacman. Type `whois` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/winboat.md b/content/software/winboat.md new file mode 100644 index 0000000..d41d971 --- /dev/null +++ b/content/software/winboat.md @@ -0,0 +1,27 @@ +--- +title: "WinBoat" +category: "Desktop and system" +tagline: "Run Windows apps on Linux as ordinary windows, with Windows tucked away in a container." +source: "AUR" +package: "winboat-bin" +website: "https://www.winboat.app/" +code: "https://github.com/winboat-org/winboat" +--- + +## What it is + +WinBoat runs Windows applications on Linux. It installs Windows in a virtual machine inside a Docker container, then shows each Windows app as its own window on your desktop using FreeRDP and Windows' RemoteApp, so it sits next to your Linux apps. You can also open the full Windows desktop, and your Linux home folder is available inside Windows. + +WinBoat is in beta, so expect some rough edges. + +## Why it's here + +- **For the apps that only run on Windows.** Office suites, tax software, vendor tools. +- **No dual-booting.** Windows apps open from the same desktop as everything else. +- **Guided setup.** WinBoat downloads and installs Windows for you. + +## On CoreDesktop + +WinBoat is installed from the AUR, with FreeRDP as a dependency. CoreDesktop also installs Docker, enables it, and adds you to the `docker` group, which is what WinBoat needs: log out and back in once after installing for the group to apply. You also need virtualization (KVM) turned on in your computer's firmware settings. Open WinBoat from the app menu. + +`update` keeps WinBoat current with the rest of the AUR packages. diff --git a/content/software/xournalpp.md b/content/software/xournalpp.md new file mode 100644 index 0000000..8d813f1 --- /dev/null +++ b/content/software/xournalpp.md @@ -0,0 +1,23 @@ +--- +title: "Xournal++" +category: "Office, notes and writing" +tagline: "Handwritten notes and PDF annotation, made for a pen or stylus." +source: "Flathub" +package: "com.github.xournalpp.xournalpp" +replaces: ["Microsoft OneNote"] +website: "https://xournalpp.github.io/" +code: "https://github.com/xournalpp/xournalpp" +--- + +## What it is + +Xournal++ is a note-taking app for handwriting. With a graphics tablet or a touchscreen and stylus, you write and draw on pages as you would on paper, with pressure sensitivity, highlighters, shapes and layers. It's also a good way to annotate PDFs: open one, write on it, and export the result as a new PDF. It supports LaTeX for typed formulas. + +## Why it's here + +- **Sign and mark up PDFs.** Fill in a form, sign it or add comments without printing it. +- **Notes by hand.** Lecture notes, sketches and math work better with a pen than a keyboard. + +## On CoreDesktop + +CoreDesktop installs Xournal++ as a Flatpak from Flathub. Open it from the app grid, or open a PDF with it from Files. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/yazi.md b/content/software/yazi.md new file mode 100644 index 0000000..fc09b9f --- /dev/null +++ b/content/software/yazi.md @@ -0,0 +1,24 @@ +--- +title: "Yazi" +category: "Terminal and shell" +tagline: "A fast terminal file manager with previews for text, images and more." +source: "pacman" +package: "yazi" +command: "yazi" +website: "https://yazi-rs.github.io/" +code: "https://github.com/sxyazi/yazi" +--- + +## What it is + +Yazi is a file manager that runs in the terminal. It shows your directories in columns, previews files as you move over them (including images in terminals that support it), and lets you copy, move, rename and open files from the keyboard. It loads directories in the background, so it stays responsive in large folders. + +## Why it's here + +- **Quick browsing.** Move through folders and preview files without leaving the terminal. +- **Keyboard-driven.** Vim-style keys for navigating and acting on files. +- **Works over SSH.** A file manager on remote machines with no desktop. + +## On CoreDesktop + +Yazi is installed from pacman with no extra setup. Type `yazi` in a terminal. `update` keeps it current along with the rest of the pacman packages. diff --git a/content/software/zen.md b/content/software/zen.md new file mode 100644 index 0000000..9c5d081 --- /dev/null +++ b/content/software/zen.md @@ -0,0 +1,27 @@ +--- +title: "Zen Browser" +category: "Web browsers" +tagline: "A calm, Firefox-based browser with vertical tabs, workspaces and split views." +source: "Flathub" +package: "app.zen_browser.zen" +website: "https://zen-browser.app/" +code: "https://github.com/zen-browser/desktop" +--- + +## What it is + +Zen is a web browser built on Firefox, with a redesigned interface for people who keep a lot of tabs open. Tabs run down the side of the window instead of across the top, workspaces group tabs by project, and split view puts two or more pages side by side. + +Underneath it's Firefox, so it uses Mozilla's Gecko engine and installs Firefox add-ons. + +## Why it's here + +- **Built for many tabs.** Vertical tabs, workspaces and pinned tabs keep a busy session organized. +- **Firefox underneath.** You get Gecko and Firefox add-ons with a different layout on top. +- **An Arc alternative.** It covers much of what people liked about Arc, in open source. + +## On CoreDesktop + +CoreDesktop installs Zen as a Flatpak from Flathub. Open it from the app grid. Helium is CoreDesktop's default browser; to make Zen the default instead, pick it in **Settings › Apps › Default Apps**. + +The sandboxed AI agents can't read Zen's profile, as they can't read any Flatpak app's data. `update` keeps Zen current along with your other Flatpaks. diff --git a/content/software/zoom.md b/content/software/zoom.md new file mode 100644 index 0000000..ea0d3f6 --- /dev/null +++ b/content/software/zoom.md @@ -0,0 +1,21 @@ +--- +title: "Zoom" +category: "Messaging and meetings" +tagline: "The Zoom app, for joining and hosting video meetings." +source: "Flathub" +package: "us.zoom.Zoom" +website: "https://www.zoom.com/" +--- + +## What it is + +Zoom is a video meeting service. The desktop app joins and hosts meetings with video, screen sharing, chat, breakout rooms and recording. It's closed source and run by Zoom Communications. + +## Why it's here + +- **Meetings other people schedule.** Many companies, schools and clients send Zoom links, and the app works better than joining in a browser. +- **Full features.** Screen sharing, breakout rooms and recording work as they do on other systems. + +## On CoreDesktop + +CoreDesktop installs Zoom as a Flatpak from Flathub. Open it from the app grid and join with a meeting link or ID. `update` keeps it current along with your other Flatpaks. diff --git a/content/software/zoxide.md b/content/software/zoxide.md new file mode 100644 index 0000000..ff1c410 --- /dev/null +++ b/content/software/zoxide.md @@ -0,0 +1,26 @@ +--- +title: "zoxide" +category: "Terminal and shell" +tagline: "Jump to directories you use often by typing part of their name." +source: "pacman" +package: "zoxide" +command: "z" +code: "https://github.com/ajeetdsouza/zoxide" +--- + +## What it is + +zoxide is a smarter `cd`. It remembers the directories you visit and ranks them by how often and how recently you use them, so you can jump to one by typing a fragment of its path. + +``` +z webcore # cd to the directory you use most that matches "webcore" +``` + +## Why it's here + +- **Fewer keystrokes.** No more typing long paths to projects you open every day. +- **Learns as you go.** There's nothing to set up: it ranks directories from your history. + +## On CoreDesktop + +zoxide is installed from pacman and turned on for Bash by CoreDesktop's shell setup, which gives you the `z` command. `zi` does the same with an interactive fzf list. `update` keeps zoxide current with the pacman packages. diff --git a/content/software/zsh.md b/content/software/zsh.md new file mode 100644 index 0000000..ceb10cb --- /dev/null +++ b/content/software/zsh.md @@ -0,0 +1,25 @@ +--- +title: "Zsh" +category: "Terminal and shell" +tagline: "An interactive shell with strong completion and a large plugin ecosystem." +source: "pacman" +package: "zsh" +command: "zsh" +website: "https://www.zsh.org/" +code: "https://github.com/zsh-users/zsh" +--- + +## What it is + +Zsh is a Unix shell, an alternative to Bash. It runs Bash-style commands and scripts, and adds smarter tab completion, spelling correction, shared history and a lot of options for customizing the prompt and key bindings. Frameworks such as Oh My Zsh build on it. + +## Why it's here + +- **Better completion.** Tab completes options and arguments for many commands, with menus. +- **Choice.** Some people prefer it to Bash, and macOS uses it by default. + +## On CoreDesktop + +Zsh is installed from pacman, but Bash stays your login shell, and CoreDesktop's shell setup (prompt, aliases, functions, zoxide and fzf key bindings) is written for Bash. Type `zsh` to try it. To make it your login shell, run `chsh -s /usr/bin/zsh`, then set up your own `~/.zshrc`. + +`update` keeps Zsh current along with the rest of the pacman packages. diff --git a/hugo.toml b/hugo.toml index 52a174d..be289c7 100644 --- a/hugo.toml +++ b/hugo.toml @@ -115,3 +115,51 @@ disableKinds = ["taxonomy", "term", "RSS", "sitemap", "robotsTXT"] name = "Federated Computer" url = "https://federated.computer/" weight = 40 + +# Groups in the software catalog on /software/, in display order. Each page in +# content/software/ names one of these in its `category`. +[[params.softwareGroups]] + name = "Web browsers" + blurb = "Helium by default, and every other browser you test against." +[[params.softwareGroups]] + name = "Messaging and meetings" + blurb = "Chat on Matrix, Signal and the rest, and meet over video." +[[params.softwareGroups]] + name = "Email and calendar" + blurb = "Mail, contacts and schedules." +[[params.softwareGroups]] + name = "Office, notes and writing" + blurb = "Documents, spreadsheets, notes and Markdown." +[[params.softwareGroups]] + name = "Graphics and design" + blurb = "Photos, vector art, page layout, screenshots and fonts." +[[params.softwareGroups]] + name = "Audio and video" + blurb = "Record, edit and play." +[[params.softwareGroups]] + name = "Entertainment" + blurb = "Music, films, TV and games, for when the work is done." +[[params.softwareGroups]] + name = "AI" + blurb = "Coding agents in a sandbox, local models and voice typing." +[[params.softwareGroups]] + name = "Code editors" + blurb = "From vi to VS Code." +[[params.softwareGroups]] + name = "Languages and runtimes" + blurb = "Compilers, interpreters, package managers and site builders." +[[params.softwareGroups]] + name = "Developer tools" + blurb = "Version control, containers, APIs and databases." +[[params.softwareGroups]] + name = "Terminal and shell" + blurb = "Terminals, multiplexers, the prompt and the commands you run all day." +[[params.softwareGroups]] + name = "Networking and remote access" + blurb = "Private networks, remote desktops and network diagnostics." +[[params.softwareGroups]] + name = "Backup, files and security" + blurb = "Passwords, encryption, backups, cloud storage and the firewall." +[[params.softwareGroups]] + name = "Desktop and system" + blurb = "GNOME and the tools that keep the machine itself in shape." diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 0000000..2a53838 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,3 @@ +{{ define "main" }} + {{ partial "render-sections.html" . }} +{{ end }} diff --git a/layouts/partials/sections/catalog.html b/layouts/partials/sections/catalog.html new file mode 100644 index 0000000..247a5be --- /dev/null +++ b/layouts/partials/sections/catalog.html @@ -0,0 +1,70 @@ +{{/* + The software catalog: every page in content/software/, grouped by its + `category` in the order of params.softwareGroups (hugo.toml). Each row + links to the app's page and shows its tagline and where it's installed + from. A filter box (progressive: hidden without JS) narrows the rows. +*/}} +{{ $s := . }} +{{ $apps := (site.GetPage "/software").RegularPages }} +{{ partial "sections/head.html" $s }} +
+ + +
+
+ {{ range site.Params.softwareGroups }} + {{ $group := . }} + {{ with where $apps "Params.category" $group.name }} +
+
+

{{ $group.name }}

+ {{ with $group.blurb }}

{{ . }}

{{ end }} +
+
    + {{ range .ByTitle }} +
  • + {{ .Title }} + {{ .Params.tagline | markdownify }} + {{ .Params.source | default "pacman" }} +
  • + {{ end }} +
+
+ {{ end }} + {{ end }} + +
+{{ if $s.ctas }}
{{ partial "sections/ctas.html" $s.ctas }}
{{ end }} + diff --git a/layouts/software/single.html b/layouts/software/single.html new file mode 100644 index 0000000..2b0a790 --- /dev/null +++ b/layouts/software/single.html @@ -0,0 +1,63 @@ +{{/* + One title in the software catalog (content/software/.md). The + header carries the facts from the front matter: where it's installed + from, the package, the command, what it stands in for, and links to the + project's website and source. The body is the page's Markdown, followed + by the other titles in the same group. +*/}} +{{ define "main" }} +{{ $p := . }} +{{ $source := .Params.source | default "pacman" }} +{{ $pkg := .Params.package }} +{{ $pkgUrl := "" }} +{{ with $pkg }} + {{ if eq $source "pacman" }}{{ $pkgUrl = printf "https://archlinux.org/packages/?name=%s" . }} + {{ else if eq $source "AUR" }}{{ $pkgUrl = printf "https://aur.archlinux.org/packages/%s" . }} + {{ else if eq $source "Flathub" }}{{ $pkgUrl = printf "https://flathub.org/apps/%s" . }} + {{ end }} +{{ end }} +
+
+
+

Software · {{ with .Params.category }}{{ . }}{{ end }}

+

{{ .Title }}

+ {{ with .Params.tagline }}

{{ . | markdownify }}

{{ end }} + {{ if or .Params.website .Params.code }} +
+ {{ with .Params.website }}Website{{ end }} + {{ with .Params.code }}Source code{{ end }} +
+ {{ end }} +
+
+
Installed from
{{ $source }}{{ with $pkg }} · {{ if $pkgUrl }}{{ . }}{{ else }}{{ . }}{{ end }}{{ end }}
+ {{ with .Params.command }}
Run it
{{ . }}
{{ end }} + {{ with .Params.replaces }}
Use instead of
{{ range $i, $n := . }}{{ if $i }}, {{ end }}{{ $n }}{{ end }}
{{ end }} + {{ with .Params.website }}{{ end }} + {{ with .Params.code }}{{ end }} +
+
+
+ +
+
+
+ {{ .Content }} + {{ with .Params.links }} +

Further reading

+ + {{ end }} +
+ {{ $others := where (where site.RegularPages "Section" "software") "Params.category" .Params.category }} + +
+
+{{ end }} diff --git a/static/css/style.css b/static/css/style.css index f48fa38..c0a1eaa 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -906,3 +906,87 @@ pre.has-copy code { display: block; padding-right: 64px; } text-decoration-thickness: 2px; text-underline-offset: .16em; } .section-text .wrap:not(:has(> .section-head)) .prose a:hover { color: var(--magenta); } + +/* ---- software catalog (content/software/, the catalog section) ---- */ +.cat-tools { display: flex; flex-direction: column; gap: 20px; margin-bottom: 48px; } +.cat-nav { display: flex; flex-wrap: wrap; gap: 8px; } +.cat-nav a { + display: inline-flex; align-items: center; gap: 8px; + padding: 7px 10px 7px 14px; border-radius: 999px; background: var(--surface); + font-size: 14px; font-weight: 500; color: var(--ink); text-decoration: none; + transition: background var(--dur-hover) var(--ease-hover), color var(--dur-hover) var(--ease-hover); +} +.cat-nav a:hover { background: var(--magenta); color: #fff; } +.cat-count { + min-width: 22px; padding: 1px 6px; border-radius: 999px; background: var(--magenta-11); + font-family: var(--font-mono); font-size: 11px; text-align: center; color: var(--magenta); +} +.cat-nav a:hover .cat-count { background: #ffffff33; color: #fff; } +.cat-filter input { + width: min(420px, 100%); height: 48px; padding: 0 18px; + border: 1.5px solid var(--ink-22); border-radius: 999px; background: #fff; + font: inherit; font-size: 16px; color: var(--ink); +} +.cat-filter input:focus { outline: none; border-color: var(--magenta); } + +.catalog { display: flex; flex-direction: column; gap: 56px; } +.cat-group { scroll-margin-top: calc(var(--head-h) + 24px); } +.cat-group-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 20px; padding-bottom: 12px; border-bottom: 2px solid var(--ink); } +.cat-group-head h3 { font-size: 24px; line-height: 1.2; letter-spacing: -.02em; } +.cat-group-head p { font-size: 15px; color: var(--ink-60); } +.cat-row { + position: relative; + display: grid; grid-template-columns: 13rem minmax(0, 1fr) auto; gap: 4px 28px; align-items: baseline; + padding: 14px 0; border-bottom: 1px solid var(--rule); +} +.cat-row:hover { background: linear-gradient(90deg, transparent, var(--magenta-7) 12%, var(--magenta-7) 88%, transparent); } +.cat-name { font-weight: 600; font-size: 17px; color: var(--ink); text-decoration: none; } +.cat-name::after { content: ""; position: absolute; inset: 0; } +.cat-row:hover .cat-name { color: var(--magenta); } +.cat-desc { font-size: 15.5px; line-height: 1.55; color: var(--ink-68); } +.cat-desc p { display: inline; } +.cat-src { + padding: 2px 9px; border-radius: 999px; background: var(--paper-2); + font-family: var(--font-mono); font-size: 11px; font-weight: 500; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-60); + white-space: nowrap; +} +.cat-src-flathub { background: var(--magenta-11); color: var(--magenta-deep); } +.cat-src-aur { background: #2ee6d633; color: #006b63; } +.cat-none { font-size: 18px; color: var(--ink-68); } +.cat-none a { color: var(--magenta); } +@media (max-width: 800px) { + .cat-row { grid-template-columns: minmax(0, 1fr) auto; } + .cat-desc { grid-column: 1 / -1; grid-row: 2; } +} + +/* one title's page */ +.app-facts { + display: flex; flex-direction: column; + padding: 8px 28px; border-radius: var(--radius); + background: var(--on-dark-8); box-shadow: inset 0 0 0 1px var(--on-dark-16); +} +.app-facts > div { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 16px; padding: 16px 0; } +.app-facts > div + div { border-top: 1px solid var(--on-dark-16); } +.app-facts dt { font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--on-dark-56); padding-top: 3px; } +.app-facts dd { margin: 0; font-size: 16px; color: var(--on-dark); overflow-wrap: anywhere; } +.app-facts a { color: var(--on-dark); text-decoration-color: var(--magenta-bright); text-underline-offset: .18em; } +.app-facts a:hover { color: var(--cyan); } +.app-facts code { font-family: var(--font-mono); font-size: 14px; } +.app-replaces s { white-space: nowrap; text-decoration-color: var(--magenta-bright); } +.app-replaces .sep { color: var(--on-dark-56); } +.app-hero .note a { color: inherit; text-decoration: none; } +.app-hero .note a:hover { color: var(--on-dark); text-decoration: underline; } +@media (max-width: 500px) { .app-facts > div { grid-template-columns: minmax(0, 1fr); gap: 4px; } } + +.app-layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 80px; align-items: start; } +.app-body .prose h2 { font-size: 28px; line-height: 1.2; letter-spacing: -.02em; } +.app-body .prose h2:not(:first-child) { margin-top: 18px; } +.app-aside { position: sticky; top: calc(var(--head-h) + 32px); display: flex; flex-direction: column; gap: 16px; padding: 28px; border-radius: var(--radius); background: var(--surface); } +.app-others { display: flex; flex-direction: column; gap: 2px; } +.app-others a { display: block; padding: 5px 0; font-size: 15px; color: var(--ink-86); text-decoration: none; } +.app-others a:hover { color: var(--magenta); } +.app-others [aria-current] a { color: var(--magenta); font-weight: 600; } +@media (max-width: 1000px) { + .app-layout { grid-template-columns: minmax(0, 1fr); gap: 56px; } + .app-aside { position: static; } +}