Introduction
Introduction Statistics Contact Development Disclaimer Help
various updates - dotfiles - These are my dotfiles. There are many like it, but…
Log
Files
Refs
README
---
commit b4a0655231def481288293c626dd93e6cfcd8983
parent dda2927f6d2c7b85076e2de1b8caf7b552d0bdbc
Author: Jay Scott <[email protected]>
Date: Wed, 28 Sep 2022 20:36:10 +0100
various updates
Diffstat:
M ashrc | 15 +++++----------
A bin/fet.sh | 266 +++++++++++++++++++++++++++++…
M castgetrc | 16 ++++++++++++++--
M fdm/config | 2 ++
M mutt/muttrc | 1 +
M profile | 2 +-
M sfeed/sfeedrc | 6 ++++--
D suckless/dmenu/Makefile | 39 -----------------------------…
D suckless/dmenu/config.h | 13 -------------
D suckless/dmenu/patches/01-dmenu-bo… | 25 -------------------------
D suckless/dmenu/patches/02-dmenu-ce… | 120 ---------------------------…
D suckless/dwm/Makefile | 35 -----------------------------…
D suckless/dwm/config.h | 195 -----------------------------…
D suckless/herbe/Makefile | 40 -----------------------------…
D suckless/herbe/config.h | 19 -------------------
D suckless/st/Makefile | 39 -----------------------------…
D suckless/st/config.h | 476 -----------------------------…
D suckless/st/patches/01-st-scrollba… | 351 ---------------------------…
D suckless/st/patches/02-st-w3m-hack… | 12 ------------
M sway/config | 2 --
20 files changed, 293 insertions(+), 1381 deletions(-)
---
diff --git a/ashrc b/ashrc
@@ -1,8 +1,3 @@
-# users bin
-if [ -d "$HOME/bin" ]; then
- PATH="$HOME/bin:$PATH"
-fi
-
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DOWNLOAD_DIR="$HOME/tmp"
export XDG_CACHE_HOME="$HOME/.cache"
@@ -17,18 +12,18 @@ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
export CARGO_HOME="$XDG_DATA_HOME"/cargo
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
-# ps1 setup
-BOLD="\[$(tput bold)\]"
-RESET="\[$(tput sgr0)\]"
-export PS1="${BOLD}\w \$ ${RESET}"
-
# common exports
GPG_TTY=$(tty)
export GPG_TTY
export EDITOR="vim"
+export PATH=$PATH:$HOME/bin
export BROWSER="qutebrowser"
export GOPATH="$XDG_DATA_HOME"/go
export GOPROXY=direct
+export CFLAGS="-O3 -march=native -pipe"
+export CXXFLAGS="$CFLAGS"
+export MAKEFLAGS=-j12
+export PS1='-> '
export BEMENU_OPTS="-p '> ' --tb '#013220' --tf '#ffffff' --hf '#444444'"
diff --git a/bin/fet.sh b/bin/fet.sh
@@ -0,0 +1,266 @@
+#!/bin/sh
+#
+# fet.sh
+# a fetch in pure POSIX shell
+#
+
+# supress errors
+exec 2>/dev/null
+set --
+eq() { # equals | [ a = b ] with globbing
+ case $1 in
+ $2) ;;
+ *) return 1;;
+ esac
+}
+
+## DE
+wm=$XDG_CURRENT_DESKTOP
+[ "$wm" ] || wm=$DESKTOP_SESSION
+
+## Distro
+# freedesktop.org/software/systemd/man/os-release.html
+# a common file that has variables about the distro
+for os in /etc/os-release /usr/lib/os-release; do
+ # some POSIX shells exit when trying to source a file that doesn't exi…
+ [ -f $os ] && . $os && break
+done
+
+if [ -e /proc/$$/comm ]; then
+ ## Terminal
+ while [ ! "$term" ]; do
+ # loop over lines in /proc/pid/status until it reaches PPid
+ # then save that to a variable and exit the file
+ while read -r line; do
+ eq "$line" 'PPid*' && ppid=${line##*:?} && break
+ done < "/proc/${ppid:-$PPID}/status"
+
+ # Make sure not to do an infinite loop
+ [ "$pppid" = "$ppid" ] && break
+ pppid=$ppid
+
+ # get name of binary
+ read -r name < "/proc/$ppid/comm"
+
+ case $name in
+ *sh|"${0##*/}") ;; # skip shells
+ *[Ll]ogin*|*init|*systemd*) break;; # exit when the t…
+ # anything else can be assumed to be the terminal
+ # this has the side affect of catching tmux, but tmux
+ # detaches from the terminal and therefore ignoring th…
+ # will just make the init the term
+ *) term=$name
+ esac
+ done
+
+ ## WM/DE
+ [ "$wm" ] ||
+ # loop over all processes and check the binary name
+ for i in /proc/*/comm; do
+ read -r c < "$i"
+ case $c in
+ *bar*|*rc) ;;
+ awesome|xmonad*|qtile|sway|i3|[bfo]*box|*wm*) …
+ esac
+ done
+
+ ## Memory
+ # loop over lines in /proc/meminfo until it reaches MemTotal,
+ # then convert the amount (second word) from KB to MB
+ while read -r line; do
+ eq "$line" 'MemTotal*' && set -- $line && break
+ done < /proc/meminfo
+ mem="$(( $2 / 1000 ))MB"
+
+ ## Processor
+ while read -r line; do
+ case $line in
+ vendor_id*) vendor="${line##*: } ";;
+ model\ name*) cpu=${line##*: }; break;;
+ esac
+ done < /proc/cpuinfo
+
+ ## Uptime
+ # the simple math is shamefully stolen from aosync
+ IFS=. read -r uptime _ < /proc/uptime
+ d=$((uptime / 60 / 60 / 24))
+ up=$(printf %02d:%02d $((uptime / 60 / 60 % 24)) $((uptime / 60 % 60)))
+ [ "$d" -gt 0 ] && up="${d}d $up"
+
+ ## Kernel
+ read -r _ _ version _ < /proc/version
+ kernel=${version%%-*}
+ eq "$version" '*Microsoft*' && ID="fake $ID"
+
+ ## Motherboard // laptop
+ read -r model < /sys/devices/virtual/dmi/id/product_name
+ # invalid model handling
+ case $model in
+ # alternate file with slightly different info
+ # on my laptop it has the device model (instead of 'hp noteboo…
+ # on my desktop it has the extended motherboard model
+ 'System '*|'Default '*|'To Be Filled'*)
+ read -r model < /sys/devices/virtual/dmi/id/board_name
+ esac
+
+ ## Packages
+ # clean environment, then make every file in the dir an argument,
+ # then save the argument count to $pkgs
+ set --
+ # kiss, arch, debian, void, gentoo
+ for i in '/var/db/kiss/installed/*' '/var/lib/pacman/local/[0-9a-z]*'…
+ '/var/lib/dpkg/info/*.list' '/var/db/xbps/.*' '/var/db/pkg/*/*'; do
+ set -- $i
+ [ $# -gt 1 ] && pkgs=$# && break
+ done
+
+ read -r host < /proc/sys/kernel/hostname
+elif [ -f /var/run/dmesg.boot ]; then
+ # Both OpenBSD and FreeBSD use this file, however they're formatted di…
+ read -r bsd < /var/run/dmesg.boot
+ case $bsd in
+ Open*)
+ ## OpenBSD cpu/mem/name
+ while read -r line; do
+ case $line in
+ 'real mem'*)
+ # use the pre-formatted value which is…
+ mem=${line##*\(}
+ mem=${mem%\)*}
+ ;;
+ # set $cpu to everything before a comma and af…
+ cpu0:*)
+ cpu=${line#cpu0: }
+ # Remove excess info after the actual …
+ cpu=${cpu%%,*}
+ # Set the CPU Manufacturer to the firs…
+ # variable [separated by '(' or ' ']
+ vendor=${cpu%%[\( ]*}
+ # We got all the info we want, stop re…
+ break
+ ;;
+ # First 2 words in the file are OpenBSD <versi…
+ *) [ "$ID" ] || { set -- $line; ID="$1 $2"; }
+ esac
+ done < /var/run/dmesg.boot
+ [ -d /var/db/pkg ] && set -- /var/db/pkg/* && pkgs=$#
+ read -r host < /etc/myname
+ host=${host%.*}
+ ;;
+ # Everything else, assume FreeBSD (first line is ---<<BOOT>> or someth…
+ *)
+ # shellcheck source=/dev/null
+ . /etc/rc.conf
+ # shut shellcheck up without disabling the warning
+ host=${hostname:-}
+
+ while read -r line; do
+ case $line in
+ # os version
+ FreeBSD*)
+ # If the OS is already set, no need to…
+ [ "$ID" ] && continue
+ ID=${line%%-R*}
+ ;;
+
+ CPU:*)
+ cpu=${cpu#CPU: }
+ # Remove excess info from after the ac…
+ cpu=${line%\(*}
+ ;;
+ *Origin=*)
+ # CPU Manufacturer
+ vendor=${line#*Origin=\"}
+ vendor="${vendor%%\"*} "
+ ;;
+
+ 'real memory'*)
+ # Get the pre-formatted amount which i…
+ mem=${line##*\(}
+ mem=${mem%\)*}
+ # This appears to be the final thing w…
+ # no need to read it more.
+ break
+ esac
+ done < /var/run/dmesg.boot
+ ;;
+ esac
+elif v=/System/Library/CoreServices/SystemVersion.plist; [ -f "$v" ]; then
+ ## Macos
+ # make sure this variable is empty as to not break the following loop
+ temp=
+ while read -r line; do
+ case $line in
+ # set a variable so the script knows it's on the corre…
+ # (the line after this one is the important one)
+ *ProductVersion*) temp=.;;
+ *)
+ # check if the script is reading the derired l…
+ # don't do anything
+ [ "$temp" ] || continue
+ # Remove everything before and including the f…
+ ID=${line#*>}
+ # Remove the other side of the XML tag, and in…
+ ID="MacOS ${ID%<*}"
+ # We got the info we want, end the loop.
+ break
+ esac
+ done < "$v"
+fi
+
+eq "$0" '*fetish' && printf 'Step on me daddy\n' && exit
+
+# help i dont know if it's a capital consistently
+eq "$wm" '*[Gg][Nn][Oo][Mm][Ee]*' && wm='foot DE'
+
+## GTK
+while read -r line; do
+ eq "$line" 'gtk-theme*' && gtk=${line##*=} && break
+done < "${XDG_CONFIG_HOME:=$HOME/.config}/gtk-3.0/settings.ini"
+
+# Shorten $cpu and $vendor
+# this is so messy due to so many inconsistencies in the model names
+vendor=${vendor##*Authentic}
+vendor=${vendor##*Genuine}
+cpu=${cpu##*) }
+cpu=${cpu%% @*}
+cpu=${cpu%% CPU}
+cpu=${cpu##CPU }
+cpu=${cpu##*AMD }
+cpu=${cpu%% with*}
+cpu=${cpu% *-Core*}
+
+col() {
+ printf ' '
+ for i in 1 2 3 4 5 6; do
+ printf '\033[9%sm%s' "$i" "${colourblocks:-▅▅}"
+ done
+ printf '\033[0m\n'
+}
+
+print() {
+ [ "$2" ] && printf '\033[9%sm%6s\033[0m%b%s\n' \
+ "${accent:-4}" "$1" "${separator:- ~ }" "$2"
+}
+
+# default value
+: "${info:=n user os sh wm up gtk cpu mem host kern pkgs term col n}"
+
+for i in $info; do
+ case $i in
+ n) echo;;
+ os) print os "$ID";;
+ sh) print sh "${SHELL##*/}";;
+ wm) print wm "${wm##*/}";;
+ up) print up "$up";;
+ gtk) print gtk "${gtk# }";;
+ cpu) print cpu "$vendor$cpu";;
+ mem) print mem "$mem";;
+ host) print host "$model";;
+ kern) print kern "$kernel";;
+ pkgs) print pkgs "$pkgs";;
+ term) print term "$term";;
+ user) printf '%7s@%s\n' "$USER" "$host";;
+ col) col;;
+ esac
+done
diff --git a/castgetrc b/castgetrc
@@ -1,16 +1,28 @@
[*]
spool=/data/media/podcasts
+filename=%(date)-%(title).mp3
+
[2600]
url=https://www.2600.com/oth-broadband.xml
spool=/data/media/podcasts/offthehook
+[corecursive]
+url=https://link.chtbl.com/corecursive?id=corecursive&platform=rss
+spool=/data/media/podcasts/corecursive
+
+[commandlineheroes]
+url=https://feeds.pacific-content.com/commandlineheroes
+spool=/data/media/podcasts/commandlineheroes
+
+[hpr]
+url=http://hackerpublicradio.org/hpr_rss.php
+spool=/data/media/podcasts/hacker-public-radio
+
[tilde-town]
url=https://tilde.town/~dozens/podcast/rss.xml
spool=/data/media/podcasts/tilde-town
-filename=%(date)-%(title).mp3
[ask-noah]
url=https://feeds.fireside.fm/asknoah/rss
spool=/data/media/podcasts/ask-noah
-filename=%(date)-%(title).mp3
diff --git a/fdm/config b/fdm/config
@@ -32,6 +32,7 @@ action "freebsd-questions" maildir "${listdir}/freebsd…
action "srht-discuss" maildir "${listdir}/srht.discuss"
action "srht-dev" maildir "${listdir}/srht.dev"
action "alpine-users" maildir "${listdir}/alpine.users"
+action "alpine-aports" maildir "${listdir}/alpine.aports"
action "alpine-announce" maildir "${listdir}/alpine.announce"
action "alpine-devel" maildir "${listdir}/alpine.devel"
@@ -55,6 +56,7 @@ match "^List-Id:.*lists\\.alpinelinux\\.org" in headers {
match "^List-Id:.*announce" in headers action "alpine-announce"
match "^List-Id:.*devel" in headers action "alpine-devel"
match "^List-Id:.*users" in headers action "alpine-users"
+ match "^List-Id:.*aports" in headers action "alpine-aports"
}
diff --git a/mutt/muttrc b/mutt/muttrc
@@ -79,6 +79,7 @@ mailboxes +mailinglists
mailboxes -label "alpine.users" +ml/alpine.users
mailboxes -label "alpine.devel" +ml/alpine.devel
mailboxes -label "alpine.announce" +ml/alpine.announce
+mailboxes -label "alpine.aports" +ml/alpine.aports
mailboxes -label "srht.discuss" +ml/srht.discuss
mailboxes -label "srht.dev" +ml/srht.dev
mailboxes -label "freebsd.questions" +ml/freebsd.questions
diff --git a/profile b/profile
@@ -1,2 +1,2 @@
-ENV=$HOME/.ashrc; export ENV
+export ENV=$HOME/.ashrc
. $ENV
diff --git a/sfeed/sfeedrc b/sfeed/sfeedrc
@@ -18,10 +18,12 @@ feeds() {
feed 'linuxtorrents' 'http://feed.rutracker.cc/atom/f/1992.atom'
feed 'gamingonlinux' 'https://www.gamingonlinux.com/article_rss.php'
# apps
- feed 'archlinux' 'https://archlinux.org/feeds/news/'
feed 'qutebrowser' 'https://blog.qutebrowser.org/feeds/all.atom.xml'
- feed 'newsboat' 'https://newsboat.org/news.atom'
feed 'rdrview' 'https://github.com/eafer/rdrview/commits/master.atom'
+ feed 'fdm' 'https://github.com/nicm/fdm/commits.atom'
+ feed 'senpai' 'https://git.sr.ht/~taiite/senpai/log/master/rss.xml'
+ feed 'sfeed' 'https://codemadness.org/git/sfeed/atom.xml'
+ feed 'castget' 'https://github.com/mlj/castget/commits.atom'
# gemini
feed 'midnightpub' 'gemini://midnight.pub/feed.xml'
feed 'tomasino' 'gemini://tilde.team/~tomasino/atom.xml'
diff --git a/suckless/dmenu/Makefile b/suckless/dmenu/Makefile
@@ -1,39 +0,0 @@
-REPOSITORY = http://git.suckless.org/dmenu
-SRC_DIR = src
-PINNED_REVISION = HEAD
-PATCH_DIR = patches
-
-all: $(SRC_DIR)
-
-clean: reset
- @if test -d $(SRC_DIR); then \
- $(MAKE) -C "${SRC_DIR}" -s clean; \
- git -C "${SRC_DIR}" clean -f; \
- fi
-
-$(SRC_DIR): clone reset
- @cp config.h $@
- $(MAKE) -C "${SRC_DIR}" -s
-
-patch: $(PATCH_DIR)/*
- @for file in $^ ; do \
- patch -d "${SRC_DIR}" < $${file}; \
- done
-reset:
- @if [ -n "$(strip $(PINNED_REVISION))" ]; then \
- git -C "${SRC_DIR}" reset --hard $(PINNED_REVISION); \
- fi
-
-clone:
- @if ! test -d $(SRC_DIR); then \
- git clone $(REPOSITORY) $(SRC_DIR); \
- fi
-
-update: clean
- @git -C "${SRC_DIR}" pull
-
-install:
- $(MAKE) -C "${SRC_DIR}" -s install
-
-
-.PHONY: all clean update install reset clone
diff --git a/suckless/dmenu/config.h b/suckless/dmenu/config.h
@@ -1,13 +0,0 @@
-static int topbar = 1;
-static const char *fonts[] = {
- "Hack:pixelsize=14"
-};
-static const char *prompt = "run »";
-static const char *colors[SchemeLast][2] = {
- [SchemeNorm] = { "#ffd7af", "#222222" },
- [SchemeSel] = { "#eeeeee", "#008000" },
- [SchemeOut] = { "#000000", "#00ffff" },
-};
-
-static unsigned int lines = 0;
-static const char worddelimiters[] = " ";
diff --git a/suckless/dmenu/patches/01-dmenu-border-4.9.diff b/suckless/dmenu/p…
@@ -1,25 +0,0 @@
-diff -up dmenu-4.9-b/config.def.h dmenu-4.9-a/config.def.h
---- dmenu-4.9-b/config.def.h 2019-02-02 13:55:02.000000000 +0100
-+++ dmenu-4.9-a/config.def.h 2019-05-19 02:10:12.740040403 +0200
-@@ -21,3 +21,6 @@ static unsigned int lines = 0;
- * for example: " /?\"&[]"
- */
- static const char worddelimiters[] = " ";
-+
-+/* Size of the window border */
-+static const unsigned int border_width = 5;
-diff -up dmenu-4.9-b/dmenu.c dmenu-4.9-a/dmenu.c
---- dmenu-4.9-b/dmenu.c 2019-02-02 13:55:02.000000000 +0100
-+++ dmenu-4.9-a/dmenu.c 2019-05-19 02:11:20.966710117 +0200
-@@ -654,9 +654,10 @@ setup(void)
- swa.override_redirect = True;
- swa.background_pixel = scheme[SchemeNorm][ColBg].pixel;
- swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
-- win = XCreateWindow(dpy, parentwin, x, y, mw, mh, 0,
-+ win = XCreateWindow(dpy, parentwin, x, y, mw, mh, border_width,
- CopyFromParent, CopyFromParent, CopyFromParent,
- CWOverrideRedirect | CWBackPixel | CWEventMask, &…
-+ XSetWindowBorder(dpy, win, scheme[SchemeSel][ColBg].pixel);
- XSetClassHint(dpy, win, &ch);
-
- /* open input methods */
diff --git a/suckless/dmenu/patches/02-dmenu-center-20200111-8cd37e1.diff b/suc…
@@ -1,120 +0,0 @@
-From 8cd37e1ab9e7cb025224aeb3543f1a5be8bceb93 Mon Sep 17 00:00:00 2001
-From: Nihal Jere <[email protected]>
-Date: Sat, 11 Jan 2020 21:16:08 -0600
-Subject: [PATCH] center patch now has adjustable minimum width
-
----
- config.def.h | 2 ++
- dmenu.1 | 3 +++
- dmenu.c | 39 ++++++++++++++++++++++++++++++++-------
- 3 files changed, 37 insertions(+), 7 deletions(-)
-
-diff --git a/config.def.h b/config.def.h
-index 1edb647..88ef264 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -2,6 +2,8 @@
- /* Default settings; can be overriden by command line. */
-
- static int topbar = 1; /* -b option; if 0, dmenu appear…
-+static int centered = 0; /* -c option; centers dmenu on sc…
-+static int min_width = 500; /* minimum width when centered…
- /* -fn option overrides fonts[0]; default X11 font or font set */
- static const char *fonts[] = {
- "monospace:size=10"
-diff --git a/dmenu.1 b/dmenu.1
-index 323f93c..c036baa 100644
---- a/dmenu.1
-+++ b/dmenu.1
-@@ -40,6 +40,9 @@ which lists programs in the user's $PATH and runs the result…
- .B \-b
- dmenu appears at the bottom of the screen.
- .TP
-+.B \-c
-+dmenu appears centered on the screen.
-+.TP
- .B \-f
- dmenu grabs the keyboard before reading stdin if not reading from a tty. This
- is faster, but will lock up X until stdin reaches end\-of\-file.
-diff --git a/dmenu.c b/dmenu.c
-index 65f25ce..041c7f8 100644
---- a/dmenu.c
-+++ b/dmenu.c
-@@ -89,6 +89,15 @@ calcoffsets(void)
- break;
- }
-
-+static int
-+max_textw(void)
-+{
-+ int len = 0;
-+ for (struct item *item = items; item && item->text; item++)
-+ len = MAX(TEXTW(item->text), len);
-+ return len;
-+}
-+
- static void
- cleanup(void)
- {
-@@ -611,6 +620,7 @@ setup(void)
- bh = drw->fonts->h + 2;
- lines = MAX(lines, 0);
- mh = (lines + 1) * bh;
-+ promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
- #ifdef XINERAMA
- i = 0;
- if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) {
-@@ -637,9 +647,16 @@ setup(void)
- if (INTERSECT(x, y, 1, 1, info[i]))
- break;
-
-- x = info[i].x_org;
-- y = info[i].y_org + (topbar ? 0 : info[i].height - mh);
-- mw = info[i].width;
-+ if (centered) {
-+ mw = MIN(MAX(max_textw() + promptw, min_width), info[…
-+ x = info[i].x_org + ((info[i].width - mw) / 2);
-+ y = info[i].y_org + ((info[i].height - mh) / 2);
-+ } else {
-+ x = info[i].x_org;
-+ y = info[i].y_org + (topbar ? 0 : info[i].height - mh…
-+ mw = info[i].width;
-+ }
-+
- XFree(info);
- } else
- #endif
-@@ -647,11 +664,17 @@ setup(void)
- if (!XGetWindowAttributes(dpy, parentwin, &wa))
- die("could not get embedding window attributes: 0x%lx…
- parentwin);
-- x = 0;
-- y = topbar ? 0 : wa.height - mh;
-- mw = wa.width;
-+
-+ if (centered) {
-+ mw = MIN(MAX(max_textw() + promptw, min_width), wa.wi…
-+ x = (wa.width - mw) / 2;
-+ y = (wa.height - mh) / 2;
-+ } else {
-+ x = 0;
-+ y = topbar ? 0 : wa.height - mh;
-+ mw = wa.width;
-+ }
- }
-- promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
- inputw = MIN(inputw, mw/3);
- match();
-
-@@ -709,6 +732,8 @@ main(int argc, char *argv[])
- topbar = 0;
- else if (!strcmp(argv[i], "-f")) /* grabs keyboard before r…
- fast = 1;
-+ else if (!strcmp(argv[i], "-c")) /* centers dmenu on screen…
-+ centered = 1;
- else if (!strcmp(argv[i], "-i")) { /* case-insensitive item m…
- fstrncmp = strncasecmp;
- fstrstr = cistrstr;
---
-2.24.1
-
diff --git a/suckless/dwm/Makefile b/suckless/dwm/Makefile
@@ -1,35 +0,0 @@
-REPOSITORY = http://git.suckless.org/dwm
-SRC_DIR = src
-PINNED_REVISION = HEAD
-
-all: $(SRC_DIR)
-
-clean: reset
- @if test -d $(SRC_DIR); then \
- cd $(SRC_DIR); \
- $(MAKE) -s clean; \
- git clean -f; \
- fi
-
-$(SRC_DIR): clone reset
- @cp config.h $@
- @cd $@ && $(MAKE) -s
-
-reset:
- @if [ -n "$(strip $(PINNED_REVISION))" ]; then \
- cd $(SRC_DIR) && git reset --hard $(PINNED_REVISION); \
- fi
-
-clone:
- @if ! test -d $(SRC_DIR); then \
- git clone $(REPOSITORY) $(SRC_DIR); \
- fi
-
-update: clean
- @cd $(SRC_DIR) && git pull
-
-install:
- $(MAKE) -C "${SRC_DIR}" -s install
-
-
-.PHONY: all clean update install reset clone
diff --git a/suckless/dwm/config.h b/suckless/dwm/config.h
@@ -1,195 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-
-/* appearance */
-static const unsigned int borderpx = 2;
-static const unsigned int snap = 32;
-static const int lockfullscreen = 1;
-static const int showbar = 1;
-static const int topbar = 1;
-static const char *fonts[] = { "Hack:size=10" };
-static const char dmenufont[] = "Hack:size=10";
-static const char col_gray1[] = "#222222";
-static const char col_gray2[] = "#444444";
-static const char col_gray3[] = "#bbbbbb";
-static const char col_gray4[] = "#eeeeee";
-static const char col_cyan[] = "#222222";
-static const char *colors[][3] = {
- /* fg bg border */
- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
- [SchemeSel] = { col_gray4, col_cyan, col_cyan },
-};
-
-
-/* custom functions */
-static void togglefullscreen(const Arg *arg);
-static void bstack(Monitor *m);
-static void centeredfloatingmaster(Monitor *m);
-
-/* custom defines for mouse buttons */
-/* only 1-5 are defined in X11/X.h */
-#define Button8 8
-#define Button9 9
-
-/* tagging */
-static const char *tags[] = { "1", "2", "3", "4", "5" };
-
-static Rule rules[] = {
- /* class instance title tags mask isfloating monit…
- { NULL, NULL, NULL, 0, False, -1 },
-};
-
-/* layout(s) */
-static const float mfact = 0.65;
-static const int nmaster = 1;
-static const int resizehints = 0;
-
-static const Layout layouts[] = {
- { ">M>", centeredfloatingmaster },
- { "[]=", tile },
- { "TTT", bstack },
- { "><>", NULL },
-};
-
-#define MODKEY Mod1Mask
-#define TAGKEYS(KEY,TAG) \
-{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
-{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
-{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
-{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
-
-#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
-
-/* commands */
-static char dmenumon[2] = "0";
-static const char *dmenucmd[] = { "dmenu_run", NULL };
-static const char *termcmd[] = { "st", NULL };
-static const char *webcmd[] = { "firefox", NULL };
-static const char *ytcmd[] = { "ytfzf", "-D", NULL };
-static const char *gamecmd[] = { "/home/jay/bin/game_select.sh", NULL };
-static const char *volup[] = { "amixer", "set", "Master", "10%+", NULL };
-static const char *voldown[] = { "amixer", "set", "Master", "10%-", NULL };
-
-
-static Key keys[] = {
- /* modifier key function argument */
- { MODKEY, XK_p, spawn, {.v = dmenu…
- { MODKEY, XK_space, spawn, {.v = termc…
- { MODKEY, XK_f, spawn, {.v = webcm…
- { MODKEY, XK_y, spawn, {.v = ytcmd…
- { MODKEY, XK_g, spawn, {.v = gamec…
- { MODKEY, XK_u, spawn, {.v = volup…
- { MODKEY, XK_d, spawn, {.v = voldo…
- { MODKEY, XK_j, focusstack, {.i = +1 } …
- { MODKEY, XK_k, focusstack, {.i = -1 } …
- { MODKEY, XK_h, setmfact, {.f = -0.05…
- { MODKEY, XK_l, setmfact, {.f = +0.05…
- { MODKEY, XK_Return, zoom, {0} },
- { MODKEY, XK_Tab, view, {0} },
- { MODKEY, XK_c, killclient, {0} },
- { MODKEY, XK_m, togglefullscreen, {0} },
- { MODKEY, XK_period, focusmon, {.i = +1 } …
- { MODKEY, XK_comma, tagmon, {.i = +1 }…
- { MODKEY, XK_b, togglebar, {0} },
- { MODKEY, XK_x, setlayout, {.v = &layo…
- { MODKEY|ShiftMask, XK_x, setlayout, {.v = &layo…
- TAGKEYS( XK_1, 0)
- TAGKEYS( XK_2, 1)
- TAGKEYS( XK_3, 2)
- TAGKEYS( XK_4, 3)
- TAGKEYS( XK_5, 4)
- { MODKEY|ShiftMask, XK_q, quit, {0} },
-};
-
-/* button definitions */
-static Button buttons[] = {
- { ClkRootWin, 0, Button8, spawn, …
- { ClkRootWin, 0, Button9, spawn, …
- };
-
-void
-togglefullscreen(const Arg *arg)
-{
- if (!selmon->sel)
- return;
- setfullscreen(selmon->sel, !selmon->sel->isfullscreen);
-}
-
-static void
-bstack(Monitor *m) {
- int w, h, mh, mx, tx, ty, tw;
- unsigned int i, n;
- Client *c;
-
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
- if (n == 0)
- return;
- if (n > m->nmaster) {
- mh = m->nmaster ? m->mfact * m->wh : 0;
- tw = m->ww / (n - m->nmaster);
- ty = m->wy + mh;
- } else {
- mh = m->wh;
- tw = m->ww;
- ty = m->wy;
- }
- for (i = mx = 0, tx = m->wx, c = nexttiled(m->clients); c; c = nexttil…
- if (i < m->nmaster) {
- w = (m->ww - mx) / (MIN(n, m->nmaster) - i);
- resize(c, m->wx + mx, m->wy, w - (2 * c->bw), mh - (2 …
- mx += WIDTH(c);
- } else {
- h = m->wh - mh;
- resize(c, tx, ty, tw - (2 * c->bw), h - (2 * c->bw), 0…
- if (tw != m->ww)
- tx += WIDTH(c);
- }
- }
-}
-
-void
-centeredfloatingmaster(Monitor *m)
-{
- unsigned int i, n, w, mh, mw, mx, mxo, my, myo, tx;
- Client *c;
-
- /* count number of clients in the selected monitor */
- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
- if (n == 0)
- return;
-
- /* initialize nmaster area */
- if (n > m->nmaster) {
- /* go mfact box in the center if more than nmaster clients */
- if (m->ww > m->wh) {
- mw = m->nmaster ? m->ww * m->mfact : 0;
- mh = m->nmaster ? m->wh * 0.9 : 0;
- } else {
- mh = m->nmaster ? m->wh * m->mfact : 0;
- mw = m->nmaster ? m->ww * 0.9 : 0;
- }
- mx = mxo = (m->ww - mw) / 2;
- my = myo = (m->wh - mh) / 2;
- } else {
- /* go fullscreen if all clients are in the master area */
- mh = m->wh;
- mw = m->ww;
- mx = mxo = 0;
- my = myo = 0;
- }
-
- for(i = tx = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), …
- if (i < m->nmaster) {
- /* nmaster clients are stacked horizontally, in the center
- * of the screen */
- w = (mw + mxo - mx) / (MIN(n, m->nmaster) - i);
- resize(c, m->wx + mx, m->wy + my, w - (2*c->bw),
- mh - (2*c->bw), 0);
- mx += WIDTH(c);
- } else {
- /* stack clients are stacked horizontally */
- w = (m->ww - tx) / (n - i);
- resize(c, m->wx + tx, m->wy, w - (2*c->bw),
- m->wh - (2*c->bw), 0);
- tx += WIDTH(c);
- }
-}
diff --git a/suckless/herbe/Makefile b/suckless/herbe/Makefile
@@ -1,40 +0,0 @@
-REPOSITORY = https://github.com/dudik/herbe.git
-SRC_DIR = src
-PINNED_REVISION = HEAD
-PATCH_DIR = patches
-
-all: $(SRC_DIR)
-
-clean: reset
- @if test -d $(SRC_DIR); then \
- $(MAKE) -C "${SRC_DIR}" -s clean; \
- git -C "${SRC_DIR}" clean -f; \
- fi
-
-$(SRC_DIR): clone reset
- @cp config.h $@
- $(MAKE) -C "${SRC_DIR}" -s
-
-reset:
- @if [ -n "$(strip $(PINNED_REVISION))" ]; then \
- git -C "${SRC_DIR}" reset --hard $(PINNED_REVISION); \
- fi
-
-patch: $(PATCH_DIR)/*
- @for file in $^ ; do \
- patch -d "${SRC_DIR}" < $${file}; \
- done
-
-clone:
- @if ! test -d $(SRC_DIR); then \
- git clone $(REPOSITORY) $(SRC_DIR); \
- fi
-
-update: clean
- @git -C "${SRC_DIR}" pull
-
-install:
- $(MAKE) -C "${SRC_DIR}" -s install
-
-
-.PHONY: all clean update install reset clone
diff --git a/suckless/herbe/config.h b/suckless/herbe/config.h
@@ -1,19 +0,0 @@
-static const char *background_color = "#222222";
-static const char *border_color = "#008000";
-static const char *font_color = "#ffd7af";
-static const char *font_pattern = "Hack:pixelsize=12";
-static unsigned line_spacing = 5;
-static unsigned int padding = 12;
-
-static unsigned int width = 300;
-static unsigned int border_size = 3;
-static unsigned int pos_x = 30;
-static unsigned int pos_y = 60;
-
-enum corners { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT };
-enum corners corner = TOP_RIGHT;
-
-static unsigned int duration = 5; /* in seconds */
-
-#define DISMISS_BUTTON Button1
-#define ACTION_BUTTON Button3
diff --git a/suckless/st/Makefile b/suckless/st/Makefile
@@ -1,39 +0,0 @@
-REPOSITORY = http://git.suckless.org/st
-SRC_DIR = src
-PINNED_REVISION = HEAD
-PATCH_DIR = patches
-
-all: $(SRC_DIR)
-
-clean: reset
- @if test -d $(SRC_DIR); then \
- $(MAKE) -C "${SRC_DIR}" -s clean; \
- git -C "${SRC_DIR}" clean -f; \
- fi
-
-$(SRC_DIR): clone reset patch
- @cp config.h $@
- $(MAKE) -C "${SRC_DIR}" -s
-
-patch: $(PATCH_DIR)/*
- @for file in $^ ; do \
- patch -d "${SRC_DIR}" < $${file}; \
- done
-reset:
- @if [ -n "$(strip $(PINNED_REVISION))" ]; then \
- git -C "${SRC_DIR}" reset --hard $(PINNED_REVISION); \
- fi
-
-clone:
- @if ! test -d $(SRC_DIR); then \
- git clone $(REPOSITORY) $(SRC_DIR); \
- fi
-
-update: clean
- @git -C "${SRC_DIR}" pull
-
-install:
- $(MAKE) -C "${SRC_DIR}" -s install
-
-
-.PHONY: all clean update install reset clone
diff --git a/suckless/st/config.h b/suckless/st/config.h
@@ -1,476 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-
-/*
- * appearance
- *
- * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
- */
-static char *font = "Liberation Mono:pixelsize=18:antialias=true:autohint=true…
-static int borderpx = 2;
-
-/*
- * What program is execed by st depends of these precedence rules:
- * 1: program passed with -e
- * 2: scroll and/or utmp
- * 3: SHELL environment variable
- * 4: value of shell in /etc/passwd
- * 5: value of shell in config.h
- */
-static char *shell = "/bin/sh";
-char *utmp = NULL;
-/* scroll program: to enable use a string like "scroll" */
-char *scroll = NULL;
-char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400";
-
-/* identification sequence returned in DA and DECID */
-char *vtiden = "\033[?6c";
-
-/* Kerning / character bounding-box multipliers */
-static float cwscale = 1.0;
-static float chscale = 1.0;
-
-/*
- * word delimiter string
- *
- * More advanced example: L" `'\"()[]{}"
- */
-wchar_t *worddelimiters = L" ";
-
-/* selection timeouts (in milliseconds) */
-static unsigned int doubleclicktimeout = 300;
-static unsigned int tripleclicktimeout = 600;
-
-/* alt screens */
-int allowaltscreen = 1;
-
-/* allow certain non-interactive (insecure) window operations such as:
- setting the clipboard text */
-int allowwindowops = 0;
-
-/*
- * draw latency range in ms - from new content/keypress/etc until drawing.
- * within this range, st draws when content stops arriving (idle). mostly it's
- * near minlatency, but it waits longer for slow updates to avoid partial draw.
- * low minlatency will tear/flicker more, as it can "detect" idle too early.
- */
-static double minlatency = 8;
-static double maxlatency = 33;
-
-/*
- * blinking timeout (set to 0 to disable blinking) for the terminal blinking
- * attribute.
- */
-static unsigned int blinktimeout = 800;
-
-/*
- * thickness of underline and bar cursors
- */
-static unsigned int cursorthickness = 2;
-
-/*
- * bell volume. It must be a value between -100 and 100. Use 0 for disabling
- * it
- */
-static int bellvolume = 0;
-
-/* default TERM value */
-char *termname = "st-256color";
-
-/*
- * spaces per tab
- *
- * When you are changing this value, don't forget to adapt the »it« value in
- * the st.info and appropriately install the st.info in the environment where
- * you use this st version.
- *
- * it#$tabspaces,
- *
- * Secondly make sure your kernel is not expanding tabs. When running `stty
- * -a` »tab0« should appear. You can tell the terminal to not expand tabs by
- * running following command:
- *
- * stty tabs
- */
-unsigned int tabspaces = 8;
-
-/* Terminal colors (16 first used in escape sequence) */
-static const char *colorname[] = {
- /* 8 normal colors */
- "black",
- "red3",
- "green3",
- "yellow3",
- "blue2",
- "magenta3",
- "cyan3",
- "gray90",
-
- /* 8 bright colors */
- "gray50",
- "red",
- "green",
- "yellow",
- "#5c5cff",
- "magenta",
- "cyan",
- "white",
-
- [255] = 0,
-
- /* more colors can be added after 255 to use with DefaultXX */
- "#cccccc",
- "#555555",
- "gray90", /* default foreground colour */
- "black", /* default background colour */
-};
-
-
-/*
- * Default colors (colorname index)
- * foreground, background, cursor, reverse cursor
- */
-unsigned int defaultfg = 258;
-unsigned int defaultbg = 259;
-unsigned int defaultcs = 256;
-static unsigned int defaultrcs = 257;
-
-/*
- * Default shape of cursor
- * 2: Block ("█")
- * 4: Underline ("_")
- * 6: Bar ("|")
- * 7: Snowman ("☃")
- */
-static unsigned int cursorshape = 2;
-
-/*
- * Default columns and rows numbers
- */
-
-static unsigned int cols = 80;
-static unsigned int rows = 24;
-
-/*
- * Default colour and shape of the mouse cursor
- */
-static unsigned int mouseshape = XC_xterm;
-static unsigned int mousefg = 7;
-static unsigned int mousebg = 0;
-
-/*
- * Color used to display font attributes when fontconfig selected a font which
- * doesn't match the ones requested.
- */
-static unsigned int defaultattr = 11;
-
-/*
- * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set).
- * Note that if you want to use ShiftMask with selmasks, set this to an other
- * modifier, set to 0 to not use it.
- */
-static uint forcemousemod = ShiftMask;
-
-/*
- * Internal mouse shortcuts.
- * Beware that overloading Button1 will disable the selection.
- */
-static MouseShortcut mshortcuts[] = {
- /* mask button function argument releas…
- { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
- { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} },
- { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} },
- { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} },
- { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} },
-};
-
-/* Internal keyboard shortcuts. */
-#define MODKEY Mod1Mask
-#define TERMMOD (ControlMask|ShiftMask)
-
-static Shortcut shortcuts[] = {
- /* mask keysym function argument */
- { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} },
- { ControlMask, XK_Print, toggleprinter, {.i = 0} },
- { ShiftMask, XK_Print, printscreen, {.i = 0} },
- { XK_ANY_MOD, XK_Print, printsel, {.i = 0} },
- { TERMMOD, XK_Prior, zoom, {.f = +1} },
- { TERMMOD, XK_Next, zoom, {.f = -1} },
- { TERMMOD, XK_Home, zoomreset, {.f = 0} },
- { TERMMOD, XK_C, clipcopy, {.i = 0} },
- { TERMMOD, XK_V, clippaste, {.i = 0} },
- { TERMMOD, XK_Y, selpaste, {.i = 0} },
- { ShiftMask, XK_Insert, selpaste, {.i = 0} },
- { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
- { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
- { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
-};
-
-/*
- * Special keys (change & recompile st.info accordingly)
- *
- * Mask value:
- * * Use XK_ANY_MOD to match the key no matter modifiers state
- * * Use XK_NO_MOD to match the key alone (no modifiers)
- * appkey value:
- * * 0: no value
- * * > 0: keypad application mode enabled
- * * = 2: term.numlock = 1
- * * < 0: keypad application mode disabled
- * appcursor value:
- * * 0: no value
- * * > 0: cursor application mode enabled
- * * < 0: cursor application mode disabled
- *
- * Be careful with the order of the definitions because st searches in
- * this table sequentially, so any XK_ANY_MOD must be in the last
- * position for a key.
- */
-
-/*
- * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF)
- * to be mapped below, add them to this array.
- */
-static KeySym mappedkeys[] = { -1 };
-
-/*
- * State bits to ignore when matching key or button events. By default,
- * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored.
- */
-static uint ignoremod = Mod2Mask|XK_SWITCH_MOD;
-
-/*
- * This is the huge key array which defines all compatibility to the Linux
- * world. Please decide about changes wisely.
- */
-static Key key[] = {
- /* keysym mask string appkey appcursor */
- { XK_KP_Home, ShiftMask, "\033[2J", 0, -1},
- { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1},
- { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1},
- { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1},
- { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0},
- { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1},
- { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1},
- { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0},
- { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1},
- { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1},
- { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0},
- { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1},
- { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1},
- { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0},
- { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1},
- { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1},
- { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0},
- { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
- { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0},
- { XK_KP_End, ControlMask, "\033[J", -1, 0},
- { XK_KP_End, ControlMask, "\033[1;5F", +1, 0},
- { XK_KP_End, ShiftMask, "\033[K", -1, 0},
- { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0},
- { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0},
- { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0},
- { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0},
- { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0},
- { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0},
- { XK_KP_Insert, ControlMask, "\033[L", -1, 0},
- { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0},
- { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
- { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
- { XK_KP_Delete, ControlMask, "\033[M", -1, 0},
- { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0},
- { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0},
- { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0},
- { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0},
- { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
- { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0},
- { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0},
- { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0},
- { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0},
- { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0},
- { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0},
- { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0},
- { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0},
- { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0},
- { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0},
- { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0},
- { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0},
- { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0},
- { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0},
- { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0},
- { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0},
- { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0},
- { XK_Up, ShiftMask, "\033[1;2A", 0, 0},
- { XK_Up, Mod1Mask, "\033[1;3A", 0, 0},
- { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0},
- { XK_Up, ControlMask, "\033[1;5A", 0, 0},
- { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0},
- { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0},
- { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0},
- { XK_Up, XK_ANY_MOD, "\033[A", 0, -1},
- { XK_Up, XK_ANY_MOD, "\033OA", 0, +1},
- { XK_Down, ShiftMask, "\033[1;2B", 0, 0},
- { XK_Down, Mod1Mask, "\033[1;3B", 0, 0},
- { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0},
- { XK_Down, ControlMask, "\033[1;5B", 0, 0},
- { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0},
- { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0},
- { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0},
- { XK_Down, XK_ANY_MOD, "\033[B", 0, -1},
- { XK_Down, XK_ANY_MOD, "\033OB", 0, +1},
- { XK_Left, ShiftMask, "\033[1;2D", 0, 0},
- { XK_Left, Mod1Mask, "\033[1;3D", 0, 0},
- { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0},
- { XK_Left, ControlMask, "\033[1;5D", 0, 0},
- { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0},
- { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0},
- { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0},
- { XK_Left, XK_ANY_MOD, "\033[D", 0, -1},
- { XK_Left, XK_ANY_MOD, "\033OD", 0, +1},
- { XK_Right, ShiftMask, "\033[1;2C", 0, 0},
- { XK_Right, Mod1Mask, "\033[1;3C", 0, 0},
- { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0},
- { XK_Right, ControlMask, "\033[1;5C", 0, 0},
- { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0},
- { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0},
- { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0},
- { XK_Right, XK_ANY_MOD, "\033[C", 0, -1},
- { XK_Right, XK_ANY_MOD, "\033OC", 0, +1},
- { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0},
- { XK_Return, Mod1Mask, "\033\r", 0, 0},
- { XK_Return, XK_ANY_MOD, "\r", 0, 0},
- { XK_Insert, ShiftMask, "\033[4l", -1, 0},
- { XK_Insert, ShiftMask, "\033[2;2~", +1, 0},
- { XK_Insert, ControlMask, "\033[L", -1, 0},
- { XK_Insert, ControlMask, "\033[2;5~", +1, 0},
- { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0},
- { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0},
- { XK_Delete, ControlMask, "\033[M", -1, 0},
- { XK_Delete, ControlMask, "\033[3;5~", +1, 0},
- { XK_Delete, ShiftMask, "\033[2K", -1, 0},
- { XK_Delete, ShiftMask, "\033[3;2~", +1, 0},
- { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0},
- { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0},
- { XK_BackSpace, XK_NO_MOD, "\177", 0, 0},
- { XK_BackSpace, Mod1Mask, "\033\177", 0, 0},
- { XK_Home, ShiftMask, "\033[2J", 0, -1},
- { XK_Home, ShiftMask, "\033[1;2H", 0, +1},
- { XK_Home, XK_ANY_MOD, "\033[H", 0, -1},
- { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1},
- { XK_End, ControlMask, "\033[J", -1, 0},
- { XK_End, ControlMask, "\033[1;5F", +1, 0},
- { XK_End, ShiftMask, "\033[K", -1, 0},
- { XK_End, ShiftMask, "\033[1;2F", +1, 0},
- { XK_End, XK_ANY_MOD, "\033[4~", 0, 0},
- { XK_Prior, ControlMask, "\033[5;5~", 0, 0},
- { XK_Prior, ShiftMask, "\033[5;2~", 0, 0},
- { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0},
- { XK_Next, ControlMask, "\033[6;5~", 0, 0},
- { XK_Next, ShiftMask, "\033[6;2~", 0, 0},
- { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0},
- { XK_F1, XK_NO_MOD, "\033OP" , 0, 0},
- { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0},
- { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0},
- { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0},
- { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0},
- { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0},
- { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0},
- { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0},
- { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0},
- { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0},
- { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0},
- { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0},
- { XK_F3, XK_NO_MOD, "\033OR" , 0, 0},
- { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0},
- { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0},
- { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0},
- { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0},
- { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0},
- { XK_F4, XK_NO_MOD, "\033OS" , 0, 0},
- { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0},
- { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0},
- { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0},
- { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0},
- { XK_F5, XK_NO_MOD, "\033[15~", 0, 0},
- { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0},
- { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0},
- { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0},
- { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0},
- { XK_F6, XK_NO_MOD, "\033[17~", 0, 0},
- { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0},
- { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0},
- { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0},
- { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0},
- { XK_F7, XK_NO_MOD, "\033[18~", 0, 0},
- { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0},
- { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0},
- { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0},
- { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0},
- { XK_F8, XK_NO_MOD, "\033[19~", 0, 0},
- { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0},
- { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0},
- { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0},
- { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0},
- { XK_F9, XK_NO_MOD, "\033[20~", 0, 0},
- { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0},
- { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0},
- { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0},
- { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0},
- { XK_F10, XK_NO_MOD, "\033[21~", 0, 0},
- { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0},
- { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0},
- { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0},
- { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0},
- { XK_F11, XK_NO_MOD, "\033[23~", 0, 0},
- { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0},
- { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0},
- { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0},
- { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0},
- { XK_F12, XK_NO_MOD, "\033[24~", 0, 0},
- { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0},
- { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0},
- { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0},
- { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0},
- { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0},
- { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0},
- { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0},
- { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0},
- { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0},
- { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0},
- { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0},
- { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0},
- { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0},
- { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0},
- { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0},
- { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0},
- { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0},
- { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0},
- { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0},
- { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0},
- { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0},
- { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0},
- { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0},
- { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0},
- { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0},
- { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0},
- { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0},
-};
-
-/*
- * Selection types' masks.
- * Use the same masks as usual.
- * Button1Mask is always unset, to make masks match between ButtonPress.
- * ButtonRelease and MotionNotify.
- * If no match is found, regular selection is used.
- */
-static uint selmasks[] = {
- [SEL_RECTANGULAR] = Mod1Mask,
-};
-
-/*
- * Printable characters in ASCII, used to estimate the advance width
- * of single wide characters.
- */
-static char ascii_printable[] =
- " !\"#$%&'()*+,-./0123456789:;<=>?"
- "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"
- "`abcdefghijklmnopqrstuvwxyz{|}~";
diff --git a/suckless/st/patches/01-st-scrollback-20210507-4536f46.diff b/suckl…
@@ -1,351 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 6f05dce..93cbcc0 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -199,6 +199,8 @@ static Shortcut shortcuts[] = {
- { TERMMOD, XK_Y, selpaste, {.i = 0} },
- { ShiftMask, XK_Insert, selpaste, {.i = 0} },
- { TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
-+ { ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
-+ { ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
- };
-
- /*
-diff --git a/st.c b/st.c
-index ebdf360..817cc47 100644
---- a/st.c
-+++ b/st.c
-@@ -35,6 +35,7 @@
- #define ESC_ARG_SIZ 16
- #define STR_BUF_SIZ ESC_BUF_SIZ
- #define STR_ARG_SIZ ESC_ARG_SIZ
-+#define HISTSIZE 2000
-
- /* macros */
- #define IS_SET(flag) ((term.mode & (flag)) != 0)
-@@ -42,6 +43,9 @@
- #define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f))
- #define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c))
- #define ISDELIM(u) (u && wcschr(worddelimiters, u))
-+#define TLINE(y) ((y) < term.scr ? term.hist[((y) + term.histi…
-+ term.scr + HISTSIZE + 1) % HISTSIZE] : \
-+ term.line[(y) - term.scr])
-
- enum term_mode {
- MODE_WRAP = 1 << 0,
-@@ -115,6 +119,9 @@ typedef struct {
- int col; /* nb col */
- Line *line; /* screen */
- Line *alt; /* alternate screen */
-+ Line hist[HISTSIZE]; /* history buffer */
-+ int histi; /* history index */
-+ int scr; /* scroll back */
- int *dirty; /* dirtyness of lines */
- TCursor c; /* cursor */
- int ocx; /* old cursor col */
-@@ -184,8 +191,8 @@ static void tnewline(int);
- static void tputtab(int);
- static void tputc(Rune);
- static void treset(void);
--static void tscrollup(int, int);
--static void tscrolldown(int, int);
-+static void tscrollup(int, int, int);
-+static void tscrolldown(int, int, int);
- static void tsetattr(const int *, int);
- static void tsetchar(Rune, const Glyph *, int, int);
- static void tsetdirt(int, int);
-@@ -416,10 +423,10 @@ tlinelen(int y)
- {
- int i = term.col;
-
-- if (term.line[y][i - 1].mode & ATTR_WRAP)
-+ if (TLINE(y)[i - 1].mode & ATTR_WRAP)
- return i;
-
-- while (i > 0 && term.line[y][i - 1].u == ' ')
-+ while (i > 0 && TLINE(y)[i - 1].u == ' ')
- --i;
-
- return i;
-@@ -528,7 +535,7 @@ selsnap(int *x, int *y, int direction)
- * Snap around if the word wraps around at the end or
- * beginning of a line.
- */
-- prevgp = &term.line[*y][*x];
-+ prevgp = &TLINE(*y)[*x];
- prevdelim = ISDELIM(prevgp->u);
- for (;;) {
- newx = *x + direction;
-@@ -543,14 +550,14 @@ selsnap(int *x, int *y, int direction)
- yt = *y, xt = *x;
- else
- yt = newy, xt = newx;
-- if (!(term.line[yt][xt].mode & ATTR_WRAP))
-+ if (!(TLINE(yt)[xt].mode & ATTR_WRAP))
- break;
- }
-
- if (newx >= tlinelen(newy))
- break;
-
-- gp = &term.line[newy][newx];
-+ gp = &TLINE(newy)[newx];
- delim = ISDELIM(gp->u);
- if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim
- || (delim && gp->u != prevgp->u)))
-@@ -571,14 +578,14 @@ selsnap(int *x, int *y, int direction)
- *x = (direction < 0) ? 0 : term.col - 1;
- if (direction < 0) {
- for (; *y > 0; *y += direction) {
-- if (!(term.line[*y-1][term.col-1].mode
-+ if (!(TLINE(*y-1)[term.col-1].mode
- & ATTR_WRAP)) {
- break;
- }
- }
- } else if (direction > 0) {
- for (; *y < term.row-1; *y += direction) {
-- if (!(term.line[*y][term.col-1].mode
-+ if (!(TLINE(*y)[term.col-1].mode
- & ATTR_WRAP)) {
- break;
- }
-@@ -609,13 +616,13 @@ getsel(void)
- }
-
- if (sel.type == SEL_RECTANGULAR) {
-- gp = &term.line[y][sel.nb.x];
-+ gp = &TLINE(y)[sel.nb.x];
- lastx = sel.ne.x;
- } else {
-- gp = &term.line[y][sel.nb.y == y ? sel.nb.x : 0];
-+ gp = &TLINE(y)[sel.nb.y == y ? sel.nb.x : 0];
- lastx = (sel.ne.y == y) ? sel.ne.x : term.col-1;
- }
-- last = &term.line[y][MIN(lastx, linelen-1)];
-+ last = &TLINE(y)[MIN(lastx, linelen-1)];
- while (last >= gp && last->u == ' ')
- --last;
-
-@@ -850,6 +857,9 @@ void
- ttywrite(const char *s, size_t n, int may_echo)
- {
- const char *next;
-+ Arg arg = (Arg) { .i = term.scr };
-+
-+ kscrolldown(&arg);
-
- if (may_echo && IS_SET(MODE_ECHO))
- twrite(s, n, 1);
-@@ -1061,13 +1071,53 @@ tswapscreen(void)
- }
-
- void
--tscrolldown(int orig, int n)
-+kscrolldown(const Arg* a)
-+{
-+ int n = a->i;
-+
-+ if (n < 0)
-+ n = term.row + n;
-+
-+ if (n > term.scr)
-+ n = term.scr;
-+
-+ if (term.scr > 0) {
-+ term.scr -= n;
-+ selscroll(0, -n);
-+ tfulldirt();
-+ }
-+}
-+
-+void
-+kscrollup(const Arg* a)
-+{
-+ int n = a->i;
-+
-+ if (n < 0)
-+ n = term.row + n;
-+
-+ if (term.scr <= HISTSIZE-n) {
-+ term.scr += n;
-+ selscroll(0, n);
-+ tfulldirt();
-+ }
-+}
-+
-+void
-+tscrolldown(int orig, int n, int copyhist)
- {
- int i;
- Line temp;
-
- LIMIT(n, 0, term.bot-orig+1);
-
-+ if (copyhist) {
-+ term.histi = (term.histi - 1 + HISTSIZE) % HISTSIZE;
-+ temp = term.hist[term.histi];
-+ term.hist[term.histi] = term.line[term.bot];
-+ term.line[term.bot] = temp;
-+ }
-+
- tsetdirt(orig, term.bot-n);
- tclearregion(0, term.bot-n+1, term.col-1, term.bot);
-
-@@ -1077,17 +1127,28 @@ tscrolldown(int orig, int n)
- term.line[i-n] = temp;
- }
-
-- selscroll(orig, n);
-+ if (term.scr == 0)
-+ selscroll(orig, n);
- }
-
- void
--tscrollup(int orig, int n)
-+tscrollup(int orig, int n, int copyhist)
- {
- int i;
- Line temp;
-
- LIMIT(n, 0, term.bot-orig+1);
-
-+ if (copyhist) {
-+ term.histi = (term.histi + 1) % HISTSIZE;
-+ temp = term.hist[term.histi];
-+ term.hist[term.histi] = term.line[orig];
-+ term.line[orig] = temp;
-+ }
-+
-+ if (term.scr > 0 && term.scr < HISTSIZE)
-+ term.scr = MIN(term.scr + n, HISTSIZE-1);
-+
- tclearregion(0, orig, term.col-1, orig+n-1);
- tsetdirt(orig+n, term.bot);
-
-@@ -1097,7 +1158,8 @@ tscrollup(int orig, int n)
- term.line[i+n] = temp;
- }
-
-- selscroll(orig, -n);
-+ if (term.scr == 0)
-+ selscroll(orig, -n);
- }
-
- void
-@@ -1126,7 +1188,7 @@ tnewline(int first_col)
- int y = term.c.y;
-
- if (y == term.bot) {
-- tscrollup(term.top, 1);
-+ tscrollup(term.top, 1, 1);
- } else {
- y++;
- }
-@@ -1291,14 +1353,14 @@ void
- tinsertblankline(int n)
- {
- if (BETWEEN(term.c.y, term.top, term.bot))
-- tscrolldown(term.c.y, n);
-+ tscrolldown(term.c.y, n, 0);
- }
-
- void
- tdeleteline(int n)
- {
- if (BETWEEN(term.c.y, term.top, term.bot))
-- tscrollup(term.c.y, n);
-+ tscrollup(term.c.y, n, 0);
- }
-
- int32_t
-@@ -1735,11 +1797,11 @@ csihandle(void)
- break;
- case 'S': /* SU -- Scroll <n> line up */
- DEFAULT(csiescseq.arg[0], 1);
-- tscrollup(term.top, csiescseq.arg[0]);
-+ tscrollup(term.top, csiescseq.arg[0], 0);
- break;
- case 'T': /* SD -- Scroll <n> line down */
- DEFAULT(csiescseq.arg[0], 1);
-- tscrolldown(term.top, csiescseq.arg[0]);
-+ tscrolldown(term.top, csiescseq.arg[0], 0);
- break;
- case 'L': /* IL -- Insert <n> blank lines */
- DEFAULT(csiescseq.arg[0], 1);
-@@ -2251,7 +2313,7 @@ eschandle(uchar ascii)
- return 0;
- case 'D': /* IND -- Linefeed */
- if (term.c.y == term.bot) {
-- tscrollup(term.top, 1);
-+ tscrollup(term.top, 1, 1);
- } else {
- tmoveto(term.c.x, term.c.y+1);
- }
-@@ -2264,7 +2326,7 @@ eschandle(uchar ascii)
- break;
- case 'M': /* RI -- Reverse index */
- if (term.c.y == term.top) {
-- tscrolldown(term.top, 1);
-+ tscrolldown(term.top, 1, 1);
- } else {
- tmoveto(term.c.x, term.c.y-1);
- }
-@@ -2474,7 +2536,7 @@ twrite(const char *buf, int buflen, int show_ctrl)
- void
- tresize(int col, int row)
- {
-- int i;
-+ int i, j;
- int minrow = MIN(row, term.row);
- int mincol = MIN(col, term.col);
- int *bp;
-@@ -2511,6 +2573,14 @@ tresize(int col, int row)
- term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty));
- term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs));
-
-+ for (i = 0; i < HISTSIZE; i++) {
-+ term.hist[i] = xrealloc(term.hist[i], col * sizeof(Glyph));
-+ for (j = mincol; j < col; j++) {
-+ term.hist[i][j] = term.c.attr;
-+ term.hist[i][j].u = ' ';
-+ }
-+ }
-+
- /* resize each row to new width, zero-pad if needed */
- for (i = 0; i < minrow; i++) {
- term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph));
-@@ -2569,7 +2639,7 @@ drawregion(int x1, int y1, int x2, int y2)
- continue;
-
- term.dirty[y] = 0;
-- xdrawline(term.line[y], x1, y, x2);
-+ xdrawline(TLINE(y), x1, y, x2);
- }
- }
-
-@@ -2590,8 +2660,9 @@ draw(void)
- cx--;
-
- drawregion(0, 0, term.col, term.row);
-- xdrawcursor(cx, term.c.y, term.line[term.c.y][cx],
-- term.ocx, term.ocy, term.line[term.ocy][term.ocx]);
-+ if (term.scr == 0)
-+ xdrawcursor(cx, term.c.y, term.line[term.c.y][cx],
-+ term.ocx, term.ocy, term.line[term.ocy][term.…
- term.ocx = cx;
- term.ocy = term.c.y;
- xfinishdraw();
-diff --git a/st.h b/st.h
-index fa2eddf..adda2db 100644
---- a/st.h
-+++ b/st.h
-@@ -81,6 +81,8 @@ void die(const char *, ...);
- void redraw(void);
- void draw(void);
-
-+void kscrolldown(const Arg *);
-+void kscrollup(const Arg *);
- void printscreen(const Arg *);
- void printsel(const Arg *);
- void sendbreak(const Arg *);
diff --git a/suckless/st/patches/02-st-w3m-hack.diff b/suckless/st/patches/02-s…
@@ -1,12 +0,0 @@
-diff --git a/x.c b/x.c
-index e5f1737..b6ae162 100644
---- a/x.c
-+++ b/x.c
-@@ -1594,6 +1594,8 @@ xsettitle(char *p)
- int
- xstartdraw(void)
- {
-+ if (IS_SET(MODE_VISIBLE))
-+ XCopyArea(xw.dpy, xw.win, xw.buf, dc.gc, 0, 0, win.w, win.h, …
- return IS_SET(MODE_VISIBLE);
- }
diff --git a/sway/config b/sway/config
@@ -73,6 +73,4 @@ bindsym $mod+e layout toggle split
bindsym $mod+m fullscreen
bindsym $mod+w layout tabbed
-include /etc/sway/config.d/*
-
client.focused $colour $colour $colour
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.