Skip to content

josephnoir/kwm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Description Build Status

NOTE: The master branch is considered stable and can be used instead of the latest release version by people who wish to do so.

If you building from source on the master branch khd is required in order to allow key-bindings to control kwm.

Kwm started as a simple project to get true focus-follows-mouse support on OSX through event tapping. It is now a tiling window manager that represents windows as the leaves of a binary tree. Kwm supports binary space partitioned, monocle and floating spaces.

Kwm uses the event taps API (Quartz Event Services) to observe, filter and alter user input events prior to their delivery to a foreground application. This allows for functionality such as focus-follows-mouse, and different types of hotkeys.

Kwm runs a local daemon to read messages and trigger functions. Kwmc is used to write to Kwm's socket, and must be used when interacting with and configuring how Kwm works.

For in depth information, click here. For sample configurations and other useful scripts, check out the wiki. You can also drop by the channel ##kwm on freenode.

Kwm requires access to the OSX accessibility API. Tested on El Capitan (10.11.1 - 10.11.6).

img For more screenshots, click here.

The bar seen in the above screenshot can be found here.

Install

NOTE: Kwm requires 'Displays have separate spaces' to be enabled.

A codesigned binary release is available through Homebrew

  brew install koekeishiya/kwm/kwm

Manage Kwm using brew services

  brew services start kwm

Development

NOTE: Kwm requires 'Displays have separate spaces' to be enabled.

NOTE: Requires Xcode-8 command line tools

Build AXLib only

  make install-lib  # release version, runs cleanlib
  make lib          # debug version

Build Kwm (also builds AXLib if required)

  make install      # release version, runs cleankwm
  make              # debug version

Remove temporary build artifacts

  make clean        # runs cleanlib and cleankwm
  make cleanlib     # remove axlib artifacts
  make cleankwm     # remove kwm artifacts

Start Kwm on login through launchd

  edit /path/to/kwm on line 9 of examples/com.koekeishiya.kwm.plist
  cp examples/com.koekeishiya.kwm.plist ~/Library/LaunchAgents/

Manually manage Kwm using launchctl

  launchctl load -w ~/Library/LaunchAgents/com.koekeishiya.kwm.plist

Configuration

NOTE: Documentation of available commands

The default configuration file is $HOME/.kwm/kwmrc and is a script that contains kwmc commands to be executed when Kwm starts. In addition to the above, the file $HOME/.kwm/init is a shell script that will be ran after Kwm has finished setting up the internal configuration.

A different path can be used by running kwm -c /path/to/kwmrc or kwm --config /path/to/kwmrc, in which case it would probably be a good idea to set the directories Kwm uses for various settings.

A sample config file can be found within the examples directory. Any error that occur during parsing of the config file will be written to stderr. For more information, click here.

Donate

Kwm will always be free and open source, however, some users have expressed interest in some way to show their support. If you wish to do so, I have set up a patreon here.

About

Tiling window manager with focus follows mouse for OSX

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 87.1%
  • Objective-C++ 8.7%
  • Swift 1.9%
  • C 1.4%
  • Makefile 0.9%