Hyprland/src/desktop/Workspace.hpp

70 lines
1.9 KiB
C++
Raw Normal View History

2022-03-20 15:55:47 +01:00
#pragma once
#include "../helpers/AnimatedVariable.hpp"
2023-08-07 13:35:19 +02:00
#include <string>
#include "../defines.hpp"
2022-03-20 15:55:47 +01:00
enum eFullscreenMode : int8_t {
FULLSCREEN_INVALID = -1,
FULLSCREEN_FULL = 0,
FULLSCREEN_MAXIMIZED
};
2022-08-31 17:02:44 +02:00
class CWindow;
class CWorkspace {
public:
CWorkspace(int id, int monitorID, std::string name, bool special = false);
~CWorkspace();
2022-04-21 16:38:48 +02:00
// Workspaces ID-based have IDs > 0
// and workspaces name-based have IDs starting with -1337
int m_iID = -1;
std::string m_szName = "";
uint64_t m_iMonitorID = -1;
2022-08-21 12:21:21 +02:00
// Previous workspace ID is stored during a workspace change, allowing travel
// to the previous workspace.
struct SPrevWorkspaceData {
int iID = -1;
std::string name = "";
} m_sPrevWorkspace;
bool m_bHasFullscreenWindow = false;
eFullscreenMode m_efFullscreenMode = FULLSCREEN_FULL;
wl_array m_wlrCoordinateArr;
2022-05-12 11:27:31 +02:00
// for animations
CAnimatedVariable<Vector2D> m_vRenderOffset;
CAnimatedVariable<float> m_fAlpha;
bool m_bForceRendering = false;
2022-05-16 23:13:32 +02:00
2022-05-31 14:01:00 +02:00
// "scratchpad"
bool m_bIsSpecialWorkspace = false;
2022-05-31 14:01:00 +02:00
2022-08-31 17:02:44 +02:00
// last window
CWindow* m_pLastFocusedWindow = nullptr;
2022-08-31 17:02:44 +02:00
2022-05-26 19:05:32 +02:00
// user-set
bool m_bDefaultFloating = false;
bool m_bDefaultPseudo = false;
2023-05-03 16:15:56 +02:00
// last monitor (used on reconnect)
std::string m_szLastMonitor = "";
2022-05-26 19:05:32 +02:00
// Whether the user configured command for on-created-empty has been executed, if any
bool m_bOnCreatedEmptyExecuted = false;
void startAnim(bool in, bool left, bool instant = false);
void setActive(bool on);
void moveToMonitor(const int&);
2022-09-01 11:46:36 +02:00
CWindow* getLastFocusedWindow();
void rememberPrevWorkspace(const CWorkspace* prevWorkspace);
std::string getConfigName();
bool matchesStaticSelector(const std::string& selector);
};