Skip to content

Repository files navigation

Multi-View Player

A Stash plugin that lets you queue scenes and live search filters from any browse page and watch up to 16 simultaneously in a minimal grid player. Filter slots automatically cycle through matching scenes when each one ends, and any cell can loop a range you pick out of its scene.

Requirements

Installation

Option 1 — Automatic (recommended)

  1. In Stash go to Settings → Plugins → Add Source and enter:
    https://ordureconnoisseur.github.io/plugins/main/index.yml
    
  2. Find Multi-View Player in the plugin browser and click Install

Option 2 — Manual

  1. Download this repository (Code → Download ZIP) and extract it

  2. Place the multiView folder inside a category subfolder of your Stash plugins directory:

    • Linux/Mac: ~/.stash/plugins/Utilities/multiView/
    • Windows: %USERPROFILE%\.stash\plugins\Utilities\multiView\

    The plugin must be two levels deep inside the plugins directory — plugins/Category/Plugin/. Placing it directly under plugins/ will cause it not to appear in Stash.

  3. In Stash, go to Settings → Plugins and click Reload Plugins

  4. Enable Multi-View Player

Usage

Picking Mode

On any scene browse page, click the grid icon button in the toolbar (next to the view mode buttons, before the zoom slider) to enable Picking Mode. While active:

  • Each scene card shows a + button — click to queue that scene (turns orange with a ✓ when queued)
  • A + button appears next to Stash's filter icon — click to add the current search as a filter slot

A floating launcher in the bottom-right shows your queue and opens the player. It displays scene count and filter slot count as separate badges.

You can queue up to 16 items (scenes and filter slots combined).

Picking Mode

Filter Slots

A filter slot captures your current search query rather than a specific scene. When the player opens, each filter slot picks a random scene matching that search. When the scene ends, the slot automatically fetches and plays another — giving you an endless rotating stream from that search running alongside your pinned scenes. Filter slot cells are labelled Filter: in the player.

To add a filter slot: enable Picking Mode, apply your search in Stash, then click the + next to the filter icon in the toolbar. The button is only visible while Picking Mode is active.

Roulette Mode

In the player, click the dice button in the top bar (left of Settings) to open the roulette menu. Use the slider to choose how many random scenes to load (1–16), then click Roll. Your last count is remembered.

Roulette cells behave like filter slots: each cell shows a Random: label and automatically advances to a fresh random scene when the current one ends — no repeats.

Scene Detail Page

On an individual scene's page, a grid icon button appears in the scene toolbar. Click it to toggle that scene in or out of your queue — it turns orange when queued.

Launching the Player

Once you have items queued, the floating launcher in the bottom-right shows your scene count and filter slot count. Click the grid icon to open the player in a new tab, or to clear the queue.

The queue is shared across tabs — changes on one tab are immediately reflected in another.

Player

Player Controls

Control Action
Click a cell Play / pause that scene
Middle-click a cell Mute / unmute that scene
Scroll wheel over a cell Skip by the seek step, 5 seconds by default (enable Scroll-Wheel Seek in Settings first)
Seekbar (bottom of cell) Scrub to any position (see Seeking)
Volume button Open per-cell volume slider
Mute All (top bar) Mute / unmute all scenes simultaneously
button Restart the current scene from the beginning
button For filter/random cells: load the next scene; for pinned scenes: restart
O button Increment the scene's O counter
Loop button Set the loop start, then the loop end, then clear (see A/B Loops)
O All (top bar) Increment O counter on all scenes
button Remove scene from the grid
Pause All (top bar) Play / pause all scenes simultaneously
Focus button (top bar) Toggle Focus Mode (justified layout, hidden UI)
Dice button (top bar) Open roulette — load N random scenes
Settings (top bar) Quality and display preferences
F key Toggle Focus Mode
A / B keys Mark the loop start / end on the cell under the cursor
L key Clear the loop on the cell under the cursor
/ keys Step the cell under the cursor back / forward

The cell with active audio is highlighted with an orange outline.

Focus Mode

Click the focus button in the top bar (or press F) to toggle Focus Mode. Focus mode is designed for lean-back watching — all chrome disappears and every pixel goes to video.

  • The top bar fades out; hover over it to reveal controls
  • Seek bars are hidden
  • Videos tile edge-to-edge using a justified layout — each cell is sized proportionally to its native aspect ratio (16:9 or 9:16) so no space is wasted and cropping is minimised

