aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.ctags22
-rw-r--r--.gitconfig2
-rw-r--r--.mutt/account.self2
-rw-r--r--.tunneltop.toml18
-rw-r--r--.vimrc18
-rw-r--r--.zshrc15
-rwxr-xr-xbin/clipd158
-rwxr-xr-xbin/color7
-rwxr-xr-xbin/postit.sh2
-rw-r--r--devi.zsh-theme11
-rw-r--r--docker/bitlbee-purple/docker-compose.yaml33
-rw-r--r--docker/bitlbee-purple/matterircd.toml242
-rw-r--r--docker/bitlbee-purple/net.properties148
-rw-r--r--postit1
-rw-r--r--qtbrowser/config.py143
-rw-r--r--stylus/github_wide.css37
-rwxr-xr-xterminaldweller.com/cgit/bootstrap/bootstrap.sh4
-rw-r--r--terminaldweller.com/gemini/index.gmi46
-rw-r--r--terminaldweller.com/main/srv/cv/CV_Abridged.html1
-rw-r--r--terminaldweller.com/main/srv/index.html64
-rwxr-xr-xtmux/date.sh2
-rwxr-xr-xtmux/vcs_info.sh25
22 files changed, 656 insertions, 345 deletions
diff --git a/.ctags b/.ctags
index 45d99c1..f41fe9e 100644
--- a/.ctags
+++ b/.ctags
@@ -1,3 +1,25 @@
+--recurse=yes
+
+--exclude=.git
+--exclude=BUILD
+--exclude=.svn
+--exclude=*.js
+--exclude=vendor/*
+--exclude=node_modules/*
+--exclude=db/*
+--exclude=log/*
+--exclude=\*.min.\*
+--exclude=\*.swp
+--exclude=\*.bak
+--exclude=\*.pyc
+--exclude=\*.class
+--exclude=\*.sln
+--exclude=\*.csproj
+--exclude=\*.csproj.user
+--exclude=\*.cache
+--exclude=\*.dll
+--exclude=\*.pdb
+
--langdef=Solidity
--langmap=Solidity:.sol
--regex-Solidity=/^contract[ \t]+([a-zA-Z0-9_]+)/\1/c,contract/
diff --git a/.gitconfig b/.gitconfig
index b468d4b..7faa744 100644
--- a/.gitconfig
+++ b/.gitconfig
@@ -5,6 +5,8 @@
email = thabogre@gmail.com
signingkey = /home/devi/.ssh/id_rsa.pub
+[apply]
+ whitespace = nowarn
# https://stackoverflow.com/questions/1838873/visualizing-branch-topology-in-git
[color "decorate"]
HEAD = bold blink italic 196
diff --git a/.mutt/account.self b/.mutt/account.self
index 51e4085..526755a 100644
--- a/.mutt/account.self
+++ b/.mutt/account.self
@@ -16,4 +16,4 @@ set header_cache = ~/.mutt/self/cache/headers
set message_cachedir = ~/.mutt/self/cache/bodies
set certificate_file = ~/.mutt/self/certificates
# mailboxes "+INBOX" "+Drafts" "+Sent" "+Trash"
-mailboxes "+INBOX" "+INBOX/Github" "+INBOX/Linkedin" "+INBOX/Launchpad" "+INBOX/Opennic" "+INBOX/Trf" "+INBOX/Devto" "+INBOX/Kaggle"
+mailboxes "+INBOX" "+INBOX/Github" "+INBOX/Linkedin" "+INBOX/Launchpad" "+INBOX/Opennic" "+INBOX/Trf" "+INBOX/Devto" "+INBOX/Kaggle" "+INBOX/Codeberg" "+INBOX/Rumble"
diff --git a/.tunneltop.toml b/.tunneltop.toml
index 748e8de..a7f784d 100644
--- a/.tunneltop.toml
+++ b/.tunneltop.toml
@@ -158,6 +158,15 @@ test_command_result = "200"
test_interval = 300
test_timeout = 20
+[tunnel.tormapped6control]
+address = "127.0.0.1"
+port = 8053
+command = "autossh -M 0 -N -L 0.0.0.0:8053:127.0.0.1:9051 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 185.130.45.46"
+test_command = ''
+test_command_result = "200"
+test_interval = 300
+test_timeout = 20
+
[tunnel.tormapped8]
address = "127.0.0.1"
port = 9054
@@ -167,6 +176,15 @@ test_command_result = "200"
test_interval = 300
test_timeout = 20
+[tunnel.tormapped8control]
+address = "127.0.0.1"
+port = 8054
+command = "autossh -M 0 -N -L 0.0.0.0:8054:127.0.0.1:9051 -o ServerAliveInterval=180 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -l ubuntu -p 3333 185.130.47.208"
+test_command = ''
+test_command_result = "200"
+test_interval = 300
+test_timeout = 20
+
[tunnel.tormappedv]
address = "127.0.0.1"
port = 9055
diff --git a/.vimrc b/.vimrc
index 9fc389d..feefa56 100644
--- a/.vimrc
+++ b/.vimrc
@@ -88,6 +88,9 @@ let $http_proxy="socks5://127.0.0.1:9995"
let $https_proxy="socks5://127.0.0.1:9995"
let $all_proxy="socks5://127.0.0.1:9995"
let $no_proxy="localhost,127.0.0.0/8,192.168.1.0/24,10.0.0.0/8,172.17.0.0/24"
+" let $GOROOT="/home/devi/.gvm/gos/go1.19"
+" let $GOPATH="/home/devi/.gvm/pkgsets/go1.19/global"
+" let $GOENV_ROOT="/home/devi/.goenv"
highlight clear Search
let g:is_posix = 1
@@ -1467,14 +1470,11 @@ augroup ALEJS
autocmd FileType javascript let b:ale_linters = {'javascript': ['eslint']}
autocmd FileType javascript let b:ale_fixers = {'javascript': ['prettier']}
augroup END
-let g:ale_python_black_options = "--line-length 79"
-let b:ale_python_flake8_options = "--ignore=E203,W503"
-let b:ale_python_isort_options = "--multiline 3 --profile black"
let b:ale_python_mypy_options = "--check-untyped-defs"
augroup ALEPY
autocmd!
- autocmd FileType python let b:ale_linters = {'python': ['flake8','mypy', 'pylint', 'bandit']}
- autocmd FileType python let b:ale_fixers = {'python': ['black', 'isort']}
+ autocmd FileType python let b:ale_linters = {'python': ['mypy', 'pylint', 'bandit', 'ruff']}
+ autocmd FileType python let b:ale_fixers = {'python': ['black', 'ruff']}
augroup END
augroup ALERUBY
autocmd!
@@ -1535,10 +1535,11 @@ augroup ALECSS
autocmd FileType css let b:ale_fixers = {'css': ['prettier']}
augroup END
let b:ale_go_golangci_lint_options = "--enable-all"
+let b:ale_go_golangci_lint_package = 1
augroup ALEGO
autocmd!
- autocmd FileType go let b:ale_fixers = {'go': ['gofumpt']}
autocmd FileType go let b:ale_linters = {'go': ['golangci-lint']}
+ autocmd FileType go let b:ale_fixers = {'go': ['gofumpt']}
augroup END
" we can edit gzip files because of this
@@ -1770,3 +1771,8 @@ hi ALEInfoSign ctermbg=97
hi ALEWarningSign ctermbg=203
hi ALEStyleWarning ctermbg=203
hi ALEStyleWarningSign ctermbg=203
+hi ALEVirtualTextError ctermbg=1 ctermfg=0 cterm=bold
+hi ALEVirtualTextInfo ctermbg=97 ctermfg=0 cterm=bold
+hi ALEVirtualTextStyleError ctermbg=1 ctermfg=0 cterm=bold
+hi ALEVirtualTextStyleWarning ctermbg=203 ctermfg=0 cterm=bold
+hi ALEVirtualTextWarning ctermbg=203 ctermfg=0 cterm=bold
diff --git a/.zshrc b/.zshrc
index a59056c..3f5ca42 100644
--- a/.zshrc
+++ b/.zshrc
@@ -21,9 +21,9 @@ eval `dircolors ~/.dir_colors`
# _evalcache dircolors ~/.dir_colors
# enable aliases with sudo in the alias
-alias git="proxychains4 -q -f ~/proxies/ice/proxychains.conf git"
+# alias git="proxychains4 -q -f ~/proxies/ice/proxychains.conf git"
alias sudo="sudo "
-alias mpv="proxychains4 -q -f ~/proxies/swe/proxychains.conf mpv --save-position-on-quit --term-osd-bar --msg-module --msg-time --cache=yes --cache-secs=9600 --cache-on-disk --cache-dir=/tmp/ --demuxer-max-bytes=500MiB"
+alias mpv="proxychains4 -q -f ~/proxies/swe/proxychains.conf mpv --save-position-on-quit --term-osd-bar --msg-module --msg-time --cache=yes --cache-secs=15000 --cache-on-disk --cache-dir=/tmp/ --demuxer-max-bytes=500MiB"
alias w3m='proxychains4 -q -f ~/proxies/ice/proxychains.conf w3m -o auto_image=FALSE -o user_agent="$(get_random_ua.sh)" -graph'
alias torw3m='torsocks --port 9053 w3m -o auto_image=FALSE -o user_agent="$(get_random_ua.sh)" -graph'
alias i2pw3m='proxychains4 -q -f ~/proxies/i2p_one/proxychains.conf w3m -o auto_image=FALSE -o user_agent="$(get_random_ua.sh)" -graph'
@@ -150,7 +150,7 @@ alias jupyterlab="jupyter lab --no-browser --port 9989"
alias iredisrc="vim ~/scripts/.iredisrc"
alias fixiredisrc="cp ~/scripts/.iredisrc ~/.iredisrc"
# alias irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u $(id -u):$(id -g) --log-driver=none -e DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro devi_irssi"
-alias irssi="TERM=screen-256color COLORTERM=truecolor docker run --runtime=runsc -it -e COLORTERM -e TERM -u $(id -u):$(id -g) --log-driver=none -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro irssi:1.2.3"
+alias irssi="TERM=screen-256color COLORTERM=truecolor docker run --runtime=runsc -it -e COLORTERM -e TERM -u $(id -u):$(id -g) --log-driver=none -v $HOME/.irssi:/home/user/.irssi:ro -v /etc/localtime:/etc/localtime:ro devi_irssi"
alias tor_irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u 1001:1001 --log-driver=none -v tor_irssi_mount:/home/user/.irssi -v ~/devi/abbatoir/hole16:/home/user/.irssi/certs tor_irssi"
alias i2p_irssi="TERM=screen-256color docker run --runtime=runsc -it -e TERM -u $(id -u):$(id -g) --log-driver=none -v i2p_irssi_mount:/home/user/.irssi irssi:1.2.3"
alias openbb="TERM=screen-256color \
@@ -661,6 +661,15 @@ set blink-matching-paren on
export KEYTIMEOUT=1
export VIRTUAL_ENV_DISABLE_PROMPT=yes
export QT_QPA_PLATFORMTHEME=gtk2
+# export APRIL_MODEL_PATH=/home/devi/devi/LiveCaptions/aprilv0_en-us.april
+# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/devi/devi/onnx_runtime/onnxruntime-linux-x64-1.13.1/lib
+livecaptions() {
+ meson devenv -C /home/devi/devi/LiveCaptions/builddir
+ env \
+ APRIL_MODEL_PATH=/home/devi/devi/LiveCaptions/aprilv0_en-us.april \
+ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/devi/devi/onnx_runtime/onnxruntime-linux-x64-1.13.1/lib \
+ /home/devi/devi/LiveCaptions/builddir/src/livecaptions
+}
# fnm
eval "$(fnm env)"
diff --git a/bin/clipd b/bin/clipd
deleted file mode 100755
index bf3d1f3..0000000
--- a/bin/clipd
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/env lua5.3
-
--- needs xsel, clipnotify
--- luarocks-5.3 install --local luaposix
--- luarocks-5.3 install --local argparse
--- cat .clip_history | dmenu -l 10 | xsel -ib
-local string = require("string")
-local signal = require("posix.signal")
-local argparse = require("argparse")
-local sys_stat = require("posix.sys.stat")
-local unistd = require("posix.unistd")
-local posix_syslog = require("posix.syslog")
-
-local function default_luarocks_modules()
- local luarocks_handle = io.popen("luarocks-5.3 path --bin")
- local path_b = false
- local cpath_b = false
- for line in luarocks_handle:lines() do
- local path = string.match(line, "LUA_PATH%s*=%s*('.+')")
- local cpath = string.match(line, "LUA_CPATH%s*=%s*('.+')")
- if path ~= nil then
- package.path = package.path .. ";" .. string.sub(path, 2, -2)
- end
- if cpath ~= nil then
- package.cpath = package.cpath .. ";" .. string.sub(cpath, 2, -2)
- end
- end
-
- if path_b then os.exit(1) end
- if cpath_b then os.exit(1) end
-end
-default_luarocks_modules()
-
-local function sleep(n) os.execute("sleep " .. tonumber(n)) end
-local function trim(s) return s:gsub("^%s+", ""):gsub("%s+$", "") end
-
-local parser = argparse()
-parser:option("-s --hist_size", "history file size", 200)
-parser:option("-f --hist_file", "history file location",
- "/home/devi/.clip_history")
-
-local function log_to_syslog(log_str, log_priority)
- posix_syslog.openlog("clipd",
- posix_syslog.LOG_NDELAY | posix_syslog.LOG_PID,
- posix_syslog.LOG_LOCAL0)
- posix_syslog.syslog(log_priority, log_str)
- posix_syslog.closelog()
-end
-
-local function check_clip_hist_perms(clip_hist)
- local uid = unistd.getuid()
- local gid = unistd.getgid()
- for k, v in pairs(sys_stat.stat(clip_hist)) do
- if k == "st_uid" then
- if v ~= uid then
- log_to_syslog(
- "clipboard history file owned by uid other than the clipd uid",
- posix_syslog.LOG_CRIT)
- os.exit(1)
- end
- end
- if k == "st_gid" then
- if v ~= gid then
- log_to_syslog(
- "clipboard history file owned by gid other than the clipd gid",
- posix_syslog.LOG_CRIT)
- os.exit(1)
- end
- end
- if k == "st_mode" then
- if v and (sys_stat.S_IRUSR or sys_stat.S_IWUSR) ~=
- (sys_stat.S_IRUSR or sys_stat.S_IWUSR) then
- log_to_syslog(
- "file permissions are too open. they need to be 0600.",
- posix_syslog.LOG_CRIT)
- os.exit(1)
- end
- end
- end
-end
-
-local function check_pid_file()
- local f = sys_stat.stat("/var/run/clipd.pid")
- if f ~= nil then
- log_to_syslog("clipd is already running", posix_syslog.LOG_CRIT)
- os.exit(1)
- end
-end
-
--- FIXME- we cant write to /var/run since we are running as non-root user
-local function write_pid_file()
- local f = io.open("/var/run/clipd.pid", "w")
- if f == nil then
- log_to_syslog("cant open pid file for writing", posix_syslog.LOG_CRIT)
- os.exit(1)
- end
- f.write(unistd.getpid())
-end
-
-local function remove_pid_file() end
-
-local function loop(clip_hist, clip_hist_size)
- local clips_table = {}
- local hist_current_count = 0
-
- local hist_file = io.open(clip_hist, "r")
- if hist_file ~= nil then
- for line in hist_file:lines() do
- if line ~= "\n" and line ~= "" and line ~= "\r\n" and line ~= " " then
- clips_table[line] = true
- hist_current_count = hist_current_count + 1
- end
- end
- end
- hist_file:close()
-
- while true do
- local wait_for_event = io.popen("clipnotify")
- local handle = io.popen("xsel -ob")
- local last_clip_entry = handle:read("*a")
-
- if last_clip_entry[-1] == "\n" then
- clips_table[string.sub(last_clip_entry, 0,
- string.len(last_clip_entry))] = true
- else
- clips_table[last_clip_entry] = true;
- end
- hist_current_count = hist_current_count + 1
-
- if hist_current_count >= tonumber(clip_hist_size) then
- table.remove(clips_table, 1)
- hist_current_count = hist_current_count - 1
- end
-
- hist_file = io.open(clip_hist, "w")
- for k, _ in pairs(clips_table) do
- if clips_table[k] then hist_file:write(trim(k) .. "\n") end
- end
- hist_file:close()
-
- wait_for_event:close()
- handle:close()
- sleep(.2)
- end
-end
-
-local function main()
- signal.signal(signal.SIGINT, function(signum) os.exit(128 + signum) end)
- local args = parser:parse()
- check_clip_hist_perms(args["hist_file"])
- check_pid_file()
- -- write_pid_file()
- local status, err = pcall(loop(args["hist_file"], args["hist_size"]))
- if ~status then log_to_syslog(err, posix_syslog.LOG_CRIT) end
- remove_pid_file()
-end
-
-main()
diff --git a/bin/color b/bin/color
deleted file mode 100755
index dfc4e7b..0000000
--- a/bin/color
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-set -e
-for i in $(seq 0 255);do
- if [ $(( i % 12 )) = 0 ];then echo ;fi
- printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\t"
-done
-echo
diff --git a/bin/postit.sh b/bin/postit.sh
index 46addd0..17589c5 100755
--- a/bin/postit.sh
+++ b/bin/postit.sh
@@ -2,5 +2,5 @@
CLIP_HIST_FILE=/tmp/.clip_history
# POSTIT=$(cat ${CLIP_HIST_FILE} | dmenu -l 20 -p "Select Postit:")
-sqlite3 $(cat /tmp/lclipd_db_name) 'select content from lclipd;' | dmenu -l 20 | xsel -ib
+sqlite3 $(cat /tmp/lclipd/lclipd_db_name) 'select content from lclipd;' | dmenu -l 20 | xsel -ib
# echo -n "${POSTIT:0:${#POSTIT}}" | xsel -ip
diff --git a/devi.zsh-theme b/devi.zsh-theme
index 02e2167..72c1508 100644
--- a/devi.zsh-theme
+++ b/devi.zsh-theme
@@ -63,6 +63,7 @@ if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then
somegreen="%F{22}"
randomblue="%F{26}"
yaorange="%F{67}"
+ greeniegreen="%F{35}"
else
turquoise="$fg[cyan]"
orange="$fg[yellow]"
@@ -286,7 +287,15 @@ getterminal() {
rbq_info_msg=""
-PS1=$'$(dir_writeable)$(tsocks_on)$(sudo_query)%{$reset_color%} %{$yablue%}%n@%M:$(getterminal)%{$reset_color%} %{$yagreen%}$(pwd_shortened)%{$reset_color%} %{$muckgreen%}$(time_function)%{$reset_color%}$vcs_info_msg_0_%{$limblue%}%{$gnew%}$(gitadditions)%{$gnew2%}$(gitdeletions)%{$reset_color%}%{$deeppink%}$(virtualenv_info)%{$reset_color%}%{$teal%}$(node_version)%{$reset_color%}%{$gover%}$(goversion)%{$reset_color%}%{$rust%}$(rustversion)%{$reset_color%}%{$babyblue%}$(ruby_version)%{$reset_color%}%{$sneakyc%}$(sneaky)%{$reset_color%}%{$new%}$rbq_info_msg%{$reset_color%} $(getkubernetesinfo)%{$reset_color%}'
+meson_env() {
+ if [[ -n "${MESON_PROJECT_NAME-}" ]];then
+ echo " [${MESON_PROJECT_NAME}]"
+ else
+ :
+ fi
+}
+
+PS1=$'$(dir_writeable)$(tsocks_on)$(sudo_query)%{$reset_color%} %{$yablue%}%n@%M:$(getterminal)%{$reset_color%} %{$yagreen%}$(pwd_shortened)%{$reset_color%} %{$muckgreen%}$(time_function)%{$reset_color%}$vcs_info_msg_0_%{$limblue%}%{$gnew%}$(gitadditions)%{$gnew2%}$(gitdeletions)%{$reset_color%}%{$deeppink%}$(virtualenv_info)%{$reset_color%}%{$greeniegreen%}$(meson_env)%{$reset_color%}%{$teal%}$(node_version)%{$reset_color%}%{$gover%}$(goversion)%{$reset_color%}%{$rust%}$(rustversion)%{$reset_color%}%{$babyblue%}$(ruby_version)%{$reset_color%}%{$sneakyc%}$(sneaky)%{$reset_color%}%{$new%}$rbq_info_msg%{$reset_color%} $(getkubernetesinfo)%{$reset_color%}'
PS2=$''
PS3=$'\n%{$randomblue%}--➜%K{0}%F{15}'
get_prompt_len() {
diff --git a/docker/bitlbee-purple/docker-compose.yaml b/docker/bitlbee-purple/docker-compose.yaml
index dd582b0..e97844b 100644
--- a/docker/bitlbee-purple/docker-compose.yaml
+++ b/docker/bitlbee-purple/docker-compose.yaml
@@ -13,7 +13,40 @@ services:
volumes:
- ./conf/bitlbee.conf:/var/lib/bitlbee/bitlbee.conf
- userdata:/var/lib/bitlbee
+ - /home/devi/.cache/docker-bitlbee/signald/run:/var/run/signald
+ signald:
+ image: signald/signald
+ networks:
+ - signalnet
+ restart: unless-stopped
+ volumes:
+ - /home/devi/.cache/docker-bitlbee/signald/run:/signald
+ - ./net.properties:/conf/net.properties:ro
+ environment:
+ - ALL_PROXY=socks5h://192.168.1.214:9995
+ - FTP_PROXY=socks5h://192.168.1.214:9995
+ - HTTP_PROXY=socks5h://192.168.1.214:9995
+ - HTTPS_PROXY=socks5h://192.168.1.214:9995
+ - NOPROXY=localhost,127.0.0.0/8,172.16.0.0/12,10.0.0.0/8,192.168.0.0/16
+ # matterircd:
+ # image: 42wim/matterircd:0.26
+ # networks:
+ # - matterircdnet
+ # ports:
+ # - "8668:6667"
+ # restart: unless-stopped
+ # environment:
+ # - ALL_PROXY=socks5h://192.168.1.214:9995
+ # - FTP_PROXY=socks5h://192.168.1.214:9995
+ # - HTTP_PROXY=socks5h://192.168.1.214:9995
+ # - HTTPS_PROXY=socks5h://192.168.1.214:9995
+ # - NOPROXY=localhost,127.0.0.0/8,172.16.0.0/12,10.0.0.0/8,192.168.0.0/16
+ # command: ["--conf", "/matterircd.conf"]
+ # volumes:
+ # - ./matterircd.toml:/matterircd.toml:ro
networks:
bitlbeenet:
+ signalnet:
+ # matterircdnet:
volumes:
userdata:
diff --git a/docker/bitlbee-purple/matterircd.toml b/docker/bitlbee-purple/matterircd.toml
new file mode 100644
index 0000000..69ab8f0
--- /dev/null
+++ b/docker/bitlbee-purple/matterircd.toml
@@ -0,0 +1,242 @@
+#interface:port to bind to. (default "127.0.0.1:6667")
+bind = "0.0.0.0:6667"
+
+#enable debug logging (default false)
+debug = false
+
+#enable trace logging (default false)
+trace = false
+
+#enable gops agent (https://github.com/google/gops)
+#used to track down memory leaks/cpu profiling
+#default false
+gops = false
+
+#TLS interface:port to bind to. (e.g 127.0.0.1:6697) (deault "")
+#
+#TLSBind = "127.0.0.1:6697"
+
+#directory to look for key.pem and cert.pem. (default ".")
+#
+#TLSDir = "/etc/pki/tls/matterircd/"
+
+# Specify the full path for your key and cert
+#TLSKey = "/etc/pki/tls/matterircd/key.pem"
+#TLSCert = "/etc/pki/tls/matterircd/cer.pem"
+
+# Override handshake timeout (in seconds)
+#HandshakeTimeout = 10
+# Override client timeout (in seconds)
+#ClientTimeout = 10
+
+#PasteBufferTimeout specifies the amount of time in milliseconds that
+#messages get kept in matterircd internal buffer before being sent to
+#mattermost or slack.
+#Messages that will be received in this time will be concatenated together
+#So this can be used to paste stuff like ansi-art or code.
+#Default 0 (is disabled)
+#Depending on how fast you type 2500 is a good number
+PasteBufferTimeout = 2500
+
+##################################
+##### MATTERMOST EXAMPLE #########
+##################################
+[mattermost]
+#specify default mattermost server/instance (default "")
+#
+DefaultServer = "community.mattermost.com"
+
+#specify default mattermost team (default "")
+#
+#DefaultTeam = "mycompany"
+
+#use http connection to mattermost (default false)
+Insecure = false
+
+#an array of channels that only will be joined on IRC. JoinExlude and JoinInclude will not be checked
+#regexp is supported
+#If it's empty, it means all channels get joined (except those defined in JoinExclude)
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#default ""
+#
+#JoinOnly = ["#onlythischannel"]
+
+#an array of channels that won't be joined on IRC.
+#regexp is supported
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#You can still /JOIN exclude channels.
+#default ""
+#
+#JoinExclude = ["#town-square","#boringchannel","#.*marketing.*"]
+
+#an array of channels that will override the settings in JoinExclude
+#regexp is supported
+#If it's empty, it means all channels get joined (except those defined in JoinExclude)
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#default ""
+#
+#JoinInclude = ["#devops","#myteam-marketing"]
+
+#PartFake: a bool that defines if you do a /LEAVE or /PART on IRC it will also
+#actually leave the channel on mattermost.
+#if false it actually leaves the channel on mattermost
+#if true it removes the channel from irc, but you're still joined on mattermost, messages
+#of this channel will be sent to &messages channel
+#Default false
+#
+PartFake = true
+
+#only allow connection to specified mattermost server/instances.
+#Array, default empty
+#
+#Restrict = ["chat.mycompany.com"]
+
+#skip verification of mattermost certificate chain and hostname (default false)
+SkipTLSVerify = false
+
+#also add the main team prefix to the channel name #team/channel (default false)
+PrefixMainTeam = false
+
+#Only mark a conversation as viewed when you reply to that conversation or
+#channel. This prevents Mattermost from clearing mobile app notifications
+#instantly. Note that this prevents you from always appearing as online
+#(anti-idle support is turned off unless ForceAntiIdle) (default false)
+DisableAutoView = false
+# Force and enable anti-idle. Useful for when DisableAutoView.
+# ForceAntiIdle = true
+# AntiIdleChannel = "town-square"
+# AntiIdleInterval = 60
+
+# If users set a Nickname, matterircd could either choose that or the Username
+# to display in the IRC client. The option PreferNickname controls that, the
+# default being to show the Username. (default false)
+PreferNickname = false
+
+# Disable showing parent post / replies
+HideReplies = false
+# Shorten replies to approximately this length
+ShortenRepliesTo = 0
+# Enable Unicode.
+Unicode = true
+# Disable showing reactions
+HideReactions = false
+
+#Only join direct/group messages when someone talks. This stops from cluttering your
+#irc client with lots of windows.
+#If set to true dm/group messages will be joined on startup and not only on talk in the channel.
+JoinDM = false
+
+#This will add a number between 000 and fff to each message
+#This number will be referenced when a message is edited/deleted/threaded/reaction
+#For more information see prefixcontext.md
+PrefixContext = false
+# Same as PrefixContext but with the message context at the end.
+SuffixContext = false
+# If either PrefixContext or SuffixContext specify which thread ID to use. Default is the
+# matterircd generated @@([0-9][a-f]){3}. Uncomment to use Mattermost's message/parent thread IDs instead.
+#ThreadContext = "mattermost"
+# Similar to the above, but also show the message post IDs in addition to the parent thread ID.
+#ThreadContext = "mattermost+post"
+#Show Context for multi-line messages and only show it at the end.
+ShowContextMulti = false
+
+#This will show (mention yournick) after a message if it contains one of the words configured
+#in your mattermost "word that trigger mentions" notifications.
+ShowMentions = false
+# Channel wide default mentions @channel, @all, and @here are shown as IRC NOTICEs.
+# This disables that making them appear as normal PRIVMSGs.
+#DisableDefaultMentions = true
+
+# Enable syntax highlighting for code blocks.
+# Formatter and Style are passed through to the chroma v2 package.
+# https://github.com/alecthomas/chroma/blob/master/formatters/tty_indexed.go#L262
+# terminal/terminal8 for 8-colors, terminal16, terminal256, terminal16m (16M true-colour).
+# https://github.com/alecthomas/chroma/tree/master/styles
+# These are different colour schemes/styles. E.g. pygments, emacs, autumn, etc.
+SyntaxHighlighting = "terminal256:pygments"
+
+# Path to file to store last viewed information. This is useful for replying only
+# the messages missed.
+LastViewedSaveFile = "matterircd-lastsaved.db"
+
+#############################
+##### SLACK EXAMPLE #########
+#############################
+[slack]
+#deny specific users from connecting.
+#As we only connect using tokens, this will first do a ccnnection to see what username the token is from. If this
+#username is on the DenyUsers the user will be disconnected.
+#Array, default empty
+#
+#DenyUsers = ["username"]
+
+#https://get.slack.help/hc/en-us/articles/212281468-Direct-messages-and-group-DMs
+#Only join direct/group messages when someone talks. This stops from cluttering your
+#irc client with lots of windows.
+#If set to true dm/group messages will be joined on startup and not only on talk in the channel.
+JoinDM = false
+
+#only allow connection to specific slack sites. (eg for myslack.slack.com just specify myslack)
+#As we only connect using tokens, this will first do a ccnnection to see what team the token is from. If this
+#team isn't in the Restrict list, the user will be disconnected.
+#Array, default empty
+#
+#Restrict = ["myslack"]
+
+# This will add the slack DisplayName as prefix to every message if the DisplayName differs from the Username
+# More info about username/displayname see https://api.slack.com/changelog/2017-09-the-one-about-usernames
+# Default false
+UseDisplayName = false
+
+#an array of channels that only will be joined on IRC. JoinExlude and JoinInclude will not be checked
+#regexp is supported
+#If it's empty, it means all channels get joined (except those defined in JoinExclude)
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#default ""
+#
+#JoinOnly = ["#onlythischannel"]
+
+#an array of channels that won't be joined on IRC.
+#regexp is supported
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#You can still /JOIN exclude channels.
+#default ""
+#
+#JoinExclude = ["#town-square","#boringchannel","#.*marketing.*"]
+
+#an array of channels that will override the settings in JoinExclude
+#regexp is supported
+#If it's empty, it means all channels get joined (except those defined in JoinExclude)
+#Messages that get sent to unjoined channels (but you're joined on mattermost) will
+#get sent to the &messages channel.
+#default ""
+#
+#JoinInclude = ["#devops","#myteam-marketing"]
+
+#This will add a number between 000 and fff to each message
+#This number will be referenced when a message is edited/deleted/threaded/reaction
+PrefixContext = false
+
+
+#############################
+##### MASTODON EXAMPLE ######
+#############################
+[mastodon]
+#Go to https://yourmastodonserver/settings/applications/new
+#Use matterircd as application name (default read/write/follow scopes are ok)
+#Click on submit
+#After submitting it'll show you the Client Key (we call it clientID),
+#the client secret and Your access token
+#
+#Fill those in below with your server
+#Connect to matterircd and /msg mastodon login
+#
+#server="https://mastodon.social"
+#clientID="clientidstring"
+#clientSecret="clientsecretstring" #pragma: allowlist secret
+#accessToken="accesstokenstring"
diff --git a/docker/bitlbee-purple/net.properties b/docker/bitlbee-purple/net.properties
new file mode 100644
index 0000000..87f19c5
--- /dev/null
+++ b/docker/bitlbee-purple/net.properties
@@ -0,0 +1,148 @@
+############################################################
+# Default Networking Configuration File
+#
+# This file may contain default values for the networking system properties.
+# These values are only used when the system properties are not specified
+# on the command line or set programmatically.
+# For now, only the various proxy settings can be configured here.
+############################################################
+
+# Whether or not the DefaultProxySelector will default to System Proxy
+# settings when they do exist.
+# Set it to 'true' to enable this feature and check for platform
+# specific proxy settings
+# Note that the system properties that do explicitly set proxies
+# (like http.proxyHost) do take precedence over the system settings
+# even if java.net.useSystemProxies is set to true.
+
+java.net.useSystemProxies=false
+
+#------------------------------------------------------------------------
+# Proxy configuration for the various protocol handlers.
+# DO NOT uncomment these lines if you have set java.net.useSystemProxies
+# to true as the protocol specific properties will take precedence over
+# system settings.
+#------------------------------------------------------------------------
+
+# HTTP Proxy settings. proxyHost is the name of the proxy server
+# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
+# value is 80) and nonProxyHosts is a '|' separated list of hostnames which
+# should be accessed directly, ignoring the proxy server (default value is
+# localhost & 127.0.0.1).
+#
+#http.proxyHost=192.168.1.214
+#http.proxyPort=9995
+#http.nonProxyHosts=localhost|127.*|[::1]
+#
+# HTTPS Proxy Settings. proxyHost is the name of the proxy server
+# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
+# value is 443). The HTTPS protocol handlers uses the http nonProxyHosts list.
+#
+#https.proxyHost=192.168.1.214
+#https.proxyPort=9995
+#
+# FTP Proxy settings. proxyHost is the name of the proxy server
+# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
+# value is 80) and nonProxyHosts is a '|' separated list of hostnames which
+# should be accessed directly, ignoring the proxy server (default value is
+# localhost & 127.0.0.1).
+#
+#ftp.proxyHost=192.168.1.214
+#ftp.proxyPort=9995
+#ftp.nonProxyHosts=localhost|127.*|[::1]
+#
+# Socks proxy settings. socksProxyHost is the name of the proxy server
+# (e.g. socks.domain.com), socksProxyPort is the port number to use
+# (default value is 1080)
+#
+socksProxyHost=192.168.1.214
+socksProxyPort=9995
+socksProxyVersion=5
+#
+# HTTP Keep Alive settings. remainingData is the maximum amount of data
+# in kilobytes that will be cleaned off the underlying socket so that it
+# can be reused (default value is 512K), queuedConnections is the maximum
+# number of Keep Alive connections to be on the queue for clean up (default
+# value is 10).
+# http.KeepAlive.remainingData=512
+# http.KeepAlive.queuedConnections=10
+
+# Authentication Scheme restrictions for HTTP and HTTPS.
+#
+# In some environments certain authentication schemes may be undesirable
+# when proxying HTTP or HTTPS. For example, "Basic" results in effectively the
+# cleartext transmission of the user's password over the physical network.
+# This section describes the mechanism for disabling authentication schemes
+# based on the scheme name. Disabled schemes will be treated as if they are not
+# supported by the implementation.
+#
+# The 'jdk.http.auth.tunneling.disabledSchemes' property lists the authentication
+# schemes that will be disabled when tunneling HTTPS over a proxy, HTTP CONNECT.
+# The 'jdk.http.auth.proxying.disabledSchemes' property lists the authentication
+# schemes that will be disabled when proxying HTTP.
+#
+# In both cases the property is a comma-separated list of, case-insensitive,
+# authentication scheme names, as defined by their relevant RFCs. An
+# implementation may, but is not required to, support common schemes whose names
+# include: 'Basic', 'Digest', 'NTLM', 'Kerberos', 'Negotiate'. A scheme that
+# is not known, or not supported, by the implementation is ignored.
+#
+# Note: This property is currently used by the JDK Reference implementation. It
+# is not guaranteed to be examined and used by other implementations.
+#
+#jdk.http.auth.proxying.disabledSchemes=
+jdk.http.auth.tunneling.disabledSchemes=Basic
+
+#
+# Allow restricted HTTP request headers
+#
+# By default, the following request headers are not allowed to be set by user code
+# in HttpRequests: "connection", "content-length", "expect", "host" and "upgrade".
+# The 'jdk.httpclient.allowRestrictedHeaders' property allows one or more of these
+# headers to be specified as a comma separated list to override the default restriction.
+# The names are case-insensitive and white-space is ignored (removed before processing
+# the list). Note, this capability is mostly intended for testing and isn't expected
+# to be used in real deployments. Protocol errors or other undefined behavior is likely
+# to occur when using them. The property is not set by default.
+# Note also, that there may be other headers that are restricted from being set
+# depending on the context. This includes the "Authorization" header when the
+# relevant HttpClient has an authenticator set. These restrictions cannot be
+# overridden by this property.
+#
+# jdk.httpclient.allowRestrictedHeaders=host
+#
+#
+# Transparent NTLM HTTP authentication mode on Windows. Transparent authentication
+# can be used for the NTLM scheme, where the security credentials based on the
+# currently logged in user's name and password can be obtained directly from the
+# operating system, without prompting the user. This property has three possible
+# values which regulate the behavior as shown below. Other unrecognized values
+# are handled the same as 'disabled'. Note, that NTLM is not considered to be a
+# strongly secure authentication scheme and care should be taken before enabling
+# this mechanism.
+#
+# Transparent authentication never used.
+#jdk.http.ntlm.transparentAuth=disabled
+#
+# Enabled for all hosts.
+#jdk.http.ntlm.transparentAuth=allHosts
+#
+# Enabled for hosts that are trusted in Windows Internet settings
+#jdk.http.ntlm.transparentAuth=trustedHosts
+#
+jdk.http.ntlm.transparentAuth=disabled
+#
+# Default directory where automatically bound Unix domain server
+# sockets are stored. Sockets are automatically bound when bound
+# with a null address.
+#
+# On Unix the search order to determine this directory is:
+#
+# 1. System property jdk.net.unixdomain.tmpdir
+#
+# 2. Networking property jdk.net.unixdomain.tmpdir specified
+# in this file (effective default)
+#
+# 3. System property java.io.tmpdir
+#
+jdk.net.unixdomain.tmpdir=/tmp
diff --git a/postit b/postit
index b5ca68c..5fa2b05 100644
--- a/postit
+++ b/postit
@@ -54,3 +54,4 @@ https://github.com/net4people/bbs
https://www.kaggle.com/datasets/hassan06/nslkdd
https://www.kaggle.com/datasets/mrwellsdavid/unsw-nb15
https://magma.lavafeld.org/guide/osint-sources.html#looking-glasses
+echo "" | GPG_TTY=$(tty) gpg2 --pinentry-mode loopback -a --default-key A6A0F5158B3881DF --detach-sig
diff --git a/qtbrowser/config.py b/qtbrowser/config.py
index a17c459..4965b5c 100644
--- a/qtbrowser/config.py
+++ b/qtbrowser/config.py
@@ -1,4 +1,5 @@
# pylint: disable=C0111
+import qutebrowser
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401
@@ -7,105 +8,47 @@ c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
config.load_autoconfig()
-solarized = {
- "base03": "#002b36",
- "base02": "#073642",
- "base01": "#586e75",
- "base00": "#657b83",
- "base0": "#839496",
- "base1": "#93a1a1",
- "base2": "#eee8d5",
- "base3": "#fdf6e3",
- "yellow": "#b58900",
- "orange": "#cb4b16",
- "red": "#dc322f",
- "magenta": "#d33682",
- "violet": "#6c71c4",
- "blue": "#268bd2",
- "cyan": "#2aa198",
- "green": "#005f00",
-}
+c.url.start_pages = ["about:blank"]
+c.url.default_page = "about:blank"
+c.content.javascript.enabled = False
+c.auto_save.session = True
+config.source("qutebrowser-themes/themes/themes/onedark.py")
+config.set("colors.webpage.darkmode.enabled", True)
+c.window.hide_decoration = True
-c.colors.completion.category.bg = solarized["base03"]
-c.colors.completion.category.border.bottom = solarized["base03"]
-c.colors.completion.category.border.top = solarized["base03"]
-c.colors.completion.category.fg = solarized["base3"]
-c.colors.completion.even.bg = solarized["base02"]
-c.colors.completion.fg = solarized["base3"]
-c.colors.completion.item.selected.bg = solarized["violet"]
-c.colors.completion.item.selected.border.bottom = solarized["violet"]
-c.colors.completion.item.selected.border.top = solarized["violet"]
-c.colors.completion.item.selected.fg = solarized["base3"]
-c.colors.completion.match.fg = solarized["base2"]
-c.colors.completion.odd.bg = solarized["base02"]
-c.colors.completion.scrollbar.bg = solarized["base0"]
-c.colors.completion.scrollbar.fg = solarized["base2"]
-c.colors.downloads.bar.bg = solarized["base03"]
-c.colors.downloads.error.bg = solarized["red"]
-c.colors.downloads.error.fg = solarized["base3"]
-c.colors.downloads.start.bg = "#0000aa"
-c.colors.downloads.start.fg = solarized["base3"]
-c.colors.downloads.stop.bg = "#00aa00"
-c.colors.downloads.stop.fg = solarized["base3"]
-c.colors.downloads.system.bg = "rgb"
-c.colors.downloads.system.fg = "rgb"
-c.colors.hints.bg = solarized["violet"]
-c.colors.hints.fg = solarized["base3"]
-c.colors.hints.match.fg = solarized["base2"]
-c.colors.keyhint.bg = "rgba(0, 0, 0, 80%)"
-c.colors.keyhint.fg = solarized["base3"]
-c.colors.keyhint.suffix.fg = solarized["yellow"]
-c.colors.messages.error.bg = solarized["red"]
-c.colors.messages.error.border = solarized["red"]
-c.colors.messages.error.fg = solarized["base3"]
-c.colors.messages.info.bg = solarized["base03"]
-c.colors.messages.info.border = solarized["base03"]
-c.colors.messages.info.fg = solarized["base3"]
-c.colors.messages.warning.bg = solarized["orange"]
-c.colors.messages.warning.border = solarized["orange"]
-c.colors.messages.warning.fg = solarized["base3"]
-c.colors.prompts.bg = solarized["base02"]
-c.colors.prompts.border = "1px solid " + solarized["base3"]
-c.colors.prompts.fg = solarized["base3"]
-c.colors.prompts.selected.bg = solarized["base01"]
-c.colors.statusbar.caret.bg = solarized["blue"]
-c.colors.statusbar.caret.fg = solarized["base3"]
-c.colors.statusbar.caret.selection.bg = solarized["violet"]
-c.colors.statusbar.caret.selection.fg = solarized["base3"]
-c.colors.statusbar.command.bg = solarized["base03"]
-c.colors.statusbar.command.fg = solarized["base3"]
-c.colors.statusbar.command.private.bg = solarized["base01"]
-c.colors.statusbar.command.private.fg = solarized["base3"]
-c.colors.statusbar.insert.bg = solarized["green"]
-c.colors.statusbar.insert.fg = solarized["base3"]
-c.colors.statusbar.normal.bg = solarized["base03"]
-c.colors.statusbar.normal.fg = solarized["base3"]
-c.colors.statusbar.passthrough.bg = solarized["magenta"]
-c.colors.statusbar.passthrough.fg = solarized["base3"]
-c.colors.statusbar.private.bg = solarized["base01"]
-c.colors.statusbar.private.fg = solarized["base3"]
-c.colors.statusbar.progress.bg = solarized["base3"]
-c.colors.statusbar.url.error.fg = solarized["red"]
-c.colors.statusbar.url.fg = solarized["base3"]
-c.colors.statusbar.url.hover.fg = solarized["base2"]
-c.colors.statusbar.url.success.http.fg = solarized["base3"]
-c.colors.statusbar.url.success.https.fg = solarized["base3"]
-c.colors.statusbar.url.warn.fg = solarized["yellow"]
-c.colors.tabs.bar.bg = "#000000"
-c.colors.tabs.even.bg = solarized["base01"]
-c.colors.tabs.even.fg = solarized["base2"]
-c.colors.tabs.indicator.error = solarized["red"]
-c.colors.tabs.indicator.start = solarized["violet"]
-c.colors.tabs.indicator.stop = solarized["orange"]
-c.colors.tabs.odd.bg = solarized["base01"]
-c.colors.tabs.odd.fg = solarized["base2"]
-c.colors.tabs.selected.even.bg = solarized["base03"]
-c.colors.tabs.selected.even.fg = solarized["base3"]
-c.colors.tabs.selected.odd.bg = solarized["base03"]
-c.colors.tabs.selected.odd.fg = solarized["base3"]
+c.content.webgl = False
+c.content.autoplay = False
+c.content.geolocation = False
+c.content.blocking.enabled = True
+c.content.blocking.method = "adblock"
+c.content.notifications.enabled = False
+c.content.tls.certificate_errors = "ask-block-thirdparty"
-c.auto_save.session = True
-c.content.user_stylesheets = (
- "/home/devi/.config/qutebrowser/"
- "qutebrowser_dark_solarized/solarized-dark.css"
-)
+c.statusbar.widgets = ["keypress", "url", "scroll", "history", "tabs", "progress"]
+
+c.url.searchengines["DEFAULT"] = "https://searx.terminaldweller.com/search?q={}"
+c.url.searchengines["arch"] = "https://wiki.archlinux.org/?search={}"
+c.url.searchengines["wiki"] = "https://en.wikipedia.org/w/index.php?search={}"
+
+
+config.bind("<Ctrl-k>", "tab-next", mode="normal")
+config.bind("<Ctrl-j>", "tab-prev", mode="normal")
+config.bind("<Ctrl-Shift-k>", "tab-move +", mode="normal")
+config.bind("<Ctrl-Shift-j>", "tab-move -", mode="normal")
+
+import subprocess
+
+
+def read_xresources(prefix):
+ props = {}
+ x = subprocess.run(["xrdb", "-query"], capture_output=True, check=True, text=True)
+ lines = x.stdout.split("\n")
+ for line in filter(lambda l: l.startswith(prefix), lines):
+ prop, _, value = line.partition(":\t")
+ props[prop] = value
+ return props
+
+
+xresources = read_xresources("*")
+# c.colors.statusbar.normal.bg = xresources["*.background"]
+c.content.default_encoding = "utf-8"
diff --git a/stylus/github_wide.css b/stylus/github_wide.css
index 8f3cb2d..3881654 100644
--- a/stylus/github_wide.css
+++ b/stylus/github_wide.css
@@ -1,21 +1,24 @@
-@-moz-document domain("github.com") {
- div.clearfix:nth-child(4) {
- max-width: 97%;
- width: 97%;
- }
+div.clearfix:nth-child(4) {
+ max-width: 97%;
+ width: 97%;
+}
- .markdown-body {
- max-width: 97%;
- width: 97%;
- }
+.markdown-body {
+ max-width: 97%;
+ width: 97%;
+}
- div.clearfix:nth-child(2) {
- max-width: 97%;
- width: 97%;
- }
+div.clearfix:nth-child(2) {
+ max-width: 97%;
+ width: 97%;
+}
+
+div.container-xl:nth-child(2) {
+ max-width: 97%;
+ width: 97%;
+}
- div.container-xl:nth-child(2) {
- max-width: 97%;
- width: 97%;
- }
+.clearfix {
+ max-width: 97%;
+ width: 97%;
}
diff --git a/terminaldweller.com/cgit/bootstrap/bootstrap.sh b/terminaldweller.com/cgit/bootstrap/bootstrap.sh
index ba2e1b0..e62b4a4 100755
--- a/terminaldweller.com/cgit/bootstrap/bootstrap.sh
+++ b/terminaldweller.com/cgit/bootstrap/bootstrap.sh
@@ -32,6 +32,10 @@ REPOS="cgrep \
faultreiber \
luatablegen \
magni \
+ virttop \
+ tunneltop \
+ memdump \
+ lclip \
cfe-extra"
bootstrap() {
diff --git a/terminaldweller.com/gemini/index.gmi b/terminaldweller.com/gemini/index.gmi
index bb9a32b..529c068 100644
--- a/terminaldweller.com/gemini/index.gmi
+++ b/terminaldweller.com/gemini/index.gmi
@@ -10,36 +10,45 @@ tor mirror [4]
WKD direct and advanced are setup on/for the domain.
keyoxide [5]
-I don't use all the accounts listed on keyoxide regularly. The preferred methods of contacting me are the ones that are listed here, IRC, XMPP and email (The order is not significant).
+I don't use all the accounts listed on keyoxide regularly. The preferred methods of contacting me are the ones that are listed here, IRC, email and XMPP (The order is not significant).
PGP FP: 9E20464F1CCF3B103249FA93A6A0F5158B3881DF - here [6] and here [7]
I manually upload my PGP key to https://keys.openpgp.org and https://pgp.mit.edu/.
SSH FP: SHA256:tyuaTy005jkJOIPXkrJAAlCKD91d1ftEXzGTqjmEZh4 - here [8] and here [9]
-IRC Libera [10] : terminaldweller FP:FEF763019F0799C1B5CD190FC89080240665CDCAE1CB889D4413775447A4826F48B18DC134D3ACDDE1D932CF3280E6026099857CF46177F1D87CD9AA859C615F
-IRC OFTC [11] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
-IRC Rizon [12] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
-IRC Tilde [13] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
+IRC:
+Libera [10] : terminaldweller FP:FEF763019F0799C1B5CD190FC89080240665CDCAE1CB889D4413775447A4826F48B18DC134D3ACDDE1D932CF3280E6026099857CF46177F1D87CD9AA859C615F
+OFTC [11] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
+Rizon [12] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
+Tilde [13] : terminaldweller FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876
You can also find me on Libera, OFTC and Rizon in ##terminaldweller.
-XMPP: devi@jabber.terminaldweller.com
+XMPP:
+devi@jabber.terminaldweller.com
+devi@draugr.de
-The order is significant:
-Email: devi@terminaldweller.com
-Email: thabogre@gmail.com
-Email: farzadsadeghi@protonmail.ch
-All emails have the ssh and pgp key fingerprints as signature.
+Email:
+(the order is significant)
+devi@terminaldweller.com
+thabogre@gmail.com
+farzadsadeghi@protonmail.ch
+All emails have the ssh and pgp key fingerprints as signature. You can ask for one.
-Github: terminaldweller [14]
+OpenID: https://launchpad.net/~terminaldweller
-Mastodon: @terminaldweller@terminaldweller.com [15]
-If you cant find the handle then you need to log in. I'm not hosting my own mastodon instance. I'm just hosting my own webfinger. The actual handle is @terminaldweller@fosstodon.org [16]
+Git:
+Github: terminaldweller [14]
+Mirrors:
+git.terminaldweller.com [15]
+codeberg.com/terminaldweller [16]
+The mirrors are updated automatically though it might take some time.
-Git mirror: git.terminaldweller.com [17]
+Mastodon: @terminaldweller@terminaldweller.com [17]
+If you cant find the handle then you need to log in. I'm not hosting my own mastodon instance. I'm just hosting my own webfinger. The actual handle is @terminaldweller@fosstodon.org [18]
-Blog: Blog [18] RSS [19]
+Blog: Blog [19] RSS [20]
-Linkedin [20]
+Linkedin [21]
Services: N/A
@@ -57,9 +66,10 @@ Services: N/A
=> https://rizon.net/ Rizon
=> https://tilde.chat Tilde
=> https://github.com/terminaldweller terminaldweller
+=> https://git.terminaldweller.com git.terminaldweller.com
+=> https://codeberg.org/terminaldweller codeberg.com/terminaldweller
=> https://fosstodon.org/@terminaldweller @terminaldweller@terminaldweller.com
=> https://fosstodon.org/@terminaldweller @terminaldweller@fosstodon.org
-=> https://git.terminaldweller.com git.terminaldweller.com
=> https://blog.terminaldweller.com Blog
=> https://blog.terminaldweller.com/rss/feed RSS
=> https://www.linkedin.com/in/farzad-sadeghi/ Linkedin
diff --git a/terminaldweller.com/main/srv/cv/CV_Abridged.html b/terminaldweller.com/main/srv/cv/CV_Abridged.html
index c254de3..5afc3f2 100644
--- a/terminaldweller.com/main/srv/cv/CV_Abridged.html
+++ b/terminaldweller.com/main/srv/cv/CV_Abridged.html
@@ -55,7 +55,6 @@
devi@terminaldweller.com<br />
thabogre@gmail.com<br />
Tehran, Iran<br />
- +989125802283
</p>
<h1 class="unnumbered" id="professional-experience">
Professional Experience
diff --git a/terminaldweller.com/main/srv/index.html b/terminaldweller.com/main/srv/index.html
index 9d403dc..2b5e568 100644
--- a/terminaldweller.com/main/srv/index.html
+++ b/terminaldweller.com/main/srv/index.html
@@ -3,16 +3,27 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="onion-location" content="http://dqunl5rzlv6skqfklqr4dwi4zph2vqoaennc7qoinqs5mlug4docq2yd.onion"/>
+ <meta name="robots" content="nofollow,noindex"/>
+ <meta name="description" content="list of links for terminaldweller"/>
+ <meta name="author" content="terminaldweller"/>
<title>main</title>
- <style>
- a:link {
- color: #005faf;
- }
- a:visited {
- color: #008787;
- }
- </style>
+ <style>
+ a:link {
+ color: #005faf;
+ }
+ a:visited {
+ color: #008787;
+ }
+ div {
+ word-wrap: break-word;
+ -moz-hyphens:auto;
+ -webkit-hyphens:auto;
+ -o-hyphens:auto;
+ hyphens:auto;
+ }
+ </style>
</head>
<body style="color:#005f87;background:#000000;text-align:center;padding:0px;border:0px;margin:0px;">
<p style="font-size:20px;font-weight:bold">This is a list of links:</p>
@@ -29,37 +40,48 @@
<div>I don't use all the accounts listed on keyoxide regularly. The preferred methods of contacting me are the ones that are listed here, IRC, email and XMPP (The order is not significant).</div>
</p>
<div>
- <div>PGP FP: 9E20464F1CCF3B103249FA93A6A0F5158B3881DF - <a href="https://github.com/terminaldweller.gpg">here</a> and <a href="keys/gpg_pubkey">here</a></div>
+ <div>PGP FP: 9E20464F1CCF3B103249FA93A6A0F5158B3881DF - <a href="https://github.com/terminaldweller.gpg">github</a>, <a href="https://gitlab.com/terminaldweller.gpg">gitlab</a>, <a href="https://codeberg.org/terminaldweller.gpg">codeberg</a>, <a href="keys/gpg_pubkey">self-hosted</a></div>
<div>I manually upload my PGP key to <a href="https://keys.openpgp.org">https://keys.openpgp.org</a> and <a href="https://pgp.mit.edu/">https://pgp.mit.edu/</a>.</div>
- <div>SSH FP: SHA256:tyuaTy005jkJOIPXkrJAAlCKD91d1ftEXzGTqjmEZh4 - <a href="https://github.com/terminaldweller.keys">here</a> and <a href="keys/id_rsa_pub">here</a></div>
+ <div>SSH FP: SHA256:tyuaTy005jkJOIPXkrJAAlCKD91d1ftEXzGTqjmEZh4 - <a href="https://github.com/terminaldweller.keys">github</a>, <a href="https://gitlab.com/terminaldweller.keys">gitlab</a>, <a href="https://codeberg.org/terminaldweller.keys">codeberg</a>, <a href="keys/id_rsa_pub">self-hosted</a></div>
<p>
- <div>IRC <a href="https://libera.chat">Libera</a>: terminaldweller <a>FP:FEF763019F0799C1B5CD190FC89080240665CDCAE1CB889D4413775447A4826F48B18DC134D3ACDDE1D932CF3280E6026099857CF46177F1D87CD9AA859C615F</a></div>
- <div>IRC <a href="https://oftc.net">OFTC</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
- <div>IRC <a href="https://rizon.net/">Rizon</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
- <div>IRC <a href="https://tilde.chat">Tilde</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
+ <div>IRC:</div>
+ <div><a href="https://libera.chat">Libera</a>: terminaldweller <a>FP:FEF763019F0799C1B5CD190FC89080240665CDCAE1CB889D4413775447A4826F48B18DC134D3ACDDE1D932CF3280E6026099857CF46177F1D87CD9AA859C615F</a></div>
+ <div><a href="https://oftc.net">OFTC</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
+ <div><a href="https://rizon.net/">Rizon</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
+ <div><a href="https://tilde.chat">Tilde</a>: terminaldweller <a>FP:1072EFECA623C6E3D7A6628BEB6021F77EA2C876</a></div>
<div>You can also find me on Libera, OFTC and Rizon in ##terminaldweller.</div>
</p>
</div>
</p>
<p>
- <div>XMPP: devi@jabber.terminaldweller.com</div>
+ <div>XMPP:</div>
+ <div>devi@jabber.terminaldweller.com</div>
+ <div>devi@draugr.de</div>
</p>
<p>
- <div style="font-weight:bold;">The order is significant:</div>
- <div>Email: devi@terminaldweller.com</div>
- <div>Email: thabogre@gmail.com</div>
- <div>Email: farzadsadeghi@protonmail.ch</div>
+ <div>Email:</div>
+ <div style="font-weight:bold;">(the order is significant)</div>
+ <div>devi@terminaldweller.com</div>
+ <div>thabogre@gmail.com</div>
+ <div>farzadsadeghi@protonmail.ch</div>
<div>All emails have the ssh and pgp key fingerprints as signature. You can ask for one.</div>
</p>
<p>
<div>OpenID: <a href="https://launchpad.net/~terminaldweller">https://launchpad.net/~terminaldweller</a></div>
</p>
- <p>Github: <a href="https://github.com/terminaldweller">terminaldweller</a></p>
+ <p>
+ <div>Git:</div>
+ <div>Github: <a href="https://github.com/terminaldweller">terminaldweller</a></div>
+ <div>Mirrors:</div>
+ <div><a href="https://git.terminaldweller.com">git.terminaldweller.com</a></div>
+ <div><a href="https://codeberg.org/terminaldweller">codeberg.org/terminaldweller</a></div>
+ <div><a href="https://gitlab.com/terminaldweller">gitlab.com/terminaldweller</a></div>
+ <div>The mirrors are updated automatically though it might take some time.</div>
+ </p>
<p>
<div>Mastodon: <a href="https://fosstodon.org/@terminaldweller">@terminaldweller@terminaldweller.com</a></div>
<div>If you cant find the handle then you need to log in. I'm not hosting my own mastodon instance. I'm just hosting my own webfinger. The actual handle is <a href="https://fosstodon.org/@terminaldweller">@terminaldweller@fosstodon.org</a></div>
</p>
- <p>Git mirror: <a href="https://git.terminaldweller.com">git.terminaldweller.com</a></p>
<p>Blog: <a href="https://blog.terminaldweller.com">Blog</a> <a href="https://blog.terminaldweller.com/rss/feed">RSS</a></p>
<p><a href="https://www.linkedin.com/in/farzad-sadeghi/">Linkedin</a></p>
<div>
diff --git a/tmux/date.sh b/tmux/date.sh
index ce6e0eb..9667fdd 100755
--- a/tmux/date.sh
+++ b/tmux/date.sh
@@ -38,7 +38,7 @@ RESULT=$(date +"%a %D %H:%M")
DAY="#[fg=colour255 bg=colour31]"$(echo "$RESULT" | gawk '{print $1}')
DATE="#[fg=colour255 bg=colour31]"$(echo "$RESULT" | gawk '{print $2}')
TIME="#[fg=colour255 bg=colour31]"$(echo "$RESULT" | gawk '{print $3}')
-INTERNET_TIME_RESULT=$(date -u +"%T" -d @$(curl -s --connect-timeout 10 --socks5-hostname localhost:9054 --user-agent "$(get_random_ua.sh)" http://worldtimeapi.org/api/timezone/Europe/London.json | jq '.unixtime'))
+# INTERNET_TIME_RESULT=$(date -u +"%T" -d @$(curl -s --connect-timeout 10 --socks5-hostname localhost:9054 --user-agent "$(get_random_ua.sh)" http://worldtimeapi.org/api/timezone/Europe/London.json | jq '.unixtime'))
# UTC_TIME_RESULT=$(date -u +"%H:%M")
# UTC_TIME="#[fg=colour255 bg=colour25]"${INTERNET_TIME_RESULT}
UTC_TIME="#[fg=colour255 bg=colour25]"$(internet_time_cache)
diff --git a/tmux/vcs_info.sh b/tmux/vcs_info.sh
index 673c07e..88c9e92 100755
--- a/tmux/vcs_info.sh
+++ b/tmux/vcs_info.sh
@@ -73,29 +73,34 @@ function get_eth_price {
# eth_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price")
# cake_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price")
# monero_price=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price")
- if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_ETH ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_ETH) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
:
else
- if ETH_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price"); then
- echo "${ETH_OUTPUT}" > ${PRICE_CACHE_OUTPUT_ETH}
+ if ETH_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=ETH&unit=USD" | jq ".price"); then
+ if [ -n "${ETH_OUTPUT}" ]; then
+ echo "${ETH_OUTPUT}" >${PRICE_CACHE_OUTPUT_ETH}
+ fi
fi
fi
- if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_CAKE ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_CAKE) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
:
else
- if CAKE_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price"); then
- echo "${CAKE_OUTPUT}" > ${PRICE_CACHE_OUTPUT_CAKE}
+ if CAKE_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=CAKE&unit=USD" | jq ".price"); then
+ if [ -n "${CAKE_OUTPUT}" ]; then
+ echo "${CAKE_OUTPUT}" >${PRICE_CACHE_OUTPUT_CAKE}
+ fi
fi
fi
- if [ $(( $( stat --format=%Y $PRICE_CACHE_OUTPUT_XMR ) + PRICE_TIME_CACHE )) -gt "$( date +%s )" ];then
+ if [ $(($(stat --format=%Y $PRICE_CACHE_OUTPUT_XMR) + PRICE_TIME_CACHE)) -gt "$(date +%s)" ]; then
:
else
- if XMR_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price"); then
- echo "${XMR_OUTPUT}" > ${PRICE_CACHE_OUTPUT_XMR}
+ if XMR_OUTPUT=$(proxychains4 -q -f ~/proxies/ice/proxychains.conf curl -s -X GET "https://api.terminaldweller.com/crypto/v1/price?name=XMR&unit=USD" | jq ".price"); then
+ if [ -n "${XMR_OUTPUT}" ]; then
+ echo "${XMR_OUTPUT}" >${PRICE_CACHE_OUTPUT_XMR}
+ fi
fi
fi
-
result="$(cat ${PRICE_CACHE_OUTPUT_ETH})"/"$(cat ${PRICE_CACHE_OUTPUT_CAKE})"/"$(cat ${PRICE_CACHE_OUTPUT_XMR})"
echo "${result}"
}