├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── docs ├── api.md ├── contact.html ├── docs.html ├── docs │ ├── sa.html │ ├── source.html │ └── userguide.html ├── images │ └── chunkwm-logo.png ├── index.html ├── screens.html └── styles │ └── style.css ├── examples ├── chunkwmrc └── com.koekeishiya.chunkwm.plist ├── makefile └── src ├── api ├── plugin_api.h ├── plugin_cvar.h └── plugin_export.h ├── chunkc ├── README.md ├── chunkc.c └── makefile ├── common ├── accessibility │ ├── application.cpp │ ├── application.h │ ├── display.h │ ├── display.mm │ ├── element.cpp │ ├── element.h │ ├── observer.cpp │ ├── observer.h │ ├── window.cpp │ └── window.h ├── border │ ├── border.h │ └── border.mm ├── config │ ├── cvar.cpp │ ├── cvar.h │ ├── tokenize.cpp │ └── tokenize.h ├── dispatch │ ├── cgeventtap.cpp │ └── cgeventtap.h ├── ipc │ ├── daemon.cpp │ └── daemon.h └── misc │ ├── assert.h │ ├── carbon.cpp │ ├── carbon.h │ ├── profile.h │ ├── string.h │ ├── workspace.h │ └── workspace.mm ├── completions └── _chunkc ├── core ├── callback.cpp ├── chunkwm.mm ├── clog.c ├── clog.h ├── config.cpp ├── config.h ├── constants.h ├── cvar.cpp ├── cvar.h ├── dispatch │ ├── carbon.cpp │ ├── carbon.h │ ├── display.cpp │ ├── display.h │ ├── event.cpp │ ├── event.h │ ├── workspace.h │ └── workspace.mm ├── hotload.c ├── hotload.h ├── hotloader.cpp ├── hotloader.h ├── plugin.cpp ├── plugin.h ├── sa.mm ├── sa_bundle.cpp ├── sa_core.cpp ├── sa_text.cpp ├── state.cpp ├── state.h ├── wqueue.cpp └── wqueue.h └── plugins ├── border ├── CHANGELOG.md ├── README.md ├── makefile └── plugin.mm ├── ffm ├── CHANGELOG.md ├── README.md ├── makefile └── plugin.cpp ├── purify ├── makefile └── plugin.mm ├── template ├── makefile └── plugin.cpp └── tiling ├── CHANGELOG.md ├── README.md ├── config.cpp ├── config.h ├── constants.h ├── controller.cpp ├── controller.h ├── examples ├── README.md ├── khdrc └── skhdrc ├── makefile ├── misc.h ├── mouse.cpp ├── mouse.h ├── node.cpp ├── node.h ├── plugin.mm ├── presel.h ├── presel.mm ├── region.cpp ├── region.h ├── rule.cpp ├── rule.h ├── vspace.cpp └── vspace.h /.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | /plugins 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: objective-c 2 | osx_image: xcode9.4 3 | env: 4 | - BUILD_DIR=. 5 | - BUILD_DIR=./src/plugins/tiling 6 | - BUILD_DIR=./src/plugins/border 7 | - BUILD_DIR=./src/plugins/ffm 8 | script: cd $BUILD_DIR && make install 9 | notifications: 10 | irc: 11 | channels: 12 | - "irc.freenode.net#chunkwm" 13 | template: 14 | - "%{repository_slug} (%{commit}) : %{commit_message} " 15 | - "Build details (%{result}): %{build_url}" 16 | use_notice: true 17 | skip_join: true 18 | 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### HEAD - not yet released 2 | 3 | ---------- 4 | 5 | ### version 0.4.10 6 | 7 | #### other changes 8 | 9 | - sanitize plugin filename to prevent directory traversal when a plugin directory has been specified (#604) 10 | 11 | - some features of chunkwm-sa should once again work properly for macOS High Sierra (#611) 12 | 13 | ---------- 14 | 15 | ### version 0.4.9 16 | 17 | #### other changes 18 | 19 | - update spaces support for macOS Mojave 10.14.4 (fast-switch, create and destroy, move to monitor) (#571, #583) 20 | 21 | - use unix domain socket (file) and pid-file instead of INET port when listening to commands (#434) 22 | 23 | ---------- 24 | 25 | ### version 0.4.8 26 | 27 | #### other changes 28 | 29 | - update spaces support for macOS Mojave (fast-switch, create and destroy) (#554) 30 | 31 | ---------- 32 | 33 | ### version 0.4.7 34 | 35 | ### other changes 36 | 37 | - some applications are incorrectly classified as support GUI (windows) but do not respond correctly. 38 | add a maximum wait-time so that we eventually timeout for these applications (#489) 39 | 40 | ---------- 41 | 42 | ### version 0.4.6 43 | 44 | #### ABI Change 45 | 46 | - Add "magic number" to exported plugin header to identify valid chunkwm plugin files 47 | 48 | - Add new log-level *profile* and simple helper macros (#446) 49 | 50 | ---------- 51 | 52 | ### version 0.4.5 53 | 54 | 55 | ---------- 56 | 57 | ### version 0.4.4 58 | 59 | #### other changes 60 | 61 | - add full spaces support for macOS Mojave (fast-switch, create and destroy) (#425) 62 | 63 | ---------- 64 | 65 | ### version 0.4.3 66 | 67 | #### other changes 68 | 69 | - loosen filter applied to launched applications based on process type (#108) 70 | 71 | - we try to subscribe to notifications for sheet-windows (#229) 72 | 73 | - automatically load chunkwm-sa (if installed) on startup or if the Dock is restarted (#448) 74 | 75 | - update bundled chunkwm-sa (#425) 76 | 77 | ---------- 78 | 79 | ### version 0.4.2 80 | 81 | #### other changes 82 | 83 | - update bundled version of chunkwm-sa (#431) 84 | 85 | ---------- 86 | 87 | ### version 0.4.1 88 | 89 | #### other changes 90 | 91 | - update bundled version of chunkwm-sa (#431) 92 | 93 | ---------- 94 | 95 | ### version 0.4.0 96 | 97 | #### ABI Change 98 | 99 | - Add new event `chunkwm_export_window_sheet_created` (#229) 100 | 101 | ---------- 102 | 103 | ### version 0.3.9 104 | 105 | #### other changes 106 | 107 | - check if 'displays have separate spaces' is enabled, and fail with an error message if not (#424) 108 | 109 | ---------- 110 | 111 | ### version 0.3.8 112 | 113 | #### other changes 114 | 115 | - don't force 'chunkc' invocations to require backgrounded processes when ran from config-file (#376) 116 | 117 | ---------- 118 | 119 | ### version 0.3.7 120 | 121 | #### other changes 122 | 123 | - fixed an issue with *chunkc* reading socket response (#376) 124 | 125 | - any 'chunkc' command that is run from the config file 126 | that is NOT 'chunkc core::<..>' or 'chunkc set ..' 127 | MUST be put in the background using & 128 | 129 | e.g: `chunkc tiling::rule --owner Finder --name Copy --state float &` 130 | 131 | ---------- 132 | 133 | ### version 0.3.6 134 | 135 | #### other changes 136 | 137 | - fixed an issue that caused applications to be ignored by chunkwm due to slow startup-time (#329) 138 | 139 | ---------- 140 | 141 | ### version 0.3.5 142 | 143 | #### other changes 144 | 145 | - fixed an issue that caused chunkwm to crash if the user tried to query a non-existing cvar (#378) 146 | 147 | ---------- 148 | 149 | ### version 0.3.4 150 | 151 | #### other changes 152 | 153 | - fixed an issue where a window would incorrectly be deemed invalid due to an obscure issue with registering notifications. 154 | 155 | ---------- 156 | 157 | ### version 0.3.3 158 | 159 | #### cvar changes 160 | 161 | - added new option to set logging-output in the config-file: 162 | `chunkc core::log_file ` 163 | 164 | ---------- 165 | 166 | ### version 0.3.2 167 | 168 | #### other changes 169 | 170 | - fixed an issue with identifying monitors by arrangement. 171 | 172 | ---------- 173 | 174 | ### version 0.3.1 175 | 176 | #### launch argument 177 | 178 | - removed launch argument to set logging-level. logging-level is set in the config-file! 179 | 180 | #### other changes 181 | 182 | - fixed a race-condition that could cause plugin-commands to be attempted to be ran before 183 | the plugin was successfully loaded. 184 | 185 | - fixed an issue that could cause argument parsing in plugin-commands to fail due to not properly 186 | resetting the state of *getopt*. 187 | 188 | ---------- 189 | 190 | ### version 0.3.0 191 | 192 | #### launch argument 193 | 194 | - added new launch argument to set logging-level: 195 | ``` 196 | chunkwm --log-level