Focus Mode

Press F (or click the focus button) again to return to the normal grid.

Seeking

Bring the pointer near the bottom of a cell and its seekbar grows into a proper target, the controls row lifts out of the way, and a readout above the bar shows the time you are pointing at against the scene length. Clicking the bar jumps there, exactly as before.

For anything finer, hold the fine modifier (Shift by default):

  • Shift while dragging the bar scales your movement down to a fifth, so a cell that was worth about six seconds per pixel becomes worth about one. Press or release Shift mid-drag and it picks up from wherever you are rather than jumping.
  • Shift+click on the bar starts refining from the current position instead of jumping to the pointer, so you can inch a loop point in without losing your place.
  • Shift+←/→ and Shift+scroll use the fine step instead of the normal one.

Both steps are set in Settings → Seeking, along with which modifier keys do what.

The arrow keys step the cell under the cursor and work while paused, which is the easy way to line up a loop: pause, walk the playhead onto the frame you want, then press A or B.

Hold the all-cells modifier (Alt by default) with the arrow keys or the scroll wheel to move every cell by the same amount at once.

Every cell playing a transcoded stream has to re-request it from Stash to move its playhead, so a grid-wide seek asks your server for up to 16 fresh encodes. Repeated presses are collapsed into one seek per cell and the requests are spread out, but stepping around a transcoded grid is never going to feel instant. Direct Play makes all of it immediate wherever your files play natively.

Ctrl can be picked as either modifier but is neither default, because Ctrl+scroll is the browser's own zoom gesture.

A/B Loops

Any cell can replay a chosen range of its scene instead of the whole thing. Give each cell its own range and the grid becomes a wall of hand-picked clips, every one looping independently.

Set a range in either of two ways:

  • Loop button in the cell controls. First click marks the start (A) at the current position, second click marks the end (B), third click clears the loop.
  • A and B keys with the cursor over a cell. L clears it. All three are rebindable in Settings.

Once a range is set:

  • The cell's seekbar re-centres on the loop: the looped stretch is drawn in the accent colour with a draggable mark at each end so you can nudge the range while it plays, the brighter part of it shows how far through the loop you are, and everything outside the range dims out of the way
  • The range is shown as 0:41 - 1:12 next to the cell controls
  • The cell restarts from A every time it reaches B, forever, independent of every other cell
  • Only marking A loops from there to the end of the scene, so you can set a start and refine the end later

Loops are saved per scene in your browser and come back when you reopen the player, so a wall you set up once can be reopened as-is. A looping scene always reopens at A rather than at a saved resume position. Settings → Saved A/B Loops shows how many scenes have one and can clear them all at once.

Filter and roulette cells don't take a loop: their scene changes as they advance, so a saved range would apply to the wrong video.

Looping a transcoded stream normally reuses what the browser has already buffered, which costs nothing. If the stream can't seek backwards, the cell has to re-request the transcode at A on every pass, and that is rate-limited to avoid hammering your server: a very short loop may overshoot its end slightly. Enabling Direct Play in Settings avoids this entirely where your files play natively.

Shortcuts

Every shortcut is rebindable to a keyboard key or a mouse button. Open Settings, expand the collapsible Shortcuts section, click the binding next to an action, then press the key or mouse button you want (middle, right, back, and forward buttons are supported). Backspace clears a binding, Esc cancels.

Action Default Notes
Mute / Unmute (hovered) Middle Click Acts on the scene under the cursor
Play / Pause (hovered) unbound Acts on the scene under the cursor
O counter (hovered) unbound Acts on the scene under the cursor
Loop: set A (hovered) A Marks the loop start at the current position
Loop: set B (hovered) B Marks the loop end at the current position
Loop: clear (hovered) L Removes that scene's loop
Seek back (hovered) Hold the fine modifier for the fine step, the all-cells modifier to move every cell
Seek forward (hovered) As above
Toggle Focus Mode F
Toggle Full Screen unbound
Open Roulette unbound

The grid-wide Mute All, Pause All, and O All actions live as buttons in the top bar.

About

Stash plugin — queue scenes and watch up to 16 simultaneously in a grid player

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages