default workspace option

This commit is contained in:
vaxerski 2022-03-20 16:01:47 +01:00
parent 50370e4216
commit 2e18fa268a
4 changed files with 25 additions and 3 deletions

View file

@ -4,6 +4,7 @@
# Refer to the wiki for more information. # Refer to the wiki for more information.
monitor=,1280x720@60,0x0,0.5,1 monitor=,1280x720@60,0x0,0.5,1
workspace=DP-1,1
general { general {
max_fps=240 max_fps=240
@ -16,3 +17,7 @@ general {
col.active_border=0x66ee1111 col.active_border=0x66ee1111
col.inactive_border=0x66333333 col.inactive_border=0x66333333
} }
bind=SUPER,T,exec,xterm
bind=SUPER,Q,killactive,
bind=SUPERSHIFT,Q,exec,pkill Hyprland

View file

@ -156,6 +156,19 @@ void CConfigManager::handleBind(const std::string& command, const std::string& v
g_pKeybindManager->addKeybind(SKeybind{KEY, MOD, HANDLER, COMMAND}); g_pKeybindManager->addKeybind(SKeybind{KEY, MOD, HANDLER, COMMAND});
} }
void CConfigManager::handleDefaultWorkspace(const std::string& command, const std::string& value) {
const auto DISPLAY = value.substr(0, value.find_first_of(','));
const auto WORKSPACEID = stoi(value.substr(value.find_first_of(',') + 1));
for (auto& mr : m_dMonitorRules) {
if (mr.name == DISPLAY) {
mr.defaultWorkspaceID = WORKSPACEID;
break;
}
}
}
void CConfigManager::parseLine(std::string& line) { void CConfigManager::parseLine(std::string& line) {
// first check if its not a comment // first check if its not a comment
const auto COMMENTSTART = line.find_first_of('#'); const auto COMMENTSTART = line.find_first_of('#');
@ -207,9 +220,11 @@ void CConfigManager::parseLine(std::string& line) {
} else if (COMMAND == "bind") { } else if (COMMAND == "bind") {
handleBind(COMMAND, VALUE); handleBind(COMMAND, VALUE);
return; return;
} else if (COMMAND == "workspace") {
handleDefaultWorkspace(COMMAND, VALUE);
return;
} }
configSetValueSafe(currentCategory + (currentCategory == "" ? "" : ":") + COMMAND, VALUE); configSetValueSafe(currentCategory + (currentCategory == "" ? "" : ":") + COMMAND, VALUE);
} }

View file

@ -20,6 +20,7 @@ struct SMonitorRule {
float mfact = 0.5; float mfact = 0.5;
float scale = 1; float scale = 1;
float refreshRate = 60; float refreshRate = 60;
int defaultWorkspaceID = -1;
}; };
class CConfigManager { class CConfigManager {
@ -55,6 +56,7 @@ private:
void handleRawExec(const std::string&, const std::string&); void handleRawExec(const std::string&, const std::string&);
void handleMonitor(const std::string&, const std::string&); void handleMonitor(const std::string&, const std::string&);
void handleBind(const std::string&, const std::string&); void handleBind(const std::string&, const std::string&);
void handleDefaultWorkspace(const std::string&, const std::string&);
}; };
inline std::unique_ptr<CConfigManager> g_pConfigManager; inline std::unique_ptr<CConfigManager> g_pConfigManager;

View file

@ -72,7 +72,7 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
g_pCompositor->m_lWorkspaces.push_back(SWorkspace()); g_pCompositor->m_lWorkspaces.push_back(SWorkspace());
const auto PNEWWORKSPACE = &g_pCompositor->m_lWorkspaces.back(); const auto PNEWWORKSPACE = &g_pCompositor->m_lWorkspaces.back();
PNEWWORKSPACE->ID = g_pCompositor->m_lWorkspaces.size(); PNEWWORKSPACE->ID = monitorRule.defaultWorkspaceID == -1 ? g_pCompositor->m_lWorkspaces.size() : monitorRule.defaultWorkspaceID;
PNEWWORKSPACE->monitorID = newMonitor.ID; PNEWWORKSPACE->monitorID = newMonitor.ID;
newMonitor.activeWorkspace = PNEWWORKSPACE->ID; newMonitor.activeWorkspace = PNEWWORKSPACE->ID;