fix some regressions from 1.4 (1.5 is based on 1.3); 'proper' mouse passthrough not there yet
This commit is contained in:
parent
16ed0f7f24
commit
7dd76b67ff
13 changed files with 58 additions and 64 deletions
|
@ -13,7 +13,6 @@ IndentCaseLabels: true
|
|||
SpaceBeforeParens: ControlStatements
|
||||
AlignAfterOpenBracket: AlwaysBreak
|
||||
BinPackArguments: false
|
||||
BinPackArguments: false
|
||||
PointerAlignment: Left
|
||||
BreakBeforeBraces: Attach
|
||||
SortIncludes: false
|
||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,4 +1,4 @@
|
|||
Ryudo is free software, and is Copyright (c) 2019-20022 Derek Stevens,
|
||||
Ryudo is free software, and is Copyright (c) 2019-2024 Iris Lightshard,
|
||||
2004 by Russ Cox, and 1994-1996 by David Hogan. Permission is granted
|
||||
to all sentient beings to use this software, to make copies of it,
|
||||
and to distribute those copies, provided that:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# [[ RYUDO ]]
|
||||
## the minimalist floatiling window manager that flows
|
||||
-- Derek Stevens <nilix@nilfm.cc> 2019 --
|
||||
-- Iris Lightshard <nilix@nilfm.cc> 2019 --
|
||||
|
||||
[![micro centered](./screenshots/micro_centered.png.thumb.png)](./screenshots/micro_centered.png)
|
||||
[![floating porn](./screenshots/floating.png.thumb.png)](./screenshots/floating.png)
|
||||
|
@ -63,9 +63,6 @@ Running and building require the following:
|
|||
* `libX11` and development headers
|
||||
* `libXT` and development headers
|
||||
* `libXrandr` and development headers
|
||||
|
||||
If virtual desktop switching notification is enabled, it requires
|
||||
|
||||
* `libnotify` and development headers
|
||||
|
||||
Build with `build.sh` (calls `mk` and does some other magic), and install with `install.sh` (will install to a local folder if run as a normal user, or to your `$PLAN9/bin/` plus session wrapper in `/usr/bin` and `.desktop` file in `/usr/share/xsessions/` if run as root).
|
||||
|
@ -75,7 +72,7 @@ If you have trouble building, you might need to edit the `mkfile` at line 2 to p
|
|||
### Bugs and Caveats
|
||||
Of the bugs and caveats not already mentioned in `rio`'s README:
|
||||
|
||||
- No per-pixel alpha support beyond `XShape` extension.
|
||||
- Compositing rules in picom are ignored in favor of the ones in config.h.
|
||||
- Switching back and forth between virtual desktops very quickly can cause some windows to glitch out, lose their parent (border), and become unfocusable.
|
||||
- Some applications that render fullscreen or dedicated OSD windows (Virtualbox, Zoom, etc) will need to be manually maximized to fix their alignment (in the former case) or otherwise misbehave.
|
||||
- Probably more!
|
||||
|
|
2
event.c
2
event.c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2019 Derek Stevens, 2005 Rus Cox, 1994-1996 David Hogan
|
||||
* Copyright (c) 2019 Iris Lightshard, 2005 Rus Cox, 1994-1996 David Hogan
|
||||
* see README for licence details
|
||||
*/
|
||||
|
||||
|
|
2
fns.h
2
fns.h
|
@ -74,7 +74,7 @@ void button();
|
|||
void spawn();
|
||||
void reshape();
|
||||
void move();
|
||||
void delete ();
|
||||
void delete();
|
||||
void hide();
|
||||
void unhide();
|
||||
void unhidec();
|
||||
|
|
2
key.c
2
key.c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2019 Derek Stevens, 2005 Russ Cox, 1994-1996 David Hogan
|
||||
* Copyright (c) 2019 Iris Lightshard, 2005 Russ Cox, 1994-1996 David Hogan
|
||||
* see README for license details
|
||||
*/
|
||||
|
||||
|
|
4
main.c
4
main.c
|
@ -22,8 +22,8 @@
|
|||
#include "patchlevel.h"
|
||||
|
||||
char* version[] = {
|
||||
"ryudo version 1.3.3\nCopyright (c) 1994-1996 David Hogan,\n(c) 2004 Russ "
|
||||
"Cox,\n(c) 2019-2022 Derek Stevens",
|
||||
"ryudo version 1.5.0\nCopyright (c) 1994-1996 David Hogan,\n(c) 2004 Russ "
|
||||
"Cox,\n(c) 2019-2024 Iris Lightshard",
|
||||
0};
|
||||
|
||||
Display* dpy;
|
||||
|
|
12
manage.c
12
manage.c
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019 Derek Stevens, 2005 Russ Cox, 1994-1996 David Hogan
|
||||
* Copyright (c) 2019 Iris Lightshard, 2005 Russ Cox, 1994-1996 David Hogan
|
||||
* see README for licence details
|
||||
*/
|
||||
|
||||
|
@ -30,6 +30,7 @@ int manage(Client* c, int mapped) {
|
|||
XWMHints* hints;
|
||||
XSetWindowAttributes attrs;
|
||||
XRRMonitorInfo monitor;
|
||||
ScreenInfo* screen;
|
||||
|
||||
trace("manage", c, 0);
|
||||
XSelectInput(
|
||||
|
@ -141,9 +142,10 @@ int manage(Client* c, int mapped) {
|
|||
}
|
||||
|
||||
if (c->is9term && !(fixsize ? drag(c, Button3) : sweep(c, Button3))) {
|
||||
screen = c->screen;
|
||||
XKillClient(dpy, c->window);
|
||||
rmclient(c);
|
||||
if (current && current->screen == c->screen)
|
||||
if (current && current->screen == screen)
|
||||
cmapfocus(current);
|
||||
return 0;
|
||||
}
|
||||
|
@ -207,12 +209,12 @@ int manage(Client* c, int mapped) {
|
|||
XUnmapWindow(dpy, c->screen->sweepwin);
|
||||
#ifdef AUTOSTICK
|
||||
if (!isautostick(c))
|
||||
#endif
|
||||
active(c);
|
||||
/*else if(c->trans != None && current && current->window == c->trans)
|
||||
active(c);*/
|
||||
else
|
||||
setactive(c, 0);
|
||||
#else
|
||||
active(c);
|
||||
#endif
|
||||
setstate(c, NormalState);
|
||||
}
|
||||
if (current && (current != c))
|
||||
|
|
13
menu.c
13
menu.c
|
@ -134,7 +134,6 @@ void button(XButtonEvent* e) {
|
|||
}
|
||||
switch (e->button) {
|
||||
case Button1:
|
||||
fflush(stdout);
|
||||
if (c) {
|
||||
if (ffm)
|
||||
XRaiseWindow(dpy, c->window);
|
||||
|
@ -144,15 +143,9 @@ void button(XButtonEvent* e) {
|
|||
}
|
||||
return;
|
||||
case Button2:
|
||||
if (c) {
|
||||
XMapRaised(dpy, c->parent);
|
||||
active(c);
|
||||
XAllowEvents(dpy, ReplayPointer, curtime);
|
||||
} else if (
|
||||
(e->state & (ShiftMask | ControlMask)) == (ShiftMask | ControlMask)) {
|
||||
menuhit(e, &egg);
|
||||
} else if (numvirtuals > 1 && (n = menuhit(e, &b2menu)) > -1)
|
||||
if (numvirtuals > 1 && (n = menuhit(e, &b2menu)) > -1) {
|
||||
button2(n);
|
||||
}
|
||||
return;
|
||||
case Button3:
|
||||
break;
|
||||
|
@ -309,7 +302,7 @@ void move(Client* c, int but) {
|
|||
sendconfig(c);
|
||||
}
|
||||
|
||||
void delete (Client* c, int shift) {
|
||||
void delete(Client* c, int shift) {
|
||||
Client* revertc;
|
||||
int m;
|
||||
|
||||
|
|
9
ryudo.1
9
ryudo.1
|
@ -1,7 +1,7 @@
|
|||
.\" generated with Ronn/v0.7.3
|
||||
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
||||
.
|
||||
.TH "RYUDO" "1" "March 2022" "" ""
|
||||
.TH "RYUDO" "1" "September 2024" "" ""
|
||||
.
|
||||
.SH "NAME"
|
||||
\fBryudo\fR \- The floatiling window manager that flows
|
||||
|
@ -48,11 +48,6 @@ a full \fBplan9port\fR installation
|
|||
.IP "\(bu" 4
|
||||
\fBlibXrandr\fR and development headers
|
||||
.
|
||||
.IP "" 0
|
||||
.
|
||||
.P
|
||||
If virtual desktop switching notification is enabled, it requires
|
||||
.
|
||||
.IP "\(bu" 4
|
||||
\fBlibnotify\fR and development headers
|
||||
.
|
||||
|
@ -197,7 +192,7 @@ While there is naitive support for per\-window opacity via the \fBOPACITY\fR and
|
|||
.SH "AUTHORS"
|
||||
.
|
||||
.IP "\(bu" 4
|
||||
Derek Stevens \fInilix@nilfm\.cc\fR
|
||||
Iris Lightshard \fInilix@nilfm\.cc\fR
|
||||
.
|
||||
.IP "\(bu" 4
|
||||
Russ Cox \fIrsc@swtch\.com\fR
|
||||
|
|
12
ryudo.1.html
12
ryudo.1.html
|
@ -106,12 +106,6 @@
|
|||
<li><code>libX11</code> and development headers</li>
|
||||
<li><code>libXT</code> and development headers</li>
|
||||
<li><code>libXrandr</code> and development headers</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<p>If virtual desktop switching notification is enabled, it requires</p>
|
||||
|
||||
<ul>
|
||||
<li><code>libnotify</code> and development headers</li>
|
||||
</ul>
|
||||
|
||||
|
@ -191,8 +185,8 @@
|
|||
<h2 id="AUTHORS">AUTHORS</h2>
|
||||
|
||||
<ul>
|
||||
<li>Derek Stevens <a href="mailto:nilix@nilfm.cc" data-bare-link="true">nilix@nilfm.cc</a></li>
|
||||
<li>Russ Cox <a href="mailto:rsc@swtch.com" data-bare-link="true">rsc@swtch.com</a></li>
|
||||
<li>Iris Lightshard <a href="mailto:nilix@nilfm.cc" data-bare-link="true">nilix@nilfm.cc</a></li>
|
||||
<li>Russ Cox <a href="mailto:rsc@swtch.com" data-bare-link="true">rsc@swtch.com</a></li>
|
||||
<li>David Hogan, RIP</li>
|
||||
</ul>
|
||||
|
||||
|
@ -204,7 +198,7 @@
|
|||
|
||||
<ol class='man-decor man-foot man foot'>
|
||||
<li class='tl'></li>
|
||||
<li class='tc'>March 2022</li>
|
||||
<li class='tc'>September 2024</li>
|
||||
<li class='tr'>ryudo(1)</li>
|
||||
</ol>
|
||||
|
||||
|
|
|
@ -32,9 +32,6 @@ Running and building require the following:
|
|||
* `libX11` and development headers
|
||||
* `libXT` and development headers
|
||||
* `libXrandr` and development headers
|
||||
|
||||
If virtual desktop switching notification is enabled, it requires
|
||||
|
||||
* `libnotify` and development headers
|
||||
|
||||
## CONFIGURATION
|
||||
|
@ -105,7 +102,7 @@ While there is naitive support for per-window opacity via the `OPACITY` and `TRA
|
|||
|
||||
## AUTHORS
|
||||
|
||||
- Derek Stevens <nilix@nilfm.cc>
|
||||
- Iris Lightshard <nilix@nilfm.cc>
|
||||
- Russ Cox <rsc@swtch.com>
|
||||
- David Hogan, RIP
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@ static char* TorF(bool) int bool;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a property notify state */
|
||||
static char* PropertyState(state) int state;
|
||||
static char* PropertyState(state)
|
||||
int state;
|
||||
{
|
||||
switch (state) {
|
||||
case PropertyNewValue:
|
||||
|
@ -39,7 +40,8 @@ static char* PropertyState(state) int state;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a visibility notify state */
|
||||
static char* VisibilityState(state) int state;
|
||||
static char* VisibilityState(state)
|
||||
int state;
|
||||
{
|
||||
switch (state) {
|
||||
case VisibilityUnobscured:
|
||||
|
@ -57,7 +59,8 @@ static char* VisibilityState(state) int state;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a timestamp */
|
||||
static char* ServerTime(time) Time time;
|
||||
static char* ServerTime(time)
|
||||
Time time;
|
||||
{
|
||||
unsigned long msec;
|
||||
unsigned long sec;
|
||||
|
@ -95,7 +98,8 @@ typedef struct _MaskType {
|
|||
} MaskType;
|
||||
|
||||
/* Returns the string equivalent of a mask of buttons and/or modifier keys */
|
||||
static char* ButtonAndOrModifierState(state) unsigned int state;
|
||||
static char* ButtonAndOrModifierState(state)
|
||||
unsigned int state;
|
||||
{
|
||||
static char buffer[256];
|
||||
static MaskType masks[] = {
|
||||
|
@ -132,7 +136,8 @@ static char* ButtonAndOrModifierState(state) unsigned int state;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a mask of configure window values */
|
||||
static char* ConfigureValueMask(valuemask) unsigned int valuemask;
|
||||
static char* ConfigureValueMask(valuemask)
|
||||
unsigned int valuemask;
|
||||
{
|
||||
static char buffer[256];
|
||||
static MaskType masks[] = {
|
||||
|
@ -164,7 +169,8 @@ static char* ConfigureValueMask(valuemask) unsigned int valuemask;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a motion hint */
|
||||
static char* IsHint(is_hint) char is_hint;
|
||||
static char* IsHint(is_hint)
|
||||
char is_hint;
|
||||
{
|
||||
switch (is_hint) {
|
||||
case NotifyNormal:
|
||||
|
@ -179,7 +185,8 @@ static char* IsHint(is_hint) char is_hint;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of an id or the value "None" */
|
||||
static char* MaybeNone(value) int value;
|
||||
static char* MaybeNone(value)
|
||||
int value;
|
||||
{
|
||||
static char buffer[16];
|
||||
|
||||
|
@ -192,7 +199,8 @@ static char* MaybeNone(value) int value;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a colormap state */
|
||||
static char* ColormapState(state) int state;
|
||||
static char* ColormapState(state)
|
||||
int state;
|
||||
{
|
||||
switch (state) {
|
||||
case ColormapInstalled:
|
||||
|
@ -207,7 +215,8 @@ static char* ColormapState(state) int state;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a crossing detail */
|
||||
static char* CrossingDetail(detail) int detail;
|
||||
static char* CrossingDetail(detail)
|
||||
int detail;
|
||||
{
|
||||
switch (detail) {
|
||||
case NotifyAncestor:
|
||||
|
@ -231,7 +240,8 @@ static char* CrossingDetail(detail) int detail;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a focus change detail */
|
||||
static char* FocusChangeDetail(detail) int detail;
|
||||
static char* FocusChangeDetail(detail)
|
||||
int detail;
|
||||
{
|
||||
switch (detail) {
|
||||
case NotifyAncestor:
|
||||
|
@ -264,7 +274,8 @@ static char* FocusChangeDetail(detail) int detail;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a configure detail */
|
||||
static char* ConfigureDetail(detail) int detail;
|
||||
static char* ConfigureDetail(detail)
|
||||
int detail;
|
||||
{
|
||||
switch (detail) {
|
||||
case Above:
|
||||
|
@ -288,7 +299,8 @@ static char* ConfigureDetail(detail) int detail;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a grab mode */
|
||||
static char* GrabMode(mode) int mode;
|
||||
static char* GrabMode(mode)
|
||||
int mode;
|
||||
{
|
||||
switch (mode) {
|
||||
case NotifyNormal:
|
||||
|
@ -309,7 +321,8 @@ static char* GrabMode(mode) int mode;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a mapping request */
|
||||
static char* MappingRequest(request) int request;
|
||||
static char* MappingRequest(request)
|
||||
int request;
|
||||
{
|
||||
switch (request) {
|
||||
case MappingModifier:
|
||||
|
@ -327,7 +340,8 @@ static char* MappingRequest(request) int request;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a stacking order place */
|
||||
static char* Place(place) int place;
|
||||
static char* Place(place)
|
||||
int place;
|
||||
{
|
||||
switch (place) {
|
||||
case PlaceOnTop:
|
||||
|
@ -342,7 +356,8 @@ static char* Place(place) int place;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent of a major code */
|
||||
static char* MajorCode(code) int code;
|
||||
static char* MajorCode(code)
|
||||
int code;
|
||||
{
|
||||
static char buffer[32];
|
||||
|
||||
|
@ -360,7 +375,8 @@ static char* MajorCode(code) int code;
|
|||
}
|
||||
|
||||
/* Returns the string equivalent the keycode contained in the key event */
|
||||
static char* Keycode(ev) XKeyEvent* ev;
|
||||
static char* Keycode(ev)
|
||||
XKeyEvent* ev;
|
||||
{
|
||||
static char buffer[256];
|
||||
KeySym keysym_str;
|
||||
|
@ -635,7 +651,8 @@ static void VerbVisibility(XVisibilityEvent* ev) {
|
|||
/************ Return the string representation for type of an event ***********/
|
||||
/******************************************************************************/
|
||||
|
||||
char* GetType(ev) XEvent* ev;
|
||||
char* GetType(ev)
|
||||
XEvent* ev;
|
||||
{
|
||||
switch (ev->type) {
|
||||
case KeyPress:
|
||||
|
|
Loading…
Reference in a new issue