百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
C

cortile

> 编程语言
开源

Linux 自动拼接管理器支持 Openbox、Fluxbox、IceWM、Xfwm、KWin、Marco、Muffin、Mutter 等符合 EWMH 标准的窗口管理器。

754 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

Linux 自动拼接管理器支持 Openbox、Fluxbox、IceWM、Xfwm、KWin、Marco、Muffin、Mutter 等符合 EWMH 标准的窗口管理器。

Cortile

Linux auto tiling manager with hot corner support for Openbox, Fluxbox, IceWM, Xfwm, KWin, Marco, Muffin, Mutter and other EWMH compliant window managers using the X11 window system. Therefore, this project provides dynamic tiling for XFCE, LXDE, LXQt, KDE and GNOME (Mate, Deepin, Cinnamon, Budgie) based desktop environments.

Simply keep your current window manager and install cortile on top of it. Once enabled, the tiling manager will handle resizing and positioning of existing and new windows.

Features

  • Workspace based tiling.
  • Auto detection of panels.
  • Toggle window decorations.
  • User interface for tiling mode.
  • Systray icon indicator and menu.
  • Custom addons via python bindings.
  • Keyboard, hot corner and systray bindings.
  • Vertical, horizontal, maximized and fullscreen mode.
  • Remember layout proportions.
  • Floating and sticky windows.
  • Drag & drop window swap.
  • Workplace aware layouts.
  • Multi monitor support.

Support for keyboard and mouse events sets cortile apart from other tiling solutions. The go implementation ensures a fast and responsive system, where multiple layouts, keyboard shortcuts, drag & drop and hot corner events simplify and speed up your daily work.

Installation

Manually download the latest binary file from releases or use wget:

wget -qO- $(wget -qO- https://api.github.com/repos/leukipp/cortile/releases/latest | \
jq -r '.assets[] | select(.name | contains ("linux_amd64.tar.gz")) | .browser_download_url') | \
tar -xvz

Execute the binary file and cortile will automatically begin tiling windows until you choose to stop it:

./cortile

Another installation method can be found in the development section. The latest official release is published on GitHub. Versions distributed via package managers are community supported and may be outdated.

Service

To enable auto tiling on startup, you can run cortile as a service after the graphical user interface has been loaded. A template to run cortile as a systemd service is provided in the services folder. You may have to adjust the filepath/symlink under ExecStart and enable the user service:

# copy systemd service file
cp cortile.service ~/.config/systemd/user/

# reload systemd configuration
systemctl --user daemon-reload

# enable systemd service
systemctl --user enable cortile.service

# start systemd service
systemctl --user start cortile.service

Usage

The layouts are based on the master-slave concept, where one side of the screen is considered to be the master area and the other side is considered to be the slave area:

  • vertical-right: split the screen vertically, master area on the right.
  • vertical-left: split the screen vertically, master area on the left.
  • horizontal-top: split the screen horizontally, master area on the top.
  • horizontal-bottom: split the screen horizontally, master area on the bottom.
  • maximized: single window that fills the entire tiling area.
  • fullscreen: single window that fills the entire screen.

The number of windows per side and the occupied space can be changed dynamically. Adjustments to window sizes are considered to be proportion changes of the underlying layout.

Windows placed on the master side are static and the layout will only change as long the space is not fully occupied. Once the master area is full, the slave area is used, where the layout changes dynamically based on available space and configuration settings.

Configuration

The configuration file is located at ~/.config/cortile/config.toml (or XDG_CONFIG_HOME) and is created with default values during the first startup. Additional information about individual entries can be found in the comments section of the config.toml file.

Shortcuts

The default keyboard shortcuts are assigned as shown below. If some of them are already in use by your system, update the default values in the [keys] section of the configuration file:

Keys Description
Ctrl+Shift+Home Enable tiling on the current screen
Ctrl+Shift+End Disable tiling on the current screen
Ctrl+Shift+T Toggle between enable and disable
Ctrl+Shift+D Toggle window decoration on and off
Ctrl+Shift+R Disable tiling and restore windows
Ctrl+Shift+BackSpace Reset layouts to default proportions
Ctrl+Shift+Next Cycle through next layouts
Ctrl+Shift+Prior Cycle through previous layouts
Ctrl+Shift+Left Activate vertical-left layout
Ctrl+Shift+Right Activate vertical-right layout
Ctrl+Shift+Up Activate horizontal-top layout
Ctrl+Shift+Down Activate horizontal-bottom layout
Ctrl+Shift+Space Activate maximized layout
Ctrl+Shift+Return Activate fullscreen layout
Ctrl+Shift+Plus Increase number of maximum slave windows
Ctrl+Shift+Minus Decrease number of maximum slave windows
Ctrl+Shift+KP_Add Increase number of master windows
Ctrl+Shift+KP_Subtract Decrease number of master windows
Ctrl+Shift+KP_2 Move focus to the next window
Ctrl+Shift+KP_8 Move focus to the previous window
Ctrl+Shift+KP_9 Move the active window to the next screen
Ctrl+Shift+KP_7 Move the active window to the previous screen
Ctrl+Shift+KP_5 Make the active window master
Ctrl+Shift+KP_6 Make the next window master
Ctrl+Shift+KP_4 Make the previous window master
Ctrl+Shift+KP_3 Increase proportion of master-slave area
Ctrl+Shift+KP_1 Decrease proportion of master-slave area

Hot corner events are defined under the [corners] section and are triggered when the pointer enters one of the target areas:

Corners Description
Top-Left Focus previous window
Top-Right Make the active window master
Bottom-Right Increase proportion of master-slave area
Bottom-Left Decrease proportion of master-slave area

Systray events are defined under the [systray] section and are triggered when the pointer keys are pressed while hovering the icon:

Pointer Description
Middle-Click Toggle between enable and disable
Scroll-Up Cycle through previous layouts
Scroll-Down Cycle through next layouts
Scroll-Right Increase proportion of master-slave area
Scroll-Left Decrease proportion of master-slave area

Common pointer shortcuts used in some environments:

  • Move window: Alt+Left-Click.
  • Resize window: Alt+Right-Click.
  • Maximize window: Alt+Double-Click.

Addons

External processes may communicate with cortile by using dbus directly or via the cortile-addons python bindings.

D-Bus

Running cortile starts a dbus server instance that makes internal properties and method calls available. Since using dbus communication directly with an external process, bash script, etc. is possible, the development requires some knowledge of dbus and is quite messy.

Therefore, there is a built-in dbus client incorporated in the same cortile binary that can be started via cortile dbus -... as a secondary process. This client instance communicates with the running server instance and allows to listen for events and to execute remote procedure calls.

The documentation of available properties and method calls can be found via cortile dbus -help.

Python

Additional python bindings are available to further simplify communication with cortile and to build a community-based library of useful snippets and examples.

For simplicity, the python bindings just spawn another cortile instance via cortile dbus -... running in the background and wrapping all available interfaces in easy-to-use python methods.

Example scripts and detailed information's on how to get started can be found in the cortile-addons repository.

Development

You need go >= 1.22 to compile cortile.

Install - go

Verify the installed go version:

go env | grep "GOPATH\|GOVERSION"

Install - cortile

Start cortile in verbose mode:

$GOPATH/bin/cortile -v

Additional

Special use cases:

  • Use the window_slaves_max property to limit the number of windows.
    • e.g. with one active master and window_slaves_max = 2, all windows following the third window are stacked behind the two slaves.
  • Use the edge_margin property to account for additional spaces.
    • e.g. for deskbar panels or conky infographics.
  • Use tiling_enabled = false if you prefer to enable tiling only when needed.
    • e.g. or to mainly utilize the hot corner functionalities.
  • Use cortile-addons if you need any other specific logic. This repository offers a range of extensions and enhancements specifically designed for cortile.

Security concerns:

  • Since the dbus api exposes internal cortile properties to the outside, malicious code running on the same host could easily access them. However, the information cortile holds (e.g. about open windows) can also be accessed using other tools interfacing with the X11 window system. Therefore the decision was made that direct access to cortile provides greater flexibility for running custom logic without compromising security.
    • If you want to disable this feature run cortile with cortile disable-dbus-interface.
  • Any scripts placed in the ~/.config/cortile/addons/ folder will be executed when the application starts. This provides the possibility to run custom cortile-addons scripts without worrying much about startup behavior and dependency issues. However, it also creates a potential security risk, as malicious code could place files in this folder to be executed by cortile.
    • If you want to disable this feature run cortile with cortile disable-addons-folder.
  • Newly pinned issues appear as menu entries in a submenu within the systray. This feature requires a network request to the GitHub API.
    • If you want to disable this feature run cortile with cortile disable-issue-info.
  • Cortile checks for new releases and provides the option for an in-place upgrade of the current binary.

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Godynamic-window-managerewmhfluxboxgnome

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言