Skip to content

SyntaxFear/screenX

Repository files navigation

ScreenX app icon

ScreenX

Design your desktop canvas.

A native macOS window manager for arranging open apps across one screen or many screens with quick layouts, live drag previews, custom grids, and saved workspaces.

Website and downloads: screenx.scrubmac.app · Landing page source: screenx-landing · License: MIT

What ScreenX Does

ScreenX helps you place every open Mac window exactly where you want it.

Instead of manually resizing windows again and again, you choose a layout and ScreenX fits the active app into that space. You can split a display into halves, quarters, thirds, rows, columns, or your own custom grid. You can also use a live drag canvas to preview where a window will go before you release it.

The goal is simple: your desktop should feel calm, intentional, and easy to rebuild.

Why It Exists

macOS has useful built-in tiling, but it can still feel limited when you work with multiple screens, unusual window sizes, or personal layout habits.

ScreenX was built from that need: keep the direct feeling of native Mac window placement, then add more control for people who want their workspace to behave like a real canvas.

Who It Is For

ScreenX is useful for:

  • People who work with many apps open at the same time.
  • Designers, developers, traders, researchers, operators, and founders who live across multiple windows.
  • Anyone using two, three, or more displays.
  • Users who want fast keyboard shortcuts without losing visual drag-and-drop control.
  • People who want repeatable workspace layouts instead of rebuilding the same desktop every day.

Main Features

  • Built-in guide: ScreenX includes an in-app Guide section with setup steps, feature explanations, hints, and troubleshooting.
  • Drag placement: hold Shift by default, drag a window, see the live placement preview, and release to fit it into the selected area.
  • Placement Canvas: open a full-screen layout overlay with Control + Option + Space, or hold Control + Shift briefly, and choose where the current window should go.
  • Quick layouts: instantly move windows into halves, quarters, thirds, two-thirds, center, or full-screen visible area.
  • Custom grids: create layouts like 1 x 2, 2 x 1, 3 x 2, one-left-two-right, or other grid-based workspace shapes.
  • Per-screen layouts: each connected display can have its own grid, row count, column count, and spacing.
  • Saved layouts: capture a workspace and restore windows back to their familiar places later.
  • Live previews: see where the app will be placed before ScreenX moves it.
  • Adjustable controls: change the main placement shortcut, drag modifier keys, direct canvas modifier keys, and quick-layout modifier keys from Settings.
  • Edge-to-edge tiling: use 0 px gap when you want windows to touch exactly with no space between them.

How It Works

ScreenX uses macOS Accessibility permission to move and resize windows from other apps.

In plain language:

  1. You choose or preview a target space on your screen.
  2. ScreenX reads the active window and the visible area of the display.
  3. It calculates the exact position and size for that layout.
  4. It asks macOS to move the window into that position.

ScreenX does not need screen recording to arrange windows. The important permission is Accessibility, because macOS protects window control behind that approval.

Install From DMG

For a normal Mac install:

  1. Download ScreenX-1.0.3.dmg.
  2. Open the DMG.
  3. Drag ScreenX.app into the Applications folder.
  4. Eject the DMG.
  5. Open ScreenX from Applications.

The public download DMG must be Developer ID signed, notarized by Apple, and stapled before release. A locally signed but unnotarized DMG is useful for testing, but macOS Gatekeeper will warn users.

Getting Started

  1. Open ScreenX.app from Applications.
  2. When macOS asks, allow Accessibility access.
  3. Relaunch ScreenX after granting the permission.
  4. Try holding Shift while dragging a window. You can change the drag modifier keys in Settings.
  5. Try the Placement Canvas with Control + Option + Space, or hold Control + Shift briefly and drag an area with the mouse.

If ScreenX still asks for permission after you already approved it, reset the old local approval and open the installed app again:

tccutil reset Accessibility com.syntaxfear.screenx
open -n /Applications/ScreenX.app

Then approve /Applications/ScreenX.app in System Settings > Privacy & Security > Accessibility and relaunch ScreenX.

Default Controls

Main Placement

  • Shift while dragging: show the live drag placement canvas. These drag modifier keys can be changed in Settings > Placement.
  • Control + Option + Space: open the Placement Canvas.
  • Hold Control + Shift briefly: open the Placement Canvas directly for mouse selection.

