HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jigish
slate
Objective-C2011–2024
jigish / slate

slate

A window management application (replacement for Divvy/SizeUp/ShiftIt)

64Distinct people
71Mentions
7Explicit recommenders
7.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A window management application (replacement for Divvy/SizeUp/ShiftIt)

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Another one is called slate: https://github.com/jigish/slate Very flexible, my favorite feature is that configs can be written in JS, here's mine:…

tnajdek used a recommendation phrase. 7 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 6:01:32 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year71 dated mentions

Observed mentions: 2011-12-20 19:13:10 UTC to 2024-06-11 02:13:22 UTC.

051015202011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20112012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 22 mentions; 1 submissions, 21 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 17 mentions; 0 submissions, 17 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC101
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC826
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC22121
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC17017
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC505
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC606
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC404
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC202
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
About Slate Slate is a window management application similar to Divvy and SizeUp (except better and free!). Originally written to replace them due to some limitations in how each work, it attempts to overcome them by simply being extremely configurable. As a result, it may be a bit daunting to get configured, but once it is done, the benefit is huge. Slate currently works on Mac OS X 10.6 and above Summary of Features Highly customizable Bind keystrokes to: move and/or resize windows directionally focus windows activate preset layouts create, delete, and activate snapshots of the current state of windows Set default layouts for different monitor configurations which will activate when that configuration is detected. Window Hints: an intuitive way to change window focus [Beta] A better, more customizable, application switcher. Credits Big thanks to philc for the Window Hints idea (and initial implementation) as well as plenty of other suggestions and improvement ideas. Using Slate Installing Slate NEW Installation Instructions Note: You must turn on the Accessibility API by checking System Preferences > Universal Access > Enable access for assistive devices Direct Download .dmg .tar.gz Terminal Just run this in your terminal: cd /Applications && curl http://www.ninjamonkeysoftware.com/slate/versions/slate-latest.tar.gz | tar -xz Configuring Slate NEW: You may now use a ".slate.js" file to configure slate using JavaScript. This allows for much more complex and dynamic configurations than the normal slate configuration style below. You can check out the documentation for this here. Slate is configured using a ".slate" file in the current user's home directory. Configuration is loaded upon running Slate. You can also re-load the config using the "Load Config" menu option on the status menu (use this at your own risk. It is better to simply restart Slate). Note: If no ".slate" file exists in the current user's home directory, the default config file will be used. Configuration is split into the following directives: config (for global configurations) alias (to create alias variables) layout (to configure layouts) default (to default certain screen configurations to layouts) bind (for key bindings) source (to load configs from another file) Note: # is the comment character. Anything after a # will be ignored. ###Expressions### Some directives allow parameters that can be expressions. The following strings will be replaced with the appropriate values when using expressions: screenOriginX = target screen's top left x coordinate (should not be used in Window Hints configs) screenOriginY = target screen's top left y coordinate (should not be used in Window Hints configs) screenSizeX = target screen's width screenSizeY = target screen's height windowTopLeftX = window's current top left x coordinate (should not be used in Window Hints configs) windowTopLeftY = window's current top left y coordinate (should not be used in Window Hints configs) windowSizeX = window's width windowSizeY = window's height newWindowSizeX = window's new width (after resize, only usable in topLeftX and topLeftY, should not be used in configs) newWindowSizeY = window's new height (after resize, only usable in topLeftX and topLeftY, should not be used in configs) windowHintsWidth = the value of the windowHintsWidth config (only usable in windowHintsTopLeftX and windowHintsTopLeftY) windowHintsHeight = the value of the windowHintsHeight config (only usable in windowHintsTopLeftX and windowHintsTopLeftY) In addition to the variables above, expressions can be used with the following functions and operators: + e.g. 1+1 = 2 - e.g. 1-1 = 0 * e.g. 2*2 = 4 / e.g. 4/2 = 2 ** e.g. 3**2 = 9 sum e.g. sum({1,2,3}) = 6 count e.g. count({4,5,6}) = 3 min e.g. min({1,3,5}) = 1 max e.g. max({1,3,5}) = 5 average e.g. average({1,2,3,4}) = 2.5 median e.g. median({1,2,3,10,15}) = 3 stddev e.g. stddev({1,2,3,4,5}) = 1.4142135623730951 sqrt e.g. sqrt(9) = 3.0 log e.g. log(100) = 2.0 ln e.g. ln(8) = 2.0794415416798357 exp e.g. exp(2) = 7.3890560989306504 (this is "e**parameter") floor e.g. floor(1.9) = 1.0 ceiling e.g. ceiling(1.1) = 2.0 abs e.g. abs(-1) = 1 trunc e.g. trunc(1.1123123123) = 1.0 random e.g. random() = 0.20607629744336009 (random float between 0 and 1) randomn e.g. randomn(10) = 4 (random integer between 0 and parameter-1) Note: When using expressions spaces are not allowed! The config Directive The config directive follows the following format: config name value List of allowed configs Example: config defaultToCurrentScreen true Note: the .slate file is read top-down directives that come before config directives may not have the config applied. As such, it is best to put config directives at the top of your .slate file. The alias Directive The alias directive follows the following format: alias name value When you set an alias, you can refer to it in any directive (sequentially after that alias directive) by referencing like ${name}. Example: alias bot-right-2nd-mon move screenOriginX+2*screenSizeX/3;screenOriginY+screenSizeY/2 screenSizeX/3;screenSizeY/2 1 Will allow you to use ${bot-right-2nd-mon} as a reference to move screenOriginX+2*screenSizeX/3;screenOriginY+screenSizeY/2 screenSizeX/3;screenSizeY/2 1 in any directive following the alias (including other alias directives) The layout Directive The layout directive follows the following format: layout name 'app name':OPTIONS operations Where: name = the name you want to use to reference the layout 'app name' = single-quoted name of the application to add to the layout **or** BEFORE or AFTER OPTIONS = a comma separated list of options for this application (cannot be used with BEFORE or AFTER) operations = a pipe separated list of operations (move, resize, pus
Read the full README on GitHub

