plex-tui 0.4.4__tar.gz → 0.4.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/post-release-homebrew.yml +49 -7
- {plex_tui-0.4.4 → plex_tui-0.4.9}/CHANGELOG.md +15 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/PKG-INFO +158 -75
- {plex_tui-0.4.4 → plex_tui-0.4.9}/README.md +157 -74
- {plex_tui-0.4.4 → plex_tui-0.4.9}/RELEASE.md +7 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/ROADMAP.md +7 -4
- plex_tui-0.4.9/docs/assets/collection-categories.png +0 -0
- plex_tui-0.4.9/docs/assets/collection-recommended.png +0 -0
- plex_tui-0.4.9/docs/assets/grid-tv-shows.png +0 -0
- plex_tui-0.4.9/docs/assets/grid-view.png +0 -0
- plex_tui-0.4.9/docs/assets/list-view.png +0 -0
- plex_tui-0.4.9/docs/collection-artwork-design.md +73 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/docs/plex-integration-research.md +2 -1
- {plex_tui-0.4.4 → plex_tui-0.4.9}/packaging/aur/.SRCINFO +3 -3
- {plex_tui-0.4.4 → plex_tui-0.4.9}/packaging/aur/PKGBUILD +2 -2
- {plex_tui-0.4.4 → plex_tui-0.4.9}/pyproject.toml +1 -1
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/check_release.py +4 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/__init__.py +1 -1
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/app.py +476 -21
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/plex_service.py +15 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_app_helpers.py +112 -11
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_app_navigation.py +132 -2
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_plex_service.py +57 -0
- plex_tui-0.4.4/docs/assets/grid-view.png +0 -0
- plex_tui-0.4.4/docs/assets/list-view.png +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/aur.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/bump.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/ci.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/post-release-aur.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/publish-aur.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/publish-pypi.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.github/workflows/publish-testpypi.yml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/.gitignore +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/AGENTS.md +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/LICENSE +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/Makefile +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/PACKAGING.md +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/config.example.toml +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/docs/homebrew-install-time.md +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/packaging/aur/README.md +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/packaging/homebrew/README.md +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/measure_homebrew_install.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/prepare_homebrew_bottle_assets.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/stage_release.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/update_aur_package.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/scripts/update_homebrew_formula.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/__main__.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/artwork.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/auth.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/config.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/models.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/player.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/src/plextui/smoke.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_artwork.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_auth.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_cli.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_config.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_homebrew_bottle_assets.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_player.py +0 -0
- {plex_tui-0.4.4 → plex_tui-0.4.9}/tests/test_release_checks.py +0 -0
|
@@ -34,12 +34,34 @@ jobs:
|
|
|
34
34
|
- name: Check packaging PR token
|
|
35
35
|
env:
|
|
36
36
|
PACKAGING_PR_TOKEN: ${{ secrets.PACKAGING_PR_TOKEN }}
|
|
37
|
+
GH_TOKEN: ${{ secrets.PACKAGING_PR_TOKEN }}
|
|
37
38
|
run: |
|
|
39
|
+
set -euo pipefail
|
|
40
|
+
|
|
38
41
|
if [ -z "$PACKAGING_PR_TOKEN" ]; then
|
|
39
42
|
echo "PACKAGING_PR_TOKEN secret is required to publish the Homebrew tap" >&2
|
|
40
43
|
exit 1
|
|
41
44
|
fi
|
|
42
45
|
|
|
46
|
+
pr_query="$(cat <<'GRAPHQL'
|
|
47
|
+
query($owner: String!, $name: String!) {
|
|
48
|
+
repository(owner: $owner, name: $name) {
|
|
49
|
+
nameWithOwner
|
|
50
|
+
pullRequests(first: 1) {
|
|
51
|
+
totalCount
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
GRAPHQL
|
|
56
|
+
)"
|
|
57
|
+
|
|
58
|
+
gh api repos/so1omon563/homebrew-plex-tui --jq '.full_name' >/dev/null
|
|
59
|
+
gh api graphql \
|
|
60
|
+
-f owner=so1omon563 \
|
|
61
|
+
-f name=homebrew-plex-tui \
|
|
62
|
+
-f query="$pr_query" >/dev/null
|
|
63
|
+
gh pr list --repo so1omon563/homebrew-plex-tui --limit 1 >/dev/null
|
|
64
|
+
|
|
43
65
|
- name: Determine release tag
|
|
44
66
|
id: release
|
|
45
67
|
env:
|
|
@@ -269,11 +291,23 @@ jobs:
|
|
|
269
291
|
fi
|
|
270
292
|
|
|
271
293
|
branch="automation/plex-tui-v${VERSION}"
|
|
272
|
-
|
|
294
|
+
formula_update="$(mktemp)"
|
|
295
|
+
cp Formula/plex-tui.rb "$formula_update"
|
|
273
296
|
git config user.name "github-actions[bot]"
|
|
274
297
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
275
|
-
|
|
276
|
-
git
|
|
298
|
+
|
|
299
|
+
if git ls-remote --exit-code --heads origin "$branch" >/dev/null 2>&1; then
|
|
300
|
+
git fetch origin "$branch"
|
|
301
|
+
git switch -C "$branch" "origin/$branch"
|
|
302
|
+
cp "$formula_update" Formula/plex-tui.rb
|
|
303
|
+
else
|
|
304
|
+
git switch -c "$branch"
|
|
305
|
+
fi
|
|
306
|
+
|
|
307
|
+
if ! git diff --quiet -- Formula/plex-tui.rb; then
|
|
308
|
+
git add Formula/plex-tui.rb
|
|
309
|
+
git commit -m "Update plex-tui to ${VERSION}"
|
|
310
|
+
fi
|
|
277
311
|
git push origin "$branch"
|
|
278
312
|
|
|
279
313
|
echo "changed=true" >> "$GITHUB_OUTPUT"
|
|
@@ -292,12 +326,20 @@ jobs:
|
|
|
292
326
|
|
|
293
327
|
pr_body="$(printf 'Automated Homebrew tap update for plex-tui %s.\n\nIncludes the generated bottle metadata for %s.\n' "$VERSION" "$BOTTLE_RELEASE")"
|
|
294
328
|
|
|
295
|
-
pr_url="$(gh pr
|
|
329
|
+
pr_url="$(gh pr list \
|
|
296
330
|
--repo so1omon563/homebrew-plex-tui \
|
|
297
|
-
--base main \
|
|
298
331
|
--head "$BRANCH" \
|
|
299
|
-
--
|
|
300
|
-
--
|
|
332
|
+
--json url \
|
|
333
|
+
--jq '.[0].url // ""')"
|
|
334
|
+
|
|
335
|
+
if [ -z "$pr_url" ]; then
|
|
336
|
+
pr_url="$(gh pr create \
|
|
337
|
+
--repo so1omon563/homebrew-plex-tui \
|
|
338
|
+
--base main \
|
|
339
|
+
--head "$BRANCH" \
|
|
340
|
+
--title "Update plex-tui to ${VERSION}" \
|
|
341
|
+
--body "$pr_body")"
|
|
342
|
+
fi
|
|
301
343
|
|
|
302
344
|
gh pr merge "$pr_url" \
|
|
303
345
|
--repo so1omon563/homebrew-plex-tui \
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.4.9 - 2026-06-19
|
|
6
|
+
|
|
7
|
+
- Improved playlist-management discoverability in the details pane, Help view,
|
|
8
|
+
and README usage docs.
|
|
9
|
+
- Fixed a crash when selecting playlist container cards whose PlexAPI objects
|
|
10
|
+
do not expose media stream parts.
|
|
11
|
+
|
|
12
|
+
## 0.4.7 - 2026-06-19
|
|
13
|
+
|
|
14
|
+
- Added playlist management for creating playlists from selected media, adding
|
|
15
|
+
selected media to existing playlists, and removing items from playlist views.
|
|
16
|
+
- Added intentional collection-card artwork for hub, playlist, category, and
|
|
17
|
+
other container grid cards, with geometric glyphs and roomier spacing for
|
|
18
|
+
all-container grids such as Recommended.
|
|
19
|
+
|
|
5
20
|
## 0.4.4 - 2026-06-18
|
|
6
21
|
|
|
7
22
|
- Added a keyboard action to mark the selected playable Plex item watched or
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plex-tui
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.9
|
|
4
4
|
Summary: A small standalone Plex terminal UI.
|
|
5
5
|
Project-URL: Homepage, https://github.com/so1omon563/plex-tui
|
|
6
6
|
Project-URL: Issues, https://github.com/so1omon563/plex-tui/issues
|
|
@@ -44,23 +44,86 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
[](https://github.com/so1omon563/homebrew-plex-tui)
|
|
45
45
|
[](LICENSE)
|
|
46
46
|
|
|
47
|
-
A
|
|
48
|
-
through `mpv`.
|
|
47
|
+
A terminal Plex client built for watching media, not managing servers.
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
There are plenty of tools for administering Plex from the command line.
|
|
50
|
+
Surprisingly few are built for sitting down, browsing your library, and watching
|
|
51
|
+
something without leaving the terminal.
|
|
52
|
+
|
|
53
|
+
plex-tui is a standalone Textual application that brings Plex browsing, poster
|
|
54
|
+
artwork, collection cards, playlists, search, stream preferences, and `mpv`
|
|
55
|
+
playback into a keyboard-first terminal interface.
|
|
56
|
+
|
|
57
|
+
Built for people who spend their day in a terminal and would rather stay there.
|
|
58
|
+
|
|
59
|
+
## Why?
|
|
60
|
+
|
|
61
|
+
Most terminal Plex tools are built for administration, automation, or quick
|
|
62
|
+
status checks. Those are useful jobs, but they are not the same as browsing a
|
|
63
|
+
library, comparing options, and choosing something to watch.
|
|
64
|
+
|
|
65
|
+
Meanwhile, terminal applications got better. Tools like lazygit, gitui, btop,
|
|
66
|
+
and modern Textual apps raised the bar for what a TUI can be: rich layouts,
|
|
67
|
+
keyboard-first workflows, responsive interfaces, and even artwork are no longer
|
|
68
|
+
unusual.
|
|
69
|
+
|
|
70
|
+
plex-tui exists because browsing Plex and choosing something to watch deserves
|
|
71
|
+
that same kind of terminal-native experience.
|
|
72
|
+
|
|
73
|
+
## Project Status
|
|
74
|
+
|
|
75
|
+
plex-tui is still early, but already usable. Login, server selection, library
|
|
76
|
+
browsing, search, playlists, artwork, stream preferences, and playback are
|
|
77
|
+
working today. Expect rough edges, but expect progress too.
|
|
53
78
|
|
|
54
79
|
## Screenshots
|
|
55
80
|
|
|
56
|
-
###
|
|
81
|
+
### Movie grid
|
|
57
82
|
|
|
58
83
|

|
|
59
84
|
|
|
85
|
+
### TV show grid
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
89
|
+
### Collection cards
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+

|
|
94
|
+
|
|
60
95
|
### List view
|
|
61
96
|
|
|
62
97
|

|
|
63
98
|
|
|
99
|
+
## Features
|
|
100
|
+
|
|
101
|
+
- Plex PIN login and server selection.
|
|
102
|
+
- Paged library browsing with automatic loading near the end of loaded items.
|
|
103
|
+
- Library submenu entrypoints for all items, Recommended, Collections,
|
|
104
|
+
Playlists, and Categories. Library rows open all items by default; Space
|
|
105
|
+
opens the browse-mode menu, and Settings can swap the primary and alternate
|
|
106
|
+
actions.
|
|
107
|
+
- Current-library search and bounded global search.
|
|
108
|
+
- List view plus configurable-density grid view with terminal poster artwork,
|
|
109
|
+
missing-artwork placeholders, and intentional glyph cards for collections and
|
|
110
|
+
hubs.
|
|
111
|
+
- External subtitle support and direct playback for embedded PGS/VOBSUB tracks.
|
|
112
|
+
- Audio and subtitle pickers with saved language preferences.
|
|
113
|
+
- Separate play-from-start and resume actions with Plex progress reporting.
|
|
114
|
+
- Watched/unwatched toggling for selected playable Plex items.
|
|
115
|
+
- Continue Watching episode rows show their show, season, and episode context,
|
|
116
|
+
and items can be removed from the Continue Watching view.
|
|
117
|
+
- Playlist management for creating playlists from selected media, adding media
|
|
118
|
+
to existing playlists, and removing items while browsing a playlist.
|
|
119
|
+
- Movie editions appear as distinct variants when Plex reports multiple
|
|
120
|
+
editions for a selected movie.
|
|
121
|
+
- Settings screen for stream preferences, playback mode and transcode quality,
|
|
122
|
+
artwork modes, grid density, page size, auto-load threshold, grid artwork
|
|
123
|
+
prefetching, media view, library Enter behavior, and `mpv` window size.
|
|
124
|
+
- App diagnostics view for version, paths, `mpv`, Plex connection, artwork, and
|
|
125
|
+
browsing settings.
|
|
126
|
+
|
|
64
127
|
## Requirements
|
|
65
128
|
|
|
66
129
|
- Python 3.11 or newer
|
|
@@ -95,9 +158,9 @@ plex-tui
|
|
|
95
158
|
```
|
|
96
159
|
|
|
97
160
|
This is the recommended cross-platform install path. It keeps Python
|
|
98
|
-
dependencies isolated, but you still need to install `mpv` separately.
|
|
99
|
-
|
|
100
|
-
|
|
161
|
+
dependencies isolated, but you still need to install `mpv` separately. If
|
|
162
|
+
`pipx` is not installed, install it with your platform package manager first or
|
|
163
|
+
follow the pipx installation guide.
|
|
101
164
|
|
|
102
165
|
### Homebrew
|
|
103
166
|
|
|
@@ -108,14 +171,11 @@ brew install plex-tui
|
|
|
108
171
|
plex-tui --smoke
|
|
109
172
|
```
|
|
110
173
|
|
|
111
|
-
The Homebrew formula installs `mpv` automatically. Apple Silicon macOS
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
Homebrew 6 requires non-official taps to be trusted before Homebrew loads
|
|
117
|
-
formulae from them. `plex-tui` only depends on formulae from Homebrew/core, so no
|
|
118
|
-
additional tap trust is required for its dependencies.
|
|
174
|
+
The Homebrew formula installs `mpv` automatically. Apple Silicon macOS uses
|
|
175
|
+
prebuilt bottles when available, while Intel macOS still uses Homebrew's
|
|
176
|
+
source-build path. Homebrew 6 requires non-official taps to be trusted before
|
|
177
|
+
loading formulae from them; `plex-tui` only depends on formulae from
|
|
178
|
+
Homebrew/core, so no additional tap trust is required for dependencies.
|
|
119
179
|
|
|
120
180
|
### Arch Linux
|
|
121
181
|
|
|
@@ -131,7 +191,7 @@ example.
|
|
|
131
191
|
|
|
132
192
|
```bash
|
|
133
193
|
pipx install "git+https://github.com/so1omon563/plex-tui.git"
|
|
134
|
-
pipx install "git+https://github.com/so1omon563/plex-tui.git@v0.
|
|
194
|
+
pipx install "git+https://github.com/so1omon563/plex-tui.git@v0.4.4"
|
|
135
195
|
```
|
|
136
196
|
|
|
137
197
|
Use this path for testing `main` before a tagged/PyPI release.
|
|
@@ -199,22 +259,52 @@ See `config.example.toml` for optional settings.
|
|
|
199
259
|
## Playback
|
|
200
260
|
|
|
201
261
|
Playback is launched through `mpv`; plex-tui does not embed a video player.
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
262
|
+
|
|
263
|
+
Common playback actions:
|
|
264
|
+
|
|
265
|
+
| Key | Action |
|
|
266
|
+
| --- | --- |
|
|
267
|
+
| `p` | Play the selected item from the beginning |
|
|
268
|
+
| `r` | Resume from the saved Plex position when available |
|
|
269
|
+
| `x` | Stop the launched `mpv` process |
|
|
270
|
+
| `w` | Toggle watched / unwatched for the selected playable Plex item |
|
|
271
|
+
|
|
272
|
+
Playback behavior:
|
|
273
|
+
|
|
274
|
+
- Plex progress is updated in the background while playback is active.
|
|
275
|
+
- Saved audio/subtitle language preferences are applied when matching streams
|
|
276
|
+
are available.
|
|
277
|
+
- The details pane shows the effective playback choices for the selected item.
|
|
278
|
+
- Choosing an audio or subtitle track while playback is active also asks `mpv`
|
|
279
|
+
to switch the active track when the launched stream exposes a matching track.
|
|
280
|
+
|
|
281
|
+
Playback mode and window sizing:
|
|
282
|
+
|
|
283
|
+
- Playback mode defaults to Plex direct/default behavior.
|
|
284
|
+
- Settings can force Plex transcoding with Original, 1080p 8 Mbps, 720p
|
|
285
|
+
4 Mbps, or 480p 2 Mbps quality presets.
|
|
286
|
+
- The default `mpv` launch uses `--autofit=80%` so videos open at a comfortable
|
|
287
|
+
size on modern displays.
|
|
288
|
+
- Settings can override the window size with values such as `90%`,
|
|
289
|
+
`1280x720`, or `80%x80%`.
|
|
290
|
+
- If an older config has an exact `mpv_window_size = "1280x720"` override,
|
|
291
|
+
cycle the mpv window-size setting once to return to the Default preset.
|
|
292
|
+
|
|
293
|
+
## Playlist Management
|
|
294
|
+
|
|
295
|
+
Playlist actions are available from selected playable media and from inside
|
|
296
|
+
playlist views.
|
|
297
|
+
|
|
298
|
+
| Key | Where | Action |
|
|
299
|
+
| --- | --- | --- |
|
|
300
|
+
| `P` | Playable media item | Open the Add to Playlist picker |
|
|
301
|
+
| `enter` | Add to Playlist picker | Add the selected media to an existing playlist |
|
|
302
|
+
| `enter` | `New playlist...` row | Prompt for a name and create a playlist containing the selected media |
|
|
303
|
+
| `backspace` / `delete` | Playlist contents | Remove the selected item from that playlist |
|
|
304
|
+
|
|
305
|
+
The Add to Playlist picker lists `New playlist...` first, followed by existing
|
|
306
|
+
Plex playlists. Playlist browsing itself is available from a library's browse
|
|
307
|
+
modes: select a library, press `space`, then open `Playlists`.
|
|
218
308
|
|
|
219
309
|
## Key Bindings
|
|
220
310
|
|
|
@@ -237,52 +327,45 @@ matching track.
|
|
|
237
327
|
| `p` | Play selected item from the beginning |
|
|
238
328
|
| `r` | Resume selected item from the saved Plex position |
|
|
239
329
|
| `w` | Mark selected item watched / unwatched |
|
|
240
|
-
| `
|
|
330
|
+
| `P` | Add selected playable item to a playlist |
|
|
331
|
+
| `backspace` / `delete` | Remove selected item from Continue Watching or a playlist |
|
|
241
332
|
| `a` / `s` | Choose audio / subtitle preference |
|
|
242
333
|
| `A` / `S` | Clear audio preference / cycle subtitle mode |
|
|
243
334
|
| `x` | Stop launched `mpv` |
|
|
244
335
|
|
|
245
|
-
## Features
|
|
246
|
-
|
|
247
|
-
- Plex PIN login and server selection.
|
|
248
|
-
- Paged library browsing with automatic loading near the end of loaded items.
|
|
249
|
-
- Library submenu entrypoints for all items, Recommended, Collections,
|
|
250
|
-
Playlists, and Categories. Library rows open all items by default; Space
|
|
251
|
-
opens the browse-mode menu, and Settings can swap the primary and alternate
|
|
252
|
-
actions.
|
|
253
|
-
- Current-library search and bounded global search.
|
|
254
|
-
- List view plus configurable-density grid view with terminal poster artwork.
|
|
255
|
-
- External subtitle support and direct playback for embedded PGS/VOBSUB tracks.
|
|
256
|
-
- Audio and subtitle pickers with saved language preferences.
|
|
257
|
-
- Separate play-from-start and resume actions with Plex progress reporting.
|
|
258
|
-
- Watched/unwatched toggling for selected playable Plex items.
|
|
259
|
-
- Continue Watching episode rows show their show, season, and episode context,
|
|
260
|
-
and items can be removed from the Continue Watching view.
|
|
261
|
-
- Movie editions appear as distinct variants when Plex reports multiple
|
|
262
|
-
editions for a selected movie.
|
|
263
|
-
- Settings screen for stream preferences, playback mode and transcode quality,
|
|
264
|
-
artwork modes, grid density, page size, auto-load threshold, grid artwork
|
|
265
|
-
prefetching, media view, library Enter behavior, and `mpv` window size.
|
|
266
|
-
- App diagnostics view for version, paths, `mpv`, Plex connection, artwork, and
|
|
267
|
-
browsing settings.
|
|
268
|
-
|
|
269
336
|
## Artwork
|
|
270
337
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
338
|
+
plex-tui has two artwork paths: poster rendering for real media and glyph cards
|
|
339
|
+
for Plex objects that are not posters.
|
|
340
|
+
|
|
341
|
+
Poster rendering:
|
|
342
|
+
|
|
343
|
+
- Default mode renders portable colored block art, so it works in ordinary
|
|
344
|
+
terminals without native image support.
|
|
345
|
+
- In Kitty and Ghostty, set `artwork_renderer` to `auto` to render native
|
|
346
|
+
terminal images through Kitty Unicode placeholders.
|
|
347
|
+
- Set `artwork_renderer` to `kitty` to explicitly try the Kitty graphics
|
|
348
|
+
protocol in other compatible terminals.
|
|
349
|
+
- Outside detected Kitty-compatible terminals, `auto` falls back to block art.
|
|
350
|
+
- `plex-tui --diagnostics` reports the active renderer status.
|
|
351
|
+
|
|
352
|
+
Collection-style cards:
|
|
353
|
+
|
|
354
|
+
- Collections, playlists, categories, hubs, and query shelves use geometric
|
|
355
|
+
glyph artwork instead of pretending to be missing posters.
|
|
356
|
+
- Rows made entirely of those cards use roomier navigation-grid spacing.
|
|
357
|
+
- See `docs/collection-artwork-design.md` for the design notes behind that
|
|
358
|
+
visual language.
|
|
359
|
+
|
|
360
|
+
Grid behavior and cache:
|
|
361
|
+
|
|
362
|
+
- Grid view fetches artwork for the visible page immediately.
|
|
363
|
+
- By default, it prepares three pages ahead in the background.
|
|
364
|
+
- `grid_prefetch_pages` can be set from `0` to `5`; use `0` to fetch only the
|
|
365
|
+
visible page on slower systems.
|
|
366
|
+
- Compact, comfortable, and large density modes adjust card and poster sizing.
|
|
367
|
+
- The artwork cache is bounded and stored in the app cache directory shown in
|
|
368
|
+
Settings.
|
|
286
369
|
|
|
287
370
|
## Diagnostics
|
|
288
371
|
|