GridPlayer Alabaster is a Windows video player that plays many videos at once in a grid. Each cell has its own file, position, loop, volume, zoom and playlist. Playback uses VLC (libVLC) through a Python and PyQt5 interface.
Alabaster 0.2beta - (from GridPlayer 0.5.5). This is a beta. Release candidate v0.2beta_rc1 is out as a prerelease: a portable zip for Windows 10/11 x64.
Why this exists. I wanted a video wall player that did what I needed. The alternatives were either poor or paid, and Vlad's GridPlayer 0.5.5 was the first open-source one that worked well. Alabaster started as my way to add the features I was missing, and to learn by building on his work.
Testing wanted. This is a release candidate. The most useful things to try: (1) load a mix of videos, audio and pictures into one grid; (2) remap a few keys and mouse buttons in Shortcuts; (3) save and reopen a .gpls playlist. Report problems on the issues page after checking Known limitations.
GridPlayer Alabaster is a modified version of GridPlayer 0.5.5 by Vlad (vzhd1701). Credit for GridPlayer, and for most of what this program does, goes to Vlad. Alabaster changes are by XDevMatt.
- Licensed under the GNU General Public License version 3, the same as GridPlayer. See LICENSE and NOTICE.
- This is not the official GridPlayer. The GridPlayer name and logo belong to upstream; the Alabaster name and logo are this project's own.
- Alabaster is not published on PyPI.
pip install gridplayerinstalls upstream GridPlayer. - Report Alabaster problems in this repository's issues, not upstream.
Alabaster supports Windows 10 and 11 (64-bit) only. It does not provide or support macOS or Linux builds, and it does not maintain translations. The source still contains upstream's cross-platform code, and anyone may port it under the GPL. If you need macOS, Linux packages or translations that are kept up to date, use upstream GridPlayer.
The full documentation is in docs/ on the 0.2beta-fixes
branch:
| Read | For |
|---|---|
| Install on Windows | Portable zip (v0.2beta_rc1 prerelease), installer and Chocolatey (not published yet), optional tools. |
| User guide | Every feature, step by step, on one page. |
| Topic pages | One short page per feature. |
| FAQ and troubleshooting | Common questions and fixes. |
| Keyboard and mouse shortcuts | Every default key, mouse action and unbound command. |
| Settings | Every setting with default, range and tooltip. |
| Configuration and files | Data folder, command line, playlists, per-cell profiles. |
| Plugins and streaming | yt-dlp, browser cookies, HLS/DASH, separate audio, SponsorBlock, SubtitleCat.com. |
| Known limitations | What does not work or is rough. |
| Future features | What is planned but not built. |
Compared with GridPlayer 0.5.5 (and upstream's unreleased work that Alabaster includes), Alabaster adds or changes:
- Muted start and 3% volume steps. New cells start muted at 0%, so a full grid does not play every soundtrack at once. Mute is volume 0%; the wheel, the volume commands and unmute move in steps of 3% (configurable).
- Subtitle drag and drop. Drop a subtitle file onto a cell to attach it.
- Loops.
[and]set loop start and end;Shift+Ltoggles Loop This File and back to the cell's previous When finished action. - Rotate to fit (optional, off by default): turn landscape videos in tall cells, and portrait videos in wide cells, to use more of the cell.
- Other orientation filter: skip files whose orientation does not match the cell (Skip it). An Ask mode exists but is not re-verified.
- Per-cell profiles saved in the playlist under stable cell ids.
- Pictures as slides, and Files to play (All media, Videos only, Images only) for folders and stepping; dropped folders follow it.
- Keep (
E, single mode): copy the playing file to a_keepfolder next to its folder, then play the next file. - Skip files open in other cells during random play, on by default.
- Browser cookies for yt-dlp: read from your browser at request time; nothing is stored. The old cookie file is gone.
- Streams with separate audio. An HLS master playlist or DASH manifest whose video and audio share one manifest goes to VLC whole, with quality and audio-track menus. A plain (non-fragmented) MP4 video with its own M4A audio file plays in VLC with that file attached. Video whose audio is only available as a separate fragmented MP4 or WebM file (YouTube's DASH formats among them) is not supported; those qualities are not offered.
- Opt-in plugin layer, with an optional SubtitleCat.com search (off by default).
- Shortcuts entry on the right-click menu, and mouse side buttons that work even with click events disabled.
- Security changes: JSON single-instance pipe, no local stream relay listener, VLC options filtered (no servers, stream output or Lua).
- Runs next to upstream GridPlayer with its own settings folder
(
%APPDATA%\vzhd1701\GridPlayer-Alabaster) and its own single-instance pipe.
Download the portable zip, GridPlayer-Alabaster-57f21b1-win64-portable.zip, from the
v0.2beta_rc1 prerelease page. It is a release candidate for Windows
10 and 11 (64-bit) and is not code-signed, so Windows SmartScreen may warn
before it runs. Extract it into a new folder of its own; it opens as
GridPlayer-Alabaster-portable\GridPlayer.exe and does not touch an installed
upstream GridPlayer. See Install on Windows.
The installer and the Chocolatey package (alabaster-gridplayer) are not
released yet. To run from source instead:
uv sync
.\.venv\Scripts\gridplayer.exe
You need uv and 64-bit VLC 3.0 to run from source. Packaged builds bundle VLC. See Building from source.
Install and update these yourself:
| Tool | For | Install |
|---|---|---|
| Deno | YouTube's JavaScript challenge (yt-dlp) | winget install DenoLand.Deno |
| yt-dlp | A yt-dlp you keep updated, instead of the built-in module | winget install yt-dlp.yt-dlp |
| ffmpeg / ffprobe | Planned separate-audio merging; nothing uses them yet | winget install Gyan.FFmpeg |
Or with Chocolatey: choco install deno ffmpeg yt-dlp -y.
- Start Alabaster and drag videos or a folder onto the window. Each file gets a cell; a folder gets one cell that plays it as a list.
- Point at a cell and click to play or pause it. Keys act on the cell under the mouse pointer.
- Scroll up over a cell to hear it (new cells start muted).
N/Bplay the next / previous file in that cell's folder.- Double-click a cell for single mode. Right-click for every command, and Shortcuts to see or change keys.
Ctrl+Ssaves the grid as a.gplsplaylist.
This software was built using
- Python by Python Software Foundation
- Licensed under Python Software Foundation License
- Qt by Qt Project
- Licensed under GPL 2.0, GPL 3.0, and LGPL 3.0
- VLC by VideoLAN
- Licensed under GPL 2.0 or later
- Deno by Deno authors
- Licensed under MIT License
- Used by yt-dlp for YouTube JavaScript challenges
- PyQt by Riverbank Computing
- Licensed under Riverbank Commercial License and GPL v3
- python-vlc by Olivier Aubert
- Licensed under GPL 2.0 and LGPL 2.1
- pydantic by Samuel Colvin
- Licensed under MIT License
- streamlink by Christopher Rosell, Streamlink Team
- Licensed under BSD-2-Clause License
- yt-dlp by Contributors
- Licensed under Unlicense License
- Hack Font by Source Foundry
- Licensed under MIT License
- Basic Icons by Icongeek26
- Licensed under Flaticon License
- Suru Icons by Sam Hewitt
- Licensed under Creative Commons Attribution-Share Alike 4.0
- Clean App Download Buttons by Tony Thomas
- Licensed under MediaLoot License
- Flag Icons by Panayiotis Lipiridis
- Licensed under MIT License
- Lucide Icons by Lucide Contributors
- Licensed under ISC License
- SponsorBlock by Ajay Ramachandran and contributors
- Licensed under CC BY-NC-SA 4.0
The translations shipped with Alabaster are upstream GridPlayer's, made by these contributors through upstream's Crowdin project. Alabaster does not maintain translations, and text added by Alabaster is English only.
|
VenusGirl 886 words ko
|
Sylvain LOUIS (LOUIS_Sylvain) 886 words fr
|
GBS ~ TECH (Gabriel-BS1) 886 words pt-BR
|
Göran (Granberg) 875 words sv-SE
|
Roy Hendum (royhendum) 875 words no
|
z Z (zxas) 851 words zh-TW
|
|
Davide V. (davidev1) 752 words it
|
Heimen Stoffels (Vistaus) 751 words nl
|
七篠孝志 (japanese.john.doe.774) 751 words ja
|
DominikPott 751 words de
|
Azoaz6001 751 words ar
|
Yagang Wang (wyg945) 751 words zh-CN
|
|
Kryštof Baksa (Golbinex) 674 words cs
|
Sergio Varela (IngrownMink4) 652 words es-ES
|
rafal132 (fifi132) 598 words pl
|
a2942 496 words zh-CN
|
LiberiFatali 456 words vi
|
samu112 438 words hu
|
|
asolis2020 266 words es-ES
|
SolarCTP 164 words it
|
Sebastian Jasiński (PrinceNorris) 163 words pl
|
Manuel (reiss404) 133 words de
|
Armando Gomes (aportuguesecoder) 121 words pt-PT
|
Akronos 112 words cs
|
|
Владимир Ларин (WackyFox) 108 words he
|
XDevMatt: where Matt (Monster Energy edition) and America-first Superintelligence (Grok Bot & Grok Build 4.7) stop pretending there's a clean line between them. Collaborative work, proudly hybrid.
This software is licensed under the terms of the GNU General Public License version 3 (GPLv3). The full text is in LICENSE and online.
GridPlayer Alabaster is a modified version of GridPlayer by vzhd1701. Modifications are Copyright (C) 2026 XDevMatt and are licensed under the same terms; see NOTICE.
