COMMANDS

April 22, 2026 · View on GitHub

Quick reference for keys and commands in Podliner.
Full in-app help: :h


Table of contents


Most used

Playback

  • Enter: play selected
  • Space: pause or resume
  • ← / →: seek 10s backward or forward
  • [ / ]: slower or faster
  • = or 1: reset speed to 1.0x

Navigation

  • j / k: move selection down or up
  • g / G: seek audio to start / end
  • :H / :M / :L or :zt / :zz / :zb: jump selection to top / middle / bottom of the list
  • /: search in current list

Downloads

  • d: toggle download flag or show status
  • :downloads: open downloads view

Filters and view

  • u: toggle unplayed only
  • :feed all|saved|downloaded|history|queue: switch view

Misc

  • t: toggle theme
  • q: quit
  • :w or :wq: save or save and quit

Key bindings

KeyActionNotes
SpaceToggle play or pause
← / →Seek -10s / +10s
H / LSeek -60s / +60s
g / GSeek audio to 0:00 / 100%
- / +Volume down / up0 to 100
[ / ]Slower / faster
= or 1Reset speed to 1.0x
2 / 3Speed presets 1.25x / 1.5x
EnterPlay selected episode
iOpen Shownotes tab
Esc (in Shownotes)Back to Episodes
j / kMove selection down / up
h / lFocus feeds / episodes
J / KNext / previous unplayed (move item in Queue view)Context-aware
mToggle played flag
uToggle unplayed filter
dToggle download flag
:Enter command mode
/Search (Enter to apply, n to repeat)
tToggle theme
F12Logs overlay
qQuit

Commands by category

Playback

  • :toggle
    Toggle pause or resume.
  • :seek [ +N | -N | NN% | mm:ss | hh:mm:ss ]
    Seek by seconds, percentage, or timestamp.
    Examples: :seek +10, :seek 80%, :seek 12:34, :seek 01:02:03
  • :jump <hh:mm[:ss] | +/-sec | %>
    Same syntax as :seek.
    Examples: :jump 10%, :jump +90, :jump 00:30
  • :replay [N]
    Replay from 0:00 or jump back N seconds.
    Examples: :replay, :replay 30
  • :vol [N | +/-N]
    Set or change volume (0 to 100).
    Examples: :vol 70, :vol +5, :vol -10
  • :speed [S | +/-D]
    Set or change speed (0.25 to 3.0).
    Examples: :speed 1.0, :speed +0.1, :speed -0.25
  • :next / :prev
    Select next or previous item without autoplay.
  • :play-next / :play-prev
    Play next or previous item.
  • :next-unplayed / :prev-unplayed
    Play next or previous unplayed item.
  • :goto top|start|bottom|end
    Select list position.
    Examples: :goto top, :goto end
  • :now
    Select the currently playing episode.
  • :zt :zz :zb (also :H :M :L) Jump selection to top, middle, or bottom of the current list.

Downloads

  • :download [start|cancel] (alias :dl)
    Mark or unmark the episode for download, optionally start or cancel.
    Examples: :download, :dl, :dl cancel
  • :downloads [retry-failed | clear-queue | open-dir]
    Show downloads overview and actions.
    Examples: :downloads, :downloads retry-failed, :downloads open-dir
  • :save [on|off|true|false|+|-]
    Toggle or set Saved (star) for selected episode.
    Examples: :save, :save on, :save -

Queue

  • :queue add|toggle|rm|remove|clear|move <up|down|top|bottom>|shuffle|uniq (alias q)
    Queue operations for the selected episode or list.
    Examples:
    :queue add
    q
    :queue move up
    :queue shuffle
    :queue uniq
    :queue clear

Feeds

  • :add <rss-url> (alias :a)
    Add a new podcast feed.
    Examples: :add https://example.com/feed.xml, :a https://…
  • :refresh (aliases :update :r)
    Refresh all feeds.
  • :remove-feed (alias :rm-feed) Remove the currently selected feed.
  • :feed all|saved|downloaded|history|queue
    Switch to a virtual feed.
    Examples: :feed all, :feed queue
  • :history clear | size <n>
    History actions.
    Examples: :history clear, :history size 500

Sort and filter

  • :sort show | reset | reverse | by <pubdate|title|played|progress|feed> [asc|desc] Sort the episode list. Examples: :sort show, :sort reverse, :sort by title asc
  • :sort feeds show | reset | by <title|updated|unplayed> [asc|desc] Sort the feed panel. Persisted across sessions. Examples: :sort feeds by title asc, :sort feeds by unplayed desc, :sort feeds show
  • :filter [unplayed|all|toggle] Set or toggle unplayed filter. Examples: :filter unplayed, :filter toggle

Player and theme

  • :audioPlayer [top|bottom|toggle]
    Place the player bar.
    Examples: :audioPlayer top, :audioPlayer toggle
  • :theme [toggle|base|accent|native|auto]
    Switch theme or toggle.
    Examples: :theme, :theme native

