diff --git a/.clang-format b/.clang-format index a699815..468a28a 100644 --- a/.clang-format +++ b/.clang-format @@ -13,7 +13,6 @@ IndentCaseLabels: true SpaceBeforeParens: ControlStatements AlignAfterOpenBracket: AlwaysBreak BinPackArguments: false -BinPackArguments: false PointerAlignment: Left BreakBeforeBraces: Attach SortIncludes: false diff --git a/LICENSE b/LICENSE index f02a386..6934b1e 100644 --- a/LICENSE +++ b/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: diff --git a/README.md b/README.md index 513dd42..fdf7749 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # [[ RYUDO ]] ## the minimalist floatiling window manager that flows - -- Derek Stevens 2019 -- + -- Iris Lightshard 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! diff --git a/event.c b/event.c index 650f01e..af466b1 100644 --- a/event.c +++ b/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 */ diff --git a/fns.h b/fns.h index a54aaa2..87deb8a 100644 --- a/fns.h +++ b/fns.h @@ -74,7 +74,7 @@ void button(); void spawn(); void reshape(); void move(); -void delete (); +void delete(); void hide(); void unhide(); void unhidec(); diff --git a/key.c b/key.c index c74cfd9..b77f77a 100644 --- a/key.c +++ b/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 */ diff --git a/main.c b/main.c index cef71fd..e2cf76a 100644 --- a/main.c +++ b/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; diff --git a/manage.c b/manage.c index 34cf0c9..eb67ae2 100644 --- a/manage.c +++ b/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)) diff --git a/menu.c b/menu.c index f1d59f7..4f8ad75 100644 --- a/menu.c +++ b/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; diff --git a/ryudo.1 b/ryudo.1 index 6747685..70b3694 100644 --- a/ryudo.1 +++ b/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 diff --git a/ryudo.1.html b/ryudo.1.html index 4dc63d7..b996d24 100644 --- a/ryudo.1.html +++ b/ryudo.1.html @@ -106,12 +106,6 @@
  • libX11 and development headers
  • libXT and development headers
  • libXrandr and development headers
  • - - - -

    If virtual desktop switching notification is enabled, it requires

    - - @@ -191,8 +185,8 @@

    AUTHORS

    @@ -204,7 +198,7 @@
    1. -
    2. March 2022
    3. +
    4. September 2024
    5. ryudo(1)
    diff --git a/ryudo.1.md b/ryudo.1.md index f9c3e75..ddba5c6 100644 --- a/ryudo.1.md +++ b/ryudo.1.md @@ -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 +- Iris Lightshard - Russ Cox - David Hogan, RIP diff --git a/showevent/ShowEvent.c b/showevent/ShowEvent.c index 22484b9..28699be 100644 --- a/showevent/ShowEvent.c +++ b/showevent/ShowEvent.c @@ -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: