bool IsSpaceSystemOrFullscreen() { bool Result = false; if(IsSpaceInitializedForScreen(KWMScreen.Current)) Result = CGSSpaceGetType(CGSDefaultConnection, KWMScreen.Current->ActiveSpace) != CGSSpaceTypeUser; return Result; }
bool GetTagForCurrentSpace(std::string &Tag) { if(KWMScreen.Current && IsSpaceInitializedForScreen(KWMScreen.Current)) { space_info *Space = &KWMScreen.Current->Space[KWMScreen.Current->ActiveSpace]; if(Space->Mode == SpaceModeBSP) { Tag = "[bsp]"; return true; } else if(Space->Mode == SpaceModeFloating) { Tag = "[float]"; return true; } tree_node *Node = Space->RootNode; bool FoundFocusedWindow = false; int FocusedIndex = 0; int NumberOfWindows = 0; if(Node && KWMFocus.Window) { FocusedIndex = 1; NumberOfWindows = 1; if(Node->WindowID == KWMFocus.Window->WID) FoundFocusedWindow = true; while(Node->RightChild) { if(Node->WindowID == KWMFocus.Window->WID) FoundFocusedWindow = true; if(!FoundFocusedWindow) ++FocusedIndex; ++NumberOfWindows; Node = Node->RightChild; } if(Node->WindowID == KWMFocus.Window->WID) FoundFocusedWindow = true; } if(FoundFocusedWindow) Tag = "[" + std::to_string(FocusedIndex) + "/" + std::to_string(NumberOfWindows) + "]"; else Tag = "[" + std::to_string(NumberOfWindows) + "]"; return true; } return false; }
void ToggleFocusedSpaceFloating() { if(KWMScreen.Current && IsSpaceInitializedForScreen(KWMScreen.Current)) { if(!IsSpaceFloating(KWMScreen.Current->ActiveSpace)) FloatFocusedSpace(); else TileFocusedSpace(SpaceModeBSP); } }
bool IsSpaceSystemOrFullscreen() { bool Result = false; if(IsSpaceInitializedForScreen(KWMScreen.Current)) { bool Result = CGSSpaceGetType(CGSDefaultConnection, KWMScreen.Current->ActiveSpace) != CGSSpaceTypeUser; if(Result) DEBUG("IsSpaceSystemOrFullscreen() Space is not user created") }
bool IsSpaceFloating(int SpaceID) { bool Result = false; if(IsSpaceInitializedForScreen(KWMScreen.Current)) { std::map<int, space_info>::iterator It = KWMScreen.Current->Space.find(SpaceID); if(It != KWMScreen.Current->Space.end()) Result = KWMScreen.Current->Space[SpaceID].Mode == SpaceModeFloating; } return Result; }
void FloatFocusedSpace() { if(KWMScreen.Current && IsSpaceInitializedForScreen(KWMScreen.Current) && KWMToggles.EnableTilingMode && !IsSpaceTransitionInProgress() && !IsSpaceSystemOrFullscreen() && FilterWindowList(KWMScreen.Current)) { space_info *Space = &KWMScreen.Current->Space[KWMScreen.Current->ActiveSpace]; DestroyNodeTree(Space->RootNode, Space->Mode); Space->RootNode = NULL; Space->Mode = SpaceModeFloating; ClearFocusedWindow(); } }
void TileFocusedSpace(space_tiling_option Mode) { if(KWMScreen.Current && IsSpaceInitializedForScreen(KWMScreen.Current) && KWMToggles.EnableTilingMode && !IsSpaceTransitionInProgress() && !IsSpaceSystemOrFullscreen() && FilterWindowList(KWMScreen.Current)) { space_info *Space = &KWMScreen.Current->Space[KWMScreen.Current->ActiveSpace]; if(Space->Mode == Mode) return; DestroyNodeTree(Space->RootNode, Space->Mode); Space->RootNode = NULL; Space->Mode = Mode; std::vector<window_info*> WindowsOnDisplay = GetAllWindowsOnDisplay(KWMScreen.Current->ID); CreateWindowNodeTree(KWMScreen.Current, &WindowsOnDisplay); } }
void GetTagForCurrentSpace(std::string &Tag) { if(KWMScreen.Current && IsSpaceInitializedForScreen(KWMScreen.Current)) { space_info *Space = &KWMScreen.Current->Space[KWMScreen.Current->ActiveSpace]; if(Space->Mode == SpaceModeBSP) Tag = "[bsp]"; else if(Space->Mode == SpaceModeFloating) Tag = "[float]"; else if(Space->Mode == SpaceModeMonocle) GetTagForMonocleSpace(Space, Tag); } else { if(KWMMode.Space == SpaceModeBSP) Tag = "[bsp]"; else if(KWMMode.Space == SpaceModeFloating) Tag = "[float]"; else if(KWMMode.Space == SpaceModeMonocle) Tag = "[monocle]"; } }