What Hacker News says

17 sources
There's a lot of different window managing tools on OS X. I personally use Optimal Layout, but there's a number of open source ones as well, such as Slate [1] (which unfortunately hasn't been updated in a while), Mjolnir (nee Hydra) [2], and Spectacle [3]. Both of the last two were updated a few months ago. Spectacle is a bit easier to use than Mjolnir, but it looks like Mjolnir is more flexible. In comparing Mjolnir to things like Divvy, the Readme states: "Mjolnir is intended for programmers who want to write programs that customize their environment. It's not intended to be a drag-n-drop solution; it's meant to allow you to write your own personalized productivity enhancement suite to keep and to use long-term." [1] https://github.com/jigish/slate [2] https://github.com/sdegutis/mjolnir [3] http://spectacleapp.com
In Mouseless workflow on the Mac
Shameless tangentially-related-software plug: I've been working on Carlisle[0] for a while and I use it day-to-to day. I wrote it because I don't personally like using tiling WMs (and I'm quite happy with Xfce) but I wanted a highly configurable way to quickly move/arrange/resize windows. If you've used Slate[1], it's like a (much simpler) version of that, for Linux (well, EWMH-compliant X window managers, specifically). (Carlisle is a fairly simple wrapper on top of Andrew Gallant's amazing xgbutil libraries[2] for Go.) [0] https://github.com/cespare/carlisle [1] https://github.com/jigish/slate [2] http://godoc.org/github.com/BurntSushi/xgbutil
In Qtile – A hackable tiling window manager written in Python
Looks really cool! I was using [slate](https://github.com/jigish/slate), but it seems to be abandonware. I have a couple of things I'd like: - A [Divvy](http://mizage.com/divvy/)-style grid. When I used Divvy, this really made a dramatic difference in my window management - Rich Spaces/Mission Control support. It'd be great to send windows to certain spaces, make spaces for windows, etc. I'm excited to write a Hydra config for myself, it seems great!
In Hydra: A lightweight OS X window manager with a powerful API
I work on a 27 inch iMac so here are some cool tips I use: 1. You can map Alt+Command+DirectionKey to move the windows to the left or right. They take either 1/4, 1/2, or 2/3 of the window on each direction key press. 2. You can map Shift+Alt+Command+DirectionKey to move the window to one of the four corners of the screen. I -love- this feature. I have Firefox, RubyMine, Terminal and a VLC movie playing on each corner of my screen. Maximum multitasking! --- In the interest of alternatives there's also Slate[0] but while it's very configurable, it's an exercise in learning yet another tool. Lots and lots of configuration files[1]. Just use Spectacle if you want something that just works out of the box. [0] - https://github.com/jigish/slate [1] - https://github.com/jigish/slate/issues/381
In Spectacle – Mac OS X's missing window tiling manager.
morganherlocker·May 16, 2014Recommendation phrase
This was one of the things that made OSX horrible for me when switching from Windows and Linux. I have since learned the tricks to get around many of OSX's windowing quirks, but I do wonder how things like this have not been fixed. I love my OSX setup now, but if I was a "non-power-user", I think it would be completely unusable. Watching a typical Windows user try to maximize a window in OSX is pure pain. Hit the + button: window gets a bit bigger, but not full screen. Drag the window to the top: nothing happens. Try to get to the edge of the window, and drag it out: RSI inducing frustration. Windows seems to dominate as far as basic user usability goes on the windowing front. I would still find it completely unusable without the help of a windowing app like spectacle[1] or slate[2]. [1] http://spectacleapp.com/ [2] https://github.com/jig
Read the rest
In Mac keyboard shortcuts
I'm visually impaired, not legally blind although not far off it. I'm also pretty photo-sensitive. Some things that have helped me in no particular order: - Get a large (27" in my case) monitor so I can have the text large without having to constantly zoom in. High resolution + higher DPI is easier on the eyes than getting big text by lowering the resolution. - Learn a terminal based text editor (Vim or EMacs) and get good at using the terminal. Many GUI based applications, particularly IDEs have limited options or don't work well with larger text sizes. Working within a terminal makes developing less "visual" while maximising the amount of information on screen. Now I spend 80% plus of my day in a terminal and my eyes are significantly less tired at the end of the day. - Use a tiling window manager. On OSX I use Slate (https://github.com
Read the rest
/jigish/slate), or on Nix you could use something like XMonad. The screen-snapping stuff in recent versions of Windows is helpful too. The idea here is to rely on the mouse as little as possible. - use a dark color scheme. I like Solarized-dark but there are several other good options. - pick an easy to read font. I use Menlo and have the size up around 32pt. - use a terminal prompt that makes it very clear where the prompt is when scrolling back through history. I use this one https://gist.github.com/agnoster/3712874 - get an adjustable monitor arm so you can bring the screen closer to you without craning your neck. I've had the same one for 15+ years but am planning on buying one of the Ergotron ones in the next few weeks - use f.lux to take the bright blue tint out of screen colors https://justgetflux.com/ - work in a room lit by lamps positioned so that they don't add any glare. - if you often find yourself working at the same screen as other people, set up a second monitor in mirror-mode or investigate using TMux if you're both in terminal editors so that you can have your terminal configured so it's comfortable for you, and so can your partner. I'm happy to provide more info on any of this.
In Legally blind programming help

Showing the 15 most recent of 17 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.