Table of Contents
Window Tabs Keeps your windows in Foundry VTT grouped and organized. Easily Grouping open windows with a tab experience.
- Adds Tabs to nearly any window in Foundry VTT. Making it simple to organize open windows by adding tabs to the frame of the window app.
- Automatic Grouping keeps all of your windows of the same type together. For example, all of your actors will be grouped together, all of your items will be grouped together, etc.
- Maximize, Minimize and Dock you Windows. Easily maximize your windows to take up the entire screen, minimize and dock them above hotbar.
Should work with most modules and systems. However, systems or modules with heavy theming may cause graphical issues. If so just let me know and I will try to fix it.
- Window Controls Does not work with this module. I tried to add support, but given the super janky way I handle windows, it just didn't really work out. Sorry.
- Taskbar Does not work with this module. I tried to add support, but once again, I am handling the windows in a super janky way, so it didnt work out. Sorry.
- PopOut! Unable to select header button because of version issue. This is fixed in version 2.9+ but only version 2.14 is available on v11. Once this weird version issue is fixed, I will add support for this module.
Window Tabs comes with an API to use to help you integrate with it.
You can use game.modules.get('window-tabs').api.register(MODULE_ID, FUNCTION) to register a custom function that will be called to determine a windows grouping. For example:
game.modules.get('window-tabs').api.register('kasper', (sheetApp) => {
// If Sheet ID is kasper-manager, group kasper wiht config
return (sheetApp?.id == 'kasper-manager' ? 'config' : null);
});This will check to see if the id of the window being opened is kasper-manager. If it is, it will group it with the config tab. If not, it will not use any custom grouping.
It is recommened that you use your Modules ID as the first parameter, this will help avoiding conflicts with other modules. If you need to register multiple functions, its recommend you use Module ID + Function Name, for example kasper.myFunction.
You can use game.modules.get('window-tabs').api.unregister(MODULE_ID) to unregister a custom function. For example:
game.modules.get('window-tabs').api.unregister('kasper');This will unregister the custom grouping function registered above.
You can use the API in your world scripts to register and unregister custom grouping functions. This is useful when you want to force specific windows to be grouped togerher. Lets say you want your players and companion sheets to be grouped together, but they are in different folders. You could use a would script and do something like this:
Hooks.once('setup', () => {
if (game.modules.get('window-tabs')?.active ?? false) {
game.modules.get('window-tabs').api.register(`world-script.party-override`, (sheetApp) => {
return ((['FKLdIWiWNOsN2vP5', 'DVIEhYEW1Wbnibdz'].includes(sheetApp?.document?.folder?.id ?? '')) ? 'party-overide' : false);
});
}
})This will check if the sheetApp that is being opening is contained in either the Player Folder (ID: FKLdIWiWNOsN2vP5) or Companion Folder (ID: DVIEhYEW1Wbnibdz) and give it the group id party-override so that these sheets will be grouped together even though they noramlly wouldn't be.
The image used for the logo can be found here Tabs icons created by Smashicons - Flaticon
Distributed under the MIT License. See LICENSE for more information.