Skip to content

Conversation

@mogenson
Copy link
Owner

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.

Create a getFocusedWindow() helper function.

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().
@mogenson mogenson force-pushed the ignore-tabbed-windows branch from e3e3906 to a2e985c Compare April 5, 2024 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants