Skip to content
iXylesPublic

About

Tool to disable your built-in screen on macbook when using an external monitor (Developed by LLM)

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Lidopen

Lidopen is a personal macOS menu bar utility that watches display changes and can disable the built-in display when selected external monitors are connected.

Why This Exists

This tool was built for a very specific setup: using an ultrawide external monitor while still keeping the MacBook open so the built-in camera, microphone, and speakers remain available.

It exists because that single behavior was the only feature needed, and building a small dedicated utility was preferable to relying on a larger commercial display-management app just for that one capability.

Project Description

  • Product: menu bar app for macOS
  • Purpose: automate built-in display behavior based on connected monitor rules
  • Architecture: Swift Package with a small app target (Lidopen) and a core module (LidopenCore)
  • UI: AppKit menu bar app with a SwiftUI settings window
  • Display control approach: private CoreGraphics / CGS display APIs

Status

This is a personal sideloaded utility. It is not designed as an App Store distribution target.

Built And Tested On

  • Hardware: Apple Silicon (arm64)
  • macOS: 26.5.2
  • Xcode: 26.5
  • Minimum deployment target: macOS 13

Because the app depends on private display APIs, behavior may vary across macOS releases and hardware.

Install

Download the DMG from the GitHub Releases page, open it, and drag Lidopen.app to Applications.

Published DMG files are currently unsigned and not notarized. macOS may require approving the app in System Settings before first launch. If you prefer not to use the published DMG, build the app locally from source with the commands below.

Build

Build the package:

swift build

Build the app bundle:

./Scripts/build_app.sh

The app version is read from VERSION. The generated bundle is written to dist/Lidopen.app.

Build a downloadable DMG:

./Scripts/build_app.sh --dmg

If SwiftPM cache or manifest sandboxing is restricted in your environment:

CLANG_MODULE_CACHE_PATH=/private/tmp/clang-mod \
SWIFT_MODULE_CACHE_PATH=/private/tmp/swift-mod \
swift build

The same override works for app bundle packaging:

CLANG_MODULE_CACHE_PATH=/private/tmp/clang-mod \
SWIFT_MODULE_CACHE_PATH=/private/tmp/swift-mod \
./Scripts/build_app.sh

To build and install into /Applications:

./Scripts/build_app.sh --install

The local install command replaces /Applications/Lidopen.app. It first asks the running app to quit and refuses to replace the app while the process is still active.

Run

Run the app target directly:

swift run Lidopen

Or open the packaged app:

open "dist/Lidopen.app"

Test

Run the test suite:

swift test

How It Works

  • Manual mode never changes display state automatically.
  • Auto mode evaluates active external monitors against saved rules.
  • Unknown external monitors default to safe behavior and keep the built-in display active until a rule is saved.
  • The built-in display toggle is attempted through the private CGSConfigureDisplayEnabled symbol inside a CoreGraphics display configuration transaction.

Limitations

  • Uses private APIs, so it is not App Store-safe.
  • May break across macOS updates.
  • Should be treated as a local utility, not a broadly portable product.

LLM Note

This app was built with substantial help from LLM tooling. The code, structure, and documentation were iterated through human-directed AI-assisted development.

Project Layout

Sources/
  LidopenCore/
  Lidopen/
Tests/
  LidopenCoreTests/
Package.swift
Scripts/
  build_app.sh
  generate_icon.swift
.github/workflows/
  release.yml

About

Tool to disable your built-in screen on macbook when using an external monitor (Developed by LLM)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages