From 549d7c19618e4d232dde95792f5e11b06a2dcc2d Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Thu, 21 Nov 2024 16:41:28 +0700 Subject: [PATCH] deleted sowm directory --- sowm/sowm/LICENSE.md | 33 ----- sowm/sowm/Makefile | 24 ---- sowm/sowm/README.md | 98 -------------- sowm/sowm/config.def.h | 49 ------- sowm/sowm/config.h | 55 -------- sowm/sowm/sowm | Bin 27184 -> 0 bytes sowm/sowm/sowm.c | 289 ----------------------------------------- sowm/sowm/sowm.h | 58 --------- sowm/startsowm.sh | 12 -- 9 files changed, 618 deletions(-) delete mode 100644 sowm/sowm/LICENSE.md delete mode 100644 sowm/sowm/Makefile delete mode 100644 sowm/sowm/README.md delete mode 100644 sowm/sowm/config.def.h delete mode 100644 sowm/sowm/config.h delete mode 100755 sowm/sowm/sowm delete mode 100644 sowm/sowm/sowm.c delete mode 100644 sowm/sowm/sowm.h delete mode 100755 sowm/startsowm.sh diff --git a/sowm/sowm/LICENSE.md b/sowm/sowm/LICENSE.md deleted file mode 100644 index 38cf607..0000000 --- a/sowm/sowm/LICENSE.md +++ /dev/null @@ -1,33 +0,0 @@ -MIT/X Consortium License - -- © 2019- Dylan Araps -- © 2006-2011 Anselm R Garbe -- © 2007-2011 Peter Hartlich -- © 2010-2011 Connor Lane Smith -- © 2006-2009 Jukka Salmi -- © 2007-2009 Premysl Hruby -- © 2007-2009 Szabolcs Nagy -- © 2007-2009 Christof Musik -- © 2009 Mate Nagy -- © 2007-2008 Enno Gottox Boland -- © 2008 Martin Hurton -- © 2008 Neale Pickett -- © 2006-2007 Sander van Dijk - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/sowm/sowm/Makefile b/sowm/sowm/Makefile deleted file mode 100644 index 20f3734..0000000 --- a/sowm/sowm/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -CFLAGS += -std=c99 -Wall -Wextra -pedantic -Wold-style-declaration -CFLAGS += -Wmissing-prototypes -Wno-unused-parameter -PREFIX ?= /usr -BINDIR ?= $(PREFIX)/bin -CC ?= gcc - -all: sowm - -config.h: - cp config.def.h config.h - -sowm: sowm.c sowm.h config.h Makefile - $(CC) -O3 $(CFLAGS) -o $@ $< -lX11 $(LDFLAGS) - -install: all - install -Dm755 sowm $(DESTDIR)$(BINDIR)/sowm - -uninstall: - rm -f $(DESTDIR)$(BINDIR)/sowm - -clean: - rm -f sowm *.o - -.PHONY: all install uninstall clean diff --git a/sowm/sowm/README.md b/sowm/sowm/README.md deleted file mode 100644 index e0aa3e9..0000000 --- a/sowm/sowm/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# sowm (*~~Simple~~ Shitty Opinionated Window Manager*) - - - -An itsy bitsy floating window manager (*220~ sloc!*). - -- Floating only. -- Fullscreen toggle. -- Window centering. -- Mix of mouse and keyboard workflow. -- Focus with cursor. -- Rounded corners (*[through patch](https://github.com/dylanaraps/sowm/pull/58)*) -- Titlebars (*[through patch](https://github.com/dylanaraps/sowm/pull/57)*) - - - -- Alt-Tab window focusing. -- All windows die on exit. -- No window borders. -- [No ICCCM](https://web.archive.org/web/20190617214524/https://raw.githubusercontent.com/kfish/xsel/1a1c5edf0dc129055f7764c666da2dd468df6016/rant.txt). -- No EWMH. -- etc etc etc - - -
- -Patches available here: https://github.com/dylanaraps/sowm/pulls - -## Default Keybindings - -**Window Management** - -| combo | action | -| -------------------------- | -----------------------| -| `Mouse` | focus under cursor | -| `MOD4` + `Left Mouse` | move window | -| `MOD4` + `Right Mouse` | resize window | -| `MOD4` + `f` | maximize toggle | -| `MOD4` + `c` | center window | -| `MOD4` + `q` | kill window | -| `MOD4` + `1-6` | desktop swap | -| `MOD4` + `Shift` +`1-6` | send window to desktop | -| `MOD1` + `TAB` (*alt-tab*) | focus cycle | - -**Programs** - -| combo | action | program | -| ------------------------ | ---------------- | -------------- | -| `MOD4` + `Return` | terminal | `st` | -| `MOD4` + `d` | dmenu | `dmenu_run` | -| `MOD4` + `p` | scrot | `scr` | -| `MOD4` + `w` | wallpaper cycler | `bud` | -| `XF86_AudioLowerVolume` | volume down | `amixer` | -| `XF86_AudioRaiseVolume` | volume up | `amixer` | -| `XF86_AudioMute` | volume toggle | `amixer` | -| `XF86_MonBrightnessUp` | brightness up | `bri` | -| `XF86_MonBrightnessDown` | brightness down | `bri` | - - -## Dependencies - -- `xlib` (*usually `libX11`*). - - -## Installation - -1) Copy `config.def.h` to `config.h` and modify it to suit your needs. -2) Run `make` to build `sowm`. -3) Copy it to your path or run `make install`. - - `DESTDIR` and `PREFIX` are supported. -4) (Optional) Apply patch with `git apply patches/patch-name` - - In case of applying multiple patches, it has to be done **manually**. - -If you are using GDM, save the following to `/usr/share/xsessions/sowm.desktop`. It is still recommended to start `sowm` from `.xinitrc` or through -[your own xinit implementation](https://github.com/dylanaraps/bin/blob/dfd9a9ff4555efb1cc966f8473339f37d13698ba/x). - -``` -[Desktop Entry] -Name=sowm -Comment=This session runs sowm as desktop manager -Exec=sowm -Type=Application -``` - - -## Thanks - -- [2bwm](https://github.com/venam/2bwm) -- [SmallWM](https://github.com/adamnew123456/SmallWM) -- [berry](https://github.com/JLErvin/berry) -- [catwm](https://github.com/pyknite/catwm) -- [dminiwm](https://github.com/moetunes/dminiwm) -- [dwm](https://dwm.suckless.org) -- [monsterwm](https://github.com/c00kiemon5ter/monsterwm) -- [openbox](https://github.com/danakj/openbox) -- [possum-wm](https://github.com/duckinator/possum-wm) -- [swm](https://github.com/dcat/swm) -- [tinywm](http://incise.org/tinywm.html) diff --git a/sowm/sowm/config.def.h b/sowm/sowm/config.def.h deleted file mode 100644 index cae2009..0000000 --- a/sowm/sowm/config.def.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -#define MOD Mod4Mask - -const char* menu[] = {"dmenu_run", 0}; -const char* term[] = {"st", 0}; -const char* scrot[] = {"scr", 0}; -const char* briup[] = {"bri", "10", "+", 0}; -const char* bridown[] = {"bri", "10", "-", 0}; -const char* voldown[] = {"amixer", "sset", "Master", "5%-", 0}; -const char* volup[] = {"amixer", "sset", "Master", "5%+", 0}; -const char* volmute[] = {"amixer", "sset", "Master", "toggle", 0}; -const char* colors[] = {"bud", "/home/goldie/Pictures/Wallpapers", 0}; - -static struct key keys[] = { - {MOD, XK_q, win_kill, {0}}, - {MOD, XK_c, win_center, {0}}, - {MOD, XK_f, win_fs, {0}}, - - {Mod1Mask, XK_Tab, win_next, {0}}, - {Mod1Mask|ShiftMask, XK_Tab, win_prev, {0}}, - - {MOD, XK_d, run, {.com = menu}}, - {MOD, XK_w, run, {.com = colors}}, - {MOD, XK_p, run, {.com = scrot}}, - {MOD, XK_Return, run, {.com = term}}, - - {0, XF86XK_AudioLowerVolume, run, {.com = voldown}}, - {0, XF86XK_AudioRaiseVolume, run, {.com = volup}}, - {0, XF86XK_AudioMute, run, {.com = volmute}}, - {0, XF86XK_MonBrightnessUp, run, {.com = briup}}, - {0, XF86XK_MonBrightnessDown, run, {.com = bridown}}, - - {MOD, XK_1, ws_go, {.i = 1}}, - {MOD|ShiftMask, XK_1, win_to_ws, {.i = 1}}, - {MOD, XK_2, ws_go, {.i = 2}}, - {MOD|ShiftMask, XK_2, win_to_ws, {.i = 2}}, - {MOD, XK_3, ws_go, {.i = 3}}, - {MOD|ShiftMask, XK_3, win_to_ws, {.i = 3}}, - {MOD, XK_4, ws_go, {.i = 4}}, - {MOD|ShiftMask, XK_4, win_to_ws, {.i = 4}}, - {MOD, XK_5, ws_go, {.i = 5}}, - {MOD|ShiftMask, XK_5, win_to_ws, {.i = 5}}, - {MOD, XK_6, ws_go, {.i = 6}}, - {MOD|ShiftMask, XK_6, win_to_ws, {.i = 6}}, -}; - -#endif diff --git a/sowm/sowm/config.h b/sowm/sowm/config.h deleted file mode 100644 index 3d1e457..0000000 --- a/sowm/sowm/config.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef CONFIG_H -#define CONFIG_H - -//-------- modkey --- -#define MOD Mod1Mask -//------------------- - -const char* menu[] = {"/home/tola/dotfiles/rofi/launcher/launcher.sh", 0}; -const char* term[] = {"st", 0}; -const char* scrot[] = {"scr", 0}; -const char* briup[] = {"bri", "10", "+", 0}; -const char* bridown[] = {"bri", "10", "-", 0}; -const char* voldown[] = {"amixer", "sset", "Master", "5%-", 0}; -const char* volup[] = {"amixer", "sset", "Master", "5%+", 0}; -const char* volmute[] = {"amixer", "sset", "Master", "toggle", 0}; -const char* colors[] = {"bud", "/home/goldie/Pictures/Wallpapers", 0}; - -static struct key keys[] = { - //------------- windows ------------- - {MOD, XK_q, win_kill, {0}}, - {MOD, XK_c, win_center, {0}}, - {MOD, XK_f, win_fs, {0}}, - //----------------------------------- - - {Mod1Mask, XK_Tab, win_next, {0}}, - {Mod1Mask|ShiftMask, XK_Tab, win_prev, {0}}, - - {MOD, XK_d, run, {.com = menu}}, - {MOD, XK_w, run, {.com = colors}}, - {MOD, XK_p, run, {.com = scrot}}, - {MOD, XK_Return, run, {.com = term}}, - - {0, XF86XK_AudioLowerVolume, run, {.com = voldown}}, - {0, XF86XK_AudioRaiseVolume, run, {.com = volup}}, - {0, XF86XK_AudioMute, run, {.com = volmute}}, - {0, XF86XK_MonBrightnessUp, run, {.com = briup}}, - {0, XF86XK_MonBrightnessDown, run, {.com = bridown}}, - - //-------------- workspaces --------------- - {MOD, XK_1, ws_go, {.i = 1}}, - {MOD|ShiftMask, XK_1, win_to_ws, {.i = 1}}, - {MOD, XK_2, ws_go, {.i = 2}}, - {MOD|ShiftMask, XK_2, win_to_ws, {.i = 2}}, - {MOD, XK_3, ws_go, {.i = 3}}, - {MOD|ShiftMask, XK_3, win_to_ws, {.i = 3}}, - {MOD, XK_4, ws_go, {.i = 4}}, - {MOD|ShiftMask, XK_4, win_to_ws, {.i = 4}}, - {MOD, XK_5, ws_go, {.i = 5}}, - {MOD|ShiftMask, XK_5, win_to_ws, {.i = 5}}, - {MOD, XK_6, ws_go, {.i = 6}}, - {MOD|ShiftMask, XK_6, win_to_ws, {.i = 6}}, - //----------------------------------------- -}; - -#endif diff --git a/sowm/sowm/sowm b/sowm/sowm/sowm deleted file mode 100755 index c3c625a261ea7140043717ea278e1e761bc05004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27184 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 KD=i8ZR{SSx2VnsK diff --git a/sowm/sowm/sowm.c b/sowm/sowm/sowm.c deleted file mode 100644 index 96f8340..0000000 --- a/sowm/sowm/sowm.c +++ /dev/null @@ -1,289 +0,0 @@ -// sowm - An itsy bitsy floating window manager. - -#include -#include -#include -#include -#include -#include -#include - -#include "sowm.h" - -static client *list = {0}, *ws_list[10] = {0}, *cur; -static int ws = 1, sw, sh, wx, wy, numlock = 0; -static unsigned int ww, wh; - -static Display *d; -static XButtonEvent mouse; -static Window root; - -static void (*events[LASTEvent])(XEvent *e) = { - [ButtonPress] = button_press, - [ButtonRelease] = button_release, - [ConfigureRequest] = configure_request, - [KeyPress] = key_press, - [MapRequest] = map_request, - [MappingNotify] = mapping_notify, - [DestroyNotify] = notify_destroy, - [EnterNotify] = notify_enter, - [MotionNotify] = notify_motion -}; - -#include "config.h" - -void win_focus(client *c) { - cur = c; - XSetInputFocus(d, cur->w, RevertToParent, CurrentTime); -} - -void notify_destroy(XEvent *e) { - win_del(e->xdestroywindow.window); - - if (list) win_focus(list->prev); -} - -void notify_enter(XEvent *e) { - while(XCheckTypedEvent(d, EnterNotify, e)); - - for win if (c->w == e->xcrossing.window) win_focus(c); -} - -void notify_motion(XEvent *e) { - if (!mouse.subwindow || cur->f) return; - - while(XCheckTypedEvent(d, MotionNotify, e)); - - int xd = e->xbutton.x_root - mouse.x_root; - int yd = e->xbutton.y_root - mouse.y_root; - - XMoveResizeWindow(d, mouse.subwindow, - wx + (mouse.button == 1 ? xd : 0), - wy + (mouse.button == 1 ? yd : 0), - MAX(1, ww + (mouse.button == 3 ? xd : 0)), - MAX(1, wh + (mouse.button == 3 ? yd : 0))); -} - -void key_press(XEvent *e) { - KeySym keysym = XkbKeycodeToKeysym(d, e->xkey.keycode, 0, 0); - - for (unsigned int i=0; i < sizeof(keys)/sizeof(*keys); ++i) - if (keys[i].keysym == keysym && - mod_clean(keys[i].mod) == mod_clean(e->xkey.state)) - keys[i].function(keys[i].arg); -} - -void button_press(XEvent *e) { - if (!e->xbutton.subwindow) return; - - win_size(e->xbutton.subwindow, &wx, &wy, &ww, &wh); - XRaiseWindow(d, e->xbutton.subwindow); - mouse = e->xbutton; -} - -void button_release(XEvent *e) { - mouse.subwindow = 0; -} - -void win_add(Window w) { - client *c; - - if (!(c = (client *) calloc(1, sizeof(client)))) - exit(1); - - c->w = w; - - if (list) { - list->prev->next = c; - c->prev = list->prev; - list->prev = c; - c->next = list; - - } else { - list = c; - list->prev = list->next = list; - } - - ws_save(ws); -} - -void win_del(Window w) { - client *x = 0; - - for win if (c->w == w) x = c; - - if (!list || !x) return; - if (x->prev == x) list = 0; - if (list == x) list = x->next; - if (x->next) x->next->prev = x->prev; - if (x->prev) x->prev->next = x->next; - - free(x); - ws_save(ws); -} - -void win_kill(const Arg arg) { - if (cur) XKillClient(d, cur->w); -} - -void win_center(const Arg arg) { - if (!cur) return; - - win_size(cur->w, &(int){0}, &(int){0}, &ww, &wh); - XMoveWindow(d, cur->w, (sw - ww) / 2, (sh - wh) / 2); -} - -void win_fs(const Arg arg) { - if (!cur) return; - - if ((cur->f = cur->f ? 0 : 1)) { - win_size(cur->w, &cur->wx, &cur->wy, &cur->ww, &cur->wh); - XMoveResizeWindow(d, cur->w, 0, 0, sw, sh); - - } else { - XMoveResizeWindow(d, cur->w, cur->wx, cur->wy, cur->ww, cur->wh); - } -} - -void win_to_ws(const Arg arg) { - int tmp = ws; - - if (arg.i == tmp) return; - - ws_sel(arg.i); - win_add(cur->w); - ws_save(arg.i); - - ws_sel(tmp); - win_del(cur->w); - XUnmapWindow(d, cur->w); - ws_save(tmp); - - if (list) win_focus(list); -} - -void win_prev(const Arg arg) { - if (!cur) return; - - XRaiseWindow(d, cur->prev->w); - win_focus(cur->prev); -} - -void win_next(const Arg arg) { - if (!cur) return; - - XRaiseWindow(d, cur->next->w); - win_focus(cur->next); -} - -void ws_go(const Arg arg) { - int tmp = ws; - - if (arg.i == ws) return; - - ws_save(ws); - ws_sel(arg.i); - - for win XMapWindow(d, c->w); - - ws_sel(tmp); - - for win XUnmapWindow(d, c->w); - - ws_sel(arg.i); - - if (list) win_focus(list); else cur = 0; -} - -void configure_request(XEvent *e) { - XConfigureRequestEvent *ev = &e->xconfigurerequest; - - XConfigureWindow(d, ev->window, ev->value_mask, &(XWindowChanges) { - .x = ev->x, - .y = ev->y, - .width = ev->width, - .height = ev->height, - .sibling = ev->above, - .stack_mode = ev->detail - }); -} - -void map_request(XEvent *e) { - Window w = e->xmaprequest.window; - - XSelectInput(d, w, StructureNotifyMask|EnterWindowMask); - win_size(w, &wx, &wy, &ww, &wh); - win_add(w); - cur = list->prev; - - if (wx + wy == 0) win_center((Arg){0}); - - XMapWindow(d, w); - win_focus(list->prev); -} - -void mapping_notify(XEvent *e) { - XMappingEvent *ev = &e->xmapping; - - if (ev->request == MappingKeyboard || ev->request == MappingModifier) { - XRefreshKeyboardMapping(ev); - input_grab(root); - } -} - -void run(const Arg arg) { - if (fork()) return; - if (d) close(ConnectionNumber(d)); - - setsid(); - execvp((char*)arg.com[0], (char**)arg.com); -} - -void input_grab(Window root) { - unsigned int i, j, modifiers[] = {0, LockMask, numlock, numlock|LockMask}; - XModifierKeymap *modmap = XGetModifierMapping(d); - KeyCode code; - - for (i = 0; i < 8; i++) - for (int k = 0; k < modmap->max_keypermod; k++) - if (modmap->modifiermap[i * modmap->max_keypermod + k] - == XKeysymToKeycode(d, 0xff7f)) - numlock = (1 << i); - - XUngrabKey(d, AnyKey, AnyModifier, root); - - for (i = 0; i < sizeof(keys)/sizeof(*keys); i++) - if ((code = XKeysymToKeycode(d, keys[i].keysym))) - for (j = 0; j < sizeof(modifiers)/sizeof(*modifiers); j++) - XGrabKey(d, code, keys[i].mod | modifiers[j], root, - True, GrabModeAsync, GrabModeAsync); - - for (i = 1; i < 4; i += 2) - for (j = 0; j < sizeof(modifiers)/sizeof(*modifiers); j++) - XGrabButton(d, i, MOD | modifiers[j], root, True, - ButtonPressMask|ButtonReleaseMask|PointerMotionMask, - GrabModeAsync, GrabModeAsync, 0, 0); - - XFreeModifiermap(modmap); -} - -int main(void) { - XEvent ev; - - if (!(d = XOpenDisplay(0))) exit(1); - - signal(SIGCHLD, SIG_IGN); - XSetErrorHandler(xerror); - - int s = DefaultScreen(d); - root = RootWindow(d, s); - sw = XDisplayWidth(d, s); - sh = XDisplayHeight(d, s); - - XSelectInput(d, root, SubstructureRedirectMask); - XDefineCursor(d, root, XCreateFontCursor(d, 68)); - input_grab(root); - - while (1 && !XNextEvent(d, &ev)) // 1 && will forever be here. - if (events[ev.type]) events[ev.type](&ev); -} diff --git a/sowm/sowm/sowm.h b/sowm/sowm/sowm.h deleted file mode 100644 index b059f06..0000000 --- a/sowm/sowm/sowm.h +++ /dev/null @@ -1,58 +0,0 @@ -#include - -#define win (client *t=0, *c=list; c && t!=list->prev; t=c, c=c->next) -#define ws_save(W) ws_list[W] = list -#define ws_sel(W) list = ws_list[ws = W] -#define MAX(a, b) ((a) > (b) ? (a) : (b)) - -#define win_size(W, gx, gy, gw, gh) \ - XGetGeometry(d, W, &(Window){0}, gx, gy, gw, gh, \ - &(unsigned int){0}, &(unsigned int){0}) - -// Taken from DWM. Many thanks. https://git.suckless.org/dwm -#define mod_clean(mask) (mask & ~(numlock|LockMask) & \ - (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) - -typedef struct { - const char** com; - const int i; - const Window w; -} Arg; - -struct key { - unsigned int mod; - KeySym keysym; - void (*function)(const Arg arg); - const Arg arg; -}; - -typedef struct client { - struct client *next, *prev; - int f, wx, wy; - unsigned int ww, wh; - Window w; -} client; - -void button_press(XEvent *e); -void button_release(XEvent *e); -void configure_request(XEvent *e); -void input_grab(Window root); -void key_press(XEvent *e); -void map_request(XEvent *e); -void mapping_notify(XEvent *e); -void notify_destroy(XEvent *e); -void notify_enter(XEvent *e); -void notify_motion(XEvent *e); -void run(const Arg arg); -void win_add(Window w); -void win_center(const Arg arg); -void win_del(Window w); -void win_fs(const Arg arg); -void win_focus(client *c); -void win_kill(const Arg arg); -void win_prev(const Arg arg); -void win_next(const Arg arg); -void win_to_ws(const Arg arg); -void ws_go(const Arg arg); - -static int xerror() { return 0; } diff --git a/sowm/startsowm.sh b/sowm/startsowm.sh deleted file mode 100755 index 4eba74e..0000000 --- a/sowm/startsowm.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -setxkbmap "us,ru" -option 'grp:win_space_toggle' -~/dotfiles/dwm/background.sh & -# picom -b -dunst & - - -while true; do - sowm 2> ~/.sowm.log -done -