Like this: With Split View, you can fill your Mac screen with two apps, without having to manually move and resize windows. Enter Split View Split View requires OS X El Capitan or later, and the steps differ slightly based on which macOS you're. Mar 06, 2007 Window managers help manipulate application windows in order to increase productivity. A good window manager for Mac will allow moving, resizing and rearranging application windows quickly. It will allow customizing how windows are handled, have keyboard shortcuts for performing window manipulations quickly and allow snapping windows to various locations on the desktop with the mouse.
Tiling Wm For Macos Mac
This article provides an unbiased comparison of the most popular tilingwindow managers (as opposed to floating window managers).
- 1Comparison table
Comparison table
The following table lists the most popular tiling window managers alongside notable features, providing readers with a quick overview.
Window Manager | Written in | Configured with | Management style | System tray support | On-the-fly reload | Information bars | Compositing | Default layouts | Pixel usage | External control | Library | Multiple (n) monitor behavior | ICCCM/EWMH compliant | Maintenance |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
alopex | C | C (recompile) | Hybrid | None | No | Built-in; call script/program as first argument | External | max, h-stack, v-stack, h-tab | Variable borders, titles in-statusbar | Xlib | six tags, two views available by default | Active | ||
Awesome | C | Lua | Dynamic | Built-in | Yes | Built-in, images and text | External | max, nh-stack (and invert), nv-stack (and invert), free | Variable borders, optional h-tab titles | dbus (if enabled) | XCB | n-tags (workspaces). Per default 9 are enabled. Example | Yes | Active |
bspwm | C | Anything | Hybrid | None | Yes | Can write internal state to a FIFO | External | v-split, h-split | Variable borders | via bspc | XCB | Monitors hold Desktops | Yes | Active |
catwm | C | C (recompile) | Dynamic | None | No | None | No | v-stack, max | 1-pix borders | Xlib | Abandoned | |||
dswm | Lisp | Lisp | Manual | None | Yes | Yes | No | Abandoned | ||||||
dwm | C | C (recompile) | Dynamic | Optional Patch | Optional | Built-in, reads from root window name | External | v-stack, max | via dwmfifo | Xlib | n regions, 9 workspaces fixed to each region | Active | ||
echinus | C | Text | Dynamic | None | Yes | ouricoAUR | External | v-stack, b-stack, max | Variable borders, optional titles | Xlib | Yes | Unknown | ||
euclid-wm | C | Text | Hybrid | None | Yes | External (dzen) | rows, columns | 1-pix borders | Xlib | Dormant | ||||
FrankenWM | C | C (recompile) | Dynamic | None | No | No, outputs information to stdout, which can easily be parsed and displayed by an external monitor or panel (dzen2, conky, etc) | External | v-stack (and invert), h-stack (and invert), dual-v/h-stack, grid, fibonacci (vh-stack), rows, columns, max, free | Variable borders | XCB | Active | |||
herbstluftwm | C | Text | Manual | None | Yes | rows, columns | 1-pix borders | commands via herbstclient | Xlib and Glib | n regions, 9 workspaces visible in any region | Active | |||
i3 | C | Text | Dynamic | i3bar | Yes (Layout is preserved) | text piped to i3bar (i3status /conky and others can be used) | External | tree, v-split, h-split, stacked, tabbed, max, can be nested infinitely | None, 1-pix or 2-pix, optional titlebars, can hide edge borders | commands via ipc (or i3-msg, which uses ipc) | XCB | n regions | Yes | Active |
LeftWM | Rust | toml (user settings) / Anything (themes) | Dynamic | None | Yes | Yes, many options through theme system | External | v-stack, columns, rows | Variable based on theme | supports _NET_ACTIVE_WINDOW and sending commands to a named pipe | Xlib | Workspaces and monitors are not tide. Many workspaces for monitor or many monitors for workspace | Yes | Active |
monsterwm | C | C (recompile) | Dynamic | None | Optional, but windows are lost | No, outputs information to stdout, which can easily be parsed and displayed by an external monitor or panel (dzen2 , conky , etc) | External | h-stack, v-stack, grid, max | supports _NET_ACTIVE_WINDOW , so external control can be supplied by xdotool and similar tools | Xlib primary and XCB fork | n workspaces per monitor | Abandoned | ||
Musca | C | Text, own command set, C(recompile) | Manual | None | No, but allows running of musca commands on the fly | None | No | h-split, v-split, max | commands, hooks | Xlib | Abandoned | |||
Notion | C, Lua | Lua, compatible with Ion3 configs | Manual | trayion, stalonetray | Yes | configurable | ? | h-tab, max | Configurable borders and titlebars/tabs | EWMH, arbitrary Lua scripts which have access to the rich internal API | Xlib | n workspaces on each monitor. Supports on-the-fly changes in topology | Active | |
qtile | Python | Python | Dynamic | Yes | Yes | Yes | External | tree, v-split, h-split, stacked, tabbed, max | No borders, although customizable | Hooks, Server mode | XCB | Active | ||
Ratpoison | C | Text | Manual | None | Yes | Yes | External | max | No | Active | ||||
Snapwm | C | Reloadable Text | Dynamic | None | Yes | Built-in, reads from root window name | External | nVertical, Fullscreen, nHorizontal, Grid, Center Stacking | Variable borders, no titles | Xlib | Number of desktops distributed evenly between monitors | Active | ||
Spectrwm | C | Text | Dynamic | None | Yes | Built-in, reads from user script | No | nv-stack, nh-stack, max | 1-pix borders, no titles | XCB | n regions, 10 workspaces visible in any region | Yes | Active | |
Stumpwm | Lisp | Lisp | Manual | None | Yes | Yes | No | Xlib | No | Active | ||||
sway | C | Text (i3 compatible) | Dynamic | swaybar | Yes (Layout is preserved) | text piped to swaybar (i3status /conky and others can be used) | Yes | tree, v-split, h-split, stacked, tabbed, max, can be nested infinitely | None, 1-pix or 2-pix, optional titlebars, can hide edge borders | commands via ipc (or swaymsg, which uses ipc) | wlroots (wayland) | n regions | No | Active |
subtle | C | Ruby | Manual | Built-in | Yes | Built-in (Ruby), external can be used as well | External | Variable grid | Variable borders, no titles | Hooks (Ruby), subtler (CLI), subtlext (Ruby extension) | Xlib | One workspace (view) per monitor (screen), placement on views via tags and per runtime | Yes | Active |
Wingo | Go | Text | Dynamic | None | Yes | No | External | floating, nv-stack, nh-stack, max | title bars in floating, skinny borders in tiling | via wingo-cmd or UNIX sockets in any programming language | X Go Binding | n regions, workspaces visible in any region | Yes | Active |
WMFS | C | Text | Dynamic | Built-in | Yes | Built-in, set with command, color text, images | External | nh-stack (and invert), nv-stack (and invert), mirror-v, mirror-h, grid, free, max | Variable borders, titles or no titles | commands | Xlib | Up to 36 tags(workspaces) per screen | Yes | Active |
wmii | C | Anything | Dynamic | witray | Yes | Built-in | External | columns, max, v-tab | titles | 9P filesystem | one big region | Yes | Abandoned | |
xmonad | Haskell | Haskell | Dynamic | None | Yes | No | Yes, with xmonad-contrib and an external manager | nv-stack, nh-stack, max | Variable borders, no titles | via XMonad-Hooks-ServerMode | Xlib | n regions, 9 workspaces visible in any region | Yes / ? | Active |
Window Manager | Written in | Configured with | Management style | System tray support | On-the-fly reload | Information bars | Compositing | Default layouts | Pixel usage | External control | Library | Multiple (n) monitor behavior | ICCCM/EWMH compliant | Maintenance |
Management style
Dynamic management emphasizes automatic management of window layouts for speed and simplicity. Manual management emphasizes manual adjustment of layout and sizing with potentially more precise control, at the cost of more time spent moving and sizing windows.
Layouts
A number of common layout types appear in several tiling WMs, although the terminology varies somewhat.

