Skip to content

Commit a2e985c

Browse files
committed
Handle windows with tabs
MacOS applications like Terminal and Finder can create new tabs within the same window. To Hammerspoon each tab looks like an independent window, with a unique frame. A window with no tabs will have a tabCount of 0. A new tab for an existing window will have a tabCount equal to the total number of tabs (eg. 2 for the first new tab). The tabCount for existing tabs will be set back to 0. This means we need to capture and track each new tab when it is created. We cannot identify a tab later. Setting the frame for a tab that is not the top active tab has no effect. There is currently no good way to tell which tab of a window is on top (but not focused). For now, set the frame of the first tab for each window and call raise() to bring the tab to the front before setting the frame. This will switch the tab to the first one everytime the space is re-tiled (eg on window move). Change the window_list to hold a list of tabs for each row, of each column, of each space. Windows with no tabs will be a list of 1. Tabs will have their own key in the index_table. This means that multiple index_table entries can now have the same space/column/row index values. Create some new helper functions: getFocusedWindow(), getRow(), trace().
1 parent e3b4868 commit a2e985c

File tree

1 file changed

+288
-143
lines changed

1 file changed

+288
-143
lines changed

0 commit comments

Comments
 (0)