diff options
| author | Marc Vertes <mvertes@free.fr> | 2024-12-16 11:42:33 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2024-12-16 11:42:33 +0100 |
| commit | 517baf7e7578ffb4170be32fbe8900ceea340ad5 (patch) | |
| tree | 5121f0086d7a6deee194e657538bb0abf06f5cb6 | |
| parent | 550d6039ab215459e8dc3f83e1cb238156bcc3f3 (diff) | |
| parent | 4bba38ec61e0aba340ea885f2b85ace465735eca (diff) | |
Merge branch 'alpine' of github.com:mvertes/dotfiles into alpine
| -rw-r--r-- | .Xresources | 13 | ||||
| -rw-r--r-- | .bashrc | 2 | ||||
| -rw-r--r-- | .config/i3/config | 26 | ||||
| -rw-r--r-- | .i3status.conf | 5 | ||||
| -rw-r--r-- | .profile | 4 | ||||
| -rwxr-xr-x | bin/w3 | 6 | ||||
| -rwxr-xr-x | bin/wag | 288 | ||||
| -rwxr-xr-x | bin/xt | 1 |
8 files changed, 329 insertions, 16 deletions
diff --git a/.Xresources b/.Xresources index 28b8436..b3589ed 100644 --- a/.Xresources +++ b/.Xresources @@ -7,9 +7,10 @@ URxvt.colorBD: blue3 URxvt.colorUL: magenta3 URxvt.cursorColor: red ! URxvt.color12: rgb:5c/5c/ff -!URxvt.font: xft:Mono:size=12 -!URxvt.letterSpace: -1 Urxvt.font: 6x13 +!URxvt.font: xft:Mono:size=12 +!URxvt.font: xft:Mono:size=10 +URxvt.letterSpace: -1 URxvt.perl-ext-common: font-size URxvt.keysym.C-Prior: font-size:increase URxvt.keysym.C-Next: font-size:decrease @@ -18,8 +19,10 @@ URxvt.keysym.C-Next: font-size:decrease xterm*termName: xterm-256color xterm*VT100.Translations: #override \ - Meta <Key> minus: smaller-vt-font() \n\ - Meta <Key> equal: larger-vt-font() \n + Ctrl <Key> Next: smaller-vt-font() \n\ + Ctrl <Key> Prior: larger-vt-font() \n +! Meta <Key> minus: smaller-vt-font() \n\ +! Meta <Key> equal: larger-vt-font() \n xterm*cursorColor: red !xterm*visualBell: true !xterm*geometry: 100x32 @@ -32,6 +35,8 @@ xterm*decTerminalID: vt340 xterm*allowWindowOps : False xterm*disallowedWindowOps : 1,2,3,4,5,6,7,8,9,11,13,18,19,20,21,GetSelection,SetSelection,SetWinLines,SetXprop +! Colors optimized for a light background +! ! Black + DarkGrey *color0: #000000 *color8: #555753 @@ -60,7 +60,7 @@ alias kd='sudo cat /sys/kernel/debug/tracing/trace_pipe' alias rvi='sudo vim' alias rxt='sudo xt' alias rxvi='sudo xvi' -alias ww='vi ~/Wiki/HomePage' +alias ww='vi ~/Wiki/home_page.md' alias dotfiles='git --git-dir=$HOME/dotfiles --work-tree=$HOME' alias uc='systemctl --user' diff --git a/.config/i3/config b/.config/i3/config index 48c461c..00255b3 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -59,15 +59,18 @@ bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOU # enable floating mode for_window [class="Arandr"] floating enable for_window [class="Brave-browser"] floating enable -for_window [class="Chromium"] floating enable -for_window [title="Task Manager - Chromium"] floating enable -for_window [title="Gestionnaire de tâches – Chromium"] floating enable +for_window [class="Blueberry.py"] floating enable +for_window [class="Blueman-manager"] floating enable +#for_window [class="Chromium"] floating enable +#for_window [title="Task Manager - Chromium"] floating enable +#for_window [title="Gestionnaire de tâches – Chromium"] floating enable for_window [instance="DOTTY"] floating enable for_window [class="discord"] floating enable for_window [class="Display"] floating enable for_window [class="Feedreader"] floating enable for_window [class="feh"] floating enable -for_window [class="firefox"] floating enable +#for_window [class="firefox"] floating enable +for_window [class="fluent-reader"] floating enable border normal for_window [class="Geeqie"] floating enable for_window [class="Gpicview"] floating enable for_window [class="Ghb"] floating enable @@ -76,17 +79,22 @@ for_window [class="gnuplot_qt"] floating enable for_window [instance="gxditview"] floating enable for_window [class="Keybase"] floating enable for_window [class="libreoffice"] floating enable +for_window [class="Liferea"] floating enable for_window [class="llpp"] floating enable for_window [class="MuPDF"] floating enable +for_window [class="Org.gnome.Software"] floating enable for_window [class="Pavucontrol"] floating enable -for_window [class="Slack"] floating enable +for_window [title="QEMU"] floating enable +for_window [class="RSS Guard"] floating enable for_window [class="Signal"] floating enable +for_window [class="Slack"] floating enable for_window [class="Spotify"] floating enable for_window [class="Thunderbird"] floating enable for_window [class="vlc"] floating enable for_window [instance="wish"] floating enable for_window [class="wpa_gui"] floating enable for_window [class="XVroot"] floating enable +#for_window [class="XTerm"] floating enable for_window [class="zoom"] floating enable bindsym button3 floating toggle @@ -103,15 +111,17 @@ bindsym $mod+w kill bindsym --release button2 kill # start dmenu (a program launcher) -#bindsym $mod+d exec dmenu_run +bindsym $mod+d exec dmenu_run # There also is the (new) i3-dmenu-desktop which only displays applications # shipping a .desktop file. It is a wrapper around dmenu, so you need that # installed. #bindsym $mod+d exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'Mono-9'" #bindsym F1 exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'Mono-9'" -bindsym $mod+d exec --no-startup-id i3-dmenu-desktop +#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop #bindsym F1 exec --no-startup-id i3-dmenu-desktop -entry-type=command -bindsym F1 exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'Fixed-12'" +#bindsym F1 exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'Fixed-12'" +#bindsym F1 exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'xft:fixed:style=bold:pixelsize=12'" +bindsym F1 exec --no-startup-id i3-dmenu-desktop -dmenu="dmenu -i -fn 'MiscFixedSC613-9'" # Use playerctl to control media player from keyboard bindsym XF86AudioPlay exec --no-startup-id playerctl play-pause diff --git a/.i3status.conf b/.i3status.conf index 87656f8..9570b48 100644 --- a/.i3status.conf +++ b/.i3status.conf @@ -46,7 +46,7 @@ ethernet _first_ { battery all { last_full_capacity = true integer_battery_capacity = true - format = "%status %percentage %remaining" + format = "%status %percentage %remaining %consumption" status_chr = "⚡🔋" status_bat = "🔋" status_unk = "? UNK" @@ -93,8 +93,9 @@ memory { cpu_temperature 0 { format = "🌡%degrees °C" #path = "/sys/class/hwmon/hwmon0/temp1_input" + #path = "/sys/class/hwmon/hwmon6/temp1_input" #path = "/sys/class/hwmon/hwmon7/temp1_input" - path = "/sys/class/hwmon/hwmon6/temp1_input" + #path = "/sys/class/hwmon/hwmon8/temp1_input" } tztime local { @@ -4,9 +4,11 @@ PATH=~/bin:$PATH:~/go/bin [ "${SHELL##*/}" = bash ] && { . ~/.bashrc - eval "$(gh completion -s bash)" + # eval "$(gh completion -s bash)" } +# alias dotfiles='git --git-dir=$HOME/dotfiles --work-tree=$HOME' + # Last action: auto start X11 when logged on first console #case $HOSTNAME in #([sS]wift|yoda) [ "$(tty)" != /dev/tty1 ] || exec startx ;; @@ -0,0 +1,6 @@ +#!/bin/sh + +cols=$(stty -a|awk -F "[ ;]" '{print $9; exit}') +[ $cols -gt 72 ] && stty cols 72 +w3m "${@:-https://ddg.gg/lite/}" +stty cols "$cols" @@ -0,0 +1,288 @@ +#!/bin/sh + +## wag is a tool to generate static web sites + +unset CDPATH +export LC_ALL=C IFS='
+' + +cmd=$(command -v "$0") + +## help prints this program documentation +help() { awk '/^## / {print substr($0, 4)}' "$cmd"; } + +lipsum='Lorem ipsum dolor sit amet, consectetur adipiscing elit, +sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris +nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in +reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla +pariatur. Excepteur sint occaecat cupidatat non proident, sunt in +culpa qui officia deserunt mollit anim id est laborum.' + +# An overly simplified http request parser for static web sites. +http_request() { + read -r cmd uri proto + case $uri in */) uri="${uri}index.html" ;; esac + while true; do + read -r line || break + [ ${#line} = 0 ] && break + done + printf 'HTTP/1.1 200 OK\n\n' && cat "${uri#/}" +} + +md2h() { want="$2" got=$(echo "$1" | md2html -); } + +md2html() { + tmp=$(mktemp -u) + trap "rm -f '$tmp'" EXIT + { + cat "${1:--}" | tee "$tmp" | awk '/^[ ]*\[[^]]+\]:/' + cat "$tmp" + } | + awk ' + function newblock(nblock) { + if (text) + print "<" block ">" text "</" block ">" + text = "" + out = 1 + block = nblock ? nblock : "p" + } + + function subinline(tgl, inl) { + while (match($0, tgl)) { + if (inline[ni] == inl) + ni -= sub(tgl, "</" inl ">") + else if (sub(tgl, "<" inl ">")) + inline[++ni] = inl + } + } + + function dolink(href, lnk) { + # Undo escaped html in uris + gsub(/&/, "\\&", href) + gsub(/</, "<", href) + gsub(/>/, ">", href) + # & can be tricky, and not standard: + gsub(/&/, "\\\\\\&", href) + gsub(/&/, "\\\\\\&", lnk) + return "<a href=\"" href "\">" lnk "</a>" + } + + BEGIN { + ni = 0 # inlines + nl = 0 # nested lists + out = 0 # 0 if no output so far + text = "" + block = "p" + } + + # Skip front matter. + out == 0 && $0 == "---" { + do + getline + while ($0 != "---") + next + } + + # Escape HTML. + esc != "false" { + gsub("&", "\\&") + gsub("<", "\\<") + gsub(">", "\\>") + } + + # Internal references. + match($0, /^[ ]*\[[^]]+\]:/) > 0 { + k = substr($0, RSTART+1, RLENGTH-3) + v = substr($0, RLENGTH+1) + sub(/^[ ]/, "", v) + sub(/[ ]$/, "", v) + ref[substr($0, RSTART+1, RLENGTH-3)] = v + next + } + + # Horizontal rules. + /^[ ]*([-*_] ?)+[ ]*$/ && text == "" { + print "<hr>" + next + } + + # Tables. Syntax: + # Right Align| Center Align |Left Align + /([ ]\|)|(\|[ ])/ { + if (block != "table") + newblock("table") + nc = split($0, cells, "|") + $0 = "<tr>\n" + for (i = 1; i <= nc; i++) { + align = "left" + if (sub(/^[ ]+/, "", cells[i])) { + if (sub(/[ ]+$/, "", cells[i])) + align = "center" + else + align = "right" + } + sub(/[ ]+$/, "", cells[i]) + $0 = $0 "<td align=\"" align "\">" cells[i] "</td>\n" + } + $0 = $0 "</tr>" + } + + # Ordered and unordered (possibly nested) lists. + /^[ ]*([*+-]|(([0-9]+[.-]?)+))[ ]/ { + newblock("li") + nnl = 1 + while (match($0, /^[ ]/)) { + sub(/^[ ]/, "") + nnl++ + } + while (nl > nnl) + print "</" list[nl--] ">" + while (nl < nnl) { + list[++nl] = "ol" + if (match($0, /^[*+-]/)) + list[nl] = "ul" + print "<" list[nl] ">" + } + sub(/^([*+-]|(([0-9]+[.-]?)+))[ ]/, "") + } + + # Multi line list items. + block == "li" { + sub(/^( *)|( *)/, "") + } + + # Code blocks. + /^( | )/ { + if (block != "code") + newblock("code") + sub(/^( | )/, "") + text = text $0 "\n" + next + } + + # Paragraphs. + /^$/ { + newblock() + while (nl > 0) + print "</" list[nl--] ">" + } + + # Headers. + /^#+ / { + newblock() + match($0, /#+/) + n = RLENGTH + if (n > 6) + n = 6 + text = substr($0, RLENGTH + 1) + sub(/^ */, "", text) + block = "h" n + next + } + + # Alternate headers (underlined). + /^=+$/ { + block = "h" 1 + next + } + + /^-+$/ { + block = "h" 2 + next + } + + { + # Images. + while (match($0, /!\[[^]]+\]\([^)]+\)/)) { + split(substr($0, RSTART, RLENGTH), a, /(!\[)|\)|(\]\()/) + sub(/!\[[^]]+\]\([^)]+\)/, "<img src=\"" a[3] "\" alt=\"" a[2] "\">") + } + # Links. + while (match($0, /\[[^]]+\]\([^)]+\)/)) { + split(substr($0, RSTART, RLENGTH), a, /[[)]|(\]\()/) + sub(/\[[^]]+\]\([^)]+\)/, dolink(a[3], a[2])) + } + # Internal references. + while (match($0, /\[[^]]+\]/)) { + k = substr($0, RSTART+1, RLENGTH-2) + sub(/\[[^]]+\]/, dolink(ref[k], k)) + } + # Auto links (uri matching is poor). + na = split($0, a, /(^\()|[ ]|([,.)]([ ]|$))/) + for (i = 1; i <= na; i++) + if (match(a[i], /^(((https?|ftp|file|news|irc):\/\/)|(mailto:)).+$/)) + sub(a[i], dolink(a[i], a[i])) + # Inline. + subinline("(\\*\\*)|(__)", "strong") + subinline("\\*", "em") + subinline("`", "code") + text = text (text ? " " : "") $0 + } + + END { + while (ni > 0) + text = text "</" inline[ni--] ">" + newblock() + while (nl > 0) + print "</" list[nl--] ">" + }' +} + +serve() { while true; do nc -l -p 1500 -e "$cmd http_request"; done; } + +test() { + fail=0 pass=0 skip=0 tfilter="$*" + + test_run md2h 'abc __def__ ghi' '<p>abc <strong>def</strong> ghi</p>' + test_run md2h 'abc **def** ghi' '<p>abc <strong>def</strong> ghi</p>' + test_run md2h 'abc *def* ghi' '<p>abc <em>def</em> ghi</p>' + test_run md2h 'abc ***def*** ghi' '<p>abc <strong><em>def</strong></em> ghi</p>' + test_run md2h 'abc `def` ghi' '<p>abc <code>def</code> ghi</p>' + test_run md2h '# h1' '<h1>h1</h1>' + test_run md2h '## h2' '<h2>h2</h2>' + test_run md2h 'h1 +==' '<h1>h1</h1>' + test_run md2h 'h2 +--' '<h2>h2</h2>' + test_run md2h 'abc [github] def' '<p>abc <a href="">github</a> def</p>' + test_run md2h 'abc [github](https://github.com) def' '<p>abc <a href="https://github.com">github</a> def</p>' + test_run md2h 'abc [github] def + +[github]: https://github.com' '<p>abc <a href="https://github.com">github</a> def</p>' + test_run md2h '--- +Title: front matter test +--- + +Hello [world]. + +--- +Bye. + +[world]: http://example.com' '<p>Hello <a href="http://example.com">world</a>.</p> +<hr> +<p>Bye.</p>' + + echo "Total: $((pass + fail + skip)), Passed: $pass, Failed: $fail, Skip: $skip" + return "$fail" +} + +test_run() { + eval "test_$1=\$((test_$1 + 1)); ti=\"\$test_$1\"" + [ "$tfilter" ] && + case "$1#$ti" in + $tfilter) ;; + *) skip=$((skip + 1)); return 0 ;; + esac + "$@" + [ "$got" = "$want" ] && { + pass=$((pass + 1)) + return 0 + } + fail=$((fail + 1)) + printf "%s FAIL\n Got: %s\n Want: %s\n" "$1#$ti" "$got" "$want" >&2 + return 1 +} + +# Execute command line +[ "$1" ] || help && "$@" @@ -2,4 +2,5 @@ #exec xterm -sl 500 -j -cr red "$@" & exec xterm "$@" & #cmd="urxvtc ${@:--T $HOSTNAME}" +#cmd="urxvtc $@" #eval "$cmd" || { [ $? = 2 ] && urxvtd -q -o -f && eval "$cmd"; } |
