{"id":50730183,"url":"https://github.com/pozitronik/glimpse","last_synced_at":"2026-06-10T08:01:26.326Z","repository":{"id":349415600,"uuid":"1200822124","full_name":"pozitronik/glimpse","owner":"pozitronik","description":"Total Commander plugin for quick video previews","archived":false,"fork":false,"pushed_at":"2026-05-23T14:39:35.000Z","size":4554,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-23T16:24:46.735Z","etag":null,"topics":["thumbnails","total-commander","totalcommander","wlx"],"latest_commit_sha":null,"homepage":"","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pozitronik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-03T21:40:11.000Z","updated_at":"2026-05-23T14:39:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pozitronik/glimpse","commit_stats":null,"previous_names":["pozitronik/glimpse"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/pozitronik/glimpse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pozitronik%2Fglimpse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pozitronik%2Fglimpse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pozitronik%2Fglimpse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pozitronik%2Fglimpse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pozitronik","download_url":"https://codeload.github.com/pozitronik/glimpse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pozitronik%2Fglimpse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34142643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["thumbnails","total-commander","totalcommander","wlx"],"created_at":"2026-06-10T08:00:37.236Z","updated_at":"2026-06-10T08:01:26.315Z","avatar_url":"https://github.com/pozitronik.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Glimpse\n\n![Plugin screenshot](/img/glimpse.jpg)\n\nA pair of Total Commander plugins for working with video frames. The **WLX** (Lister) plugin displays evenly-spaced video frames when previewing a file. The **WCX** (Packer) plugin presents a video as a virtual archive of frame images, allowing batch extraction via TC's standard file operations.\n\n## WLX Plugin (Lister)\n\nProvides an instant visual summary of a video's content without opening a media player.\n\n### Keyboard Shortcuts\n\nAll shortcuts below are defaults. Every row is user-configurable via the **Hotkeys** tab in Settings — bindings can be added, removed, or replaced, and each action can carry more than one chord at a time.\n\n| Key              | Action                                                                                            |\n|------------------|---------------------------------------------------------------------------------------------------|\n| Ctrl+1..5        | Switch view mode (smart grid / grid / scroll / filmstrip / single); repeat to cycle zoom submodes |\n| +/-              | Zoom in / out                                                                                     |\n| 0                | Reset zoom to 1x                                                                                  |\n| Left/Right       | Previous / next frame (single-view mode; ignored in other modes)                                  |\n| Ctrl+Left/Right  | Previous / next frame (alias of bare Left/Right)                                                  |\n| PageUp/Down      | Previous / next video file in directory                                                           |\n| Space            | Next video file in directory                                                                      |\n| Backspace        | Previous video file in directory                                                                  |\n| Z                | Previous video file in directory                                                                  |\n| Ctrl+Up/Down     | Increase / decrease frame count                                                                   |\n| Ctrl+A           | Select all                                                                                        |\n| Ctrl+Click       | Toggle frame selection                                                                            |\n| Ctrl+S           | Save frame (the focused or right-clicked one)                                                     |\n| Ctrl+Shift+S     | Save view — honours the persisted *Save at view resolution* setting                               |\n| Ctrl+Shift+L     | Save view at view resolution (one-shot; ignores the setting for this action only)                 |\n| Ctrl+Shift+N     | Save view at native size (one-shot)                                                               |\n| Ctrl+Alt+Shift+S | Save frames (selected if any are selected, otherwise all loaded frames)                           |\n| Ctrl+C           | Copy frame to clipboard                                                                           |\n| Ctrl+Shift+C     | Copy view — honours the persisted *Copy at view resolution* setting                               |\n| Ctrl+Alt+L       | Copy view at view resolution (one-shot)                                                           |\n| Ctrl+Alt+N       | Copy view at native size (one-shot)                                                               |\n| Enter            | Open the current file in the OS default player                                                    |\n| F11              | Toggle Lister maximize                                                                            |\n| Alt+Enter        | Toggle Lister full-screen (maximize without the window caption)                                   |\n| T                | Toggle timecodes                                                                                  |\n| R                | Refresh (re-extract all frames)                                                                   |\n| Ctrl+R           | Shuffle (pick fresh random frame positions and re-extract)                                        |\n| ~                | Open hamburger menu (when toolbar is collapsed)                                                   |\n| F2               | Settings                                                                                          |\n| F3               | Toggle status bar                                                                                 |\n| F4               | Toggle toolbar                                                                                    |\n| Escape           | Close Lister                                                                                      |\n\n### Configuration\n\nAll settings are stored in `Glimpse.ini` in the plugin directory. Access the settings dialog with F2 or via the right-click context menu. The dialog is organized into eight tabs: **General**, **Sampling**, **Appearance**, **Save**, **Cache**, **Thumbnails**, **Quick View**, **Hotkeys**. Press **Apply** to commit changes to the open viewer without closing the dialog, making the live view act as a preview. **Apply cannot be rolled back with Cancel.**\n\n#### General\n\n| Setting                           | Default     | Description                                                                                                                                                                     |\n|-----------------------------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Max workers                       | 1           | Number of parallel ffmpeg processes for frame extraction. More workers = faster loading, higher CPU usage                                                                       |\n| One per frame                     | Off         | Launches a separate worker for each frame instead of using a fixed worker count                                                                                                 |\n| Limit workers count               | No limit    | When \"One per frame\" is active, caps the total number of simultaneous workers. 0 = auto (matches CPU core count)                                                                |\n| Use BMP pipe                      | On          | Transfers frames via BMP pipe instead of temporary PNG files. Faster but uses more memory                                                                                       |\n| Use hardware-accelerated decoding | On          | Offloads video decoding to GPU when available (DXVA2, NVDEC, QuickSync). Falls back to software decoding silently                                                               |\n| Use keyframes                     | Off         | Seeks to the nearest keyframe instead of decoding to the exact timestamp. Faster but timecodes may be less precise                                                              |\n| Extract frames at display size    | Off         | Asks ffmpeg to produce frames already scaled to display size instead of full resolution. Significantly faster for 4K+                                                           |\n| Scale target min (px)             | 120         | Lower bound on the scale target (bigger side). Prevents the viewport-derived target from collapsing too small                                                                   |\n| Scale target max (px)             | 1920        | Upper bound on the scale target (bigger side). Frames are left at native resolution when the target exceeds it                                                                  |\n| Re-extract on viewport change     | On          | Quietly re-extracts in the background when switching view modes or resizing Lister so frames stay at display resolution. No effect when *Extract frames at display size* is off |\n| Respect anamorphic dimensions     | On          | Scales frames to display dimensions for sources where stored pixels are non-square (DVD rips, broadcast, some cameras).                                                         |\n| Extensions                        | mp4,mkv,... | Comma-separated list of video file extensions the plugin will handle                                                                                                            |\n| FFmpeg path                       | Auto-detect | Explicit path to `ffmpeg.exe`. Leave empty to auto-detect from plugin directory or system PATH                                                                                  |\n| Non-modal settings window         | Off         | Opens Settings without blocking Total Commander, so you can keep working while it is open. Off keeps the classic modal dialog                                                   |\n\n#### Sampling\n\nControls *which* moments of the video are turned into frames — independent of the engine knobs on the General tab.\n\n| Setting                     | Default | Description                                                                                                                                                            |\n|-----------------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Skip edges                  | 2%      | Percentage of video duration to skip at the beginning and end, avoiding black intros/outros                                                                            |\n| Start from random positions | Off     | When on, opening a file picks frame offsets at random within their slices instead of the deterministic midpoints.                                                      |\n| Randomness                  | 50%     | Strength of the per-slice jitter window. 1% nudges the offset slightly off-centre; 100% lets a frame be picked anywhere within its slice.                              |\n| Cache random frames         | Off     | When off, random extractions read from the cache (so a previously-cached random pick still hits) but do not write fresh picks back, keeping every Shuffle truly fresh. |\n|                             |         | When on, random picks are cached just like normal ones                                                                                                                 |\n\nThe toolbar **Refresh** button is a split button: clicking it re-extracts the current offsets, while its dropdown arrow exposes a **Shuffle** item (Ctrl+R) that re-rolls the offsets and re-extracts. Shuffle works regardless of the *Start from random positions* checkbox — that toggle only governs the default behaviour when opening a file.\n\n#### Appearance\n\n| Setting                                       | Default       | Description                                                                                                                                                                             |\n|-----------------------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Background                                    | Dark grey     | Background color behind the frame grid                                                                                                                                                  |\n| Timecode bg                                   | Dark grey     | Background color of the timecode overlay on each frame                                                                                                                                  |\n| Timecode opacity                              | 180           | Opacity of the timecode background (0 = fully transparent, 255 = fully opaque)                                                                                                          |\n| Timestamp font                                | Segoe UI, 8pt | Font face and size for timecode labels on frames                                                                                                                                        |\n| Cell gap (px)                                 | 0             | Spacing in pixels between frame cells in the viewer (0-20)                                                                                                                              |\n| Border (px)                                   | 0             | Outer margin around the grid, shared by the viewer and Save view exports (0-200)                                                                                                        |\n| Timestamp corner                              | Bottom left   | Corner of each cell where the timecode label is drawn                                                                                                                                   |\n| Show toolbar                                  | On            | Display the toolbar at the top of the lister window (F4 to toggle)                                                                                                                      |\n| Show status bar                               | On            | Display the status bar at the bottom of the lister window (F3 to toggle)                                                                                                                |\n| Progress bar layout                           | Auto          | Where the extraction progress bar sits in the status bar.                                                                                                                               |\n| Status bar template                           | (see below)   | Token string controlling which panels appear in the status bar and in what order                                                                                                        |\n| Status bar font                               | Tahoma, 9pt   | Font face and size for the status bar; the bar's height adapts to the metrics                                                                                                           |\n| Status bar height (px)                        | 0 (auto)      | Overrides the font-derived height with an explicit pixel count (logical pixels, scaled to monitor DPI). Values below the font minimum are silently bumped so text never clips. 0 = auto |\n| Apply in (height)                             | Both          | In which window mode the explicit height takes effect: *Lister only*, *Quick View only*, or *Both*. The other mode falls back to auto height regardless of the px value                 |\n| Recalculate auto-width panels on every update | On            | When on, auto-width panels re-measure to live text on every refresh; when off, they size once to a worst-case sample and lock                                                           |\n| Toolbar action                                | Double-click  | Whether a single-click or a double-click on the save/copy dimension status-bar panels toggles output-at-view-resolution. Ctrl+click always copies the panel text                        |\n\n##### Status bar template\n\nThe status bar is built from a token string in which every `%name%` becomes one panel, in the order written. Whitespace between tokens is ignored. Unknown identifiers render as their literal source text so typos are visible.\n\nDefault template (reproduces the panel layout used before this feature):\n\n```\n%file_position%%frame_position%%resolution%%save_dimension%%copy_dimension%%fps%%duration%%bitrate%%video_codec%%audio%%load_time align=right%\n```\n\nTokens:\n\n| Token              | Shows                                                                            |\n|--------------------|----------------------------------------------------------------------------------|\n| `%file_position%`  | Position of the current file among supported files in the folder (e.g. `3 / 12`) |\n| `%filename%`       | Current file name                                                                |\n| `%frames%`         | Total number of extracted frames                                                 |\n| `%frame_position%` | Current frame / total in single view; total only in other modes                  |\n| `%resolution%`     | Source video resolution (e.g. `1920x1080`)                                       |\n| `%fps%`            | Source frame rate                                                                |\n| `%duration%`       | Source duration (`H:MM:SS`)                                                      |\n| `%bitrate%`        | Source container bitrate                                                         |\n| `%video_codec%`    | Source video codec                                                               |\n| `%audio%`          | First audio stream summary, or `No audio`                                        |\n| `%load_time%`      | Time spent extracting the displayed frames (after extraction)                    |\n| `%save_dimension%` | Predicted Save view output dimensions                                            |\n| `%copy_dimension%` | Predicted Copy view output dimensions                                            |\n| `%view_mode%`      | Active view mode (`Smart Grid`, `Grid`, `Scroll`, `Filmstrip`, `Single`)         |\n| `%zoom%`           | Active zoom mode                                                                 |\n\nOptional attributes inside a token (xml-style, no spaces in values):\n\n| Attribute | Values                              | Effect                                                                                                                |\n|-----------|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------|\n| `width`   | `auto` (default) or pixels          | Forces a fixed pixel width. `auto` measures from text                                                                 |\n| `align`   | `left` (default), `right`, `center` | Panel text alignment                                                                                                  |\n| `cap`     | `true` (default), `false`           | `save_dimension` / `copy_dimension` only: shows the post-cap `WxH -\u003e CxC` form when CombinedMaxSide shrinks the image |\n\nA token whose identifier is fully uppercase (e.g. `%VIEW_MODE%`) uppercases its rendered text. Mixed-case identifiers (e.g. `%Resolution%`) leave the text as-is.\n\nWhen a token's data is unavailable:\n\n- `width=auto` panels collapse out of the bar (matches the legacy \"no panel for missing data\" behaviour).\n- Fixed `width=N` panels stay at their slot and show `?` so the layout doesn't shift unexpectedly.\n\nThe `%save_dimension%` and `%copy_dimension%` panels are interactive: a click flips the corresponding *Save at view resolution* / *Copy at view resolution* default (same setting the dropdown radio bullet tracks). The *Toolbar action* setting on the Appearance tab chooses whether a **single-click** or a **double-click** triggers the toggle (default double-click). The hand cursor on hover and the panel's tooltip surface the affordance. **Ctrl+Click** on any panel copies its text to the clipboard regardless of that setting.\n\nThe **Stretch auto-width panels to fill the bar** setting (Appearance tab, off by default) makes the renderer distribute any remaining bar width across the auto-width panels proportionally to their natural widths — useful when you want a justified bar with no trailing gap. Fixed `width=N` panels keep their widths.\n\nThe progress bar continues to live outside the template — its position relative to the panels is governed by the *Progress bar layout* setting.\n\n#### Save\n\n| Setting                               | Default | Description                                                                                                                                                                                             |\n|---------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Format                                | PNG     | Image format for saved frames (PNG or JPEG)                                                                                                                                                             |\n| JPEG quality                          | 90      | Compression quality for JPEG output (1-100, higher = better quality, larger file)                                                                                                                       |\n| PNG compression                       | 6       | Compression level for PNG output (0-9, higher = smaller file, slower save)                                                                                                                              |\n| Background opacity                    | 255     | Opacity of cell gaps, border, and Copy/Save view output background (0 = fully transparent, 255 = fully opaque). PNG only; ignored for JPEG.                                                             |\n| Default folder                        | (empty) | Default destination folder for saved frames. Empty = prompt every time                                                                                                                                  |\n| Include file info banner              | Off     | Adds a header with video file name, resolution, and duration to Save view exports                                                                                                                       |\n| Save at view resolution               | Off     | When on, saves match the on-screen layout at panel pixel size; when off, output uses native frame resolution. Also available as a checkbox in the file save dialog (Vista+).                            |\n| Max combined side (px)                | 0       | Cap on the longer side of the rendered Save view / Copy view image. The combined image (with optional banner) is shrunk proportionally if its longer side exceeds this many pixels. 0 disables the cap. |\n\nThe toolbar **Save view** button is a split button: clicking it honors the *Save at view resolution* setting, while its dropdown arrow exposes one-shot **Save view at view resolution...** and **Save view at native size...** items that override the setting for that single action without persisting. On legacy Windows (XP / Server 2003) the dropdown is reached via right-click on the same button (the system dropdown arrow is unavailable there); right-click also works on Vista+ as an alternate access path.\n\nThe toolbar **Copy view** button works the same way: a split button whose dropdown exposes one-shot **Copy view at view resolution** and **Copy view at native size** items. The native-size variant re-extracts at native resolution before publishing to the clipboard, so the clipboard receives true native-resolution pixels rather than the viewport-scaled live cells. The default Copy view click honors the same persisted *Save at view resolution* setting that Save view uses (the setting governs both surfaces).\n\n#### Clipboard\n\nControls which Win32 clipboard formats *Copy frame* / *Copy view* publish, and the encoding knobs that apply to both clipboard publishing and the file-reference temp file. The orchestrator runs whenever any format toggle is enabled; `pf24bit` sources (single frames without alpha) are promoted to `pf32bit` internally so every strategy sees a uniform BGRA layout. With every toggle off, the `pf24bit` path falls back to VCL's `Clipboard.Assign` so something still lands on the clipboard. Each enabled format is allocated before any clipboard operation begins; if any one of them runs out of contiguous memory the whole copy aborts and the error dialog names the failing format.\n\n| Setting                               | Default               | Description                                                                                                                                                                                                              |\n|---------------------------------------|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Alpha-aware bitmap                    | On                    | Preserves transparency. Costs roughly width*height*4 bytes per copy. Published as `CF_DIBV5`.                                                                                                                            |\n| Compressed PNG                        | On                    | Carries true alpha at a fraction of the raw-pixel memory cost. Published under the system-registered `\"PNG\"` clipboard format. Compression level follows the *PNG compression* knob below — independent of the Save tab. |\n| Compressed JPEG                       | Off                   | Lossy compressed copy. Published under the system-registered `\"JFIF\"` clipboard format. Quality follows the *JPEG quality* knob below.                                                                                   |\n| Flattened bitmap for legacy apps      | On                    | Opaque copy with transparency composited onto the background colour. Used as a fallback by paste targets that do not understand alpha. Costs roughly width*height*3 bytes per copy. Published as `CF_DIB`.               |\n| GDI bitmap handle                     | On                    | Direct bitmap handle for paste targets that distrust DIB synthesis. Costs roughly width*height*4 bytes per copy. Published as `CF_BITMAP`.                                                                               |\n| JPEG quality                          | 90                    | Compression quality 1-100 for both the Compressed JPEG clipboard strategy and the JPG file-reference temp file. Independent of the Save tab's JPEG quality.                                                              |\n| PNG compression                       | 6                     | Compression level 0-9 for both the Compressed PNG clipboard strategy and the PNG file-reference temp file. Independent of the Save tab's PNG compression.                                                                |\n| Copy to clipboard as a file reference | Off                   | Writes the image to a temp file (PNG or JPG per *File format* below) and publishes its path as `CF_HDROP` instead of a bitmap. When on, the five format toggles above are ignored.                                       |\n| File format                           | PNG                   | Encoder for the file-reference temp file. PNG is lossless and keeps transparency; JPG is smaller but lossy and drops alpha.                                                                                              |\n| Background opacity                    | 255                   | Opacity of cell gaps, border, and combined-view background in the PNG file-reference temp file (0 = fully transparent, 255 = fully opaque). Applies when *File format* is PNG; single frames are always opaque.          |\n| Files location                        | System temp           | Folder where file-reference files are written. Empty uses the system temp; environment variables are expanded, so a path under TC's own temp works. Falls back to system temp if the folder is unusable.                 |\n| Clean up on start                     | Delete older than 24h | Sweep of leftover `glimpse_clip_*` files on plugin load: *No cleanup*, *Clean everything*, or *Delete older than* a `DD:HH:MM` age. The file currently on the clipboard is always kept so a pending paste still works.   |\n\nDisabling individual format toggles reduces the per-copy memory allocation. When every format toggle is enabled the publish order is `CF_DIBV5` -\u003e `\"PNG\"` -\u003e `\"JFIF\"` -\u003e `CF_DIB` -\u003e `CF_BITMAP` — compressed formats grouped between alpha-aware and legacy; lossless before lossy. Paste targets that enumerate formats receive them in that priority. Disabling a format only affects what *this* plugin offers — paste targets that accept multiple formats automatically pick whichever is still present.\n\n#### Cache\n\n| Setting           | Default              | Description                                                                                     |\n|-------------------|----------------------|-------------------------------------------------------------------------------------------------|\n| Enable disk cache | On                   | Caches extracted frames on disk so re-opening the same video loads instantly                    |\n| Folder            | %TEMP%\\Glimpse\\cache | Directory for cached frame files. Supports environment variables                                |\n| Max size          | 500 MB               | Maximum total size of the cache directory. Oldest entries are evicted when the limit is reached |\n\n#### Thumbnails\n\nControls the small preview icons that Total Commander shows for video files in its file panel (when thumbnail view is enabled in TC).\n\n| Setting                        | Default | Description                                                                                                            |\n|--------------------------------|---------|------------------------------------------------------------------------------------------------------------------------|\n| Enable thumbnails for TC panel | On      | Provides thumbnails to TC via the WLX `ListGetPreviewBitmap` API. Disable to let TC fall back to its built-in handler  |\n| Mode                           | Single  | `Single frame` extracts one representative frame; `Grid` produces a small composite of multiple frames                 |\n| Position                       | 50%     | (Single mode) Position of the captured frame within the video duration (0% = first frame, 100% = last frame)           |\n| Grid frames                    | 4       | (Grid mode) Number of frames laid out in the composite thumbnail (2-16)                                                |\n\n#### Quick View\n\nThese settings only apply when the plugin is opened in TC's Quick View panel (Ctrl+Q), allowing a more compact layout that doesn't compete with the file panel for keyboard focus.\n\n| Setting                          | Default | Description                                                                                                                                            |\n|----------------------------------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Disable internal file navigation | On      | Prevents the arrow keys from advancing to neighbor video files, leaving them to TC's file panel where they're usually wanted                           |\n| Hide toolbar                     | On      | Hides the toolbar in Quick View mode regardless of the Appearance setting                                                                              |\n| Hide status bar                  | On      | Hides the status bar in Quick View mode regardless of the Appearance setting                                                                           |\n| Esc clears frame selection       | Off     | First Esc clears the frame selection, a second Esc closes Quick View. Esc still closes immediately when nothing is selected. Lister mode is unaffected |\n\n#### Hotkeys\n\nEvery command-style action in the plugin is configurable. Each action can carry any number of chords — \"Previous frame\", for example, ships with both `Left` and `Ctrl+Left` bound, and you can add more (or remove either).\n\n- Select a row in the list and press **Assign…** (or double-click the row) to open the shortcut editor. Press a key combination to add it; select a chord and press **Remove** to delete it. Numpad digits and `+`/`-`/`.` aliases collapse onto their top-row counterparts, so binding `0` covers `Numpad 0` automatically.\n- **Clear** wipes every chord assigned to the selected action.\n- **Reset all** restores every action to its default binding.\n- Conflicts are resolved at assignment time: when you add a chord that another action already owns, the editor asks whether to reassign. Saying yes silently strips the chord from the previous owner.\n- Tab, Alt+F4, and bare modifier keys are not user-configurable — they belong to VCL focus cycling and the Windows window-management shell.\n\nWhen the plugin holds keyboard focus, all other key combinations are owned by this table, regardless of Lister's built-in defaults. An unbound action simply does nothing; Lister's original shortcuts (Escape to close, `1`..`9` to switch text/binary/hex views, etc.) are still available via Lister's menu.\n\n#### Diagnostics\n\nThere is no UI control for debug logging — the toggle is hand-edited in the WLX `Glimpse.ini`:\n\n```ini\n[debug]\nLogEnabled=1\n```\n\nWhen enabled, the plugin writes to `glimpse_debug.log` next to the WLX DLL. The file is wiped at each Total Commander startup (when logging is on), so a single repro session lives in one self-contained file. The setting takes effect on the next TC startup. Set back to `0` (or remove the line) to stop logging. Debug builds default to logging on; release builds default to off — the explicit INI value always wins.\n\n## WCX Plugin (Packer)\n\nPresents a video file as a virtual archive containing frame images. Opening a video in TC shows files like `video_frame_001_00m05s.png` that can be copied, viewed, or batch-extracted using standard TC operations.\n\n### Use Cases\n\n- Batch-extract thumbnails from many videos at once using TC's multi-file copy\n- Preview frame filenames before extracting\n- Use TC's built-in viewer to browse individual frames\n- Run user-defined ffmpeg presets (audio rip, low-bitrate preview, custom transcodes) by extracting them from the virtual archive — see [Presets](#presets)\n\n### Configuration\n\nOpen the settings dialog via Files \u003e Pack (Alt+F5) \u003e Configure. The WCX plugin uses its own `Glimpse.ini`, separate from the WLX plugin. After changing settings, re-enter the video file to see the updated listing. The dialog is organized into six tabs: **General**, **Sampling**, **Output**, **Combined**, **Presets**, **Size limit**.\n\n#### General\n\n| Setting                           | Default     | Description                                                                                                             |\n|-----------------------------------|-------------|-------------------------------------------------------------------------------------------------------------------------|\n| Max workers                       | 1           | Number of parallel ffmpeg processes for frame extraction                                                                |\n| One per frame                     | Off         | Launches a separate worker for each frame                                                                               |\n| Limit workers count               | No limit    | When \"One per frame\" is active, caps the total number of simultaneous workers                                           |\n| Use BMP pipe                      | On          | Transfers frames via BMP pipe instead of temporary files                                                                |\n| Use hardware-accelerated decoding | On          | Offloads video decoding to GPU when available. Falls back to software silently                                          |\n| Use keyframes                     | Off         | Seeks to the nearest keyframe instead of exact timestamp. Faster seeking                                                |\n| Respect anamorphic dimensions     | On          | Scales frames to display dimensions for sources where stored pixels are non-square (DVD rips, broadcast, some cameras). |\n| FFmpeg path                       | Auto-detect | Explicit path to `ffmpeg.exe`. Leave empty to auto-detect                                                               |\n\n#### Sampling\n\nControls *which* moments of the video are extracted. Re-enter the archive to see picks change.\n\n| Setting                     | Default | Description                                                                                                                      |\n|-----------------------------|---------|----------------------------------------------------------------------------------------------------------------------------------|\n| Frame count                 | 4       | Number of frames to extract from the video (1-99)                                                                                |\n| Skip edges                  | 2%      | Percentage of video duration to skip at the beginning and end                                                                    |\n| Start from random positions | Off     | When on, each TC entry into the archive picks frame offsets at random within their slices instead of the deterministic midpoints |\n| Randomness                  | 50%     | Strength of the per-slice jitter window. 1% = slight nudge off-centre, 100% = anywhere within the slice.                         |\n|                             |         | No effect when *Start from random positions* is off                                                                              |\n\nWCX has no \"Cache random frames\" toggle: the plugin runs on demand from TC and has no frame cache, so the option would be a no-op.\n\n#### Output\n\n| Setting            | Default     | Description                                                                                                                                                                          |\n|--------------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Listing modes      | Frames only | Three independent toggles compose the archive listing:\u003cbr/\u003e- **Frames** (individual images)\u003cbr/\u003e- **Combined** (single grid image),\u003cbr/\u003e- **Presets** (user-defined ffmpeg recipes). |\n| Image format       | PNG         | Image format for extracted frames (PNG or JPEG)                                                                                                                                      |\n| JPEG quality       | 90          | Compression quality for JPEG output (1-100)                                                                                                                                          |\n| PNG compression    | 6           | Compression level for PNG output (0-9)                                                                                                                                               |\n| Background opacity | 255         | Opacity of cell gaps, border, and combined-image background (0 = fully transparent, 255 = fully opaque). PNG only; ignored for JPEG.                                                 |\n| Show file sizes    | Off         | Displays actual file sizes in the archive listing. Requires extracting all frames when entering the archive                                                                          |\n\n#### Combined\n\nThese settings only apply when output mode is set to \"Combined image\":\n\n| Setting                  | Default       | Description                                                              |\n|--------------------------|---------------|--------------------------------------------------------------------------|\n| Columns                  | 0 (auto)      | Number of columns in the grid. 0 = automatic layout based on frame count |\n| Cell gap (px)            | 2             | Spacing in pixels between frames in the grid                             |\n| Background               | Dark grey     | Background color visible in cell gaps and margins                        |\n| Show timestamps          | On            | Overlays timecode labels on each frame                                   |\n| Timestamp font           | Consolas, 9pt | Font face and size for timecode labels                                   |\n| Include file info banner | Off           | Adds a header with video file name, resolution, and duration             |\n\n#### Presets\n\nUser-defined ffmpeg recipes that appear as additional virtual files in the archive listing alongside (or instead of) the frame and combined entries. Each preset is a complete ffmpeg invocation — extract a preset entry and the plugin runs ffmpeg with your arguments and saves the result to TC's chosen destination.\n\nEnable preset listing by ticking the **Presets** checkbox in the Output tab. Disabled presets remain visible in the editor (so you can re-enable them) but do not appear in the archive listing.\n\nThe Presets tab provides a master-detail editor: the list on the left shows every preset, the panel on the right edits the currently selected one. **Add** creates a blank preset, **Del** removes the selection, **Copy** duplicates with a fresh name. Saved on Apply or OK.\n\n| Field       | Description                                                                                                                                                                                                                                                                                                                            |\n|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Name        | INI section name; doubles as the `%name%` template variable. Must be unique (case-insensitive)                                                                                                                                                                                                                                         |\n| Enabled     | When off, the preset is hidden from the archive listing but kept in the editor                                                                                                                                                                                                                                                         |\n| Description | Free-text label, shown only in the editor                                                                                                                                                                                                                                                                                              |\n| Output ext  | File extension without the leading dot (e.g. `mp3`, `jpg`). Required. ffmpeg picks the muxer/encoder from this when no explicit codec is given                                                                                                                                                                                         |\n| Output name | Filename template. Defaults to `%basename%_%name%`. Recognised variables: `%basename%` (source filename without path or extension), `%name%` (preset section name), `%ext%` (source extension, lowercased, no dot). Unknown `%token%` patterns pass through verbatim. May contain `/` or `\\` for virtual subfolders inside the archive |\n| ffmpeg args | Arguments inserted between `-i \u003cinput\u003e` and the output file. The same template variables as Output name expand here too (e.g. `-metadata title=%basename%`). Forbidden tokens (rejected at save): `-i`, `-y`, `-n`, `pipe:0`, `pipe:1`, `pipe:2`. May be empty, in which case ffmpeg picks default codecs from the output extension    |\n\nPresets live in `presets.ini` next to `Glimpse.ini`. The file is hand-editable — each preset is a `[name]` section with `OutputExt=`, `Args=`, etc. The editor reads and writes this file; manual edits are picked up on the next archive open. The file is UTF-8 (with or without BOM); modern editors save it correctly.\n\nWhen a preset extraction fails, ffmpeg's actual error appears in a dialog (\"Glimpse preset extraction failed\") with the relevant ffmpeg stderr line — useful for debugging your args.\n\nNaming collisions between presets get the standard `(N)` suffix in the listing; first-defined wins the bare name. Place a preset under a virtual subfolder (e.g. `OutputName=audio/%basename%`) to avoid collisions and group related presets visually.\n\n#### Size limit\n\nCaps the longer side of extracted output in pixels (the cap applies to whichever side is longer, regardless of orientation). Useful for keeping batch-extracted thumbnails compact.\n\n| Setting                     | Default      | Description                                                                                                                |\n|-----------------------------|--------------|----------------------------------------------------------------------------------------------------------------------------|\n| Separate frames longer side | 0 (no limit) | When `Separate frames` mode is active, ffmpeg downscales each frame so its longer side does not exceed this many pixels    |\n| Combined image longer side  | 0 (no limit) | When `Combined image` mode is active, the assembled grid is downscaled so its longer side does not exceed this many pixels |\n\n#### Diagnostics\n\nThere is no UI control for debug logging — the toggle is hand-edited in `Glimpse.ini`:\n\n```ini\n[debug]\nLogEnabled=1\n```\n\nWhen enabled, the plugin writes to `Glimpse.log` next to the WCX DLL. Lines are tagged `WCX:` for general operations and `WCX-Presets:` for preset loader warnings (rejected presets, malformed values). The setting takes effect on the next archive open — no TC restart required. Set back to `0` (or remove the line) and reopen any archive to stop logging. The existing log file is left in place for inspection.\n\n## Installation\n\n### Automatic (recommended)\n\nOpen the Glimpse `.zip` archive in Total Commander. TC will detect `pluginst.inf` and offer to install the plugin automatically. Install the WLX and WCX archives separately.\n\n### Manual\n\n**WLX (Lister):**\n1. Extract `Glimpse.wlx` and `Glimpse.wlx64` to a directory of your choice\n2. In Total Commander: Configuration \u003e Options \u003e Plugins \u003e Lister (WLX) \u003e Add\n3. Browse to `Glimpse.wlx64` (64-bit TC) or `Glimpse.wlx` (32-bit TC)\n\n**WCX (Packer):**\n1. Extract `Glimpse.wcx` and `Glimpse.wcx64` to a directory of your choice\n2. In Total Commander: Configuration \u003e Options \u003e Plugins \u003e Packer (WCX) \u003e Add\n3. Browse to `Glimpse.wcx64` (64-bit TC) or `Glimpse.wcx` (32-bit TC)\n4. Associate desired video extensions (e.g. `mp4`, `mkv`)\n\n## Requirements\n\n- Total Commander 10.x or later\n- `ffmpeg.exe` in plugin directory, configured path, or system PATH\n\n## Supported Formats\n\nMP4, MKV, AVI, MOV, WMV, WEBM, FLV, TS, M2TS, M4V, 3GP, OGV, MPG, MPEG, VOB, ASF, RM, RMVB, F4V - mostly anything that `ffmpeg` supports.\n\nAdditional extensions can be configured in Settings (F2 for WLX, or via the INI file for WCX).\n\n## License\n\nGNU Lesser General Public License (LGPL). See LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpozitronik%2Fglimpse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpozitronik%2Fglimpse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpozitronik%2Fglimpse/lists"}