From f385fd0721dde5634762a45eadfae847491b79b7 Mon Sep 17 00:00:00 2001 From: Colton Padden Date: Sun, 12 May 2024 23:15:18 -0400 Subject: [PATCH] initial release of wm.spoon --- .github/wm.spoon.logo.png | Bin 0 -> 7165 bytes .github/wm.spoon.png | Bin 0 -> 64942 bytes .github/workflows/release.yml | 20 +++ README.md | 74 ++++++++++ wm/spoon.lua | 271 ++++++++++++++++++++++++++++++++++ 5 files changed, 365 insertions(+) create mode 100644 .github/wm.spoon.logo.png create mode 100644 .github/wm.spoon.png create mode 100644 .github/workflows/release.yml create mode 100644 README.md create mode 100644 wm/spoon.lua diff --git a/.github/wm.spoon.logo.png b/.github/wm.spoon.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..24fcf707d82fb7bc4c3a335e574f593c28cddae6 GIT binary patch literal 7165 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 N?ju9ZDs|h){|Cw;*m?i} literal 0 HcmV?d00001 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..26a7aad --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,20 @@ +name: Release Action +on: + push: + tags: + - '*' +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Archive Release + uses: thedoctor0/zip-release@master + with: + type: 'zip' + filename: 'wm.spoon.zip' + path: 'wm/' + - name: Upload Release + uses: ncipollo/release-action@v1 + with: + artifacts: 'wm.spoon.zip' diff --git a/README.md b/README.md new file mode 100644 index 0000000..abf72fd --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +![wm.spoon banner](.github/wm.spoon.png) + +# wm.spoon + +Window manager built on top of [Hammerspoon](https://www.hammerspoon.org/) -- the powerful automation framework for macOS. + +## Installation + +Download the latest [release](https://github.com/cmpadden/wm.spoon/releases/) from the side panel, decompress the file, and double click the Spoon. + +Refer to the [official documentation](https://github.com/Hammerspoon/hammerspoon/blob/master/SPOONS.md) for more information on Spoons, and how to install them. + +## Usage + +There are two primary concepts of `wm.spoon`: **layouts** and **geometries**. To use `wm.spoon` one must first define a layouts (or many), which is a table of geometries. A geometry is a built-in utility of Hammerspoon, [hs.geometry](https://www.hammerspoon.org/docs/hs.geometry.html), that represents the height, width, and x-and-y positions of a rectangle. + +The user defines an table of layouts on `config.layouts`, which are bound to ` + 1, 2, 3, ... n`; using these hotkeys one can cycle through window layouts. + +Then, the user can cycle the position of a window between the geometries of this layout using ` + h`, and ` + l` by default. + +After moving windows to their desired positions, the state can be saved using the default binding of ` + -`. + +## Configuration + +When initializing `wm.spoon`, the user is required to define their layouts, however, they also have the option to tweak key bindings along with a variety of other options. + +A collection of pre-defined geometries can be found in `wm.builtins`. + +```lua +local wm = require("wm") + +wm.config.layouts = { + { + wm.builtins.padded_left, + wm.builtins.padded_right, + }, + { + wm.builtins.padded_left, + wm.builtins.padded_right, + wm.builtins.pip_bottom_right, + }, + { + wm.builtins.padded_center, + wm.builtins.pip_bottom_right, + }, + { + wm.builtins.skinny, + wm.builtins.pip_top_right, + }, +} + +wm:init() +``` + +## Releases + +Releases are triggered on tag creation as defined by the `.github/workflows/release.yml` GitHub action. + +```bash +git tag v0.1 +git push origin v0.1 +``` + +## Raison d'ĂȘtre + +This is an opinionated window management system that adheres to the workflow that I find most intuitive. For several years I used the tiling window managers like i3wm, but did not find something that suited my needs on macOS. This is not intended to as powerful as a manager like that, nor is it a tiling window manager. Instead, this is the byproduct of me playing around with Hammerspoon in my spare time. + +Feedback and contributions are welcome, however, drastic changes would likely be better suited as a fork. + +--- + +
+ wm.spoon logo +
diff --git a/wm/spoon.lua b/wm/spoon.lua new file mode 100644 index 0000000..924bd99 --- /dev/null +++ b/wm/spoon.lua @@ -0,0 +1,271 @@ +--- Window Management +-- +-- Tracking: +-- - [ ] Multi-monitor support +-- - [ ] Differing geometries for multiple windows in the same application +-- - [ ] Parameterize animation disable + +local obj = { + name = "wm.spoon", + config = { + default_layout = 2, + state_file_path = os.getenv("HOME") .. "/.hammerspoon/_wm.spoon.state.json", + layouts = {}, + bindings = { + prefix = { "cmd", "shift" }, + cycle_left = "h", + cycle_right = "l", + state_save = "-", + state_restore = "=", + state_alert = "/", + }, + }, + state = { + -- [1] = { application_name_1 = 1, application_name_2 = 1 } + -- [2] = { application_name_1 = 1, application_name_2 = 3 } + }, +} + +local split_padding = 0.08 +local padding = 0.02 +local window_width_centered = 0.65 +local window_width_skinny = 0.35 +local pip_height = 0.35 +local pip_width = 0.142 + +--- Predefined geometries +obj.builtins = { + padded_center = hs.geometry({ + h = (1 - (2 * padding)), + w = window_width_centered, + x = ((1 - window_width_centered) / 2), + y = padding, + }), + + padded_left = hs.geometry({ + h = (1 - (2 * padding)), + w = (0.5 - (split_padding + 0.005)), + x = split_padding, + y = padding, + }), + + padded_right = hs.geometry({ + h = (1 - (2 * padding)), + w = (0.5 - split_padding - 0.005), + x = (0.5 + 0.005), + y = padding, + }), + + skinny = hs.geometry({ + h = (1 - (2 * padding)), + w = window_width_skinny, + x = ((1 - window_width_skinny) / 2), + y = padding, + }), + + pip_bottom_right = hs.geometry({ + h = pip_height, + w = pip_width, + x = (1 - 0.162), + y = ((1 - pip_height) - padding), + }), + + pip_top_right = hs.geometry({ + h = pip_height, + w = pip_width, + x = padding, + y = padding, + }), +} + +--- Retrieves configuration value with support for nested parameters. +local function get_config(...) + local args = { ... } + local value = nil + for _, param in ipairs(args) do + if value == nil then + value = obj.config[param] + else + value = value[param] + end + if value == nil then + error(string.format("Invalid parameter: %s", param)) + end + end + return value +end + +--- Converts a unitrect (relative coordinates) to a rect (absolute coordinates) based on the main screen's frame. +-- --- @param unit_rect hs.geometry A unitrect representing relative coordinates. +-- --- @return hs.geometry A rect representing absolute coordinates. +local function _unit_rect_to_rect(unit_rect) + local screen_frame = hs.screen.mainScreen():frame() + return hs.geometry.rect( + screen_frame.x + (unit_rect.x * screen_frame.w), + screen_frame.y + (unit_rect.y * screen_frame.h), + unit_rect.w * screen_frame.w, + unit_rect.h * screen_frame.h + ) +end + +-- Temporary workaround: move windows until we confirm that they are at the frame that +-- we expect. Have a retry of 3 to prevent any unwanted infinite loops. For more +-- information reference the open github issue: +-- +-- https://github.com/Hammerspoon/hammerspoon/issues/3624 +local function _move_to_unit_with_retries(geometry, window) + window:moveToUnit(geometry) + local retries = 3 + hs.timer.doUntil(function() + return retries == 0 or window:frame():equals(_unit_rect_to_rect(geometry):floor()) + end, function() + window:moveToUnit(geometry) + retries = retries - 1 + end, 0.25) +end + +local function get_application_geometry_index(layout, application_name) + if obj.state[layout] == nil then + obj.state[layout] = {} + obj.state[layout][application_name] = 1 + return 1 + end + + if obj.state[layout][application_name] == nil then + obj.state[layout][application_name] = 1 + return 1 + end + + return obj.state[layout][application_name] +end + +local function set_application_geometry_index(layout, application_name, index) + if obj.state[layout] == nil then + obj.state[layout] = {} + obj.state[layout][application_name] = index + return + end + obj.state[layout][application_name] = index +end + +--- Traverse `table` by `step` wrapping around to the beginning and end of the table. +-- +-- If Lua arrays had a 0-based index, then this would be simple using the modulus operator, +-- however, instead we have to do this hacky workaround. See another user with the same +-- bewilderment: https://devforum.roblox.com/t/wrapping-index-in-an-array/1476197/2 +-- +---@param table table table to traverse +---@param index integer current index of table +---@param step integer positive or negative value to iterate over table +local function next_index_circular(table, index, step) + if #table == 1 then + return 1 + end + if step > 0 and index + step > #table then + return index + step - #table + elseif step < 0 and index + step <= 0 then + return #table + index + step + else + return index + step + end +end + +function obj:move_focused_window_next_geometry(direction) + local focused_window = hs.window.focusedWindow() + local focused_application_name = focused_window:application():name() + + local _active_layout = self.layouts[self.layout] + + local current_index = get_application_geometry_index(self.layout, focused_application_name) + local next_index = next_index_circular(_active_layout, current_index, direction) + set_application_geometry_index(self.layout, focused_application_name, next_index) + + local target_geometry = _active_layout[next_index] + focused_window:moveToUnit(target_geometry) +end + +function obj:set_layout(layout) + self.layout = layout + local active_layout = self.layouts[layout] + + local active_windows = self.window_filter_all:getWindows() + for _, window in ipairs(active_windows) do + local app_name = window:application():name() + local ix = get_application_geometry_index(layout, app_name) + local target_geometry = active_layout[ix] + _move_to_unit_with_retries(target_geometry, window) + end +end + +function obj:save_state() + local path = get_config("state_file_path") + hs.json.write(self.state, path, true, true) + hs.alert(string.format("wm.spoon state written to file: %s", path)) +end + +function obj:load_state() + local path = get_config("state_file_path") + obj.state = hs.json.read(path) + hs.alert(string.format("wm.spoon state loaded from file: %s", path)) +end + +function obj:init() + hs.window.animationDuration = 0 + hs.window.setFrameCorrectness = true + + self.layout = get_config("default_layout") + self.layouts = get_config("layouts") + + -- Automatic layout application to new/focused windows. + self.window_filter_all = hs.window.filter.new() + + -- Consider usage of `windowCreated` and `windowFocused` for ideal resizing trigger + -- TODO refactor this so that movement and getting layout is shared + self.window_filter_all:subscribe(hs.window.filter.windowCreated, function(window, app_name) + local ix = get_application_geometry_index(self.layout, app_name) + local target_geometry = self.layouts[self.layout][ix] + _move_to_unit_with_retries(target_geometry, window) + end) + + -- bind layouts to corresponding 1, 2, ..., n + for key, _ in pairs(self.layouts) do + hs.hotkey.bind({ "cmd", "ctrl" }, tostring(key), function() + obj:set_layout(key) + end) + end + + --- Display cached state window geometries for active layout + local function hs_alert_window_state() + if obj.state[self.layout] == nil then + hs.alert(string.format("No state for layout: %s", self.layout)) + return + end + local lines = {} + lines[#lines + 1] = string.format("Active Layout: %s", self.layout) + lines[#lines + 1] = string.rep("-", 80) + for application, geometry_index in pairs(obj.state[self.layout]) do + lines[#lines + 1] = string.format("%-40s %40s", application, geometry_index) + end + hs.alert(table.concat(lines, "\n")) + end + + local _prefix = get_config("bindings", "prefix") + + hs.hotkey.bind(_prefix, get_config("bindings", "cycle_right"), function() + self:move_focused_window_next_geometry(1) + end) + hs.hotkey.bind(_prefix, get_config("bindings", "cycle_left"), function() + self:move_focused_window_next_geometry(-1) + end) + hs.hotkey.bind(_prefix, get_config("bindings", "state_alert"), function() + hs_alert_window_state() + end) + hs.hotkey.bind(_prefix, get_config("bindings", "state_save"), function() + self:save_state() + end) + hs.hotkey.bind(_prefix, get_config("bindings", "state_restore"), function() + self:load_state() + end) +end + +return obj