fix microsleep and add config option; update manual; v1.4.1

This commit is contained in:
Iris Lightshard 2023-01-26 16:58:38 -07:00
parent 9612bd6ee2
commit db9b136766
Signed by: Iris Lightshard
GPG key ID: 3B7FBC22144E6398
6 changed files with 33 additions and 28 deletions

View file

@ -54,6 +54,7 @@
"Alacritty", \ "Alacritty", \
"kate", \ "kate", \
"acme", \ "acme", \
"st-256color",\
0 \ 0 \
} }
@ -101,6 +102,12 @@
* BEHAVIOR * [Everything in this section is optional unless otherwise noted] * BEHAVIOR * [Everything in this section is optional unless otherwise noted]
***********/ ***********/
/* Microseconds to wait before centering terminal windows spawned by keyboard;
* if your system is wicked fast you can lower this; if very old/slow, you may
* have to raise it.
*/
#define MICROSLEEP_DELAY 100000
/* This sets the size ratio for windows spawned via keyboard or /* This sets the size ratio for windows spawned via keyboard or
* center-snapped; CENTERNUM should be >= 2, so use 2/4 instead of 1/2 * center-snapped; CENTERNUM should be >= 2, so use 2/4 instead of 1/2
*/ */
@ -146,6 +153,7 @@
#define AUTOSTICK {\ #define AUTOSTICK {\
"XOsview", \ "XOsview", \
"XClock", \ "XClock", \
"xneralie", \
0 \ 0 \
} }
@ -156,6 +164,7 @@
*/ */
#define TERMINALS {\ #define TERMINALS {\
"st-256color", \
"term", \ "term", \
"Term", \ "Term", \
"xvt", \ "xvt", \

29
event.c
View file

