summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBossCode45 <human.cyborg42@gmail.com>2022-10-18 17:57:38 +1300
committerBossCode45 <human.cyborg42@gmail.com>2022-10-18 17:57:38 +1300
commit599664b8c9d7754d5a073fe2e4e129535f5fbd73 (patch)
tree31a2fd658048eb2c79a58f4af096a79d1f6f1f70
parentbcf9e480629d3bca64fc356e82560848aacfdd13 (diff)
downloadYATwm-599664b8c9d7754d5a073fe2e4e129535f5fbd73.tar.gz
YATwm-599664b8c9d7754d5a073fe2e4e129535f5fbd73.zip
Progress... I hope
-rw-r--r--config.h4
-rw-r--r--main.cpp43
2 files changed, 36 insertions, 11 deletions
diff --git a/config.h b/config.h
index 4b140ac..c848778 100644
--- a/config.h
+++ b/config.h
@@ -63,7 +63,7 @@ KEYCOM(wToWS);
KEYCOM(focChange);
KEYCOM(wMove);
KEYCOM(bashSpawn);
-KEYCOM(screenTest);
+KEYCOM(reload);
// Super key mod
#define MOD Mod4Mask
@@ -100,7 +100,7 @@ const Key keyBinds[] = {
{MOD|SHIFT, XK_x, spawn, {.str = i3lock}},
{MOD|SHIFT, XK_x, spawn, {.str = suspend}},
{MOD, XK_m, bashSpawn, {.str = monConfig}},
- {MOD|SHIFT, XK_t, screenTest, {NULL}},
+ {MOD|SHIFT, XK_r, reload, {NULL}},
// Focus
{MOD, XK_h, focChange, {.dir = Left}},
{MOD, XK_j, focChange, {.dir = Down}},
diff --git a/main.cpp b/main.cpp
index bfbd22e..46cf540 100644
--- a/main.cpp
+++ b/main.cpp
@@ -51,7 +51,7 @@ map<Window, int> frameIDS;
ScreenInfo* screens;
int* focusedWorkspaces;
-int focusedScreen;
+int focusedScreen = 0;
int nscreens;
int mX, mY;
@@ -94,11 +94,12 @@ void detectScreens()
delete[] focusedWorkspaces;
log("Detecting screens: ");
XRRMonitorInfo* monitors = XRRGetMonitors(dpy, root, true, &nscreens);
- log("\t"<<nscreens << " monitors");
+ log("\t" << nscreens << " monitors");
screens = new ScreenInfo[nscreens];
focusedWorkspaces = new int[nscreens];
for(int i = 0; i < nscreens; i++)
{
+ focusedWorkspaces[i] = i * 5 + 1;
char* name = XGetAtomName(dpy, monitors[i].name);
screens[i] = {name, monitors[i].x, monitors[i].y, monitors[i].width, monitors[i].height};
log("\tMonitor " << i + 1 << " - " << screens[i].name);
@@ -106,6 +107,13 @@ void detectScreens()
log("\t\tw: " << screens[i].w << ", h: " << screens[i].h);
XFree(name);
}
+ for(int i = 0; i < numWS; i++)
+ {
+ if(screenPreferences[i][0] < nscreens && focusedWorkspaces[screenPreferences[i][0]] == 0)
+ {
+ //focusedWorkspaces[screenPreferences[i][0]] = i+1;
+ }
+ }
XFree(monitors);
}
void updateMousePos()
@@ -172,23 +180,40 @@ void kill(const KeyArg arg)
void changeWS(const KeyArg arg)
{
int prevWS = currWS;
+ untileRoots();
currWS = arg.num;
if(prevWS == currWS)
return;
+ //log("Changing WS with keybind");
+
for(int i = 0; i < maxMonitors; i++)
{
- if(nscreens > screenPreferences[arg.num][i])
+ if(nscreens > screenPreferences[arg.num - 1][i])
{
- focusedWorkspaces[screenPreferences[arg.num][i]] = arg.num;
- focusedScreen = screenPreferences[arg.num][i];
+ //log("Found screen (screen " << screenPreferences[arg.num - 1][i] << ")");
+ prevWS = focusedWorkspaces[screenPreferences[arg.num - 1][i]];
+ //log("Changed prevWS");
+ focusedWorkspaces[screenPreferences[arg.num - 1][i]] = arg.num;
+ //log("Changed focusedWorkspaces");
+ focusedScreen = screenPreferences[arg.num - 1][i];
+ //log("Changed focusedScreen");
+ break;
}
}
- untile(prevWS);
+ //log("Finished changes");
+
+ //log(prevWS);
+ if(prevWS < 1 || prevWS > numWS)
+ {
+ //untile(prevWS);
+ }
+ //log("Untiled");
//tile(currWS, outerGaps, outerGaps, sW - outerGaps*2, sH - outerGaps*2 - bH);
tileRoots();
+ //log("Roots tiled");
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
//EWMH
@@ -388,7 +413,7 @@ void bashSpawn(const KeyArg arg)
{
if(fork() == 0)
{
- int null = open("log.txt", O_WRONLY);
+ int null = open("/dev/null", O_WRONLY);
dup2(null, 1);
dup2(null, 2);
system(arg.str[0]);
@@ -396,7 +421,7 @@ void bashSpawn(const KeyArg arg)
}
}
-void screenTest(const KeyArg arg)
+void reload(const KeyArg arg)
{
detectScreens();
}
@@ -791,7 +816,7 @@ int main(int argc, char** argv)
case DestroyNotify:
destroyNotify(e.xdestroywindow);
case EnterNotify:
- log(e.xcrossing.x);
+ //log(e.xcrossing.x);
if(e.xcrossing.window == root)
break;
XSetInputFocus(dpy, e.xcrossing.window, RevertToNone, CurrentTime);