- max: one window shown fullscreen (with or without a status bar, title and borders). Aka: monocle (dwm, monsterwm).
- h-stack: master area in top half, other windows stack up horizontally in the bottom half. The master area may be resizable. May be inverted top-bottom (wmfs). Aka: bottom stack (dwm), bstack(monsterwm).
- v-stack: master area in left half, other windows stack up vertically in the right half. The master area may be resizable. May be inverted left-right (wmfs). Aka: tile (dwm, monsterwm).
- nh-stack: h-stack allowing >=1 windows in master area. Aka: nbstack (dwm)
- nv-stack: v-stack allowing >=1 windows in master area. Aka: ntile (dwm)
- mirror-h: nh-stack with stacks above and below the master area
- mirror-v: nv-stack with stacks to the left and right of the master area
- h-tab: one window shown fullscreen with all window titles shown horizontally (like browser tabs)
- v-tab: one window shown fullscreen with all window titles shown vertically. Aka: stack (wmii).
- h-split: a keybinding splits the current window horizontally creating space for another
- v-split: a keybinding splits the current window vertically creating space for another
- columns: manual layout style which treats windows as belonging to vertical columns
- rows: manual layout style which treats windows as belonging to horizontal rows
- grid: window positions and sizes based on a regular NxM grid. May be automatic (like wmfs, monsterwm) or manual (like Subtle).
Key bindings
Tiling window managers are usually designed to be used entirely with the keyboard or with keyboard & mouse. This is for speed (reaching for and moving a mouse is slow) and ease of use. Sensible key bindings are crucial to making workflow fast and efficient. Some default sets are better than others, but generally the keys can be rebound as desired by the user.
See also
- Comparison of extensible window managers compares WMs 'extensible' by scripting, like xmonad and Sawfish.
MacOS’ Mission Control and full-screen mode are great for swiping quickly between apps and keeping your workspace organised. But what if you want to work in a different way? What if you want multiple windows open on one screen, but in a way that’s neat and tidy and allows you to move from one to the other easily?
Expand your Mac, literally
With Setapp, you get 180+ tools for windows management and focused work on Mac. Bring extra space into your workspace.
That’s where Mosaic, available in Setapp, comes in. Mosaic allows you to tile open windows on your Mac screen so that they are all visible at the same time, but also neat and tidy. This app has a library of set layouts for tiled windows. When you drag a window on your Mac, the layout view appears as an overlay on screen and you choose the one you want, and where you want the current window to sit in that layout. You can then add more windows to the it.
Layouts can be organized in groups – such as those for two apps, three apps, etc. And you can create your own if none of those in the library suit you. And, as a final neat touch, you can control Mosaic on your Mac from an accompanying iOS app.

9 easy steps to split your Mac monitor into two screens (and more)
When you have multiple apps open on Mac, a great way to re-arrange them on your desktop is by using Mosaic. This windows manager lets you fill your Mac screen with apps windows, without having to manually move and resize them. So you can use apps side by side, without the distraction of other windows. Here’s how to use Mosaic to tile open windows on your Mac screen.
Change screen layout with Mosaic
This powerful app can change everything about your screen. Split Mac monitor, rearrange windows, or customize layout completely.
Step 1: Get a windows manager app
Search for Mosaic in Setapp and click Install. Once it’s installed, agree to it opening at login, or not if you don’t want it to, and give it permission to manage windows in Accessibility preferences. Click the button on the window that’s displayed on-screen to go to the Accessibility pane, then click the padlock, type in your password and click the box next to Mosaic.
Step 2: Tile the first window
- Choose a window that you want to tile, click and drag it. The Mosaic layout library will appear.
- Drag the window onto a layout and over the position you want it to take, then let go.
- The window will snap into position.
Tiling Window Macos
Step 3: Tile the second window
Choose another window you want to appear on the screen alongside the one you just tiled, and drag it onto the same layout in a different position. The two windows will now appear on-screen in the layout you chose. You can click on one to make it active and work on it, just as you would normally.
Step 4: Change side by side layout activation settings
If you don’t like the layout view appearing every time you drag a window, you can change that behaviour so it only appears when you drag a window to the top of the screen or when you hold down the Alt key and drag a window. Click the Mosaic menu bar item, navigate to ‘Show Layouts’ and choose the option you want.
Step 5: Change group settings

By default, only the most common layouts are shown when you drag a window. To change that so that all layouts are shown, or those from a specific group:
- Click on the Mosaic menu bar item.
- Navigate to the Drag & Drop section and hover over Group.
- Choose the group whose layouts you want to see when you drag a window.
Step 6: Change layout view settings
If you want to change the way layouts appear when you activate Layout view, that’s easy too. By default, they appear in a row on the screen and if there are too many for one view, they’ll wrap onto a second row. You can change that to a column view – similar to row view but with layouts displayed vertically; a grid view – that displays layouts on a grid in the centre of the screen; or docked view – that displays half-size layouts docked to the top of the screen. To change the view, click on the Mosaic menu bar item and select Layout View, then your choice of view.
Step 7: Change keyboard shortcuts
To activate Layout view from a keyboard shortcut, rather than by dragging and selecting, make sure the window you want to apply the layout to is selected and press Alt-Shift-Cmd-L. You’ll see the Layout view appear on screen. Click on the layout you want to use. To change the keyboard shortcut, go to Preferences the Behaviour. Click on the keyboard shortcut at the bottom of the window and type a new shortcut. To change how layouts activated by a keyboard shortcut appear on screen, click on the Mosaic menu bar item, go to the Click & Select section and choose a Layout View. To change which layouts are displayed, do the same, but choose a Group instead.
Tip: You can set up Drag & Drop differently from Click & Select so that when you activate Mosaic using one method it displays one group of layouts and when you activate using Click & Select it displays a different group.
Step 8: Set more keyboard shortcuts
You can also set up keyboard shortcuts for positions within layouts. So, for example you could set one up for the left side of a two-window layout where the windows are side by side and each occupy half the screen. To do that, go to Preferences and click the Layouts tab. Choose the Left layout in the list of layouts in at the left of the window, then click Record shortcut. Type the shortcut you want to use. Now repeat for the Right layout, using a different shortcut. To test it, go to a window on screen, click on it and type the shortcut for Left or Right. The window will move into position.
Step 9: Customise new layout
If none of the layouts in the layout library are suitable for your work, you can create a new one. Go to Preferences and click on the Layouts tab. Click the ‘+’ at the bottom of the list of layouts. Select New Layout. Give the layout a name and, if you want, record a keyboard shortcut for it. You can also specify which screen it appears on if you use multiple displays. If you want to use the default 8x8 grid and 32-pixel gutter (the space left between windows so they or their shadows don’t overlap), just draw the layout on the grid by clicking and dragging. If you want to change the number of rectangles in the grid or the size of the gutter, click on the three dots next to the option you want to change and make a selection.
It's not hard to be productive with your Mac when you combine Mosaic, Workspaces, Focus and other productivity apps on Setapp.
Do you have any windows management tips you wish to share?
댓글