mirror of
https://git.davidovski.xyz/dot.git
synced 2024-08-15 00:43:28 +00:00
Change st zoom keybind
This commit is contained in:
parent
57aad4d528
commit
90a7d7ceb3
17 changed files with 82 additions and 529 deletions
.local/share
Xdefaultsconfig
profilesh_aliasesst
|
@ -378,7 +378,7 @@ o(^_-)O Boxer
|
|||
{{|└(>o< )┘|}} Up In Arms
|
||||
(^^)// Applause (2)
|
||||
( `_)?(_' ) Dueling
|
||||
(´~`) WearY
|
||||
(´~`) Weary
|
||||
v(^_^)v Victory (3)
|
||||
(ノ_ _)ノ Surrender
|
||||
<( ・ェ-)<} Bow and Arrow
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
xrdb ~/.config/Xdefaults
|
||||
setxkbmap -option caps:none
|
||||
setxkbmap -option caps:backspace
|
||||
xmodmap -e "clear Lock"
|
||||
exec bspwm
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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+$')
|
||||
|
|
|
@ -30,3 +30,5 @@ set selection-clipboard clipboard
|
|||
set guioptions none
|
||||
|
||||
set recolor true
|
||||
|
||||
set first-page-column 1:1
|
||||
|
|
4
profile
4
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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue