aboutsummaryrefslogtreecommitdiff
path: root/repos/xorg
diff options
context:
space:
mode:
authoremmett1 <emmett1.2miligrams@protonmail.com>2024-07-15 09:56:45 +0800
committeremmett1 <emmett1.2miligrams@protonmail.com>2024-07-15 09:56:45 +0800
commitd343a2feb8020153e0514667e76f0d3ee0d7eb83 (patch)
tree797886d286c2fe73bbc411ad2c04c48b81ce01bb /repos/xorg
parentfa579f499b631b652e7b84d022e3194692f1c7c1 (diff)
downloadalicelinux-d343a2feb8020153e0514667e76f0d3ee0d7eb83.tar.gz
alicelinux-d343a2feb8020153e0514667e76f0d3ee0d7eb83.zip
sowm: new added
Diffstat (limited to 'repos/xorg')
-rw-r--r--repos/xorg/sowm/.files3
-rw-r--r--repos/xorg/sowm/abuild11
-rw-r--r--repos/xorg/sowm/config.h47
-rw-r--r--repos/xorg/sowm/depends2
-rw-r--r--repos/xorg/sowm/multihead-support.patch118
5 files changed, 181 insertions, 0 deletions
diff --git a/repos/xorg/sowm/.files b/repos/xorg/sowm/.files
new file mode 100644
index 00000000..cc60ec24
--- /dev/null
+++ b/repos/xorg/sowm/.files
@@ -0,0 +1,3 @@
+drwxr-xr-x root/root usr/
+drwxr-xr-x root/root usr/bin/
+-rwxr-xr-x root/root usr/bin/sowm
diff --git a/repos/xorg/sowm/abuild b/repos/xorg/sowm/abuild
new file mode 100644
index 00000000..16ee6c07
--- /dev/null
+++ b/repos/xorg/sowm/abuild
@@ -0,0 +1,11 @@
+name=sowm
+version=1.6
+release=1
+source="https://github.com/dylanaraps/${name}/archive/${version}/${name}-${version}.tar.gz
+ multihead-support.patch
+ config.h"
+
+prebuild() {
+ cp $SRC/config.h .
+}
+
diff --git a/repos/xorg/sowm/config.h b/repos/xorg/sowm/config.h
new file mode 100644
index 00000000..34fdd06c
--- /dev/null
+++ b/repos/xorg/sowm/config.h
@@ -0,0 +1,47 @@
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#define MOD Mod4Mask
+
+const char* menu[] = {"dmenu_run", 0};
+const char* term[] = {"xterm", 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};
+
+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_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/repos/xorg/sowm/depends b/repos/xorg/sowm/depends
new file mode 100644
index 00000000..30f5c9f7
--- /dev/null
+++ b/repos/xorg/sowm/depends
@@ -0,0 +1,2 @@
+libx11
+libxinerama
diff --git a/repos/xorg/sowm/multihead-support.patch b/repos/xorg/sowm/multihead-support.patch
new file mode 100644
index 00000000..58b1f454
--- /dev/null
+++ b/repos/xorg/sowm/multihead-support.patch
@@ -0,0 +1,118 @@
+From 053833863349107f2cbef6332c7eff0ef6b70344 Mon Sep 17 00:00:00 2001
+From: Devon Morris <devonmorris1992@gmail.com>
+Date: Sat, 11 Apr 2020 15:40:09 -0400
+Subject: [PATCH] added Xinerama fullscreen support
+
+---
+ Makefile | 2 +-
+ sowm.c | 38 ++++++++++++++++++++++++++++++++++----
+ sowm.h | 2 ++
+ 3 files changed, 37 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 3450a85..a7191f5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -10,7 +10,7 @@ config.h:
+ cp config.def.h config.h
+
+ sowm:
+- $(CC) -O3 $(CFLAGS) -o sowm sowm.c -lX11 $(LDFLAGS)
++ $(CC) -O3 $(CFLAGS) -o sowm sowm.c -lX11 -lXinerama $(LDFLAGS)
+
+ install: all
+ install -Dm755 sowm $(DESTDIR)$(BINDIR)/sowm
+diff --git a/sowm.c b/sowm.c
+index 8b21dc6..88e7de4 100644
+--- a/sowm.c
++++ b/sowm.c
+@@ -4,6 +4,7 @@
+ #include <X11/XF86keysym.h>
+ #include <X11/keysym.h>
+ #include <X11/XKBlib.h>
++#include <X11/extensions/Xinerama.h>
+ #include <stdlib.h>
+ #include <signal.h>
+ #include <unistd.h>
+@@ -11,7 +12,7 @@
+ #include "sowm.h"
+
+ static client *list = {0}, *ws_list[10] = {0}, *cur;
+-static int ws = 1, sw, sh, wx, wy, numlock = 0;
++static int ws = 1, sw, sh, wx, wy, numlock = 0, monitors;
+ static unsigned int ww, wh;
+
+ static Display *d;
+@@ -62,6 +63,8 @@ void notify_motion(XEvent *e) {
+ wy + (mouse.button == 1 ? yd : 0),
+ MAX(1, ww + (mouse.button == 3 ? xd : 0)),
+ MAX(1, wh + (mouse.button == 3 ? yd : 0)));
++
++ win_size(cur->w, &cur->wx, &cur->wx, &cur->ww, &cur->wh);
+ }
+
+ void key_press(XEvent *e) {
+@@ -126,11 +129,37 @@ void win_kill(const Arg arg) {
+ if (cur) XKillClient(d, cur->w);
+ }
+
++int multimonitor_action (int action) { // action = 0 -> center; action = 1 -> fs
++ if (!XineramaIsActive(d)) return 1;
++ XineramaScreenInfo *si = XineramaQueryScreens(d, &monitors);
++ for (int i = 0; i < monitors; i++) {
++ if ((cur->wx + (cur->ww/2) >= (unsigned int)si[i].x_org
++ && cur->wx + (cur->ww/2) < (unsigned int)si[i].x_org + si[i].width)
++ && ( cur->wy + (cur->wh/2) >= (unsigned int)si[i].y_org
++ && cur->wy + (cur->wh/2) < (unsigned int)si[i].y_org + si[i].height)) {
++ if (action)
++ XMoveResizeWindow(d, cur->w,
++ si[i].x_org, si[i].y_org,
++ si[i].width, si[i].height);
++ else
++ XMoveWindow(d, cur->w,
++ si[i].x_org + ((si[i].width - ww)/2),
++ si[i].y_org + ((si[i].height -wh)/2));
++ break;
++ }
++ }
++ return 0;
++}
++
+ 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);
++ if (multimonitor_action(0)) {
++ XMoveWindow(d, cur->w, (sw - ww) / 2, (sh - wh) / 2);
++ }
++
++ win_size(cur->w, &cur->wx, &cur->wy, &cur->ww, &cur->wh);
+ }
+
+ void win_fs(const Arg arg) {
+@@ -138,8 +167,9 @@ void win_fs(const Arg arg) {
+
+ 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);
+-
++ if(multimonitor_action(1)) {
++ XMoveResizeWindow(d, cur->w, 0, 0, sw, sh);
++ }
+ } else {
+ XMoveResizeWindow(d, cur->w, cur->wx, cur->wy, cur->ww, cur->wh);
+ }
+diff --git a/sowm.h b/sowm.h
+index 455ed93..9823d6d 100644
+--- a/sowm.h
++++ b/sowm.h
+@@ -33,6 +33,8 @@ typedef struct client {
+ Window w;
+ } client;
+
++int multimonitor_action(int action);
++
+ void button_press(XEvent *e);
+ void button_release(XEvent *e);
+ void configure_request(XEvent *e);