Install
Inside DeepSeek Harness, with dsh-market
dsh plugin --profile web add dshmarket
Or from the command line
dsh plugin --profile web add dsh-reel
Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.
README
Overview
dsh-reel adds an all-in-one media library and audio-visual streaming experience to dsh Web (requires dsh v0.2.0-rc.1 or later). Without spawning a secondary server process or opening new ports, simply configure local disk folders to instantly browse high-performance image galleries and stream video collections straight from your browser.
Quick access URL:
http://127.0.0.1:3080/reel
Key Features
- Zero-Overhead Embedded Architecture: Shares the same port and origin with dsh Web. Injects only a single Cordis composition row with read-only routes under
/reel—no daemon process, no compilation/bundling required. - Strict Read-Only Sandbox: Only inspects and reads files inside explicitly allowed root directories. Completely path-traversal proof.
- Multi-Directory Aggregation & Multi-Dimensional Views:
- Top-level virtual "Library" aggregates all mounted directories with lazy subtree loading.
- Three viewing scopes (cycle with G): Current folder only, All (recursively flattened), or Grouped (collapsible folder hierarchy).
- Responsive Grid layout (Small / Medium / Large tile sizes) and compact List view.
- Instant HTTP Range Streaming: Native chunked streaming via HTTP Range requests; drag the progress slider and start playback immediately without waiting for buffer downloads.
- Real-Time On-The-Fly Remuxing: Legacy or browser-incompatible containers (AVI, WMV, FLV, RMVB, etc.) are remuxed in memory to fragmented MP4 via FFmpeg on the fly, zero temporary disk space used. Seeking simply initiates a fresh stream from the target timestamp.
- Hover Timeline Preview & Frame Probing: Hover over the scrubber bar to view miniature thumbnail previews and accurate timestamps. Ships with built-in FFmpeg & FFprobe to auto-extract duration, resolution, and poster cards.
- Immersive Dynamic Live Wallpaper:
- Set any video or photo as a full-page live wallpaper with a single click (videos loop silently, auto-pause when unfocused to conserve resources).
- Frosted-glass translucent UI styling brings a fluid, stunning visual ambience.
- Reels-Style Swipe Navigation & Mobile Optimized:
- Touch-optimized responsive UI with smooth vertical swipe gestures to jump to next/previous videos (similar to TikTok & Instagram Reels).
- Continuous playlist playback, shuffle mode, playback position memory, 2× hold-to-speed-up, auto-loading subtitles, and one-click frame snapshots.
- Native dsh UI Settings Card: Integrated directly into the dsh Settings page; edits are applied hot without restarting the service.
Screenshots
Immersive Live Wallpaper Mode
Turn your favorite media into a vibrant dynamic background while keeping the interface translucent:
Feature-Rich Media Player
Page-fullscreen player with hover scrubbing thumbnails, media inspector, playback speeds, screenshot exporter, and loop modes:
Vertical Videos & Mobile Swipe Experience
Vertical videos are centered with ambient lighting or fullscreened for an intuitive Reels-like experience:
Responsive Mobile Gallery
Streamlined single-column grid view and touch-friendly controls:
Native dsh Settings Integration
Configure roots, cache paths, and global wallpapers straight from the graphical settings panel:
Installation
Prerequisites
- dsh: Minimum version v0.2.0-rc.1 or later (the settings client contract changed in 0.2.0; earlier versions are no longer compatible)
- Node.js:
>= 20
Standard Install
Run the following command inside your dsh installation:
dsh plugin --profile web add dsh-reel
Restart dsh web, and open in your browser:
http://127.0.0.1:3080/reel
Install Pre-release / Local Development Link
# Install latest build directly from GitHub
dsh plugin --profile web add "github:lsjspl/dsh-reel"
# Soft-link local source code for live development
dsh plugin --profile web add "link:C:\path\to\dsh-reel"
Uninstallation
dsh plugin --profile web remove dsh-reel
Configuration
Settings live under the reel namespace in your profile's cordis.patch.yml — the same layer the settings panel writes.
Method 1: Graphical Settings UI (Recommended)
Navigate to the sidebar's Plugins panel → Installed → dsh-reel; the configuration sits just below the package description:
- Media Directories: Click "+ Add Directory" to mount local storage paths (e.g.
D:\Photos,E:\Videos). - Cache Directory: Choose where poster frames and hover thumbnails are cached.
- Fullscreen Wallpaper: Define default wallpaper image or video.
These three fields are hot: saving them takes effect on the running service, with no dsh web restart.
[!NOTE] The configuration lives on this bundle's page in the Plugins panel, not under Settings → Built-in plugins. The latter is a read-only inventory and offers no configuration.
Method 2: YAML Configuration / cordis.patch.yml
Configure in cordis.patch.yml:
- id: reel
config:
roots:
- D:\Photos
- E:\Movies
# cacheDir: 'D:\dsh-cache' # Thumbnail cache dir; defaults to OS tempdir
# wallpaper: 'D:\Photos\wallpaper.jpg' # Default wallpaper path
# ffmpegPath: 'D:\ffmpeg\bin\ffmpeg.exe' # Custom ffmpeg binary path
# requireTrustedRequest: true # LAN trust fence; false permits non-loopback clients
# maxScanEntries: 20000 # Max scanned items (50 ~ 200000)
[!NOTE]
roots,cacheDir, andwallpaperapply hot.ffmpegPath,requireTrustedRequest, andmaxScanEntriessteer process-level decisions, so changing them requires adsh webrestart.
[!NOTE]
- If
rootsis empty, fallback priority is:REEL_ROOTSenvironment variable (semicolon-separated) followed by$DSH_HOME/media.- Keep
cacheDiroutside of your media roots to prevent cache files from cluttering your library.
FFmpeg & FFprobe Resolution Strategy
dsh-reel bundles @ffmpeg-installer/ffmpeg and @ffprobe-installer/ffprobe as runtime dependencies, requiring zero external setup out of the box.
To leverage newer hardware acceleration or newer codecs, you can optionally install system-wide FFmpeg:
# Windows (WinGet / Scoop / Chocolatey)
winget install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
# Linux (Debian / Ubuntu)
sudo apt update && sudo apt install ffmpeg
Binary Resolution Order:
- User-configured
ffmpegPath $DSH_HOME/reel/bin/directory- System environment
PATHand package manager bins (WinGet, Scoop,/usr/local/bin, etc.) - Embedded fallback installer dependencies
Keyboard Shortcuts
Gallery & Library Navigation
| Key | Action |
|---|---|
| G | Cycle content scope (Current → All Flat → Grouped) |
| V | Toggle Grid vs. List view |
| S | Toggle sort criteria (Newest, Name, Size) |
| R | Reload and refresh library |
| / | Focus instant search box |
| Backspace / Ctrl+↑ | Go up one directory level |
| Esc | Close lightbox viewer / blur search |
Video Player
| Key | Action |
|---|---|
| Space / K | Play / Pause |
| ← / → | Seek backward / forward 5s |
| J / L | Seek backward / forward 10s |
| ↑ / ↓ | Volume step (±5%) |
| M | Mute / Unmute |
| F | Fullscreen / Exit fullscreen |
| Q | Toggle Picture-in-Picture (PiP) |
| C | Open / Close subtitles menu |
| I | Toggle Stats for Nerds |
| U | Toggle Single Loop / Queue autoplay |
| P | Capture current frame snapshot as PNG |
| D | Download original media file |
| [ / ] | Decrease / Increase playback speed (0.25× ~ 3×) |
| 0 | Reset playback speed to 1.0× |
| Home / End | Jump to video start / end |
| Esc | Exit fullscreen / Close menus / Exit player |
| Mouse Left Hold | 2.0× Rapid fast-forward (restores on release) |
| Mouse Wheel / Touch Swipe | Switch to previous / next video (Reels swipe navigation) |
Friendly Links
- linux.do - 新的理想型社区。
License
This project is licensed under the MIT License.
Comments
Comments live in GitHub Discussions. Sign in with GitHub to post or react.