@ -18,6 +18,10 @@
#include "fns.h" #include "fns.h"
#include "patchlevel.h" #include "patchlevel.h"
#ifndef MICROSLEEP_DELAY
#define MICROSLEEP_DELAY 100000
#endif
void mainloop(int shape_event) { void mainloop(int shape_event) {
static XEvent ev; static XEvent ev;
static Client* c; static Client* c;
@ -212,6 +216,9 @@ void configurereq(XConfigureRequestEvent* e) {
void mapreq(XMapRequestEvent* e) { void mapreq(XMapRequestEvent* e) {
Client* c; Client* c;
int i; int i;
XRRMonitorInfo monitor;
monitor = monitorinfo[getmonitorbymouse()];
curtime = CurrentTime; curtime = CurrentTime;
c = getclient(e->window, 0); c = getclient(e->window, 0);
@ -233,6 +240,15 @@ void mapreq(XMapRequestEvent* e) {
} }
} }
if (kbLaunch) {
usleep(MICROSLEEP_DELAY);
#ifdef CENTERVMAX
centerclient(c, monitor, 1);
#else
centerclient(c, monitor, 0);
#endif
kbLaunch = 0;
}
switch (c->state) { switch (c->state) {
case WithdrawnState: case WithdrawnState:
if (c->parent == c->screen->root) { if (c->parent == c->screen->root) {
@ -298,9 +314,6 @@ void circulatereq(XCirculateRequestEvent* e) {
void newwindow(XCreateWindowEvent* e) { void newwindow(XCreateWindowEvent* e) {
Client* c; Client* c;
ScreenInfo* s; ScreenInfo* s;
XRRMonitorInfo monitor;
monitor = monitorinfo[getmonitorbymouse()];
/* we don't set curtime as nothing here uses it */ /* we don't set curtime as nothing here uses it */
if (e->override_redirect) if (e->override_redirect)
@ -341,16 +354,6 @@ void newwindow(XCreateWindowEvent* e) {
1); 1);
} }
#endif #endif
if (kbLaunch) {
usleep(100000);
#ifdef CENTERVMAX
centerclient(c, monitor, 1);
#else
centerclient(c, monitor, 0);
#endif
kbLaunch = 0;
}
} }
void destroy(Window w) { void destroy(Window w) {

2
main.c
View file

@ -22,7 +22,7 @@
#include "patchlevel.h" #include "patchlevel.h"
char* version[] = { char* version[] = {
"ryudo version 1.3.3\nCopyright (c) 1994-1996 David Hogan,\n(c) 2004 Russ " "ryudo version 1.4.1\nCopyright (c) 1994-1996 David Hogan,\n(c) 2004 Russ "
"Cox,\n(c) 2019-2022 Derek Stevens", "Cox,\n(c) 2019-2022 Derek Stevens",
0}; 0};

View file

@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3 .\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3
. .
.TH "RYUDO" "1" "March 2022" "" "" .TH "RYUDO" "1" "January 2023" "" ""
. .
.SH "NAME" .SH "NAME"
\fBryudo\fR \- The floatiling window manager that flows \fBryudo\fR \- The floatiling window manager that flows
@ -180,10 +180,7 @@ The following operations are bindable to key combinations (shown are the default
.IP "" 0 .IP "" 0
. .
.SH "BUGS AND CAVEATS" .SH "BUGS AND CAVEATS"
Click events don\'t pass through when clicking to activate a window\. Switching very fast back and forth between virtual desktops may cause the window manager to stop managing some windows\. Still looking into why\.
.
.P
Clicking mouse button 2/3 on an inactive window brings up the Button 2/3 Menu instead of focusing the window\. I personally sometimes find this behavior useful\.
. .
.P .P
Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at\. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so\. If the program expects to run at the current screen resolution, the window\-wrangling heuristics should maximize it and you\'ll be golden\. If the window is in override\-redirect mode, it should just run fullscreen without a hitch\. Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at\. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so\. If the program expects to run at the current screen resolution, the window\-wrangling heuristics should maximize it and you\'ll be golden\. If the window is in override\-redirect mode, it should just run fullscreen without a hitch\.

View file

@ -178,9 +178,7 @@
<h2 id="BUGS-AND-CAVEATS">BUGS AND CAVEATS</h2> <h2 id="BUGS-AND-CAVEATS">BUGS AND CAVEATS</h2>
<p>Click events don't pass through when clicking to activate a window.</p> <p>Switching very fast back and forth between virtual desktops may cause the window manager to stop managing some windows. Still looking into why.</p>
<p>Clicking mouse button 2/3 on an inactive window brings up the Button 2/3 Menu instead of focusing the window. I personally sometimes find this behavior useful.</p>
<p>Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so. If the program expects to run at the current screen resolution, the window-wrangling heuristics should maximize it and you'll be golden. If the window is in override-redirect mode, it should just run fullscreen without a hitch.</p> <p>Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so. If the program expects to run at the current screen resolution, the window-wrangling heuristics should maximize it and you'll be golden. If the window is in override-redirect mode, it should just run fullscreen without a hitch.</p>
@ -191,8 +189,8 @@
<h2 id="AUTHORS">AUTHORS</h2> <h2 id="AUTHORS">AUTHORS</h2>
<ul> <ul>
<li>Derek Stevens <a href="&#109;&#97;&#x69;&#x6c;&#x74;&#x6f;&#58;&#x6e;&#105;&#108;&#x69;&#x78;&#64;&#x6e;&#x69;&#108;&#102;&#109;&#46;&#99;&#99;" data-bare-link="true">&#110;&#105;&#108;&#x69;&#x78;&#x40;&#x6e;&#105;&#x6c;&#102;&#x6d;&#x2e;&#x63;&#99;</a></li> <li>Derek Stevens <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x6e;&#x69;&#108;&#x69;&#x78;&#x40;&#x6e;&#105;&#x6c;&#102;&#109;&#46;&#99;&#99;" data-bare-link="true">&#x6e;&#105;&#x6c;&#x69;&#x78;&#x40;&#x6e;&#x69;&#108;&#102;&#x6d;&#x2e;&#x63;&#99;</a></li>
<li>Russ Cox <a href="&#x6d;&#97;&#105;&#108;&#116;&#111;&#x3a;&#x72;&#x73;&#99;&#64;&#x73;&#119;&#116;&#x63;&#104;&#x2e;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#114;&#115;&#99;&#64;&#x73;&#119;&#116;&#99;&#x68;&#x2e;&#99;&#111;&#x6d;</a></li> <li>Russ Cox <a href="&#x6d;&#x61;&#105;&#108;&#x74;&#111;&#x3a;&#114;&#115;&#x63;&#64;&#x73;&#x77;&#116;&#99;&#x68;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x72;&#115;&#99;&#64;&#x73;&#x77;&#116;&#x63;&#104;&#46;&#x63;&#x6f;&#x6d;</a></li>
<li>David Hogan, RIP</li> <li>David Hogan, RIP</li>
</ul> </ul>
@ -204,7 +202,7 @@
<ol class='man-decor man-foot man foot'> <ol class='man-decor man-foot man foot'>
<li class='tl'></li> <li class='tl'></li>
<li class='tc'>March 2022</li> <li class='tc'>January 2023</li>
<li class='tr'>ryudo(1)</li> <li class='tr'>ryudo(1)</li>
</ol> </ol>

View file

@ -93,9 +93,7 @@ The following operations are bindable to key combinations (shown are the default
## BUGS AND CAVEATS ## BUGS AND CAVEATS
Click events don't pass through when clicking to activate a window. Switching very fast back and forth between virtual desktops may cause the window manager to stop managing some windows. Still looking into why.
Clicking mouse button 2/3 on an inactive window brings up the Button 2/3 Menu instead of focusing the window. I personally sometimes find this behavior useful.
Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so. If the program expects to run at the current screen resolution, the window-wrangling heuristics should maximize it and you'll be golden. If the window is in override-redirect mode, it should just run fullscreen without a hitch. Programs that expect to run fullscreen will probably just open in a window the size of whatever resolution they expect to run at. Depending on the implementation, they may respond well to being maximized or you may have to change your screen resolution manually before doing so. If the program expects to run at the current screen resolution, the window-wrangling heuristics should maximize it and you'll be golden. If the window is in override-redirect mode, it should just run fullscreen without a hitch.