plex-tui 0.2.0__tar.gz → 0.2.1__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.2.1/.github/workflows/aur.yml +49 -0
- plex_tui-0.2.1/.github/workflows/ci.yml +33 -0
- plex_tui-0.2.1/.github/workflows/publish-pypi.yml +45 -0
- plex_tui-0.2.1/.github/workflows/publish-testpypi.yml +38 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/.gitignore +1 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/AGENTS.md +5 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/CHANGELOG.md +24 -0
- plex_tui-0.2.1/PACKAGING.md +102 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/PKG-INFO +73 -18
- {plex_tui-0.2.0 → plex_tui-0.2.1}/README.md +72 -17
- plex_tui-0.2.1/RELEASE.md +126 -0
- plex_tui-0.2.1/ROADMAP.md +32 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/config.example.toml +3 -0
- plex_tui-0.2.1/packaging/aur/.SRCINFO +23 -0
- plex_tui-0.2.1/packaging/aur/PKGBUILD +43 -0
- plex_tui-0.2.1/packaging/aur/README.md +41 -0
- plex_tui-0.2.1/packaging/homebrew/README.md +33 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/pyproject.toml +1 -1
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/__init__.py +1 -1
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/app.py +820 -105
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/artwork.py +26 -8
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/auth.py +1 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/config.py +14 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_app_helpers.py +155 -5
- plex_tui-0.2.1/tests/test_app_navigation.py +1434 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_artwork.py +22 -1
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_config.py +15 -1
- plex_tui-0.2.0/PACKAGING.md +0 -108
- plex_tui-0.2.0/RELEASE.md +0 -67
- plex_tui-0.2.0/ROADMAP.md +0 -34
- plex_tui-0.2.0/tests/test_app_navigation.py +0 -609
- {plex_tui-0.2.0 → plex_tui-0.2.1}/LICENSE +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/Makefile +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/docs/assets/grid-view.png +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/docs/assets/list-view.png +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/__main__.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/models.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/player.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/plex_service.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/src/plextui/smoke.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_auth.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_cli.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_player.py +0 -0
- {plex_tui-0.2.0 → plex_tui-0.2.1}/tests/test_plex_service.py +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: AUR Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
paths:
|
|
7
|
+
- ".github/workflows/aur.yml"
|
|
8
|
+
- "packaging/aur/**"
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: ["main"]
|
|
11
|
+
paths:
|
|
12
|
+
- ".github/workflows/aur.yml"
|
|
13
|
+
- "packaging/aur/**"
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
makepkg:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
container: archlinux:base-devel
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Install runner dependencies
|
|
23
|
+
run: |
|
|
24
|
+
pacman -Syu --noconfirm git namcap sudo
|
|
25
|
+
|
|
26
|
+
- name: Check out repository
|
|
27
|
+
uses: actions/checkout@v4
|
|
28
|
+
|
|
29
|
+
- name: Create build user
|
|
30
|
+
run: |
|
|
31
|
+
useradd --create-home --shell /bin/bash builder
|
|
32
|
+
echo "builder ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/builder
|
|
33
|
+
chown -R builder:builder "$GITHUB_WORKSPACE"
|
|
34
|
+
|
|
35
|
+
- name: Build and check package
|
|
36
|
+
working-directory: packaging/aur
|
|
37
|
+
run: |
|
|
38
|
+
sudo -u builder makepkg --clean --syncdeps --noconfirm --check
|
|
39
|
+
|
|
40
|
+
- name: Generate .SRCINFO
|
|
41
|
+
working-directory: packaging/aur
|
|
42
|
+
run: |
|
|
43
|
+
sudo -u builder makepkg --printsrcinfo > .SRCINFO.generated
|
|
44
|
+
diff -u .SRCINFO .SRCINFO.generated
|
|
45
|
+
|
|
46
|
+
- name: Run namcap
|
|
47
|
+
working-directory: packaging/aur
|
|
48
|
+
run: |
|
|
49
|
+
namcap PKGBUILD ./*.pkg.tar.*
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
check:
|
|
11
|
+
name: Python ${{ matrix.python-version }}
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.11", "3.13"]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: Check out repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Set up Python
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: ${{ matrix.python-version }}
|
|
26
|
+
|
|
27
|
+
- name: Install package and test dependencies
|
|
28
|
+
run: |
|
|
29
|
+
python -m pip install --upgrade pip
|
|
30
|
+
python -m pip install -e ".[dev]"
|
|
31
|
+
|
|
32
|
+
- name: Run checks
|
|
33
|
+
run: make PYTHON=python check
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
ref:
|
|
7
|
+
description: "Git ref to publish, such as v0.2.0"
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
release:
|
|
11
|
+
types: ["published"]
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
publish:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
environment: pypi
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Check out repository
|
|
24
|
+
uses: actions/checkout@v4
|
|
25
|
+
with:
|
|
26
|
+
ref: ${{ github.event.release.tag_name || inputs.ref }}
|
|
27
|
+
|
|
28
|
+
- name: Set up Python
|
|
29
|
+
uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.13"
|
|
32
|
+
|
|
33
|
+
- name: Install build tools
|
|
34
|
+
run: |
|
|
35
|
+
python -m pip install --upgrade pip
|
|
36
|
+
python -m pip install build twine
|
|
37
|
+
|
|
38
|
+
- name: Build package
|
|
39
|
+
run: python -m build
|
|
40
|
+
|
|
41
|
+
- name: Check package metadata
|
|
42
|
+
run: python -m twine check dist/*
|
|
43
|
+
|
|
44
|
+
- name: Publish package
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Publish to TestPyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: read
|
|
8
|
+
id-token: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
environment: testpypi
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Check out repository
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: "3.13"
|
|
23
|
+
|
|
24
|
+
- name: Install build tools
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
python -m pip install build twine
|
|
28
|
+
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: python -m build
|
|
31
|
+
|
|
32
|
+
- name: Check package metadata
|
|
33
|
+
run: python -m twine check dist/*
|
|
34
|
+
|
|
35
|
+
- name: Publish package to TestPyPI
|
|
36
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
37
|
+
with:
|
|
38
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -11,6 +11,9 @@ through `mpv`.
|
|
|
11
11
|
- `player.py`: `mpv` launch, stream selection, and playback diagnostics.
|
|
12
12
|
- `config.py`, `auth.py`, `artwork.py`, `models.py`: supporting modules.
|
|
13
13
|
- `tests/`: pytest suite, split by app helpers/navigation and service modules.
|
|
14
|
+
- `.github/workflows/`: CI plus PyPI/TestPyPI/AUR validation workflows.
|
|
15
|
+
- `packaging/`: Homebrew and AUR maintenance notes; `packaging/aur/` contains
|
|
16
|
+
the source copy of `PKGBUILD` and `.SRCINFO`.
|
|
14
17
|
- `README.md`, `PACKAGING.md`, `RELEASE.md`, `ROADMAP.md`: user and release docs.
|
|
15
18
|
- `config.example.toml`: example user configuration.
|
|
16
19
|
|
|
@@ -59,6 +62,8 @@ make smoke
|
|
|
59
62
|
```
|
|
60
63
|
|
|
61
64
|
For packaging or metadata changes, also run `make check-package` or `make check`.
|
|
65
|
+
For AUR package changes, run the `AUR Package` workflow or validate with
|
|
66
|
+
`makepkg` on Arch.
|
|
62
67
|
|
|
63
68
|
## Commit & Pull Request Guidelines
|
|
64
69
|
|
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.2.1 - 2026-06-11
|
|
6
|
+
|
|
7
|
+
- Added GitHub Actions CI and PyPI Trusted Publishing workflow scaffolding.
|
|
8
|
+
- Added a manual TestPyPI Trusted Publishing workflow.
|
|
9
|
+
- Published `plex-tui` to PyPI and updated install documentation.
|
|
10
|
+
- Published the Homebrew tap and updated install documentation.
|
|
11
|
+
- Added Arch package validation workflow scaffolding.
|
|
12
|
+
- Published the Arch AUR package and updated install documentation.
|
|
13
|
+
- Added Arch AUR packaging files and Homebrew packaging notes.
|
|
14
|
+
- Refreshed documentation for current install, packaging, and release workflows.
|
|
15
|
+
- Added a Settings diagnostics action for recent `debug.log` output and playback error details with log context.
|
|
16
|
+
- Clarified Settings rows with action-type tags and per-row detail-pane guidance.
|
|
17
|
+
- Improved grid browsing smoothness by debouncing detail reloads, throttling artwork prefetch, and avoiding cached-artwork rendering during selection redraws.
|
|
18
|
+
- Made grid detail reloads idle-aware so rapid selection movement no longer starts stale Plex reload workers.
|
|
19
|
+
- Made grid artwork appear progressively as each card renders and added stronger focused-pane styling.
|
|
20
|
+
- Added an explicit `[FOCUS]` marker to the active pane title.
|
|
21
|
+
- Kept focus markers in sync when using Tab navigation and refocused the visible browser after list/grid view changes.
|
|
22
|
+
- Made Tab navigation cycle explicitly through Libraries, Media, and Details panes.
|
|
23
|
+
- Added a short idle debounce for list detail reloads to reduce detail-pane churn during fast row movement.
|
|
24
|
+
- Increased the list detail debounce to further reduce repeated artwork loads during row navigation.
|
|
25
|
+
- Split detail text refresh from detail artwork loading so artwork waits for a longer stable selection window.
|
|
26
|
+
|
|
3
27
|
## 0.2.0 - 2026-06-11
|
|
4
28
|
|
|
5
29
|
- Improved README structure and expanded the post-0.1.0 roadmap.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Packaging
|
|
2
|
+
|
|
3
|
+
plex-tui is distributed through PyPI, a Homebrew tap, and the Arch AUR. The
|
|
4
|
+
source repository remains the canonical place for versioning, release notes,
|
|
5
|
+
and validation.
|
|
6
|
+
|
|
7
|
+
## Supported Channels
|
|
8
|
+
|
|
9
|
+
### PyPI
|
|
10
|
+
|
|
11
|
+
Recommended cross-platform install:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pipx install plex-tui
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
PyPI publishing uses GitHub Actions Trusted Publishing:
|
|
18
|
+
|
|
19
|
+
- Workflow: `.github/workflows/publish-pypi.yml`
|
|
20
|
+
- PyPI environment: `pypi`
|
|
21
|
+
- Trigger: GitHub Release publication, or manual workflow dispatch with a ref
|
|
22
|
+
|
|
23
|
+
TestPyPI uses a separate manual workflow:
|
|
24
|
+
|
|
25
|
+
- Workflow: `.github/workflows/publish-testpypi.yml`
|
|
26
|
+
- TestPyPI environment: `testpypi`
|
|
27
|
+
|
|
28
|
+
Install tests from TestPyPI need PyPI as a dependency fallback:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python -m pip install \
|
|
32
|
+
--index-url https://test.pypi.org/simple/ \
|
|
33
|
+
--extra-index-url https://pypi.org/simple/ \
|
|
34
|
+
plex-tui
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Homebrew
|
|
38
|
+
|
|
39
|
+
Tap repository:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
https://github.com/so1omon563/homebrew-plex-tui
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
User install:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
brew tap so1omon563/plex-tui
|
|
49
|
+
brew install plex-tui
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The formula depends on `mpv` and `python@3.13`, then installs the Python app in
|
|
53
|
+
a Homebrew-managed virtualenv. The first install can take several minutes
|
|
54
|
+
because native Python resources such as `pillow` are built from source.
|
|
55
|
+
|
|
56
|
+
Validation commands:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
brew test so1omon563/plex-tui/plex-tui
|
|
60
|
+
brew audit --strict --online so1omon563/plex-tui/plex-tui
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Arch AUR
|
|
64
|
+
|
|
65
|
+
AUR package:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
https://aur.archlinux.org/packages/plex-tui
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
User install:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
paru -S plex-tui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The source copy for AUR metadata lives in `packaging/aur/`. The package uses
|
|
78
|
+
Arch system dependencies, including `mpv`, `python-textual`, `python-pillow`,
|
|
79
|
+
`python-plexapi`, `python-platformdirs`, and `python-rich`.
|
|
80
|
+
|
|
81
|
+
Validation is handled by `.github/workflows/aur.yml`, which runs inside
|
|
82
|
+
`archlinux:base-devel` and checks:
|
|
83
|
+
|
|
84
|
+
- `makepkg --clean --syncdeps --noconfirm --check`
|
|
85
|
+
- `.SRCINFO` is in sync with `PKGBUILD`
|
|
86
|
+
- `namcap PKGBUILD ./*.pkg.tar.*`
|
|
87
|
+
|
|
88
|
+
## Release Maintenance
|
|
89
|
+
|
|
90
|
+
For each new app release:
|
|
91
|
+
|
|
92
|
+
1. Publish and validate PyPI.
|
|
93
|
+
2. Update the Homebrew tap formula URL/hash and Python resources.
|
|
94
|
+
3. Update `packaging/aur/PKGBUILD` and `packaging/aur/.SRCINFO`.
|
|
95
|
+
4. Run packaging validation workflows.
|
|
96
|
+
5. Push the AUR package repo update after the workflow passes.
|
|
97
|
+
|
|
98
|
+
## Known Follow-Up
|
|
99
|
+
|
|
100
|
+
- Automate Homebrew tap updates after PyPI publishing.
|
|
101
|
+
- Investigate faster Homebrew installs without compromising formula quality.
|
|
102
|
+
- Consider standalone artifacts only after the app behavior stabilizes.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plex-tui
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
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
|
|
@@ -39,9 +39,9 @@ Description-Content-Type: text/markdown
|
|
|
39
39
|
A standalone Python/Textual terminal UI for browsing Plex and launching playback
|
|
40
40
|
through `mpv`.
|
|
41
41
|
|
|
42
|
-
plex-tui is
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
plex-tui is an early release. It supports Plex login, server selection, paged
|
|
43
|
+
library browsing, search, list/grid views, stream preferences, terminal poster
|
|
44
|
+
artwork, and playback progress reporting.
|
|
45
45
|
|
|
46
46
|
## Screenshots
|
|
47
47
|
|
|
@@ -59,7 +59,8 @@ terminal poster artwork, and playback progress reporting.
|
|
|
59
59
|
- `mpv` available on `PATH`
|
|
60
60
|
- A Plex account/server
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
When installing with PyPI or from GitHub, install `mpv` with your platform
|
|
63
|
+
package manager:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
66
|
# macOS
|
|
@@ -75,25 +76,52 @@ sudo dnf install mpv
|
|
|
75
76
|
sudo pacman -S mpv
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
##
|
|
79
|
+
## Installation
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
the GitHub Releases page.
|
|
82
|
-
|
|
83
|
-
The recommended install path for the latest `main` branch is `pipx`:
|
|
81
|
+
### PyPI
|
|
84
82
|
|
|
85
83
|
```bash
|
|
86
|
-
pipx install
|
|
84
|
+
pipx install plex-tui
|
|
87
85
|
plex-tui --smoke
|
|
88
86
|
plex-tui
|
|
89
87
|
```
|
|
90
88
|
|
|
91
|
-
|
|
89
|
+
This is the recommended cross-platform install path. It keeps Python
|
|
90
|
+
dependencies isolated, but you still need to install `mpv` separately.
|
|
91
|
+
If `pipx` is not installed, install it with your platform package manager first
|
|
92
|
+
or follow the pipx installation guide.
|
|
93
|
+
|
|
94
|
+
### Homebrew
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
brew tap so1omon563/plex-tui
|
|
98
|
+
brew install plex-tui
|
|
99
|
+
plex-tui --smoke
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The Homebrew formula installs `mpv` automatically. The first install can take
|
|
103
|
+
several minutes because native Python dependencies such as `pillow` are built
|
|
104
|
+
from source.
|
|
105
|
+
|
|
106
|
+
### Arch Linux
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
paru -S plex-tui
|
|
110
|
+
plex-tui --smoke
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The AUR package depends on `mpv`. Any AUR helper can be used; `paru` is only an
|
|
114
|
+
example.
|
|
115
|
+
|
|
116
|
+
### GitHub
|
|
92
117
|
|
|
93
118
|
```bash
|
|
94
|
-
pipx install "git+https://github.com/so1omon563/plex-tui.git
|
|
119
|
+
pipx install "git+https://github.com/so1omon563/plex-tui.git"
|
|
120
|
+
pipx install "git+https://github.com/so1omon563/plex-tui.git@v0.2.1"
|
|
95
121
|
```
|
|
96
122
|
|
|
123
|
+
Use this path for testing `main` before a tagged/PyPI release.
|
|
124
|
+
|
|
97
125
|
Useful CLI checks:
|
|
98
126
|
|
|
99
127
|
```bash
|
|
@@ -120,6 +148,9 @@ On first run, plex-tui starts a Plex browser login and asks which server
|
|
|
120
148
|
connection to save. If a browser cannot be opened, use the login URL shown in
|
|
121
149
|
the terminal.
|
|
122
150
|
|
|
151
|
+
The login flow writes a config file with the selected server URL and token. Use
|
|
152
|
+
the Settings screen or `plex-tui --config-path` to find the active file.
|
|
153
|
+
|
|
123
154
|
You can also configure a server manually. macOS config path:
|
|
124
155
|
|
|
125
156
|
```bash
|
|
@@ -150,6 +181,13 @@ export PLEX_TUI_TOKEN="your-plex-token"
|
|
|
150
181
|
|
|
151
182
|
See `config.example.toml` for optional settings.
|
|
152
183
|
|
|
184
|
+
## Playback
|
|
185
|
+
|
|
186
|
+
Playback is launched through `mpv`; plex-tui does not embed a video player.
|
|
187
|
+
While playback is active, Plex progress is updated in the background. Saved
|
|
188
|
+
audio/subtitle language preferences are applied when matching streams are
|
|
189
|
+
available, and the details pane shows the effective playback choices.
|
|
190
|
+
|
|
153
191
|
## Key Bindings
|
|
154
192
|
|
|
155
193
|
| Key | Action |
|
|
@@ -182,7 +220,8 @@ See `config.example.toml` for optional settings.
|
|
|
182
220
|
- Audio and subtitle pickers with saved language preferences.
|
|
183
221
|
- Plex resume support and playback progress reporting.
|
|
184
222
|
- Settings screen for stream preferences, artwork modes, grid density, page
|
|
185
|
-
size, auto-load threshold, media view, and `mpv`
|
|
223
|
+
size, auto-load threshold, grid artwork prefetching, media view, and `mpv`
|
|
224
|
+
window size.
|
|
186
225
|
|
|
187
226
|
## Artwork
|
|
188
227
|
|
|
@@ -191,22 +230,38 @@ terminals without Kitty, iTerm2, or Sixel support. Native terminal image output
|
|
|
191
230
|
is disabled for now because Kitty protocol rendering conflicts with Textual's
|
|
192
231
|
screen renderer in practice.
|
|
193
232
|
|
|
194
|
-
Grid view prefetches artwork for the visible page immediately and
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
233
|
+
Grid view prefetches artwork for the visible page immediately and, by default,
|
|
234
|
+
prepares three pages ahead in the background. `grid_prefetch_pages` can be set
|
|
235
|
+
from `0` to `5`; use `0` to fetch only the visible page on slower systems.
|
|
236
|
+
Compact, comfortable, and large density modes adjust card and poster sizing. The
|
|
237
|
+
artwork cache is bounded and stored in the app cache directory shown in
|
|
238
|
+
Settings.
|
|
198
239
|
|
|
199
240
|
## Diagnostics
|
|
200
241
|
|
|
201
242
|
Playback diagnostics are written to `debug.log` in the app config directory.
|
|
202
243
|
Tokens are redacted from logged `mpv` arguments.
|
|
203
244
|
|
|
245
|
+
Useful paths:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
plex-tui --config-path
|
|
249
|
+
plex-tui --debug-log-path
|
|
250
|
+
```
|
|
251
|
+
|
|
204
252
|
Enable browsing performance timings before launch:
|
|
205
253
|
|
|
206
254
|
```bash
|
|
207
255
|
PLEX_TUI_PERF_LOG=1 plex-tui
|
|
208
256
|
```
|
|
209
257
|
|
|
258
|
+
Verbose grid artwork internals are quieter by default. Include them only when
|
|
259
|
+
debugging poster loading:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
PLEX_TUI_PERF_LOG=1 PLEX_TUI_ARTWORK_LOG=1 plex-tui
|
|
263
|
+
```
|
|
264
|
+
|
|
210
265
|
## Development
|
|
211
266
|
|
|
212
267
|
Common commands:
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
A standalone Python/Textual terminal UI for browsing Plex and launching playback
|
|
4
4
|
through `mpv`.
|
|
5
5
|
|
|
6
|
-
plex-tui is
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
plex-tui is an early release. It supports Plex login, server selection, paged
|
|
7
|
+
library browsing, search, list/grid views, stream preferences, terminal poster
|
|
8
|
+
artwork, and playback progress reporting.
|
|
9
9
|
|
|
10
10
|
## Screenshots
|
|
11
11
|
|
|
@@ -23,7 +23,8 @@ terminal poster artwork, and playback progress reporting.
|
|
|
23
23
|
- `mpv` available on `PATH`
|
|
24
24
|
- A Plex account/server
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
When installing with PyPI or from GitHub, install `mpv` with your platform
|
|
27
|
+
package manager:
|
|
27
28
|
|
|
28
29
|
```bash
|
|
29
30
|
# macOS
|
|
@@ -39,25 +40,52 @@ sudo dnf install mpv
|
|
|
39
40
|
sudo pacman -S mpv
|
|
40
41
|
```
|
|
41
42
|
|
|
42
|
-
##
|
|
43
|
+
## Installation
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
the GitHub Releases page.
|
|
46
|
-
|
|
47
|
-
The recommended install path for the latest `main` branch is `pipx`:
|
|
45
|
+
### PyPI
|
|
48
46
|
|
|
49
47
|
```bash
|
|
50
|
-
pipx install
|
|
48
|
+
pipx install plex-tui
|
|
51
49
|
plex-tui --smoke
|
|
52
50
|
plex-tui
|
|
53
51
|
```
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
This is the recommended cross-platform install path. It keeps Python
|
|
54
|
+
dependencies isolated, but you still need to install `mpv` separately.
|
|
55
|
+
If `pipx` is not installed, install it with your platform package manager first
|
|
56
|
+
or follow the pipx installation guide.
|
|
57
|
+
|
|
58
|
+
### Homebrew
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
brew tap so1omon563/plex-tui
|
|
62
|
+
brew install plex-tui
|
|
63
|
+
plex-tui --smoke
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The Homebrew formula installs `mpv` automatically. The first install can take
|
|
67
|
+
several minutes because native Python dependencies such as `pillow` are built
|
|
68
|
+
from source.
|
|
69
|
+
|
|
70
|
+
### Arch Linux
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
paru -S plex-tui
|
|
74
|
+
plex-tui --smoke
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The AUR package depends on `mpv`. Any AUR helper can be used; `paru` is only an
|
|
78
|
+
example.
|
|
79
|
+
|
|
80
|
+
### GitHub
|
|
56
81
|
|
|
57
82
|
```bash
|
|
58
|
-
pipx install "git+https://github.com/so1omon563/plex-tui.git
|
|
83
|
+
pipx install "git+https://github.com/so1omon563/plex-tui.git"
|
|
84
|
+
pipx install "git+https://github.com/so1omon563/plex-tui.git@v0.2.1"
|
|
59
85
|
```
|
|
60
86
|
|
|
87
|
+
Use this path for testing `main` before a tagged/PyPI release.
|
|
88
|
+
|
|
61
89
|
Useful CLI checks:
|
|
62
90
|
|
|
63
91
|
```bash
|
|
@@ -84,6 +112,9 @@ On first run, plex-tui starts a Plex browser login and asks which server
|
|
|
84
112
|
connection to save. If a browser cannot be opened, use the login URL shown in
|
|
85
113
|
the terminal.
|
|
86
114
|
|
|
115
|
+
The login flow writes a config file with the selected server URL and token. Use
|
|
116
|
+
the Settings screen or `plex-tui --config-path` to find the active file.
|
|
117
|
+
|
|
87
118
|
You can also configure a server manually. macOS config path:
|
|
88
119
|
|
|
89
120
|
```bash
|
|
@@ -114,6 +145,13 @@ export PLEX_TUI_TOKEN="your-plex-token"
|
|
|
114
145
|
|
|
115
146
|
See `config.example.toml` for optional settings.
|
|
116
147
|
|
|
148
|
+
## Playback
|
|
149
|
+
|
|
150
|
+
Playback is launched through `mpv`; plex-tui does not embed a video player.
|
|
151
|
+
While playback is active, Plex progress is updated in the background. Saved
|
|
152
|
+
audio/subtitle language preferences are applied when matching streams are
|
|
153
|
+
available, and the details pane shows the effective playback choices.
|
|
154
|
+
|
|
117
155
|
## Key Bindings
|
|
118
156
|
|
|
119
157
|
| Key | Action |
|
|
@@ -146,7 +184,8 @@ See `config.example.toml` for optional settings.
|
|
|
146
184
|
- Audio and subtitle pickers with saved language preferences.
|
|
147
185
|
- Plex resume support and playback progress reporting.
|
|
148
186
|
- Settings screen for stream preferences, artwork modes, grid density, page
|
|
149
|
-
size, auto-load threshold, media view, and `mpv`
|
|
187
|
+
size, auto-load threshold, grid artwork prefetching, media view, and `mpv`
|
|
188
|
+
window size.
|
|
150
189
|
|
|
151
190
|
## Artwork
|
|
152
191
|
|
|
@@ -155,22 +194,38 @@ terminals without Kitty, iTerm2, or Sixel support. Native terminal image output
|
|
|
155
194
|
is disabled for now because Kitty protocol rendering conflicts with Textual's
|
|
156
195
|
screen renderer in practice.
|
|
157
196
|
|
|
158
|
-
Grid view prefetches artwork for the visible page immediately and
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
197
|
+
Grid view prefetches artwork for the visible page immediately and, by default,
|
|
198
|
+
prepares three pages ahead in the background. `grid_prefetch_pages` can be set
|
|
199
|
+
from `0` to `5`; use `0` to fetch only the visible page on slower systems.
|
|
200
|
+
Compact, comfortable, and large density modes adjust card and poster sizing. The
|
|
201
|
+
artwork cache is bounded and stored in the app cache directory shown in
|
|
202
|
+
Settings.
|
|
162
203
|
|
|
163
204
|
## Diagnostics
|
|
164
205
|
|
|
165
206
|
Playback diagnostics are written to `debug.log` in the app config directory.
|
|
166
207
|
Tokens are redacted from logged `mpv` arguments.
|
|
167
208
|
|
|
209
|
+
Useful paths:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
plex-tui --config-path
|
|
213
|
+
plex-tui --debug-log-path
|
|
214
|
+
```
|
|
215
|
+
|
|
168
216
|
Enable browsing performance timings before launch:
|
|
169
217
|
|
|
170
218
|
```bash
|
|
171
219
|
PLEX_TUI_PERF_LOG=1 plex-tui
|
|
172
220
|
```
|
|
173
221
|
|
|
222
|
+
Verbose grid artwork internals are quieter by default. Include them only when
|
|
223
|
+
debugging poster loading:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
PLEX_TUI_PERF_LOG=1 PLEX_TUI_ARTWORK_LOG=1 plex-tui
|
|
227
|
+
```
|
|
228
|
+
|
|
174
229
|
## Development
|
|
175
230
|
|
|
176
231
|
Common commands:
|