Design
Feels like it came with your Mac.
Cross-platform players draw their own controls so they look the same everywhere. MacLC was built around the Mac’s own: its materials, its menus, its settings, its accessibility.


01 Interface
Built from the Mac’s own pieces.
Liquid Glass
On macOS Tahoe the playback controls, the sidebar and the Now Playing bar float on glass. On older systems, or with Reduce Transparency, they switch to a solid material.
A real Mac sidebar
Not a list styled to look like one: the system’s own sidebar, with its material, its collapse and its drag-and-drop.
Windows that fit the film
A 2.39:1 film gets a 2.39:1 window. In a tiled window, the picture keeps its shape without black bars above and below.
Quiet confirmations
Volume, speed, tracks and delays are confirmed in a small glass capsule — and announced to VoiceOver — instead of being written over the picture.
Numbers that hold still
Time labels use digits of equal width, so they don’t shift left and right as the seconds tick.
Menus in Apple’s words
Settings…, Keep on Top, Take Snapshot, Full Screen: the names you already know, and no menu items that lead nowhere.
02 Settings
Every setting tells you what you’ll see.
Many players greet you with walls of checkboxes and advanced trees of options nobody explains. MacLC has one window, a sidebar, a search field — and one sentence under each option.
MacLC says“Highlights keep detail but the picture is dimmer overall.”
Instead ofapplies a BT.2390 EETF


Eight sections
General, Playback, Video, HDR & Colour, Audio, Subtitles, Interface and Shortcuts.
Search by meaning
Search looks through names, descriptions and keywords, so “brightness” finds what you meant.
Warnings where they matter
An option that can break playback carries a warning and a sentence saying what will happen.
Nothing decorative
Every control is checked against an option that exists in this build. If an option is missing, its row isn’t shown.
03 Accessibility
It follows your Mac, because it never ignored it.
MacLC doesn’t hard-code colours, sizes or animations: it asks the system. So your Mac’s settings apply everywhere, without special cases.
Accent colour
Buttons, selections and switches take the accent you chose in System Settings.
Light and Dark
Every window and panel follows your appearance, including the effects and information panels.
Reduce Motion
Animations become simple cross-fades.
Contrast and transparency
With Increase Contrast or Reduce Transparency, glass turns into solid, high-contrast surfaces.
VoiceOver
Controls have spoken labels, and on-screen confirmations are announced — once, with the value you settle on.
Keyboard
Every control is reachable from the keyboard, and Hold to Compare works with a key press too.
04 The icon
The details nobody asked for.
A graphite squircle on Apple’s icon grid, not a rounded rectangle: at 16 points in the Dock, that curve is most of what makes an icon look at home.
The only colour is the warm light behind the play mark, which is why it reads as light rather than paint. And the whole icon is drawn by a small program kept with the code, so it can be changed and compared like code.
05 Under the hood
For the technically curious.
Design systemMacLCDesign
- Tokens
- One layer defines every colour, type style, spacing, radius, material, SF Symbol configuration and animation duration as class properties mapped to AppKit semantics (
labelColor,controlAccentColor,separatorColor…). VLC’s macOS code had eleven literal colours in one category alone. - Motion
- Quick, standard and emphasised springs, idle and linger delays; entrances and exits fall back to a cross-fade under Reduce Motion.
- Glass
NSGlassEffectViewon macOS 26, a HUD visual-effect view with a hairline elsewhere, switched live when Reduce Transparency or Increase Contrast changes.- Typography
- System text styles throughout; monospaced digits for time labels.
Six metricsMoved onto the 8-point grid
| Metric | VLC | MacLC | Why |
|---|---|---|---|
| Small list row | 25 pt | 32 pt | 25 pt was below a comfortable click target. |
| Medium list row | 50 pt | 48 pt | A multiple of 8. |
| Large list row | 100 pt | 96 pt | A multiple of 8. |
| Video list row | 42 pt | 48 pt | A multiple of 8, with room for the thumbnail. |
| Corner radius | 4 pt | 8 pt | The system’s medium radius. |
| Controls fade | 0.4 s | 0.25 s | The system’s standard animation duration. |
Settings windowmodules/gui/macosx/settings
- Structure
- One window, a category sidebar and a search field filtering by label, description and per-pane keywords; each pane a stack of titled cards; advanced controls behind a disclosure.
- Guarded reads
- All 240 configuration reads go through wrappers that check the option exists. Opening the Interface pane used to call
config_GetPsz("http-password")in builds without Lua — anassert()in libvlccore that aborted the app. - Self-check
MACLC_SELFTEST=1builds all eight panes at startup and reportssummary: 8 panes, 8 ok, 0 failed.- Nothing removed
- VLC’s full advanced preferences tree is untouched and reachable.
IdentityA Mac app of its own
- Bundle
org.maclc.MacLC. While it shared VLC’s identifier, macOS showed VLC’s icon on MacLC’s windows in Stage Manager and the Dock, and MacLC read and wrote VLC’s settings and library.- Migration
- First launch copies VLC’s preferences directory, application-support directory and defaults domain. It only copies.
- Names
- Brand names are substituted after translation, so every catalogue in
po/still works (“Hide VLC” → “Masquer MacLC” in French). Snapshots are namedmaclcsnap-*. - Icon
- Superellipse (exponent 5) filling 824 of 1024, generated by
extras/package/macosx/asset_sources/maclc_app_icon.swift, with a template-image menu-bar mark.
StabilityFixed along the way
- Crashes
- A use-after-free on quit at the end of playback (reproducible every time in VLC), assertions reachable from the interface, Browse with an empty discovery service, the progress slider on a Mac with no active display.
- Hangs
- A teardown deadlock, a playback stall, full-screen restoration waiting on video-output locks, progress dialogs blocking the main queue, and one quit in fifty that never finished.
- Tests
- Unit tests for window fitting, resume rules, tone curves, SDR to HDR, the HDR advisor, NEON chroma conversions and CoreVideo HDR metadata.