Network and engine

  • :net online|offline|toggle
    Set or toggle offline mode.
    Examples: :net, :net offline, :net toggle
  • :play-source [auto|local|remote|show]
    Prefer playback source.
    Examples: :play-source, :play-source show, :play-source local
  • :engine [show|help|auto|vlc|mpv|ffplay|mediafoundation|mf|diag] Select or inspect playback engine. mf is a shorthand for mediafoundation (Windows only). Examples: :engine, :engine mpv, :engine mf, :engine help, :engine diag

OPML

  • :opml import <path> [--update-titles] | export [<path>]
    Import or export OPML.
    Examples:
    :opml import ~/feeds.opml
    :opml import feeds.opml --update-titles
    :opml export
    :opml export ~/stui-feeds.opml

Sync (gPodder)

  • :sync login <server> <user> <pass> Log in and store credentials. Example: :sync login https://gpodder.net alice mypass
  • :sync logout Remove credentials and stop syncing.
  • :sync Full sync — pull subscription changes then push pending actions.
  • :sync push Upload subscription changes and queued play actions.
  • :sync pull Download subscription changes from the server.
  • :sync status Show server URL, device ID, auto-sync state, last sync time, and pending action count.
  • :sync device <id> Set this device's ID (default: podliner-<hostname>). Example: :sync device my-laptop
  • :sync auto [on|off] Enable or disable auto-sync on startup and exit. Omit argument to toggle. Examples: :sync auto on, :sync auto off
  • :sync help Show the in-app sync guide.

Misc

  • :help (alias :h)
    Show this help.
  • :open [site|audio]
    Open episode website or audio in the system default.
    Examples: :open, :open site, :open audio
  • :copy url|title|guid
    Copy episode info to clipboard.
    Examples: :copy, :copy url, :copy title, :copy guid
  • :logs [N]
    Show logs overlay (tail).
    Examples: :logs, :logs 1000
  • :osd <text>
    Show a transient on-screen message.
    Example: :osd Hello world
  • :quit (alias :q)
    Quit application.
  • :w or :wq
    Save or save and quit.

Engines guide

VLC (libVLC) - default
- Supports seek, pause, volume, speed, local files, HTTP
- Recommended. Mature and feature complete.

MPV (mpv, IPC)
- Supports seek, pause, volume, speed, local files, HTTP
- Requires mpv in PATH. Uses IPC socket.

Media Foundation (Windows only)
- Supports seek, pause, volume, local files, HTTP
- Built in on Windows. No extra install needed.
- Speed control not supported.

FFplay (limited)
- Supports play and stop only
- Coarse seek by restart (-ss). Speed and volume only at start.
- Intended as last-resort fallback.

Switching engines

:engine                                     -> show current engine and capabilities
:engine help                                -> show this guide
:engine auto                                -> Windows: VLC -> MediaFoundation -> MPV -> FFplay
                                               Linux/macOS: VLC -> MPV -> FFplay
:engine vlc|mpv|ffplay|mediafoundation|mf   -> set preference
:engine diag                                -> show active engine, caps, preference and last used

Notes

  • On FFplay, :seek restarts playback at the new position (coarse seek).
  • If an action is not supported by the active engine, a short OSD hint appears (e.g. :speed on MediaFoundation).
  • Linux: install vlc, mpv, ffmpeg.
  • macOS: brew install --cask vlc && brew install mpv ffmpeg
  • Windows: VLC is bundled with podliner. Install mpv/ffmpeg separately if you want them.

OPML import and export

Import

:opml import <path> [--update-titles]
- Reads OPML 2.0
- Default policy:
  • Groups are ignored (flat import)
  • Existing feed titles are not overwritten
  • No online validation

Export

:opml export [<path>]
- Writes a flat OPML (UTF-8) with all current feeds
- If path is omitted, a sensible default is used

Examples

:opml import ~/feeds.opml
:opml import feeds.opml --update-titles
:opml export
:opml export ~/stui-feeds.opml

gPodder sync

Sync subscriptions and play history with any gPodder API v2 compatible server.

Supported servers

  • gpodder.net — public, free
  • Any self-hosted gPodder API v2 compatible server

Nextcloud's gPodder-Sync app uses a different API path and is not supported yet. See #6.

Quick start

:sync login https://gpodder.net <user> <pass>
:sync
:sync auto on

Password storage Credentials are stored in the OS keyring when available (libsecret on Linux, Keychain on macOS, Credential Store on Windows). If the keyring is unavailable, the password is saved in gpodder.json as a plaintext fallback with a one-time warning.

Offline behaviour All sync operations check the network state first. If offline (:net offline or no connection), sync returns immediately. Pending play actions accumulate while offline and are uploaded on the next successful push.

Device ID The default device ID is podliner-<hostname> (max 64 characters). Change it with :sync device <id> before the first login if you want a specific name on the server.