summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.local/share/kaomoji2
-rw-r--r--Xdefaults9
-rwxr-xr-xconfig/bspwm/bspwmrc18
-rw-r--r--config/cava/config6
-rw-r--r--config/gtk-3.0/bookmarks16
-rw-r--r--config/mimeapps.list1
-rw-r--r--config/mpd/mpd.conf14
-rw-r--r--config/mpv/mpv.conf6
-rw-r--r--config/picom/picom.conf8
-rw-r--r--config/polybar/config6
-rwxr-xr-xconfig/sx/sxrc4
-rw-r--r--config/sxhkd/sxhkdrc18
-rw-r--r--config/vim/vimrc7
-rw-r--r--config/zathura/zathurarc2
-rw-r--r--profile4
-rw-r--r--sh_aliases4
-rw-r--r--st/davidovski.patch486
17 files changed, 82 insertions, 529 deletions
diff --git a/.local/share/kaomoji b/.local/share/kaomoji
index 7a70d1e..b03258a 100644
--- a/.local/share/kaomoji
+++ b/.local/share/kaomoji
@@ -378,7 +378,7 @@ o(^_-)O Boxer
{{|└(>o< )┘|}} Up In Arms
(^^)// Applause (2)
( `_)?(_' ) Dueling
-(´~`) WearY
+(´~`) Weary
v(^_^)v Victory (3)
(ノ_ _)ノ Surrender
<( ・ェ-)<} Bow and Arrow
diff --git a/Xdefaults b/Xdefaults
index a57010d..f08b7e2 100644
--- a/Xdefaults
+++ b/Xdefaults
@@ -4,7 +4,7 @@
! #define font1 xft:minecraft enchantment:minispace=False:size=10:antialias=true
! #define spacing -2
-#define font1 xft:mononoki:minispace=False:size=10:antialias=true
+#define font1 xft:mononoki:minispace=False:size=14:antialias=true
#define spacing 2
#define font2 xft:MesloLGM Nerd Font Mono:minispace=False:size=10
@@ -100,3 +100,10 @@ URxvt*scrollTtyKeypress: true
URxvt.keysym.Shift-Control-V: eval:paste_clipboard
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
+
+
+*label.renderTable: variable
+*.renderTable.variable.fontName: Sans
+*.renderTable.variable.fontSize: 10
+*.renderTable.variable.fontType: FONT_IS_XFT
+
diff --git a/config/bspwm/bspwmrc b/config/bspwm/bspwmrc
index bad91bf..f913564 100755
--- a/config/bspwm/bspwmrc
+++ b/config/bspwm/bspwmrc
@@ -4,17 +4,16 @@ setup=0
COLOR_BACKGROUND="#282a2e"
COLOR_PRIMARY="#fefefe"
COLOR_SECONDARY="#707880"
-BORDER=3
+BORDER=2
hsetroot -solid $COLOR_BACKGROUND &
xsetroot -cursor_name left_ptr &
xrdb ~/.config/Xdefaults
pgrep -x sxhkd > /dev/null || sxhkd &
-#pgrep -x picom > /dev/null || picom &
+pgrep -x picom > /dev/null || picom &
pgrep -x xss-lock > /dev/null || xss-lock slock &
pgrep -x bg.sh > /dev/null || $HOME/.scripts/bg.sh > /dev/null &
-pgrep -x xcompmgr > /dev/null || xcompmgr -c -C -t-5 -l-5 -r4.2 -o.55 &
[ -f "$HOME/.config/xrandr.sh" ] && . $HOME/.config/xrandr.sh
@@ -30,6 +29,7 @@ for m in $(bspc query -M --names); do
bspc monitor $m -d ${m}1 ${m}2 ${m}3 ${m}4 ${m}5 ${m}6 ${m}7 ${m}8 ${m}9
done
+
$HOME/.config/polybar/launch.sh &
bspc config border_width $BORDER
@@ -38,19 +38,19 @@ $HOME/.scripts/toggle-gap.sh
## individual rules
bspc rule -a Zathura state=tiled
-bspc rule -a feh state=fullscreen
+bspc rule -a feh state=floating
bspc config focus_follows_pointer false
-
+
bspc config normal_border_color "$COLOR_SECONDARY"
bspc config active_border_color "$COLOR_SECONDARY"
bspc config focused_border_color "$COLOR_PRIMARY"
-wmname
+wmname bspwm
sleep 1
-pgrep -x pipewire > /dev/null || pipewire &
-pgrep -x pipewire-pulse > /dev/null || pipewire-pulse &
-pgrep -x wireplumber > /dev/null || wireplumber &
+#pgrep -x pipewire > /dev/null || pipewire &
+#pgrep -x pipewire-pulse > /dev/null || pipewire-pulse &
+#pgrep -x wireplumber > /dev/null || wireplumber &
$HOME/.scripts/start-mpd
diff --git a/config/cava/config b/config/cava/config
index a2b5cf8..2ddd926 100644
--- a/config/cava/config
+++ b/config/cava/config
@@ -56,10 +56,10 @@
# For alsa 'source' will be the capture device.
# For fifo 'source' will be the path to fifo-file.
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
-source = auto
+; source = auto
-; method = alsa
-; source = hw:Loopback,1
+method = alsa
+ source = hw:Loopback,1
; method = fifo
; source = /tmp/mpd.fifo
diff --git a/config/gtk-3.0/bookmarks b/config/gtk-3.0/bookmarks
index d6229a6..019802d 100644
--- a/config/gtk-3.0/bookmarks
+++ b/config/gtk-3.0/bookmarks
@@ -1,11 +1,5 @@
-file:///home/david/docs/lmms
-file:///home/david/docs docs
-file:///home/david/pics pics
-file:///home/david/dl dl
-file:///home/david/video video
-file:///home/david/music music
-file:///home/david/pics/screenshot screenshot
-file:///home/david/docs/proj proj
-file:///tmp tmp
-file:///home/david/video/anime
-file:///home/david/docs/proj/ardour
+file:///home/x/docs/proj
+file:///home/x/dl
+file:///tmp
+file:///
+file:///home/x/pics/screenshot
diff --git a/config/mimeapps.list b/config/mimeapps.list
index 1d268b2..cf7a550 100644
--- a/config/mimeapps.list
+++ b/config/mimeapps.list
@@ -13,6 +13,7 @@ application/x-extension-shtml=userapp-Firefox-AK3I01.desktop
application/xhtml+xml=userapp-Firefox-AK3I01.desktop
application/x-extension-xhtml=userapp-Firefox-AK3I01.desktop
application/x-extension-xht=userapp-Firefox-AK3I01.desktop
+x-scheme-handler/eclipse+command x-scheme-handler/eclipse+mpc=_usr_lib_eclipse_.desktop
[Added Associations]
x-scheme-handler/http=userapp-Firefox-AK3I01.desktop;
diff --git a/config/mpd/mpd.conf b/config/mpd/mpd.conf
index 5dd1296..b086d5e 100644
--- a/config/mpd/mpd.conf
+++ b/config/mpd/mpd.conf
@@ -15,24 +15,14 @@ audio_output {
audio_output {
type "pulse"
- name "mpd pulse"
+ name "mpd"
}
-#audio_output {
-# type "jack"
-# name "MPD jack"
-#}
-
-#audio_output {
- #type "pipewire"
- #name "MPD pipewire"
-#}
-
audio_output {
type "fifo"
name "Visualizer feed"
path "/tmp/mpd.fifo"
- format "22050:16:2"
+ format "44100:16:2"
}
db_file "~/.config/mpd/database"
diff --git a/config/mpv/mpv.conf b/config/mpv/mpv.conf
index 2e2e0fc..de4d6d7 100644
--- a/config/mpv/mpv.conf
+++ b/config/mpv/mpv.conf
@@ -1 +1,5 @@
-vo=x11
+#vo=gpu
+hwdec=auto
+screenshot-directory=~/pics/screenshot
+glsl-shaders="~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN.glsl:~~/shaders/Anime4K_Restore_CNN_Moderate_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_S.glsl"
+
diff --git a/config/picom/picom.conf b/config/picom/picom.conf
index 5800384..7e5ed20 100644
--- a/config/picom/picom.conf
+++ b/config/picom/picom.conf
@@ -185,7 +185,7 @@ opacity-rule = [
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
-blur-background = false;
+blur-background = true;
# Blur background of windows when the window frame is not opaque.
# Implies:
@@ -237,7 +237,7 @@ daemon = true
# `xrender` is the default one.
#
experimental-backends = true;
-backend = "xrender";
+backend = "glx";
vsync = true
@@ -439,8 +439,8 @@ log-level = "info";
#
wintypes:
{
- normal = { fade = false; shadow = true;}
- tooltip = { fade = false; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
+ normal = { fade = true; shadow = true;}
+ tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { full-shadow = true; }
dnd = { shadow = true; }
popup_menu = { shadow = true; }
diff --git a/config/polybar/config b/config/polybar/config
index a08cc24..18a7eae 100644
--- a/config/polybar/config
+++ b/config/polybar/config
@@ -40,7 +40,7 @@ modules-right = time
[bar/ws]
inherit = bar/base
-width = 2510
+width = 1870
offset-x = 25
offset-y = 10
modules-left = workspaces xwindow
@@ -140,7 +140,7 @@ label-muted = "%{T3} %{T-}--%"
type = custom/script
exec = pactl list sources | grep -qi 'Mute: yes' && echo "" || echo ""
interval = 1
-click-left = $HOME/.scripts/toggle-mute.sh
+click-left = $HOME/.scripts/toggle-mic.sh
[module/vpn]
type = custom/script
@@ -153,7 +153,7 @@ format-prefix-foreground = #5b
[module/temperature]
type = custom/script
-exec = sensors | awk '/^Tctl:/ { print substr($2, 2) }'
+exec = sensors | awk '/^Core 0:/ { print substr($3, 2) }'
format-prefix = " "
interval = 1
diff --git a/config/sx/sxrc b/config/sx/sxrc
index a95a311..ee19f27 100755
--- a/config/sx/sxrc
+++ b/config/sx/sxrc
@@ -1,4 +1,4 @@
-xrdb ~/.config/Xdefaults
-setxkbmap -option caps:none
+setxkbmap -option caps:backspace
+xmodmap -e "clear Lock"
exec bspwm
diff --git a/config/sxhkd/sxhkdrc b/config/sxhkd/sxhkdrc
index e9b0202..40ddc7e 100644
--- a/config/sxhkd/sxhkdrc
+++ b/config/sxhkd/sxhkdrc
@@ -21,12 +21,11 @@ super + ctrl + alt + f
light -U {10,1}
{_, super} + XF86MonBrightnessUp
light -A {10,1}
-
super + r
- rofi -show drun -show-icons
+ rofi -show drun -show-icons
super + shift + r
rofi -show ssh -show-icons
@@ -35,13 +34,13 @@ super + ctrl + Tab
rofi -show window
super + g
- $HOME/.scripts/toggle-gap.sh
+ $HOME/.scripts/toggle-gap.sh
super + shift + g
$HOME/.scripts/toggle-size-hints.sh
# open terminal
-super + Return
+super + Return
$TERMINAL
# open pdf viewer
@@ -67,6 +66,11 @@ super + m
super + n
$FILE_MANAGER
+# open dmenu iwd
+super + i
+ $HOME/.scripts/dmenu-iwd
+
+
# open audio mixer
super + semicolon
bspc rule -a \* -o state=floating && $TERMINAL -e pulsemixer
@@ -225,6 +229,12 @@ super + f
bspc node focused -t floating || \
bspc node focused -t tiled;
+# make the node sticky
+super + d
+ [ -z "$(bspc query -N -n focused.sticky)" ] && \
+ bspc node focused -g sticky=on || \
+ bspc node focused -g stick=off;
+
super + ctrl + f
bspc node -t \~fullscreen
diff --git a/config/vim/vimrc b/config/vim/vimrc
index 1850986..5444edb 100644
--- a/config/vim/vimrc
+++ b/config/vim/vimrc
@@ -14,7 +14,7 @@ set spelllang=en_gb
set number relativenumber
-syntax on
+syntax on
nnoremap <silent> <C-l> :nohl<CR><C-l>
@@ -50,7 +50,7 @@ Plug 'preservim/vim-markdown'
Plug 'neoclide/coc.nvim'
-hi CocInlayHint ctermbg=Black ctermfg=Gray
+hi CocInlayHint ctermbg=Black ctermfg=Gray
set updatetime=300
set signcolumn=yes
@@ -118,4 +118,5 @@ call plug#end()
highlight Pmenu ctermbg=black guibg=black ctermfg=white
-
+hi TrailingWhitespace ctermbg=red guibg=red
+call matchadd("TrailingWhitespace", '\v\s+$')
diff --git a/config/zathura/zathurarc b/config/zathura/zathurarc
index 5a0717d..8fc40d8 100644
--- a/config/zathura/zathurarc
+++ b/config/zathura/zathurarc
@@ -30,3 +30,5 @@ set selection-clipboard clipboard
set guioptions none
set recolor true
+
+set first-page-column 1:1
diff --git a/profile b/profile
index 098e3b9..93a54ad 100644
--- a/profile
+++ b/profile
@@ -11,8 +11,10 @@ alias editor=vim
export TERMINAL="st"
export BROWSER="/usr/bin/firefox"
export FILE_MANAGER="/usr/bin/thunar"
-export EMAIL_CLIENT="/usr/bin/thunderbird"
+export EMAIL_CLIENT="/usr/bin/claws-mail"
export EDITOR="/usr/bin/vim"
+export JAVA_HOME=/usr/lib/jvm/java-19-openjdk/
+
export XINITRC="$HOME/.config/sx/sxrc"
[ "$(fgconsole 2>/dev/null)" = "1" ] && exec sx
diff --git a/sh_aliases b/sh_aliases
index 8f60308..33eb29b 100644
--- a/sh_aliases
+++ b/sh_aliases
@@ -18,8 +18,6 @@ alias gosumemory-default="sudo /home/david/.local/share/gosumemory/gosumemory -p
alias yta="yt-dlp --no-mtime --add-metadata --no-check-certificate --embed-thumbnail -x -f bestaudio/best"
-alias suspend="i3lock-fancy -p -t ''; systemctl suspend"
-
alias vim="nvim"
#alias tablet2='tablet 18 156 2.4'
@@ -75,3 +73,5 @@ passthrough_enable () {
}
alias links="links -g -html-g-text-color 0xfefefe -html-g-background-color 0x191919 -font /home/david/.fonts/ttf-mononoki/mononoki-Regular.ttf"
alias weechat="weechat -d ~/.weechat"
+
+alias manfzf="man -k . | fzf | cut -d'(' -f1 | xargs man"
diff --git a/st/davidovski.patch b/st/davidovski.patch
index a2da1bc..6bf4b15 100644
--- a/st/davidovski.patch
+++ b/st/davidovski.patch
@@ -1,26 +1,5 @@
-From a2c7269200007dc73d2a832544836d6aa2d324ea Mon Sep 17 00:00:00 2001
-From: davidovski <david@davidovski.xyz>
-Date: Sun, 16 Jul 2023 01:51:26 +0100
-Subject: [PATCH] davidovski
-
----
- Makefile | 6 +-
- boxdraw.c | 194 +++++++++++++++++++++++++++++++++++++++
- boxdraw_data.h | 214 +++++++++++++++++++++++++++++++++++++++++++
- config.def.h | 60 +++++++++++-
- st.c | 164 ++++++++++++++++++++++++++-------
- st.desktop | 8 ++
- st.h | 12 +++
- st.info | 4 +-
- win.h | 4 +-
- x.c | 243 ++++++++++++++++++++++++++++++++++++++++++++++---
- 10 files changed, 861 insertions(+), 48 deletions(-)
- create mode 100644 boxdraw.c
- create mode 100644 boxdraw_data.h
- create mode 100644 st.desktop
-
diff --git a/Makefile b/Makefile
-index 470ac86..be32361 100644
+index 15db421..bc75c1d 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
@@ -31,8 +10,8 @@ index 470ac86..be32361 100644
+SRC = st.c x.c boxdraw.c
OBJ = $(SRC:.c=.o)
- all: options st
-@@ -23,6 +23,7 @@ config.h:
+ all: st
+@@ -17,6 +17,7 @@ config.h:
st.o: config.h st.h win.h
x.o: arg.h config.h st.h win.h
@@ -40,7 +19,7 @@ index 470ac86..be32361 100644
$(OBJ): config.h config.mk
-@@ -49,9 +50,12 @@ install: st
+@@ -43,9 +44,12 @@ install: st
chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1
tic -sx st.info
@echo Please see the README file regarding the terminfo entry of st.
@@ -52,427 +31,7 @@ index 470ac86..be32361 100644
rm -f $(DESTDIR)$(MANPREFIX)/man1/st.1
+ rm -f $(DESTDIR)$(PREFIX)/share/applications/st.desktop
- .PHONY: all options clean dist install uninstall
-diff --git a/boxdraw.c b/boxdraw.c
-new file mode 100644
-index 0000000..28a92d0
---- /dev/null
-+++ b/boxdraw.c
-@@ -0,0 +1,194 @@
-+/*
-+ * Copyright 2018 Avi Halachmi (:avih) avihpit@yahoo.com https://github.com/avih
-+ * MIT/X Consortium License
-+ */
-+
-+#include <X11/Xft/Xft.h>
-+#include "st.h"
-+#include "boxdraw_data.h"
-+
-+/* Rounded non-negative integers division of n / d */
-+#define DIV(n, d) (((n) + (d) / 2) / (d))
-+
-+static Display *xdpy;
-+static Colormap xcmap;
-+static XftDraw *xd;
-+static Visual *xvis;
-+
-+static void drawbox(int, int, int, int, XftColor *, XftColor *, ushort);
-+static void drawboxlines(int, int, int, int, XftColor *, ushort);
-+
-+/* public API */
-+
-+void
-+boxdraw_xinit(Display *dpy, Colormap cmap, XftDraw *draw, Visual *vis)
-+{
-+ xdpy = dpy; xcmap = cmap; xd = draw, xvis = vis;
-+}
-+
-+int
-+isboxdraw(Rune u)
-+{
-+ Rune block = u & ~0xff;
-+ return (boxdraw && block == 0x2500 && boxdata[(uint8_t)u]) ||
-+ (boxdraw_braille && block == 0x2800);
-+}
-+
-+/* the "index" is actually the entire shape data encoded as ushort */
-+ushort
-+boxdrawindex(const Glyph *g)
-+{
-+ if (boxdraw_braille && (g->u & ~0xff) == 0x2800)
-+ return BRL | (uint8_t)g->u;
-+ if (boxdraw_bold && (g->mode & ATTR_BOLD))
-+ return BDB | boxdata[(uint8_t)g->u];
-+ return boxdata[(uint8_t)g->u];
-+}
-+
-+void
-+drawboxes(int x, int y, int cw, int ch, XftColor *fg, XftColor *bg,
-+ const XftGlyphFontSpec *specs, int len)
-+{
-+ for ( ; len-- > 0; x += cw, specs++)
-+ drawbox(x, y, cw, ch, fg, bg, (ushort)specs->glyph);
-+}
-+
-+/* implementation */
-+
-+void
-+drawbox(int x, int y, int w, int h, XftColor *fg, XftColor *bg, ushort bd)
-+{
-+ ushort cat = bd & ~(BDB | 0xff); /* mask out bold and data */
-+ if (bd & (BDL | BDA)) {
-+ /* lines (light/double/heavy/arcs) */
-+ drawboxlines(x, y, w, h, fg, bd);
-+
-+ } else if (cat == BBD) {
-+ /* lower (8-X)/8 block */
-+ int d = DIV((uint8_t)bd * h, 8);
-+ XftDrawRect(xd, fg, x, y + d, w, h - d);
-+
-+ } else if (cat == BBU) {
-+ /* upper X/8 block */
-+ XftDrawRect(xd, fg, x, y, w, DIV((uint8_t)bd * h, 8));
-+
-+ } else if (cat == BBL) {
-+ /* left X/8 block */
-+ XftDrawRect(xd, fg, x, y, DIV((uint8_t)bd * w, 8), h);
-+
-+ } else if (cat == BBR) {
-+ /* right (8-X)/8 block */
-+ int d = DIV((uint8_t)bd * w, 8);
-+ XftDrawRect(xd, fg, x + d, y, w - d, h);
-+
-+ } else if (cat == BBQ) {
-+ /* Quadrants */
-+ int w2 = DIV(w, 2), h2 = DIV(h, 2);
-+ if (bd & TL)
-+ XftDrawRect(xd, fg, x, y, w2, h2);
-+ if (bd & TR)
-+ XftDrawRect(xd, fg, x + w2, y, w - w2, h2);
-+ if (bd & BL)
-+ XftDrawRect(xd, fg, x, y + h2, w2, h - h2);
-+ if (bd & BR)
-+ XftDrawRect(xd, fg, x + w2, y + h2, w - w2, h - h2);
-+
-+ } else if (bd & BBS) {
-+ /* Shades - data is 1/2/3 for 25%/50%/75% alpha, respectively */
-+ int d = (uint8_t)bd;
-+ XftColor xfc;
-+ XRenderColor xrc = { .alpha = 0xffff };
-+
-+ xrc.red = DIV(fg->color.red * d + bg->color.red * (4 - d), 4);
-+ xrc.green = DIV(fg->color.green * d + bg->color.green * (4 - d), 4);
-+ xrc.blue = DIV(fg->color.blue * d + bg->color.blue * (4 - d), 4);
-+
-+ XftColorAllocValue(xdpy, xvis, xcmap, &xrc, &xfc);
-+ XftDrawRect(xd, &xfc, x, y, w, h);
-+ XftColorFree(xdpy, xvis, xcmap, &xfc);
-+
-+ } else if (cat == BRL) {
-+ /* braille, each data bit corresponds to one dot at 2x4 grid */
-+ int w1 = DIV(w, 2);
-+ int h1 = DIV(h, 4), h2 = DIV(h, 2), h3 = DIV(3 * h, 4);
-+
-+ if (bd & 1) XftDrawRect(xd, fg, x, y, w1, h1);
-+ if (bd & 2) XftDrawRect(xd, fg, x, y + h1, w1, h2 - h1);
-+ if (bd & 4) XftDrawRect(xd, fg, x, y + h2, w1, h3 - h2);
-+ if (bd & 8) XftDrawRect(xd, fg, x + w1, y, w - w1, h1);
-+ if (bd & 16) XftDrawRect(xd, fg, x + w1, y + h1, w - w1, h2 - h1);
-+ if (bd & 32) XftDrawRect(xd, fg, x + w1, y + h2, w - w1, h3 - h2);
-+ if (bd & 64) XftDrawRect(xd, fg, x, y + h3, w1, h - h3);
-+ if (bd & 128) XftDrawRect(xd, fg, x + w1, y + h3, w - w1, h - h3);
-+
-+ }
-+}
-+
-+void
-+drawboxlines(int x, int y, int w, int h, XftColor *fg, ushort bd)
-+{
-+ /* s: stem thickness. width/8 roughly matches underscore thickness. */
-+ /* We draw bold as 1.5 * normal-stem and at least 1px thicker. */
-+ /* doubles draw at least 3px, even when w or h < 3. bold needs 6px. */
-+ int mwh = MIN(w, h);
-+ int base_s = MAX(1, DIV(mwh, 8));
-+ int bold = (bd & BDB) && mwh >= 6; /* possibly ignore boldness */
-+ int s = bold ? MAX(base_s + 1, DIV(3 * base_s, 2)) : base_s;
-+ int w2 = DIV(w - s, 2), h2 = DIV(h - s, 2);
-+ /* the s-by-s square (x + w2, y + h2, s, s) is the center texel. */
-+ /* The base length (per direction till edge) includes this square. */
-+
-+ int light = bd & (LL | LU | LR | LD);
-+ int double_ = bd & (DL | DU | DR | DD);
-+
-+ if (light) {
-+ /* d: additional (negative) length to not-draw the center */
-+ /* texel - at arcs and avoid drawing inside (some) doubles */
-+ int arc = bd & BDA;
-+ int multi_light = light & (light - 1);
-+ int multi_double = double_ & (double_ - 1);
-+ /* light crosses double only at DH+LV, DV+LH (ref. shapes) */
-+ int d = arc || (multi_double && !multi_light) ? -s : 0;
-+
-+ if (bd & LL)
-+ XftDrawRect(xd, fg, x, y + h2, w2 + s + d, s);
-+ if (bd & LU)
-+ XftDrawRect(xd, fg, x + w2, y, s, h2 + s + d);
-+ if (bd & LR)
-+ XftDrawRect(xd, fg, x + w2 - d, y + h2, w - w2 + d, s);
-+ if (bd & LD)
-+ XftDrawRect(xd, fg, x + w2, y + h2 - d, s, h - h2 + d);
-+ }
-+
-+ /* double lines - also align with light to form heavy when combined */
-+ if (double_) {
-+ /*
-+ * going clockwise, for each double-ray: p is additional length
-+ * to the single-ray nearer to the previous direction, and n to
-+ * the next. p and n adjust from the base length to lengths
-+ * which consider other doubles - shorter to avoid intersections
-+ * (p, n), or longer to draw the far-corner texel (n).
-+ */
-+ int dl = bd & DL, du = bd & DU, dr = bd & DR, dd = bd & DD;
-+ if (dl) {
-+ int p = dd ? -s : 0, n = du ? -s : dd ? s : 0;
-+ XftDrawRect(xd, fg, x, y + h2 + s, w2 + s + p, s);
-+ XftDrawRect(xd, fg, x, y + h2 - s, w2 + s + n, s);
-+ }
-+ if (du) {
-+ int p = dl ? -s : 0, n = dr ? -s : dl ? s : 0;
-+ XftDrawRect(xd, fg, x + w2 - s, y, s, h2 + s + p);
-+ XftDrawRect(xd, fg, x + w2 + s, y, s, h2 + s + n);
-+ }
-+ if (dr) {
-+ int p = du ? -s : 0, n = dd ? -s : du ? s : 0;
-+ XftDrawRect(xd, fg, x + w2 - p, y + h2 - s, w - w2 + p, s);
-+ XftDrawRect(xd, fg, x + w2 - n, y + h2 + s, w - w2 + n, s);
-+ }
-+ if (dd) {
-+ int p = dr ? -s : 0, n = dl ? -s : dr ? s : 0;
-+ XftDrawRect(xd, fg, x + w2 + s, y + h2 - p, s, h - h2 + p);
-+ XftDrawRect(xd, fg, x + w2 - s, y + h2 - n, s, h - h2 + n);
-+ }
-+ }
-+}
-diff --git a/boxdraw_data.h b/boxdraw_data.h
-new file mode 100644
-index 0000000..7890500
---- /dev/null
-+++ b/boxdraw_data.h
-@@ -0,0 +1,214 @@
-+/*
-+ * Copyright 2018 Avi Halachmi (:avih) avihpit@yahoo.com https://github.com/avih
-+ * MIT/X Consortium License
-+ */
-+
-+/*
-+ * U+25XX codepoints data
-+ *
-+ * References:
-+ * http://www.unicode.org/charts/PDF/U2500.pdf
-+ * http://www.unicode.org/charts/PDF/U2580.pdf
-+ *
-+ * Test page:
-+ * https://github.com/GNOME/vte/blob/master/doc/boxes.txt
-+ */
-+
-+/* Each shape is encoded as 16-bits. Higher bits are category, lower are data */
-+/* Categories (mutually exclusive except BDB): */
-+/* For convenience, BDL/BDA/BBS/BDB are 1 bit each, the rest are enums */
-+#define BDL (1<<8) /* Box Draw Lines (light/double/heavy) */
-+#define BDA (1<<9) /* Box Draw Arc (light) */
-+
-+#define BBD (1<<10) /* Box Block Down (lower) X/8 */
-+#define BBL (2<<10) /* Box Block Left X/8 */
-+#define BBU (3<<10) /* Box Block Upper X/8 */
-+#define BBR (4<<10) /* Box Block Right X/8 */
-+#define BBQ (5<<10) /* Box Block Quadrants */
-+#define BRL (6<<10) /* Box Braille (data is lower byte of U28XX) */
-+
-+#define BBS (1<<14) /* Box Block Shades */
-+#define BDB (1<<15) /* Box Draw is Bold */
-+
-+/* (BDL/BDA) Light/Double/Heavy x Left/Up/Right/Down/Horizontal/Vertical */
-+/* Heavy is light+double (literally drawing light+double align to form heavy) */
-+#define LL (1<<0)
-+#define LU (1<<1)
-+#define LR (1<<2)
-+#define LD (1<<3)
-+#define LH (LL+LR)
-+#define LV (LU+LD)
-+
-+#define DL (1<<4)
-+#define DU (1<<5)
-+#define DR (1<<6)
-+#define DD (1<<7)
-+#define DH (DL+DR)
-+#define DV (DU+DD)
-+
-+#define HL (LL+DL)
-+#define HU (LU+DU)
-+#define HR (LR+DR)
-+#define HD (LD+DD)
-+#define HH (HL+HR)
-+#define HV (HU+HD)
-+
-+/* (BBQ) Quadrants Top/Bottom x Left/Right */
-+#define TL (1<<0)
-+#define TR (1<<1)
-+#define BL (1<<2)
-+#define BR (1<<3)
-+
-+/* Data for U+2500 - U+259F except dashes/diagonals */
-+static const unsigned short boxdata[256] = {
-+ /* light lines */
-+ [0x00] = BDL + LH, /* light horizontal */
-+ [0x02] = BDL + LV, /* light vertical */
-+ [0x0c] = BDL + LD + LR, /* light down and right */
-+ [0x10] = BDL + LD + LL, /* light down and left */
-+ [0x14] = BDL + LU + LR, /* light up and right */
-+ [0x18] = BDL + LU + LL, /* light up and left */
-+ [0x1c] = BDL + LV + LR, /* light vertical and right */
-+ [0x24] = BDL + LV + LL, /* light vertical and left */
-+ [0x2c] = BDL + LH + LD, /* light horizontal and down */
-+ [0x34] = BDL + LH + LU, /* light horizontal and up */
-+ [0x3c] = BDL + LV + LH, /* light vertical and horizontal */
-+ [0x74] = BDL + LL, /* light left */
-+ [0x75] = BDL + LU, /* light up */
-+ [0x76] = BDL + LR, /* light right */
-+ [0x77] = BDL + LD, /* light down */
-+
-+ /* heavy [+light] lines */
-+ [0x01] = BDL + HH,
-+ [0x03] = BDL + HV,
-+ [0x0d] = BDL + HR + LD,
-+ [0x0e] = BDL + HD + LR,
-+ [0x0f] = BDL + HD + HR,
-+ [0x11] = BDL + HL + LD,
-+ [0x12] = BDL + HD + LL,
-+ [0x13] = BDL + HD + HL,
-+ [0x15] = BDL + HR + LU,
-+ [0x16] = BDL + HU + LR,
-+ [0x17] = BDL + HU + HR,
-+ [0x19] = BDL + HL + LU,
-+ [0x1a] = BDL + HU + LL,
-+ [0x1b] = BDL + HU + HL,
-+ [0x1d] = BDL + HR + LV,
-+ [0x1e] = BDL + HU + LD + LR,
-+ [0x1f] = BDL + HD + LR + LU,
-+ [0x20] = BDL + HV + LR,
-+ [0x21] = BDL + HU + HR + LD,
-+ [0x22] = BDL + HD + HR + LU,
-+ [0x23] = BDL + HV + HR,
-+ [0x25] = BDL + HL + LV,
-+ [0x26] = BDL + HU + LD + LL,
-+ [0x27] = BDL + HD + LU + LL,
-+ [0x28] = BDL + HV + LL,
-+ [0x29] = BDL + HU + HL + LD,
-+ [0x2a] = BDL + HD + HL + LU,
-+ [0x2b] = BDL + HV + HL,
-+ [0x2d] = BDL + HL + LD + LR,
-+ [0x2e] = BDL + HR + LL + LD,
-+ [0x2f] = BDL + HH + LD,
-+ [0x30] = BDL + HD + LH,
-+ [0x31] = BDL + HD + HL + LR,
-+ [0x32] = BDL + HR + HD + LL,
-+ [0x33] = BDL + HH + HD,
-+ [0x35] = BDL + HL + LU + LR,
-+ [0x36] = BDL + HR + LU + LL,
-+ [0x37] = BDL + HH + LU,
-+ [0x38] = BDL + HU + LH,
-+ [0x39] = BDL + HU + HL + LR,
-+ [0x3a] = BDL + HU + HR + LL,
-+ [0x3b] = BDL + HH + HU,
-+ [0x3d] = BDL + HL + LV + LR,
-+ [0x3e] = BDL + HR + LV + LL,
-+ [0x3f] = BDL + HH + LV,
-+ [0x40] = BDL + HU + LH + LD,
-+ [0x41] = BDL + HD + LH + LU,
-+ [0x42] = BDL + HV + LH,
-+ [0x43] = BDL + HU + HL + LD + LR,
-+ [0x44] = BDL + HU + HR + LD + LL,
-+ [0x45] = BDL + HD + HL + LU + LR,
-+ [0x46] = BDL + HD + HR + LU + LL,
-+ [0x47] = BDL + HH + HU + LD,
-+ [0x48] = BDL + HH + HD + LU,
-+ [0x49] = BDL + HV + HL + LR,
-+ [0x4a] = BDL + HV + HR + LL,
-+ [0x4b] = BDL + HV + HH,
-+ [0x78] = BDL + HL,
-+ [0x79] = BDL + HU,
-+ [0x7a] = BDL + HR,
-+ [0x7b] = BDL + HD,
-+ [0x7c] = BDL + HR + LL,
-+ [0x7d] = BDL + HD + LU,
-+ [0x7e] = BDL + HL + LR,
-+ [0x7f] = BDL + HU + LD,
-+
-+ /* double [+light] lines */
-+ [0x50] = BDL + DH,
-+ [0x51] = BDL + DV,
-+ [0x52] = BDL + DR + LD,
-+ [0x53] = BDL + DD + LR,
-+ [0x54] = BDL + DR + DD,
-+ [0x55] = BDL + DL + LD,
-+ [0x56] = BDL + DD + LL,
-+ [0x57] = BDL + DL + DD,
-+ [0x58] = BDL + DR + LU,
-+ [0x59] = BDL + DU + LR,
-+ [0x5a] = BDL + DU + DR,
-+ [0x5b] = BDL + DL + LU,
-+ [0x5c] = BDL + DU + LL,
-+ [0x5d] = BDL + DL + DU,
-+ [0x5e] = BDL + DR + LV,
-+ [0x5f] = BDL + DV + LR,
-+ [0x60] = BDL + DV + DR,
-+ [0x61] = BDL + DL + LV,
-+ [0x62] = BDL + DV + LL,
-+ [0x63] = BDL + DV + DL,
-+ [0x64] = BDL + DH + LD,
-+ [0x65] = BDL + DD + LH,
-+ [0x66] = BDL + DD + DH,
-+ [0x67] = BDL + DH + LU,
-+ [0x68] = BDL + DU + LH,
-+ [0x69] = BDL + DH + DU,
-+ [0x6a] = BDL + DH + LV,
-+ [0x6b] = BDL + DV + LH,
-+ [0x6c] = BDL + DH + DV,
-+
-+ /* (light) arcs */
-+ [0x6d] = BDA + LD + LR,
-+ [0x6e] = BDA + LD + LL,
-+ [0x6f] = BDA + LU + LL,
-+ [0x70] = BDA + LU + LR,
-+
-+ /* Lower (Down) X/8 block (data is 8 - X) */
-+ [0x81] = BBD + 7, [0x82] = BBD + 6, [0x83] = BBD + 5, [0x84] = BBD + 4,
-+ [0x85] = BBD + 3, [0x86] = BBD + 2, [0x87] = BBD + 1, [0x88] = BBD + 0,
-+
-+ /* Left X/8 block (data is X) */
-+ [0x89] = BBL + 7, [0x8a] = BBL + 6, [0x8b] = BBL + 5, [0x8c] = BBL + 4,
-+ [0x8d] = BBL + 3, [0x8e] = BBL + 2, [0x8f] = BBL + 1,
-+
-+ /* upper 1/2 (4/8), 1/8 block (X), right 1/2, 1/8 block (8-X) */
-+ [0x80] = BBU + 4, [0x94] = BBU + 1,
-+ [0x90] = BBR + 4, [0x95] = BBR + 7,
-+
-+ /* Quadrants */
-+ [0x96] = BBQ + BL,
-+ [0x97] = BBQ + BR,
-+ [0x98] = BBQ + TL,
-+ [0x99] = BBQ + TL + BL + BR,
-+ [0x9a] = BBQ + TL + BR,
-+ [0x9b] = BBQ + TL + TR + BL,
-+ [0x9c] = BBQ + TL + TR + BR,
-+ [0x9d] = BBQ + TR,
-+ [0x9e] = BBQ + BL + TR,
-+ [0x9f] = BBQ + BL + TR + BR,
-+
-+ /* Shades, data is an alpha value in 25% units (1/4, 1/2, 3/4) */
-+ [0x91] = BBS + 1, [0x92] = BBS + 2, [0x93] = BBS + 3,
-+
-+ /* U+2504 - U+250B, U+254C - U+254F: unsupported (dashes) */
-+ /* U+2571 - U+2573: unsupported (diagonals) */
-+};
+ .PHONY: all clean dist install uninstall
diff --git a/config.def.h b/config.def.h
index 91ab8ca..b55e689 100644
--- a/config.def.h
@@ -572,7 +131,7 @@ index 91ab8ca..b55e689 100644
/*
diff --git a/st.c b/st.c
-index 623376e..bc95e89 100644
+index d6478f5..1fd732e 100644
--- a/st.c
+++ b/st.c
@@ -35,6 +35,7 @@
@@ -929,8 +488,8 @@ index 623376e..bc95e89 100644
+ xfreetitlestack();
resettitle();
xloadcols();
- break;
-@@ -2537,7 +2630,7 @@ twrite(const char *buf, int buflen, int show_ctrl)
+ xsetmode(0, MODE_HIDE);
+@@ -2541,7 +2634,7 @@ twrite(const char *buf, int buflen, int show_ctrl)
void
tresize(int col, int row)
{
@@ -939,7 +498,7 @@ index 623376e..bc95e89 100644
int minrow = MIN(row, term.row);
int mincol = MIN(col, term.col);
int *bp;
-@@ -2574,6 +2667,14 @@ tresize(int col, int row)
+@@ -2578,6 +2671,14 @@ tresize(int col, int row)
term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty));
term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs));
@@ -954,7 +513,7 @@ index 623376e..bc95e89 100644
/* 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));
-@@ -2619,7 +2720,7 @@ tresize(int col, int row)
+@@ -2623,7 +2724,7 @@ tresize(int col, int row)
void
resettitle(void)
{
@@ -963,7 +522,7 @@ index 623376e..bc95e89 100644
}
void
-@@ -2632,7 +2733,7 @@ drawregion(int x1, int y1, int x2, int y2)
+@@ -2636,7 +2737,7 @@ drawregion(int x1, int y1, int x2, int y2)
continue;
term.dirty[y] = 0;
@@ -972,7 +531,7 @@ index 623376e..bc95e89 100644
}
}
-@@ -2653,8 +2754,9 @@ draw(void)
+@@ -2657,8 +2758,9 @@ draw(void)
cx--;
drawregion(0, 0, term.col, term.row);
@@ -984,20 +543,6 @@ index 623376e..bc95e89 100644
term.ocx = cx;
term.ocy = term.c.y;
xfinishdraw();
-diff --git a/st.desktop b/st.desktop
-new file mode 100644
-index 0000000..49029d8
---- /dev/null
-+++ b/st.desktop
-@@ -0,0 +1,8 @@
-+[Desktop Entry]
-+Name=st
-+Comment=st is a simple terminal implementation for X
-+Exec=st
-+Icon=utilities-terminal
-+Terminal=false
-+Type=Application
-+Categories=System;TerminalEmulator;
diff --git a/st.h b/st.h
index fd3b0d8..f6bd3b4 100644
--- a/st.h
@@ -1040,7 +585,7 @@ index fd3b0d8..f6bd3b4 100644
extern unsigned int defaultcs;
+extern const int boxdraw, boxdraw_bold, boxdraw_braille;
diff --git a/st.info b/st.info
-index 8201ad6..aeef606 100644
+index efab2cf..24dfc7d 100644
--- a/st.info
+++ b/st.info
@@ -161,7 +161,7 @@ st-mono| simpleterm monocolor,
@@ -1077,7 +622,7 @@ index 6de960d..2a40aa0 100644
void xsetmode(int, unsigned int);
void xsetpointermotion(int);
diff --git a/x.c b/x.c
-index aa09997..5d2c640 100644
+index b36fb8c..ccfb7e7 100644
--- a/x.c
+++ b/x.c
@@ -14,6 +14,7 @@
@@ -1457,6 +1002,3 @@ index aa09997..5d2c640 100644
cols = MAX(cols, 1);
rows = MAX(rows, 1);
tnew(cols, rows);
---
-2.41.0
-