Skip to main content

Your Window Position Manager

Project description

Centre

License: MIT PyPI version Python Versions

Centre is your window position manager.

Take control of your windows by choosing where they appear, how they’re arranged, and what size they should be.

Consistency is centre's goal.

What Centre Tries to Achieve


Centre was built for users who want consistent window placement across desktop sessions.

Install


pip install centre

Start Centre Automatically


To do that, create a Windows Task Scheduler task.

Run the following command as Administrator in PowerShell/cmd to create a Task in Windows Task Scheduler.

schtasks /Create /TN "centre" /SC ONLOGON /TR "centre -s" /RL LIMITED /F

Usage

After your window configuration is ready, start the listener:

centre -s

The CLI


You can use the centre CLI to inspect open windows and read the active configuration.

Examples:

# List active windows, including their titles, sizes, and positions
centre -l

# Print the loaded configuration
centre -c

Automatic Configuration Reload


While Centre is running, it watches config.json for changes. Saving the file causes Centre to read the configuration again without restarting the process.

Window Configuration (config.json)


Your config will be created at the first startup in:

CMD

%USERPROFILE%\.centre\config.json

PowerShell

$env:USERPROFILE\.centre\config.json

The default config includes these values:

  • The resolution key is based on your display resolution.
{
    "presets": {
        "1920x1080": {}
    },
    "predefined_keybindings": {
        "enabled": true,
        "bindings": {
            "center": "ctrl+alt+d",
            "minimize": "ctrl+alt+m",
            "capture": "ctrl+alt+p"
        }
    },
    "logging": false
}

You can change any predefined keyboard shortcut in the bindings object.


Window presets should be placed inside the "presets" object in config.json.

Capture a Window

Focus the window you want to capture and press ctrl+alt+p. Centre stores its current position and size under the current display resolution.

Captured windows are identified by their executable name without the .exe extension. The name is normalized to uppercase, for example:

  • notepad++.exe becomes NOTEPAD++
  • WindowsTerminal.exe becomes WINDOWSTERMINAL

Executable names remain stable when an application changes its window title, such as when switching tabs in Notepad++.

Capturing the same application again updates its existing preset.

A window preset should look like this:

{
    "NOTEPAD++": {
        "LEFT": 224,
        "TOP": 168,
        "SIZE_X": 1473,
        "SIZE_Y": 697
    },
    "Default_Position": {
        "LEFT": 25,
        "TOP": 34,
        "SIZE_X": 1860,
        "SIZE_Y": 980
    }
}
  • Be sure to add Default_Position in your presets under the generated default resolution. When Centre does not find the active window in your presets, it uses Default_Position as the fallback size and position.

  • Default_Position is useful when you have a list of apps that you have set a custom position for, but intend to keep all other apps in one specific location.

Default Shortcuts

Action Shortcut Description
Center ctrl+alt+d Apply the active application's preset or Default_Position.
Minimize ctrl+alt+m Minimize the active window.
Capture ctrl+alt+p Save or update the active application's position and size.

Your final config should look something like this:

{
    "presets": {
        "1920x1080": {
            "WINDOWSTERMINAL": {
                "LEFT": 224,
                "TOP": 168,
                "SIZE_X": 1473,
                "SIZE_Y": 697
            },
            "Default_Position": {
                "LEFT": 25,
                "TOP": 34,
                "SIZE_X": 1860,
                "SIZE_Y": 980
            }
        }
    },
    "predefined_keybindings": {
        "enabled": true,
        "bindings": {
            "center": "ctrl+alt+d",
            "minimize": "ctrl+alt+m",
            "capture": "ctrl+alt+p"
        }
    },
    "logging": false
}

Caveats


Some windows may overlap even when they use the same configured position and size.

This is due to some apps having a bigger actual window than the rendered UI.

License


This project is licensed under the MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

centre-0.2.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

centre-0.2.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file centre-0.2.0.tar.gz.

File metadata

  • Download URL: centre-0.2.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for centre-0.2.0.tar.gz
Algorithm Hash digest
SHA256 05dabcb9ac473555782973bd1202dc3f3f5196f8ccbb6ea6984d2dd2e45afc4d
MD5 bd51a0d6ca1aab9663e12a1f54e0bbe1
BLAKE2b-256 de6c663b20d8d8dfb80e36d51e77d6a34d8fce22015900be52da292c3e72de10

See more details on using hashes here.

File details

Details for the file centre-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: centre-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for centre-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa6d1302ffcd5a19f3ab2badd1ddcfcfa05ccd53914f66a577d85c8b048b0bf3
MD5 5f429ea96b672072d36d70d65bfe82f1
BLAKE2b-256 dfdca3edbd5da80956c399a7476d77d0cb799658ff86cb7e3907394aa074549f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page