The Placement Canvas shortcut, drag modifier keys, and direct canvas modifier keys can be changed in Settings > Placement.

Quick Layout Hotkeys

ScreenX also registers quick shortcuts for preset layouts. The default modifier set is Control + Command, and you can change those modifier keys in Settings > Quick Layout Hotkeys.

  • Arrow keys: left, right, top, and bottom halves.
  • M: maximize to the visible display area.
  • C: center the window.
  • U, I, J, K: corner quarters.
  • 1, 2, 3: left, center, and right thirds.
  • 4, 5: two-thirds layouts.

Multi-Display Workflows

ScreenX is designed for multiple screens.

Each display can have a different layout profile. For example:

  • Default profile: 2 x 1 grid for simple side-by-side work.
  • Main monitor: 3 x 2 grid for deep work.
  • Side monitor: 1 x 2 split for chat and notes.
  • Ultrawide monitor: 3 x 1 split for left, center, and right zones.
  • Vertical monitor: 1 x 2 split for documents or logs.

Open Arrange > Display Layouts to configure each display. ScreenX uses the profile for the screen where the target window or pointer is located.

Gaps And Spacing

ScreenX treats spacing as intentional.

  • Use 0 px gap for exact edge-to-edge tiling.
  • Use a small gap when you want visual separation between windows.
  • Outer screen edges stay aligned so layouts do not accidentally leave thin unwanted spaces.

Privacy

ScreenX keeps workspace behavior local to your Mac.

  • Accessibility permission is used to move and resize app windows.
  • Window layout data and saved workspaces are stored locally.
  • Update checking only runs when a release feed is configured.
  • No account is required for the app itself.

About

Created by Levan Parastashvili.

See BRANDING.md for product positioning, landing-page copy, colors, and brand direction.

Open Source

ScreenX is an open-source macOS app released under the MIT License.

Project repository: github.com/SyntaxFear/screenX

ScreenX is open source so people can understand how the macOS Accessibility window-placement logic works, inspect the default shortcuts, and suggest safer or more ergonomic layouts. Please review CONTRIBUTING.md before sending a change and SECURITY.md before reporting a security-sensitive issue.

Build And Run

ScreenX is a Swift Package Manager macOS app.

./script/build_and_run.sh

The script builds the app, creates a local .app bundle, signs it when a signing identity is available, and launches it.

Release DMG

Install a Developer ID Application certificate and configure Apple notarization credentials, then run:

BUNDLE_ID="com.syntaxfear.screenx" \
VERSION="1.0.3" \
BUILD_NUMBER="35" \
NOTARY_PROFILE="ScreenXNotary" \
./script/package_release.sh

You can also notarize with Apple ID credentials:

APPLE_ID="developer@example.com" \
APPLE_TEAM_ID="TEAMID1234" \
APPLE_APP_PASSWORD="app-specific-password" \
./script/package_release.sh

The release script builds a universal macOS app by default, creates a polished drag-to-Applications DMG, signs the app with hardened runtime, submits the DMG to Apple notarization, staples the ticket, and verifies the result.

For local preview builds only, you can skip notarization:

SKIP_NOTARIZATION=1 ./script/package_release.sh

Do not upload a skipped-notarization DMG as the public download.

Update Feed

The in-app About page can check for updates when ScreenXBrand.updateCheckURL is configured.

Expected JSON:

{
  "version": "1.0.3",
  "downloadURL": "https://screenx.scrubmac.app/releases/1.0.3/ScreenX-1.0.3.dmg",
  "releaseNotesURL": "https://screenx.scrubmac.app/releases"
}

Project Structure

Sources/ScreenX/App        App entry point and macOS scene setup
Sources/ScreenX/Models     Layouts, shortcuts, display geometry, app metadata
Sources/ScreenX/Services   Accessibility, window movement, hotkeys, update checks
Sources/ScreenX/Stores     App state, saved layouts, display profiles
Sources/ScreenX/Views      SwiftUI interface
Tests/ScreenXTests         Geometry, layout, hotkey, and placement tests
script                     Build, icon generation, and release packaging scripts
packaging                  macOS signing entitlements
assets                     Public README and brand assets

About

Open-source native macOS window manager for precise screen layouts

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors