Commit a2e985c
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
1 file changed
+288
-143
lines changed
0 commit comments