Compare commits

58 Commits

Author SHA1 Message Date
e030342ca5 Sublime Merge small improvements 2024-08-20 16:56:41 +02:00
8f91b50c0c updates jaaENV (mainly better processing) 2024-08-20 16:55:50 +02:00
2c3b6dfc09 small improvement of github-release.mjs + update 2024-08-20 16:54:04 +02:00
1456b4a315 small ui and ux improvements of Geany 2024-08-20 16:53:10 +02:00
9d863e0188 improves conf of geany 2024-08-02 21:46:50 +02:00
fd7a4d56b3 geany improvements 2024-08-02 21:09:25 +02:00
ebac48f0a3 sublime-merge untrack session 2024-08-02 19:03:00 +02:00
9627f15c4e geyn vimrc 2024-08-02 16:14:34 +02:00
f78b83980e better fullstack in Geany 2024-08-02 15:56:15 +02:00
6c44573c6c Sublime Merge 2024-08-02 13:05:16 +02:00
bdada371e1 🐛 geany white spaces 2024-08-02 13:02:26 +02:00
c0c7235158 supports crossplatform and crossversion (1.38 & 2.0) 2024-08-02 12:44:45 +02:00
a1e800904e finalizing geany 2024-08-02 11:04:35 +02:00
28c0c0198f batch update 2024-08-01 16:45:19 +02:00
ff79c4e21f Geany 2024-08-01 16:43:25 +02:00
5ba46eb0ae 🎉 Geany
…for now should be consistend on linux and macOS (but no sync for now)
2024-08-01 16:37:49 +02:00
c1b4844569 .gitconfig -> .config/git/config and improving 2024-07-26 10:23:52 +02:00
72f090cd76 github-release (github-desktop, ollama, escrcpy) 2024-07-03 11:15:03 +02:00
ccf78dc01e sync settings till today 2024-06-28 14:44:20 +02:00
685d7cfde2 🔤 labels for kill-the-newsletter 2024-06-18 17:07:30 +02:00
c9e98e09b1 github-releases 2024-06-18 16:55:54 +02:00
68ff0a39b8 🔤 coc-pretty-ts-errors cmts .inputrc 2024-06-18 16:54:59 +02:00
7b6a49013c 🐛 Consolidations of rss channels 2024-06-18 16:53:39 +02:00
0868374471 🐛 Fixed non-existing file with preferred width
…use original image as fallback
2024-06-18 16:52:06 +02:00
de3f93e1eb tridactyl (styles and 🔨) 2024-06-18 16:51:49 +02:00
0f1a1146ff remove install-release 2024-05-12 10:31:36 +02:00
bf5ee3437d WIP new github-releases 2024-05-12 10:26:24 +02:00
7e64148005 🔤 updated KDE Plasma 6 fixes 2024-05-12 10:25:03 +02:00
219caa08af vim+coc+ultisnips 2024-05-12 10:24:34 +02:00
a7dd1a8521 🔤 newsboat 2024-05-12 10:23:25 +02:00
ee94361f1a 🐛 better fzf/compose jaaENV
- `§ck-grep`: find combination for symbol
- `fzf`: typo
- `jaaENV`: switch java support and enhancements
2024-05-12 10:21:19 +02:00
f02723bdc6 🐛 ai commit (correct regular/conventional) 2024-05-12 10:19:02 +02:00
352632e5a5 use wikimedia Potd as HTML wallpaper
[Commons:Picture of the day - Wikimedia Commons](https://commons.wikimedia.org/wiki/Commons:Picture_of_the_day)
2024-05-12 10:16:48 +02:00
b260e411f0 Hl. hledání náhrad za nitter 2024-03-30 12:31:50 +01:00
1dc978f1c1 m instead of cd. + §time.mjs completion 2024-03-28 11:36:28 +01:00
d8d0c9ba2e §time.mjs better time + allow ref 2024-03-27 19:01:29 +01:00
60d6583472 gcalendar/§time.mjs/shift-enter=history-and-alias-expand-line 2024-03-27 18:44:03 +01:00
6a8f73450c 🔤 updates (partially) fixes wayland 2024-03-27 14:18:56 +01:00
1a938fbeb3 config files nodejsscript and github-releases 2024-03-27 14:15:58 +01:00
3c99b8cb34 rm unused cd aliases in favou cd.
…quickly create cd aliases on demand
2024-03-27 14:14:42 +01:00
a665006836 🐛 color for ls alias 2024-03-27 14:14:28 +01:00
9737f6cdab kwallet and nocodb 2024-03-21 10:35:30 +01:00
4f578e0bb0 🔤 event calendar update 2024-03-20 22:16:41 +01:00
9051f04328 🔤 just sorting todo list 2024-03-20 22:06:55 +01:00
98073783bf 🔤 KDE6 updates 2024-03-20 21:50:24 +01:00
08ee9f8b0e modified: .config/kdedefaults/kwinrc 2024-03-20 21:50:02 +01:00
068db0c3c8 cleaning unused vimrc + updated tips bar 2024-03-20 21:49:11 +01:00
7f4d93f4d2 utils/bin updates (socky, njs, github-releases) 2024-03-20 21:48:17 +01:00
621832506c 🐛 ultisnips includes hotfixed by script 2024-03-20 21:46:40 +01:00
36376a2e34 konsole/bash 2024-03-12 12:54:48 +01:00
6269463d7b silicon create code screenshots 2024-03-07 13:28:52 +01:00
34dd9f4b01 kwallet from cli 2024-03-06 09:39:06 +01:00
5c4a9851e6 *§ls→ls* and KDE Neon 6 and njs 2024-03-06 09:36:21 +01:00
3495c81c49 xremap, terminal UI+UX 2024-03-01 18:00:42 +01:00
5dd77c49a0 Logout dialog (dbus autorun still not working) 2024-02-29 20:14:33 +01:00
15be72893c 🐛 KDE Neon 6.0 2024-02-29 15:12:14 +01:00
43d220be01 👮 Remove console.log 2024-02-28 14:21:35 +01:00
8210faf9ce 🔤 varinat termux 2024-02-28 12:49:32 +01:00
88 changed files with 8656 additions and 434 deletions

View File

@ -77,3 +77,11 @@ include "/usr/share/X11/locale/cs_CZ.UTF-8/Compose"
<Multi_key> <g> <F> : "Φ"
<Multi_key> <g> <U> : "Ψ"
<Multi_key> <g> <O> : "Ω"
# Math (https://gist.github.com/m93a/187539552593dd4ed8b122167c09384c)
<Multi_key> <m> <E> : "∃"
<Multi_key> <m> <exclam> <E> : "∄"
<Multi_key> <m> <minus> : ""
<Multi_key> <m> <exclam> <minus> : "¬"
<Multi_key> <m> <i> <n> : "∈"
<Multi_key> <m> <exclam> <i> <n> : "∉"

View File

@ -2,9 +2,10 @@
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
alias gitdotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'
# enable color support of ls and also add handy aliases
alias ls='ls -pQFh --group-directories-first'
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias ls='ls --color=auto -pQFh --group-directories-first'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
@ -42,29 +43,39 @@ history_most_used(){ LC_ALL=C cat ~/.bash_history | cut -d ';' -f 2- | §awk 1 |
ls ~/bin | grep -P "^§" | sed 's/^§/~\/bin\/ §/'
}
alias §ls='ls -pQFh --group-directories-first'
alias §less='less -R -S'
alias §cd.='clear;§ls'
§cd..(){ cd $(eval printf '../'%.0s {1..$1}); }
§cd(){
[[ "$1" == '--help' ]] && echo -e "
Usage: §cd NUMBER|PATH
See: dirs -v
" && return 0
[[ -z "$1" ]] && dirs -v | sed 1d && return 0
[[ $1 =~ ^[0-9]+$ ]] && cd "$(dirs -l +$1)" && dirs -v | sed 1d && return 0
builtin pushd "$1" >/dev/null && pushd .
m(){
if [[ -z "$1" ]]; then
printenv | grep -e '^m'
return 0
fi
if [[ "--help" == "$1" ]]; then
echo 'm [--help]'
echo ' Lists all marks or print this help.'
echo 'm <name> [path]'
echo ' Sets mark <name> to current directory or [path].'
echo ' The mark is just a bash variable, use `$m<name>`.'
return 0
fi
local n="m$1"
[[ -z "${!n}" ]] || return 1
[[ -z "$2" ]] && local p="$(pwd)" || local p="$(readlink -f $2)"
export $n="$p"
}
alias cd-vifm='cd `vifm --choose-dir -`'
mkcd(){ mkdir -p -- "$1" && cd -P -- "$1"; }
alias gcalendar-dovolené='gcalendar --account "práce" --calendar "Dovolené"'
alias gcalendar-události='gcalendar --account "default" --calendar "Události"'
alias §find.='find . -maxdepth 1'
alias pdftk='java -jar $HOME/bin/pdftk-all.jar'
bw-session(){
bw logout
login=`kwallet-query kdewallet -f accounts -r Bitwarden 2> /dev/null`
# login=`kwallet-query kdewallet -f accounts -r Bitwarden 2> /dev/null`
login=$(§kwallet.mjs --wallet kdewallet readPassword accounts bw-json)
export BW_CLIENTSECRET=`echo "$login" | jq -r .secret`
export BW_CLIENTID=`echo "$login" | jq -r .id`
bw login --apikey --raw
@ -78,6 +89,7 @@ alias §psmem='§psmem_all | head -n 10'
alias §pscpu_all='ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu'
alias §pscpu='§pscpu_all | head -n 10'
alias §psnet_all='lsof -P -i -n'
alias §ck-grep='cat /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose | grep -i'
§ping-test(){ # Pings ip address of noip.com and www.google.com.
ping -c 1 -q 8.23.224.107 | grep --color=never -A 1 -i '\---'
@ -105,7 +117,8 @@ alias npx-wca='npx -y web-component-analyzer'
alias npx-qnm='npx -y qnm'
alias npx-hint='npx -y hint'
alias npx-markdown='nohup npx markserv'
alias zfz=fzf-carroarmato0.fzf
alias fzf=fzf-carroarmato0.fzf
§url-curl(){ curl --silent -I "$1" | grep -i location; }

View File

@ -9,95 +9,131 @@ function jaaENV {
echo " jaaENV --save …to_save (example: jaaENV --save nodejs php)"
echo ""
echo "Description:"
echo " - Without arguments loads infos from '.jaaENV'"
echo " - 'ls' shows supported options to auto load"
echo " - 'save' cerates config file '.jaaENV'"
echo " - Without arguments, loads info from '.jaaENV'"
echo " - 'ls' shows supported options to auto-load"
echo " - 'save' creates a config file '.jaaENV'"
echo ""
echo "Usage '.jaaENV' files: "
echo " typical: '\nphp=5.6\nnodejs=16.13.0'"
echo " link: '. ../.jaaENV' … use settings from parent folder"
echo " Options:"
echo " 'android_home': Exports 'ANDROID_HOME' (uses 'ANDROID_HOME_BAK') instead of new 'ANDROID_SDK_ROOT'. Value can be anything (use '1')."
echo " 'jdk': Exports 'JAVA_HOME' based on wanted version (currently 11/1.8)"
echo " 'android_home': Exports 'ANDROID_HOME' (uses 'ANDROID_HOME_BAK') instead of 'ANDROID_SDK_ROOT'. Value can be anything (use '1')."
echo " 'jdk': Exports 'JAVA_HOME' based on the wanted version (currently 11/1.8)"
echo " 'nodejs'|'php': NodeJS/PHP versions"
echo " 'gradle': Cordova uses folder scoped → so unnecesarly"
echo " 'gradle': Cordova uses folder-scoped → so unnecesarly"
echo ""
echo "Install: "
echo " gradle ⇒ https://sdkman.io/"
echo " node ⇒ https://github.com/nvm-sh/nvm"
echo " php ⇒ http://jdem.cz/fgyu56 + https://deb.sury.org/"
echo " php ⇒ \`update-alternatives\` + https://deb.sury.org/"
echo " java ⇒ \`update-alternatives\`"
echo ""
echo "Tips:"
echo " sudo update-alternatives --set php /usr/bin/php\$php"
return 0
fi
if [ "$1" = "--save" ]; then
if [ "$1" == "--save" ]; then
shift
rm -vi .jaaENV
while test $# -gt 0
do
while [ $# -gt 0 ]; do
case "$1" in
nodejs|node)
local nodejs_version=`node --version`
echo "nodejs=${nodejs_version:1}" >> .jaaENV
echo "nodejs=$(node --version | cut -c2-)" >> .jaaENV
;;
gradle)
local gradle_version=`gradle --version | head -n 3 | tail -n 1 | §awk 2`
echo "gradle=$gradle_version" >> .jaaENV
echo "gradle=$(gradle --version | awk '/Gradle/ {print $2}')" >> .jaaENV
;;
php)
local php_version=`php --version | head -n 1 | §awk 2`
echo "php=$php_version" >> .jaaENV
echo "php=$(php --version | awk '/^PHP/ {print $2}')" >> .jaaENV
;;
java)
local java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ "$java_version" == 1.8* ]]; then
java_version=8
else
java_version=$(echo "$java_version" | cut -d'.' -f1)
fi
echo "java=$java_version" >> .jaaENV
;;
*)
echo "unknown '$1' skipped"
echo "Unknown '$1' skipped"
;;
esac
shift
done
return 0
fi
if [ "$1" = "--ls" ]; then
echo ":: nvm ls ::\n"
nvm ls
echo ":: find /usr/bin/ -name php* ::\n"
find /usr/bin/ -name php*
echo ":: sdk ls gradle | cat :: "
sdk ls gradle | cat
if [ "$1" == "--ls" ]; then
echo ":: nvm ls --no-alias ::"
nvm ls --no-alias
echo ":: update-alternatives --list php ::"
update-alternatives --list php
echo ":: update-alternatives --list java ::"
update-alternatives --list java
echo ":: sdk ls gradle | grep -E '\*|>' :: "
sdk ls gradle | grep -E '\*|>'
return 0
fi
if [ -f "compose.yaml" ]; then
jdk=$(grep -Po 'VERSION_JAVA=\K.*' compose.yaml)
nodejs=$(grep -Po 'VERSION_NODEJS=\K.*' compose.yaml)
else
elif [ -f ".jaaENV" ]; then
. ./.jaaENV
else
echo 'No env file `compose.yaml` or `.jaaENV`'
return 1
fi
if [ ! -z ${android_home+x} ]; then export ANDROID_HOME=$ANDROID_HOME_BAK; echo "\$ANDROID_HOME=$ANDROID_HOME"; else unset ANDROID_HOME; echo "\$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"; fi
if [ ! -z ${android_home_is_sdk+x} ]; then export ANDROID_HOME=$ANDROID_SDK_ROOT; echo "\$ANDROID_HOME=$ANDROID_HOME"; fi
if [ ! -z ${java+x} ]; then
[[ "$java" == "8" ]] && java=1.8
local java_local=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ "$java_local" != "$java"* ]]; then
[[ "$java" == "1.8" ]] && java=8
echo "Switching Java version: $java$java_local"
local java_path="/usr/lib/jvm/java-$java-openjdk-amd64/"
[[ "$java" == "8" ]] && java_path+="jre/"
sudo update-alternatives --set java "${java_path}bin/java"
local javac=$(update-alternatives --list javac | grep java-$java)
[ -n "$javac" ] && sudo update-alternatives --set javac "$javac"
sudo -k
fi
export JAVA_HOME=$(readlink -f $(which java) | cut -d '/' -f1-5)/
echo "\$JAVA_HOME=$JAVA_HOME"
fi
if [ ! -z ${android_home+x} ]; then
export ANDROID_HOME=$ANDROID_HOME_BAK
echo "\$ANDROID_HOME=$ANDROID_HOME"
else
unset ANDROID_HOME
echo "\$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT"
fi
if [ ! -z ${android_home_is_sdk+x} ]; then
export ANDROID_HOME=$ANDROID_SDK_ROOT
echo "\$ANDROID_HOME=$ANDROID_HOME"
fi
if [ ! -z ${JAVA_HOME_BAK+x} ]; then export JAVA_HOME=$JAVA_HOME_BAK; unset JAVA_HOME_BAK; fi
if [ ! -z ${jdk+x} ]; then
if (( $(echo "$jdk > 9" | bc -l) )); then
export JAVA_HOME_bk=$JAVA_HOME
export JAVA_HOME=/snap/android-studio/current/android-studio/jre;
elif [ ! -z ${JAVA_HOME_bk+x} ]; then
export JAVA_HOME=$JAVA_HOME_bk
export JAVA_HOME_BAK=$JAVA_HOME
export JAVA_HOME="/snap/android-studio/current/android-studio/jre"
fi
echo "\$JAVA_HOME=$JAVA_HOME"
fi
if [ ! -z ${nodejs+x} ]; then nvm use $nodejs; fi
if [ ! -z ${gradle+x} ]; then sdk use gradle $gradle | tr -d '\n'; echo ; fi
if [ ! -z ${php+x} ]; then
local php_local=`php --version | head -n 1 | §awk 2`
local php_local=$(php --version | awk '/^PHP/ {print $2}')
if [[ "$php_local" == "$php"* ]]; then
echo "php $php"
echo "PHP version: $php"
else
echo "php $php$php_local"
sudo update-alternatives --set php /usr/bin/php$php
echo "Switching PHP version: $php$php_local"
sudo update-alternatives --set php "/usr/bin/php$php"
sudo -k
fi
fi
unset android_home
unset nodejs
unset gradle
unset php
# Cleanup variables
unset android_home nodejs gradle php java
}

View File

@ -1,58 +1,59 @@
function setPromt {
if [ "$color_prompt" != yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
return
fi
case "$TERM" in
xterm*|rxvt*)
;;
*)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
return
;;
esac
PROMPT_COMMAND=updatePromt
PS2="|"
if [ "$color_prompt" != yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
return
fi
case "$TERM" in
xterm*|rxvt*)
;;
*)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
return
;;
esac
PROMPT_COMMAND=updatePromt
PS2="|"
}
function updatePromt {
local prev_exit="$?"
# color_helper_>>color<< (Note: \[\]= escaping)
local chR="\[\e[1;91m\]" #red
local chW="\[\033[00m\]" #white
local chG="\[\033[01;32m\]" #green
local chB="\[\033[0;34m\]" #blue
local chP="\[\033[0;35m\]" #purple
local chY="\[\033[0;33m\]" #yellow
PS1=""
if [ $prev_exit == 0 ]; then
PS1+="$chG$chW"
else
PS1+="$chR$chW"
fi
local jobs="$(jobs | wc -l)"
if [ $jobs != 0 ]; then
PS1+="${chY}$jobs$chW"
fi
PS1+="${debian_chroot:+($debian_chroot)}"
PS1+=" At ${chG}\A${chW}"
PS1+=" by ${chP}\u${chW}"
if sudo -n true 2>/dev/null; then
PS1+="${chR} (sudo)${chW}"
fi
PS1+=" in "
if \git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
local branch="$(\git symbolic-ref -q HEAD)"
PS1+="[${branch#refs/heads/}"
local status="$(git for-each-ref --format='%(upstream:trackshort)' refs/heads | awk '!seen[$1]++ {printf $1}')"
status+="$(git status --porcelain | awk '!seen[$1]++ {printf $1}')"
if [ "$statua"s ]; then
PS1+="|$chY$status$chW"
fi
PS1+="] "
fi
PS1+="${chB}\w${chW}"
PS1+="\n:"
history -a
local prev_exit="$?"
# history -n; history -w; history -c; history -r;
# color_helper_>>color<< (Note: \[\]= escaping)
local chR="\[\e[1;91m\]" #red
local chW="\[\033[00m\]" #white
local chG="\[\033[01;32m\]" #green
local chB="\[\033[0;34m\]" #blue
local chP="\[\033[0;35m\]" #purple
local chY="\[\033[0;33m\]" #yellow
PS1=""
if [ $prev_exit == 0 ]; then
PS1+="$chG$chW"
else
PS1+="$chR$chW"
fi
local jobs="$(jobs | wc -l)"
if [ $jobs != 0 ]; then
PS1+="${chY}$jobs$chW"
fi
PS1+="${debian_chroot:+($debian_chroot)}"
PS1+=" At ${chG}\A${chW}"
PS1+=" by ${chP}\u${chW}"
if sudo -n true 2>/dev/null; then
PS1+="${chR} (sudo)${chW}"
fi
PS1+=" in "
if \git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
local branch="$(\git symbolic-ref -q HEAD)"
PS1+="[${branch#refs/heads/}"
local status="$(git for-each-ref --format='%(upstream:trackshort)' refs/heads | awk '!seen[$1]++ {printf $1}')"
status+="$(git status --porcelain | awk '!seen[$1]++ {printf $1}')"
if [ "$statua"s ]; then
PS1+="|$chY$status$chW"
fi
PS1+="] "
fi
PS1+="${chB}\w${chW}"
PS1+="\n:"
history -a
}
setPromt
unset color_prompt

View File

@ -1,16 +0,0 @@
[Behavior]
hideDockIcon=false
hideMainWindowWhenStarted=true
[MainWindow]
pos=@Point(0 0)
size=@Size(640 480)
[RepoTreeView]
expandedCategories-e77d1fb=Moje knihovny\tNed\xe1vno aktualizovan\xe9\tSd\xedleno se skupinama
[Settings]
computerName=TUXEDO-InfinityBook-s15gen6
[UsedServerAddresses]
main=https://seafile.jaandrle.cz/

View File

@ -32,7 +32,7 @@
"model_hash_override": null,
"local_indexing": null,
"heartbeat_interval_seconds": null,
"last_service_level": "Cloud",
"last_service_level": "FreeCloudRegistered",
"override_beams": null,
"override_context_length": null,
"onboarding": null,

View File

@ -1,28 +1,3 @@
# A valid snippet should starts with:
#
# snippet trigger_word [ "description" [ options ] ]
#
# and end with:
#
# endsnippet
#
# Snippet options:
#
# b - Beginning of line.
# i - In-word expansion.
# w - Word boundary.
# r - Regular expression
# e - Custom context snippet
# A - Snippet will be triggered automatically, when condition matches.
#
# Basic example:
#
# snippet emitter "emitter properties" b
# private readonly ${1} = new Emitter<$2>()
# public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
# endsnippet
#
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
snippet sceleton "HTML5" b
<!DOCTYPE html>
<!-- ${0}DEL IE https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
@ -50,6 +25,9 @@ endsnippet
snippet cmt "comment"
<!-- ${0} -->
endsnippet
snippet cmt.js "comment"
/* ${0} */
endsnippet
snippet viewport_cordova "viewport used in cordova apps"
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>

View File

@ -0,0 +1 @@
extends javascript

View File

@ -1,25 +1,37 @@
# A valid snippet should starts with:
#
# snippet trigger_word [ "description" [ options ] ]
#
# and end with:
#
# endsnippet
#
# Snippet options:
#
# b - Beginning of line.
# i - In-word expansion.
# w - Word boundary.
# r - Regular expression
# e - Custom context snippet
# A - Snippet will be triggered automatically, when condition matches.
#
# Basic example:
#
# snippet emitter "emitter properties" b
# private readonly ${1} = new Emitter<$2>()
# public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
# endsnippet
#
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
extends html
snippet sceleton "HTML5" b
<!DOCTYPE html>
<!-- ${0}DEL IE https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<!-- DEL IE https://stackoverflow.com/questions/6771258/what-does-meta-http-equiv-x-ua-compatible-content-ie-edge-do -->
<!-- DEL https://www.vzhurudolu.cz/prirucka/viewport-meta -->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- DEL CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | https://github.com/Prinzhorn/minimal-csp -->
<!-- DEL https://github.com/jensimmons/cssremedy -->
<!-- DEL meta značky obecně https://www.vzhurudolu.cz/prirucka/meta-open-graph -->
<title></title>
<meta name="description" content="">
<!-- DEL IE https://www.sitepoint.com/html5-older-browsers-and-the-shiv/ -->
<!-- DEL https://www.vzhurudolu.cz/prirucka/checklist -->
</head>
<body>
<!-- DEL -->
</body>
</html>
endsnippet
snippet cmt "comment"
<!-- ${0} -->
endsnippet
snippet viewport_cordova "viewport used in cordova apps"
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
endsnippet
snippet csp_cordova "CSP used in cordova"
<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file: gulp_place('app.url_scheme', 'variable'):; style-src 'self' 'unsafe-inline'; img-src * data: *; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; img-src 'self' data: android-webview-video-poster:; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
endsnippet
#endextends

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
extends javascript

View File

@ -0,0 +1 @@
extends javascript

View File

@ -1 +1,124 @@
extends javascript, html
snippet sceleton_node "nodejs" b
#!/usr/bin/env node
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
${0}
endsnippet
snippet sceleton_cli "nodejsscript" b
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
${0}
endsnippet
snippet sceleton_zx "zx" b
#!/usr/bin/env zx
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
${0}
endsnippet
snippet jshint "JSHint header" b
/* jshint esversion: 6,-W097, -W040, browser: true, expr: true, undef: true */
/* global ${0} */
endsnippet
snippet global "JSHint global"
/* global ${0} */
endsnippet
snippet global_ns "JSHint global"
/* ${1} *//* global ${0} */
endsnippet
snippet devel "JSHint devel"
${1}/* jshint devel: true *///gulp.keep.line${0}
endsnippet
snippet log "console.log"
${1}console.log('${0}');
endsnippet
snippet stor "localStorage"
${1}localStorage.${2:g}etItem("${0}");
endsnippet
snippet import "import with backward order"
import ${2:values} from "${1:specifier}";$0
endsnippet
snippet promise "return? new Promise"
${1:return }new Promise(function(resolve, reject){
${0:/* async code */}
});
endsnippet
snippet for "classical loop"
for(${1:let} ${2:i}= 0, ${2}_length= ${3:ITERABLE}.length; ${2}<${2}_length; ${2}++){
${0:/* statement */}
}
endsnippet
snippet foreach "PHP-like name" b
for(${2:const} ${3:element} of ${1:iterable}){
${0:/* statement */}
}
endsnippet
snippet switch "classical switch"
switch (${1}){
case ${2}:
${0}
break;
default:
}
endsnippet
snippet desctr "object destructure"
${1:const} { $0 }= ${2:def};
endsnippet
snippet ready "document ready"
${1}document.addEventListener('DOMContentLoaded', ${0}, false)
endsnippet
snippet readyEvent "vanilla JS content ready event name"
${1}DOMContentLoaded${0}
endsnippet
snippet selid
${1}document.getElementById('${0}')
endsnippet
snippet seltag
${1}getElementsByTagName('${0}')
endsnippet
snippet selclass
${1}getElementsByClassName('${0}')
endsnippet
snippet sel
${1}querySelector('${0}')
endsnippet
snippet selall
${1}querySelectorAll('${0}')
endsnippet
snippet sceleton "HTML5" b
<!DOCTYPE html>
<!-- ${0}DEL IE https://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<!-- DEL IE https://stackoverflow.com/questions/6771258/what-does-meta-http-equiv-x-ua-compatible-content-ie-edge-do -->
<!-- DEL https://www.vzhurudolu.cz/prirucka/viewport-meta -->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- DEL CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | https://github.com/Prinzhorn/minimal-csp -->
<!-- DEL https://github.com/jensimmons/cssremedy -->
<!-- DEL meta značky obecně https://www.vzhurudolu.cz/prirucka/meta-open-graph -->
<title></title>
<meta name="description" content="">
<!-- DEL IE https://www.sitepoint.com/html5-older-browsers-and-the-shiv/ -->
<!-- DEL https://www.vzhurudolu.cz/prirucka/checklist -->
</head>
<body>
<!-- DEL -->
</body>
</html>
endsnippet
snippet cmt "comment"
<!-- ${0} -->
endsnippet
snippet viewport_cordova "viewport used in cordova apps"
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
endsnippet
snippet csp_cordova "CSP used in cordova"
<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file: gulp_place('app.url_scheme', 'variable'):; style-src 'self' 'unsafe-inline'; img-src * data: *; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; img-src 'self' data: android-webview-video-poster:; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
endsnippet
#endextends

3
.config/geany/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
geany_socket_*
session.conf
.directory

4
.config/geany/README.md Normal file
View File

@ -0,0 +1,4 @@
# Geany
I would like to use [Geany](https://www.geany.org/) as my secondary (mainly visual) editor instead of Notepad++ (and potentially VSCode).
I can also use it on my work MacOS for quick editing.

View File

@ -0,0 +1,131 @@
#
# This library is free software; you can baseRedistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
[theme_info]
name=VSDark (Modified)
description=Visual Studio Code's Dark Theme (Modified).
# list of each compatible Geany release version
compat=1.22;1.23;1.23.1;1.24
[named_colors]
base0=#ddd
base1=#282828
base2=#3f3f3f
base3=#808080
base4=#303030
baseKeyword=#C89FE3
baseString=#6FB2EA
baseKeyWord2=#747e9e
baseNumber=#F19B78
baseComment=#94B386
baseRed=#f00
baseRedbg=#751212
baseGreen=#859900
baseKeyword3=#DCB55F
baseFunction=#dcdcaa
[named_styles]
default=base0;base1;true;false
error=baseRed
# Editor styles
#-------------------------------------------------------------------------------
selection=;#000000;;true
current_line=;#212121;true
brace_good=base0;base2;true
brace_bad=baseRed;;true
margin_line_number=base3;base4
margin_folding=base3;#212121
fold_symbol_highlight=base2
indent_guide=base2;;true
caret=baseString;;false
marker_line=#fff;#00f;
marker_search=#fff;#d791a8;
marker_mark=;
call_tips=base0;base1
white_space=base3;;true
# Programming languages
#-------------------------------------------------------------------------------
comment=baseComment
comment_doc=comment
comment_line=comment
comment_line_doc=comment_doc
comment_doc_keyword=comment_doc,bold
comment_doc_keyword_error=comment_doc,italic
number=baseNumber
number_1=number
number_2=number_1
type=baseKeyword;;true
class=baseString
function=baseFunction
parameter=function
keyword=baseKeyword;;true
keyword_1=keyword
keyword_2=baseKeyword3;;true
keyword_3=baseKeyWord2
keyword_4=keyword_3
identifier=default
identifier_1=identifier
identifier_2=baseNumber
identifier_3=identifier_2
identifier_4=identifier_3
string=baseString
string_1=string
string_2=string_1
string_3=default
string_4=default
string_eol=baseRed
character=string_1
backticks=string_2
here_doc=string_2
scalar=string_2
label=keyword,bold
preprocessor=baseString
regex=number_1
operator=base0
decorator=string_1,bold
other=baseString
# Markup-type languages
#-------------------------------------------------------------------------------
tag=baseKeyword
tag_unknown=tag,bold
tag_end=tag,bold
attribute=baseString
attribute_unknown=attribute,bold
value=string_1
entity=default
# Diff
#-------------------------------------------------------------------------------
line_added=baseGreen
line_removed=baseRed
line_changed=baseKeyword3

View File

@ -0,0 +1,132 @@
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
[theme_info]
name=VSDark
description=Visual Studio Code's Dark Theme.
# list of each compatible Geany release version
compat=1.22;1.23;1.23.1;1.24
[named_colors]
base0=#d4d4d4
base1=#1a1c1e
base2=#3f3f3f
base3=#808080
base4=#303030
vsblue=#3588cd
aqua=#3ec7ac
bluegrey=#747e9e
orange=#ce8340
lime=#65ff00
grey=#6a9955
red=#f00
redbg=#751212
green=#859900
blue=#268bd2
yellow=#dcdcaa
[named_styles]
default=base0;base1
error=red
# Editor styles
#-------------------------------------------------------------------------------
selection=;#083840;;true
current_line=;#111;true
brace_good=base0;base2;true
brace_bad=red;;true
margin_line_number=base3;base4
margin_folding=base3;#212121
fold_symbol_highlight=base2
indent_guide=base2;;true
caret=aqua
marker_line=#fff;#00f;
marker_search=#fff;#d791a8;
marker_mark=;
call_tips=base0;base1
white_space=base2;;true
# Programming languages
#-------------------------------------------------------------------------------
comment=grey
comment_doc=comment
comment_line=comment
comment_line_doc=comment_doc
comment_doc_keyword=comment_doc,bold
comment_doc_keyword_error=comment_doc,italic
number=orange
number_1=number
number_2=number_1
type=vsblue;;true
class=aqua
function=yellow
parameter=function
keyword=vsblue;;true
keyword_1=keyword
keyword_2=aqua;;true
keyword_3=bluegrey
keyword_4=keyword_3
identifier=default
identifier_1=identifier
identifier_2=identifier_1
identifier_3=identifier_1
identifier_4=identifier_1
string=orange
string_1=string
string_2=string_1
string_3=default
string_4=default
string_eol=red
character=string_1
backticks=string_2
here_doc=string_2
scalar=string_2
label=keyword,bold
preprocessor=aqua
regex=number_1
operator=base0
decorator=string_1,bold
other=aqua
# Markup-type languages
#-------------------------------------------------------------------------------
tag=vsblue
tag_unknown=tag,bold
tag_end=tag,bold
attribute=aqua
attribute_unknown=attribute,bold
value=string_1
entity=default
# Diff
#-------------------------------------------------------------------------------
line_added=green
line_removed=red
line_changed=blue

View File

@ -0,0 +1,107 @@
#
# No explicit license or copyright info available but part of the
# `gedit-themes` project:
# https://github.com/mig/gedit-themes/blob/master/zenburn.xml
#
# Ported to Geany by Matthew Brush <matt(at)geany(dot)org>
#
[theme_info]
name=Zenburn
description=A port of Zenburn from gedit-themes.
# incremented automatically, do not change manually
version=1226
author=Unknown Author <unknown email address>
url=https://github.com/mig/gedit-themes/blob/master/zenburn.xml
# list of each compatible Geany release version
compat=1.22;1.23;1.23.1;1.24
[named_styles]
default=#dcdccc;#2b2b2b;true;false
error=#e37170;#332323
# Editor styles
#-------------------------------------------------------------------------------
selection=#000;#7d7d7d;false;true
current_line=#000;#000;true
brace_good=#dcdccc;#7d7d7d;true;false
brace_bad=#e37170;#7d7d7d;true;false
margin_line_number=#7f8f8f;#464646
margin_folding=#7f8f8f;#4c4c4c
fold_symbol_highlight=#464646
indent_guide=#666
caret=#fff;;false
marker_line=#000;#ff0
marker_search=#000;#0000f0
marker_mark=#000;#b8f4b8
call_tips=#c0c0c0;#fff;false;false
white_space=#666;#ddd;true;false
# Programming languages
#-------------------------------------------------------------------------------
comment=#93B893
comment_doc=comment
comment_line=comment
comment_line_doc=comment_doc
comment_doc_keyword=comment_doc,bold
comment_doc_keyword_error=comment_doc,italic
number=#8cd0d3
number_1=number
number_2=number_1
type=#dfdfbf;;true
class=type
function=#efef8f
parameter=#efdcbc
keyword=#f0dfaf;;true
keyword_1=keyword
keyword_2=keyword_1
keyword_3=keyword_1
keyword_4=keyword_1
identifier=default
identifier_1=identifier
identifier_2=identifier_1
identifier_3=identifier_1
identifier_4=identifier_1
string=#cc9393
string_1=string
string_2=string_1
string_3=default
string_4=default
string_eol=string_1,italic
character=string_1
backticks=string_2
here_doc=string_2
scalar=string_2
label=default,bold
preprocessor=#ffcfaf
regex=number_1
operator=default
decorator=string_1,bold
other=default
# Markup-type languages
#-------------------------------------------------------------------------------
tag=#f0dfaf
tag_unknown=tag
tag_end=tag
attribute=#dfdfbf
attribute_unknown=attribute
value=string_1
entity=default
# Diff
#-------------------------------------------------------------------------------
line_added=#7f9f7f;;true
line_removed=#cc9393;;true
line_changed=preprocessor

View File

@ -0,0 +1,32 @@
# For complete documentation of this file, please see Geany's main documentation
#
# Geany Color Syntax support for Dockerfiles
#
# version 0.2
#
# 0.1 - original version
# 0.2 - base on Sh instead - fixes problems with //, #, /*
[styling=C]
[keywords]
primary= ADD ARG CMD COPY ENTRYPOINT ENV EXPOSE FROM HEALTHCHECK LABEL ONBUILD RUN SHELL STOPSIGNAL USER VOLUME WORKDIR
[lexer_properties=C]
[settings]
lexer_filetype=Sh
tag_parser=C
extension=
# single comments, like # in this file
comment_single=#
# set to false if a comment character/string should start at column 0 of a line, true uses any
# indentation of the line, e.g. setting to true causes the following on pressing CTRL+d
#command_example();
# setting to false would generate this
# command_example();
# This setting works only for single line comments
comment_use_indent=true
# context action command (please see Geany's main documentation for details)
context_action_cmd=xdg-open "https://docs.docker.com/engine/reference/builder/"

View File

@ -0,0 +1,17 @@
[styling=C]
[lexer_properties=C]
[keywords]
primary=true false null
[settings]
lexer_filetype=Javascript
tag_parser=JSON
extension=json
mime_type=application/json
#~ [indentation]
#~ #width=4
#~ # 0 is spaces, 1 is tabs, 2 is tab & spaces
#~ #type=1

View File

@ -0,0 +1,17 @@
[styling=CSS]
[keywords=CSS]
primary=@import @media @font-face @keyframes @viewport @-webkit-keyframes @-moz-keyframes @-o-keyframes @-ms-keyframes @supports
secondary=absolute all and animate auto background background-attachment background-color background-image background-position background-repeat background-size border border-bottom border-color border-left border-radius border-right border-style border-top border-width bottom box-shadow break-word clearfix color column count cursor display fixed float font font-family font-size font-weight height inline-block inline-table left letter-spacing line-height list-style margin margin-bottom margin-left margin-right margin-top max max-height max-width min min-height min-width none opacity overflow overflow-x overflow-y padding padding-bottom padding-left padding-right padding-top position relative repeat right size solid static table text-align text-decoration text-transform top transform transition transparent underline vertical-align visibility visible white-space width z-index
[lexer_properties=CSS]
lexer.css.less.language=1
[settings=CSS]
lexer_filetype=CSS
tag_parser=CSS
extension=less
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true

View File

@ -0,0 +1,2 @@
Copy files from /usr/share/geany/filedefs to this directory to overwrite them. To use the defaults, just delete the file in this directory.
For more information read the documentation (in /usr/share/doc/geany/html/index.html or visit https://www.geany.org/).

View File

@ -0,0 +1,26 @@
[styling=CSS]
[keywords=CSS]
primary=if else for while each in return @mixin @include @extend @import @function @if @else @for @each @while @debug @warn @error @at-root and or not only !default !optional
secondary=a abbr acronym address applet area article aside audio b base basefont bdi bdo big blockquote body br button canvas caption center cite code col colgroup datalist dd del details dfn dir div dl dt em embed fieldset figcaption figure font footer form frame frameset h1 h2 h3 h4 h5 h6 head header hr html i iframe img input ins kbd keygen label legend li link listing main map mark menu menuitem meta meter nav nobr noframes noscript object ol optgroup option output p param picture pre progress q rp rt ruby s samp script section select small source span strike strong style sub summary sup table tbody td textarea tfoot th thead time title tr track tt u ul var video wbr
user1=background color border margin padding font display position top right bottom left float clear z-index overflow visibility width height min-width max-width min-height max-height line-height letter-spacing word-spacing text-align text-decoration text-indent text-transform white-space vertical-align list-style-type list-style-position list-style-image background-color background-image background-position background-repeat background-size border-color border-width border-style border-radius box-shadow outline-color outline-width outline-style opacity filter transform transition animation keyframes grid flex flex-direction flex-wrap justify-content align-items align-content order flex-grow flex-shrink flex-basis align-self media screen print
user2=import url charset namespace keyframes font-face supports media all print screen speech only
user3=rgba hsla rgb hsl calc
user4=webkit moz o ms khtml
[lexer_properties=CSS]
lexer.css.scss.language=1
[settings=CSS]
lexer_filetype=CSS
tag_parser=CSS
extension=scss
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true
[build_settings]
# %f will be replaced by the complete filename # %e will be replaced by the filename without extension # (use only one of it at one time)
compiler=npx sass -c "%f"
linker=npx sass --style expanded "%f" "%e.dev.css"

View File

@ -0,0 +1,22 @@
[styling=HTML]
[keywords=XML]
primary=svg circle rect ellipse line polyline polygon path g text use symbol defs marker style script
[settings=XML]
extension=svg
mime_type=image/svg+xml
lexer_filetype=XML
# the following characters are these which a "word" can contains, see documentation
#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
#comment_single=
#comment_open=<!--
#comment_close=-->
#comment_use_indent=true
#context_action_cmd=
#xml_indent_tags=true
[lexer_properties]
lexer.xml.allow.scripts=1
lexer.xml.allow.singletags=1

View File

@ -0,0 +1,34 @@
[styling]
default=default
comment=comment
comment_doc=comment_doc
number=number
keyword=keyword
keyword2=builtin
string=string
character=character
uuid=uuid
preprocessor=preprocessor
operator=operator
identifier=identifier
stringeol=stringeol
function=function
[keywords=CSS]
primary=@import @media @font-face @keyframes @viewport @-webkit-keyframes @-moz-keyframes @-o-keyframes @-ms-keyframes @supports if else for in and or not return extend
secondary=absolute all animate auto background background-attachment background-color background-image background-position background-repeat background-size border border-bottom border-color border-left border-radius border-right border-style border-top border-width bottom box-shadow break-word clearfix color column count cursor display fixed float font font-family font-size font-weight height inline-block inline-table left letter-spacing line-height list-style margin margin-bottom margin-left margin-right margin-top max max-height max-width min min-height min-width none opacity overflow overflow-x overflow-y padding padding-bottom padding-left padding-right padding-top position relative repeat right size solid static table text-align text-decoration text-transform top transform transition transparent underline vertical-align visibility visible white-space width z-index rgba hsla rgb hsl calc
user1=base background-color background-position-x background-position-y background-size background-clip border-collapse border-color border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-spacing border-style bottom box-align box-direction box-flex box-orient box-pack color color-interpolation color-rendering column-count column-fill column-gap column-rule column-rule-color column-rule-style column-rule-width column-span column-width content counter-increment counter-reset cursor display fill fill-opacity fill-rule filter flex flex-align flex-direction flex-pack flex-wrap float flood-color flood-opacity font font-family font-size font-smoothing font-stretch font-style font-variant font-weight height justify-content left letter-spacing line-break line-height list-style list-style-image list-style-position list-style-type margin margin-bottom margin-left margin-right margin-top marker-end marker-mid marker-start mask mask-type max-height max-width min-height min-width object-fit object-position opacity order outline outline-color outline-offset outline-style outline-width overflow overflow-x overflow-y padding padding-bottom padding-left padding-right padding-top page-break-after page-break-before page-break-inside perspective perspective-origin position quotes right shape-image-threshold shape-margin shape-outside size speak src stop-color stop-opacity stroke stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width tab-size table-layout text-align text-align-last text-anchor text-decoration text-decoration-color text-decoration-line text-decoration-style text-indent text-overflow text-rendering text-shadow text-size-adjust text-transform top transform transform-origin transform-style transition transition-delay transition-duration transition-property transition-timing-function unicode-bidi vertical-align visibility white-space widows width will-change word-break word-spacing word-wrap writing-mode z-index
[lexer_properties]
lexer.cpp.track.preprocessor=1
lexer.cpp.update.preprocessor=1
[settings=CSS]
extension=styl
lexer_filetype=python
tag_parser=CSS
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true

View File

@ -0,0 +1,21 @@
[styling=C]
[keywords]
primary=abstract as any async await boolean break case catch class const constructor continue debugger declare default delete do else enum export extends false finally for from function get if implements import in instanceof interface let module namespace new null of package private protected public readonly require return set static super switch symbol this throw true try type typeof var void while with yield
secondary=Array ArrayBuffer Boolean constructor DataView Date decodeURI decodeURIComponent encodeURI encodeURIComponent Error eval EvalError Float32Array Float64Array Function hasOwnProperty Infinity Int16Array Int32Array Int8Array isFinite isNaN isPrototypeOf JSON Map Math NaN Number Object parseFloat parseInt Promise propertyIsEnumerable Proxy RangeError ReferenceError Reflect RegExp Set String Symbol SyntaxError toLocaleString toString TypeError Uint16Array Uint32Array Uint8Array Uint8ClampedArray undefined URIError valueOf WeakMap WeakSet
[lexer_properties=C]
# https://github.com/geany/geany/blob/edd733013047c1f2a4786a64e2364f8b30c41be9/scintilla/lexilla/lexers/LexCPP.cxx#L363
lexer.cpp.backquoted.strings=1
lexer.cpp.allow.dollars=1
lexer.cpp.escape.sequence=1
[settings]
extension=ts
#~ lexer_filetype=C
lexer_filetype=ActionScript
mime_type=text/x-typescript
wordchars=$_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true

View File

@ -0,0 +1,16 @@
[styling=C]
[keywords]
primary=if endif else elseif set let call function endfunction return for endfor while endwhile break continue execute try endtry catch throw finally
[lexer_properties=C]
[settings]
lexer_filetype=Sh
tag_parser=C
extension=
comment_single=#
comment_open="
comment_close=
context_action=false
context_action_menu=false

View File

@ -0,0 +1,19 @@
[styling=HTML]
[keywords=HTML]
primary=template script style data methods props computed watch components directives filters mixins created mounted updated destroyed beforeCreate beforeMount beforeUpdate beforeDestroy emit
secondary=Array Boolean Date Error Function JSON Math Number Object Promise RegExp String Symbol console document window
user1=import from export default async await try catch throw return if else for while switch case break continue function const let var new this true false null undefined
[settings=XML]
extension=vue
lexer_filetype=HTML
comment_single=//
comment_open=/*
comment_close=*/
comment_use_indent=true
context_action_cmd=
[lexer_properties]
# https://github.com/geany/geany/blob/edd733013047c1f2a4786a64e2364f8b30c41be9/scintilla/lexilla/lexers/LexHTML.cxx#L745
lexer.xml.allow.singletags=1
styling.within.preproc=1

View File

@ -0,0 +1,12 @@
[lexer_properties=C]
# https://github.com/geany/geany/blob/edd733013047c1f2a4786a64e2364f8b30c41be9/scintilla/lexilla/lexers/LexCPP.cxx#L363
lexer.cpp.backquoted.strings=1
lexer.cpp.allow.dollars=1
lexer.cpp.escape.sequence=1
[settings]
extension=js
#~ lexer_filetype=C
lexer_filetype=ActionScript
wordchars=$_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

View File

@ -0,0 +1,98 @@
# Filetype extension configuration file for Geany
# Insert as many items as you want, separate them with a ";".
# See Geany's main documentation for details.
[Extensions]
#Abaqus=*.inp;
#Abc=*.abc;*.abp;
#ActionScript=*.as;
#Ada=*.adb;*.ads;
#Arduino=*.ino;*.pde;
#Asciidoc=*.asciidoc;*.adoc;
#ASM=*.asm;*.asm51;*.a51;*.s;*.S;*.sx;
#AutoIt=*.au3;
#Batch=*.bat;*.cmd;*.nt;
#BibTeX=*.bib;
#CAML=*.ml;*.mli;
#C=*.c;*.xpm;
#C++=*.cpp;*.cxx;*.c++;*.cc;*.h;*.hpp;*.hxx;*.h++;*.hh;*.C;*.H;
#Clojure=*.clj;*.cljs;*.cljc;
#CUDA=*.cu;*.cuh;*.h;
#C#=*.cs;
#CMake=CMakeLists.txt;*.cmake;*.ctest;
#COBOL=*.cob;*.cpy;*.cbl;*.cobol;
#CoffeeScript=*.coffee;Cakefile;*.Cakefile;*.coffee.erb;*.iced;*.iced.erb;
#Conf=*.conf;*.ini;config;*rc;*.cfg;*.desktop;*.properties;
#CSS=*.css;
#Cython=*.pyx;*.pxd;*.pxi;
#D=*.d;*.di;
#Diff=*.diff;*.patch;*.rej;
#Docbook=*.docbook;
Dockerfile=Dockerfile;dockerfile;*.dockerfile;*.Dockerfile;
#Erlang=*.erl;*.hrl;
#F77=*.f;*.for;*.ftn;*.f77;*.F;*.FOR;*.FTN;*.fpp;*.FPP;*.F77;
#Forth=*.fs;*.fth;
#Fortran=*.f90;*.f95;*.f03;*.f08;*.F90;*.F95;*.F03;*.F08;
#FreeBasic=*.bas;*.bi;*.vbs;
#GDScript=*.gd;
#Genie=*.gs;
#GLSL=*.glsl;*.frag;*.vert;
#Go=*.go;
#Graphviz=*.gv;*.dot;
#Groovy=*.groovy;*.gradle;
#Haskell=*.hs;*.lhs;*.hs-boot;*.lhs-boot;
#Haxe=*.hx;
#HTML=*.htm;*.html;*.shtml;*.hta;*.htd;*.htt;*.cfm;*.tpl;
#Java=*.java;*.jsp;
JavaScript=*.js;*.mjs;
#JSON=*.json;
#Julia=*.jl;
#Kotlin=*.kt;*.kts;
#LaTeX=*.tex;*.sty;*.idx;*.ltx;*.latex;*.aux;
Less=*.less;
#Lisp=*.lisp;*.el;
#Lua=*.lua;
#Make=*.mak;*.mk;GNUmakefile;makefile;Makefile;makefile.*;Makefile.*;
#Markdown=*.mdml;*.markdown;*.md;*.mkd;*.mkdn;*.mdwn;*.mdown;*.mdtxt;*.mdtext;
#Matlab/Octave=*.m;
#Meson=meson.build;meson.options;meson_options.txt;
#Nim=*.nim;
#NSIS=*.nsi;*.nsh;
#Objective-C=*.m;*.mm;*.h;
#Pascal=*.pas;*.pp;*.inc;*.dpr;*.dpk;
#Perl=*.pl;*.perl;*.pm;*.agi;*.pod;
#PHP=*.php;*.php3;*.php4;*.php5;*.phtml;
#Po=*.po;*.pot;
#Python=*.py;*.pyw;SConstruct;SConscript;wscript;
#PowerShell=*.ps1;*.psm1;
#reStructuredText=*.rest;*.reST;*.rst;
#R=*.R;*.r;
#Rust=*.rs;
#Ruby=*.rb;*.rhtml;*.ruby;*.gemspec;Gemfile;rakefile;Rakefile;
#Scala=*.scala;*.scl;
#Sh=*.sh;configure;configure.in;configure.in.in;configure.ac;*.ksh;*.mksh;*.zsh;*.ash;*.bash;.bashrc;bash.bashrc;.bash_*;bash_*;*.m4;PKGBUILD;*profile;
#Smalltalk=*.st;
#SQL=*.sql;
Stylus=*.styl;
#Swift=*.swift;
#Tcl=*.tcl;*.tk;*.wish;*.exp;
#Txt2tags=*.t2t;
TypeScript=*.ts;*.tsx;
SCSS=*.scss
SVG=*.svg
#Vala=*.vala;*.vapi;
#Verilog=*.v;
#VHDL=*.vhd;*.vhdl;
Vimrc=*.vimrc;vimrc;tridactylrc;vifmrc;
Vue=*.vue;
#XML=*.xml;*.sgml;*.xsl;*.xslt;*.xsd;*.xhtml;*.xul;*.dtd;*.xtpl;*.mml;*.mathml;
#YAML=*.yaml;*.yml;
#Zephir=*.zep;
#None=*;
# Note: restarting is required after editing groups
[Groups]
#Programming=Arduino;Clojure;CUDA;Cython;Genie;Groovy;Kotlin;Nim;Scala;Swift;
Script=JavaScript;TypeScript;Dockerfile;Vimrc;
Markup=SVG;SCSS;Stylus;Less;Vue;
#Misc=JSON;
#None=

234
.config/geany/geany.conf Normal file
View File

@ -0,0 +1,234 @@
[geany]
pref_main_load_session=false
pref_main_project_file_in_basedir=false
pref_main_save_winpos=true
pref_main_save_wingeom=true
pref_main_confirm_exit=false
pref_main_suppress_status_messages=false
switch_msgwin_pages=false
beep_on_errors=true
auto_focus=false
sidebar_symbol_visible=true
sidebar_openfiles_visible=true
editor_font=Ubuntu Mono Bold 9
tagbar_font=Ubuntu Mono 8
msgwin_font=Ubuntu Mono Bold 8
show_notebook_tabs=false
show_tab_cross=true
tab_order_ltr=true
tab_order_beside=true
tab_pos_editor=2
tab_pos_msgwin=0
tab_label_length=1000
show_indent_guide=true
show_white_space=true
show_line_endings=false
show_line_endings_only_when_differ=false
show_markers_margin=true
show_linenumber_margin=true
long_line_enabled=true
long_line_type=0
long_line_column=120
long_line_color=#000000
symbolcompletion_max_height=10
symbolcompletion_min_chars=3
use_folding=true
unfold_all_children=false
use_indicators=true
line_wrapping=false
auto_close_xml_tags=true
complete_snippets=true
auto_complete_symbols=true
pref_editor_disable_dnd=false
pref_editor_smart_home_key=true
pref_editor_newline_strip=false
line_break_column=120
auto_continue_multiline=true
comment_toggle_mark=~
scroll_stop_at_last_line=true
autoclose_chars=0
pref_editor_default_new_encoding=UTF-8
pref_editor_default_open_encoding=none
default_eol_character=2
pref_editor_new_line=false
pref_editor_ensure_convert_line_endings=false
pref_editor_replace_tabs=false
pref_editor_trail_space=false
pref_toolbar_show=false
pref_toolbar_append_to_menu=false
pref_toolbar_use_gtk_default_style=true
pref_toolbar_use_gtk_default_icon=true
pref_toolbar_icon_style=0
pref_toolbar_icon_size=0
pref_template_developer=Jan Andrle
pref_template_company=
pref_template_mail=andrle.jan@centrum.cz
pref_template_initial=JA
pref_template_version=1.0
pref_template_year=%Y
pref_template_date=%Y-%m-%d
pref_template_datetime=%d.%m.%Y %H:%M:%S %Z
context_action_cmd=
sidebar_visible=true
statusbar_visible=true
msgwindow_visible=false
fullscreen=false
symbols_group_by_type=true
color_picker_palette=
scribble_text=Pište sem cokoliv, použijte toto jako poznámkový blok
scribble_pos=53
custom_date_format=
default_open_path=
cmdline_new_files=true
notebook_double_click_hides_widgets=false
tab_close_switch_to_mru=true
tab_pos_sidebar=2
openfiles_path_mode=2
sidebar_pos=0
symbols_sort_mode=1
msgwin_orientation=1
highlighting_invert_all=false
pref_main_search_use_current_word=true
check_detect_indent=false
detect_indent_width=false
use_tab_to_indent=true
backspace_unindent=true
pref_editor_tab_width=4
indent_mode=2
indent_type=1
virtualspace=1
change_history_markers=false
change_history_indicators=false
autocomplete_doc_words=false
completion_drops_rest_of_word=false
autocompletion_max_entries=30
autocompletion_update_freq=250
color_scheme=vsdark-mod.conf
scroll_lines_around_cursor=0
mru_length=10
disk_check_timeout=30
show_editor_scrollbars=true
brace_match_ltgt=true
use_gtk_word_boundaries=true
complete_snippets_whilst_editing=false
indent_hard_tab_width=4
editor_ime_interaction=0
use_atomic_file_saving=false
gio_unsafe_save_backup=false
use_gio_unsafe_file_saving=true
keep_edit_history_on_reload=false
show_keep_edit_history_on_reload_msg=false
reload_clean_doc_on_file_change=false
save_config_on_file_change=true
extract_filetype_regex=-\\*-\\s*([^\\s]+)\\s*-\\*-
allow_always_save=false
find_selection_type=0
replace_and_find_by_default=true
show_symbol_list_expanders=true
compiler_tab_autoscroll=true
statusbar_template=line: %l / %L col: %c sel: %s %w %t %mEOL: %M encoding: %e filetype: %f scope: %S
new_document_after_close=false
msgwin_status_visible=true
msgwin_compiler_visible=true
msgwin_messages_visible=true
msgwin_scribble_visible=true
warn_on_project_close=true
documents_show_paths=true
sidebar_page=3
pref_main_project_session=true
use_native_windows_dialogs=false
treeview_position=226
msgwindow_position=755
geometry=1280;26;1277;1026;0;
use_native_dialogs=true
[tools]
terminal_cmd=konsole "%c"
browser_cmd=firefox
grep_cmd=grep
shell_cmd=/bin/bash
[printing]
print_cmd=lpr '%f'
use_gtk_printing=true
print_line_numbers=true
print_page_numbers=true
print_page_header=true
page_header_basename=false
page_header_datefmt=%c
[VTE]
load_vte=true
font=Monospace 10
scroll_on_key=true
scroll_on_out=true
enable_bash_keys=true
ignore_menu_bar_accel=false
follow_path=false
run_in_vte=false
skip_run_script=false
cursor_blinks=false
scrollback_lines=500
shell=/bin/bash
colour_fore=#DEDDDA
colour_back=#2B2B2B
send_cmd_prefix=
send_selection_unsafe=false
last_dir=/home/jaandrle/Vzdálené/GitHub/Facilitator-App-Native
[build-menu]
number_ft_menu_items=0
number_non_ft_menu_items=0
number_exec_menu_items=0
[search]
pref_search_hide_find_dialog=false
pref_search_always_wrap=false
pref_search_current_file_dir=true
fif_regexp=false
fif_case_sensitive=true
fif_match_whole_word=false
fif_invert_results=false
fif_recursive=false
fif_extra_options=
fif_use_extra_options=false
fif_files=
fif_files_mode=0
find_regexp=false
find_regexp_multiline=false
find_case_sensitive=false
find_escape_sequences=false
find_match_whole_word=false
find_match_word_start=false
find_close_dialog=true
replace_regexp=false
replace_regexp_multiline=false
replace_case_sensitive=false
replace_escape_sequences=true
replace_match_whole_word=false
replace_match_word_start=false
replace_search_backwards=false
replace_close_dialog=true
find_all_expanded=false
replace_all_expanded=true
position_find_x=2201
position_find_y=372
position_replace_x=504
position_replace_y=397
position_fif_x=-1
position_fif_y=-1
[plugins]
load_plugins=true
custom_plugin_path=
active_plugins=/usr/lib/x86_64-linux-gnu/geany/addons.so;/usr/lib/x86_64-linux-gnu/geany/autoclose.so;/usr/lib/x86_64-linux-gnu/geany/automark.so;/usr/lib/x86_64-linux-gnu/geany/commander.so;/usr/lib/x86_64-linux-gnu/geany/export.so;/usr/lib/x86_64-linux-gnu/geany/geanyextrasel.so;/usr/lib/x86_64-linux-gnu/geany/geanyctags.so;/usr/lib/x86_64-linux-gnu/geany/htmlchars.so;/usr/lib/x86_64-linux-gnu/geany/keyrecord.so;/usr/lib/x86_64-linux-gnu/geany/geanymacro.so;/usr/lib/x86_64-linux-gnu/geany/filebrowser.so;/usr/lib/x86_64-linux-gnu/geany/projectorganizer.so;/usr/lib/x86_64-linux-gnu/geany/saveactions.so;/usr/lib/x86_64-linux-gnu/geany/vimode.so;
[project]
session_file=
project_file_path=/home/jaandrle/Dokumenty/Projekty/geany
[files]
recent_files=/home/jaandrle/Stažené/config.xml;/home/jaandrle/Stažené/sentry.php.json;/home/jaandrle/Vzdálené/GitHub/DHLC-Internet-Networking-old/web/api/index.php;/media/jaandrle/WARTY WARTH/geany/filetype_extensions.conf;/media/jaandrle/WARTY WARTH/geany/plugins/geanydoc/geanydoc.conf;/media/jaandrle/WARTY WARTH/geany/plugins/saveactions/saveactions.conf;/media/jaandrle/WARTY WARTH/geany/plugins/vimode/vimode.conf;/media/jaandrle/WARTY WARTH/geany/plugins/filebrowser/filebrowser.conf;/media/jaandrle/WARTY WARTH/geany/plugins/VC/VC.conf;/media/jaandrle/WARTY WARTH/geany/plugins/spellcheck/spellcheck.conf;
recent_projects=/home/jaandrle/Dokumenty/Projekty/geany/Facilitator-App-Native.geany;/home/jaandrle/Dokumenty/Projekty/geany/deka-dom-el.geany;/home/jaandrle/Dokumenty/Projekty/geany/Facilitator-App-Native;/home/jaandrle/Dokumenty/Projekty/geany/deka-dom-el;/home/jaandrle/Dokumenty/Projekty/geany/deka-dom-el/deka-dom-el;/home/jaandrle/Dokumenty/Projekty/geany/.babelrc;
current_page=0
FILE_NAME_0=0;XML;0;EUTF-8;1;1;0;%2Fhome%2Fjaandrle%2FStažené%2Fconfig.xml;0;4

View File

@ -0,0 +1,7 @@
[Settings]
# 0: automatic selection based on system settings (requires Geany restart when changed, macOS 10.14+); 1: light; 2: dark; make sure there's no ~/.config/gtk-3.0/settings.ini file, otherwise it overrides the settings made here
theme=0
# no value: autodetect; locale string: locale to be used (e.g. en_US.UTF-8)
locale=
# no value: don't use any IM module; module name: use the specified module, e.g. 'quartz' for native macOS behavior, for complete list of modules, see Geany.app/Contents/Resources/lib/gtk-3.0/3.0.0/immodules, use without the 'im-' prefix
im_module=quartz

View File

@ -0,0 +1,5 @@
[Settings]
gtk-menu-images=1
gtk-theme-name=Prof-Gnome
gtk-application-prefer-dark-theme=1
gtk-icon-theme-name=Papirus-Dark

View File

@ -0,0 +1,227 @@
[Bindings]
menu_new=<Primary>n
menu_open=<Primary>o
menu_open_selected=<Primary><Shift>o
menu_save=<Primary>s
menu_saveas=
menu_saveall=<Primary><Shift>s
file_properties=
menu_print=
menu_close=<Primary>w
menu_closeall=<Primary><Shift>w
menu_reloadfile=<Primary>r
menu_reloadall=
file_openlasttab=
menu_quit=<Primary>q
menu_undo=<Primary>z
menu_redo=<Primary><Shift>z
edit_duplicateline=
edit_deleteline=
edit_deletelinetoend=<Primary><Shift>Delete
edit_deletelinetobegin=<Primary><Shift>BackSpace
edit_transposeline=
edit_scrolltoline=<Primary><Shift>l
edit_scrolllineup=<Alt>Up
edit_scrolllinedown=<Alt>Down
edit_completesnippet=Tab
move_snippetnextcursor=<Shift>ISO_Left_Tab
edit_suppresssnippetcompletion=
popup_contextaction=
edit_autocomplete=<Primary>space
edit_calltip=<Primary>space
edit_wordpartcompletion=Tab
edit_movelineup=<Alt>Page_Up
edit_movelinedown=<Alt>Page_Down
menu_cut=<Primary>x
menu_copy=<Primary>c
menu_paste=<Primary>v
edit_copyline=<Primary><Shift>c
edit_cutline=<Primary><Shift>x
menu_selectall=<Primary>a
edit_selectword=<Shift><Alt>w
edit_selectline=<Shift><Alt>l
edit_selectparagraph=<Shift><Alt>p
edit_selectwordpartleft=
edit_selectwordpartright=
edit_togglecase=<Primary><Alt>u
edit_commentlinetoggle=<Primary>e
edit_commentline=
edit_uncommentline=
edit_increaseindent=<Primary>i
edit_decreaseindent=<Primary>u
edit_increaseindentbyspace=
edit_decreaseindentbyspace=
edit_autoindent=
edit_sendtocmd1=<Primary>1
edit_sendtocmd2=<Primary>2
edit_sendtocmd3=<Primary>3
edit_sendtocmd4=
edit_sendtocmd5=
edit_sendtocmd6=
edit_sendtocmd7=
edit_sendtocmd8=
edit_sendtocmd9=
edit_sendtovte=
format_reflowparagraph=<Primary>j
edit_joinlines=
menu_insert_date=
edit_insertwhitespace=
edit_insertlinebefore=
edit_insertlineafter=
menu_preferences=<Primary><Alt>p
menu_pluginpreferences=
menu_find=<Primary>f
menu_findnext=F3
menu_findprevious=<Shift>F3
menu_findnextsel=
menu_findprevsel=
menu_replace=<Primary>h
menu_findinfiles=<Primary><Shift>f
menu_nextmessage=
menu_previousmessage=
popup_findusage=<Primary><Shift>e
popup_finddocumentusage=<Primary><Shift>d
find_markall=<Primary><Shift>m
nav_back=<Alt>Left
nav_forward=<Alt>Right
menu_gotoline=<Primary>g
edit_gotomatchingbrace=<Primary>equal
edit_togglemarker=<Primary>m
edit_gotonextmarker=<Primary>period
edit_gotopreviousmarker=<Primary>comma
popup_gototagdefinition=<Primary>t
popup_gototagdeclaration=<Primary><Shift>t
edit_gotolinestart=Home
edit_gotolineend=End
edit_gotolinestartvisual=<Alt>Home
edit_gotolineendvisual=<Alt>End
edit_prevwordstart=<Primary>slash
edit_nextwordstart=<Primary>backslash
menu_toggleall=F1
menu_fullscreen=F11
menu_messagewindow=
toggle_sidebar=
menu_zoomin=<Primary>plus
menu_zoomout=<Primary>minus
normal_size=<Primary>0
menu_linewrap=
menu_linebreak=
menu_clone=
menu_strip_trailing_spaces=
menu_replacetabs=
menu_replacespaces=
menu_togglefold=
menu_foldall=
menu_unfoldall=
reloadtaglist=<Primary><Shift>r
remove_markers=
remove_error_indicators=
remove_markers_and_indicators=
project_new=
project_new_from_folder=
project_open=
project_properties=
project_close=
build_compile=F8
build_link=F9
build_make=<Shift>F9
build_makeowntarget=<Primary><Shift>F9
build_makeobject=<Shift>F8
build_nexterror=
build_previouserror=
build_run=F5
build_options=
menu_opencolorchooser=
menu_help=
switch_editor=F2
switch_search_bar=F7
switch_message_window=
switch_compiler=
switch_messages=
switch_scribble=F6
switch_vte=F4
switch_sidebar=<Shift>F2
switch_sidebar_symbol_list=
switch_sidebar_doc_list=
switch_tableft=<Primary>Page_Up
switch_tabright=<Primary>Page_Down
switch_tablastused=<Primary>Tab
move_tableft=<Primary><Shift>Page_Up
move_tabright=<Primary><Shift>Page_Down
move_tabfirst=
move_tablast=
[addons]
focus_bookmark_list=
focus_tasks=
update_tasks=
xml_tagging=
copy_file_path=
Enclose_1=
Enclose_2=
Enclose_3=
Enclose_4=
Enclose_5=
Enclose_6=
Enclose_7=
Enclose_8=
[code_navigation]
switch_head_impl=<Shift><Alt>s
goto_file=<Shift><Alt>g
[commander]
show_panel=
show_panel_commands=<Primary>semicolon
show_panel_files=
[file_browser]
focus_file_list=
focus_path_entry=
rename_object=
create_file=
create_dir=
rename_refresh=
track_current=
[vimode]
enable_vim=
insert_for_dummies=
[ProjectOrganizer]
find_in_project=
find_file=<Primary>p
find_tag=
swap_header_source=
focus_project_sidebar=
open_file_manager=
open_terminal=
[doc_chars]
Document current word=
Document interactive=
[GeanyCtags]
generate_tags=
find_tag=
[keyrecord]
record=
play=
[geanyprj]
find_in_project=
[html_chars]
insert_html_chars=
replace_special_characters=
htmltoogle_toggle_plugin_status=
[extra_select]
column_mode=<Primary><Shift>v
goto_line_extend=<Primary><Shift>g
brace_match_extend=<Primary><Shift>percent
convert_selection=
set_anchor=
select_to_anchor=
rect_select_to_anchor=

View File

@ -0,0 +1,17 @@
[addons]
show_toolbar_doclist_item=true
doclist_sort_mode=2
enable_openuri=false
enable_tasks=true
tasks_token_list=TODO;FIXME
tasks_scan_all_documents=false
enable_systray=false
enable_bookmarklist=true
enable_markword=false
enable_markword_single_click_deselect=false
strip_trailing_blank_lines=false
enable_xmltagging=false
enable_enclose_words=false
enable_enclose_words_auto=false
enable_colortip=true
enable_double_click_color_chooser=true

View File

@ -0,0 +1,23 @@
[autoclose]
parenthesis=true
abracket=true
abracket_htmlonly=true
cbracket=true
sbracket=true
dquote=true
squote=true
backquote=true
backquote_bashonly=false
comments_ac_enable=true
delete_pairing_brace=true
suppress_doubling=true
enclose_selections=true
comments_enclose=false
keep_selection=true
make_indent_for_cbracket=true
move_cursor_to_beginning=true
improved_cbracket_indent=true
whitesmiths_style=false
close_functions=true
bcksp_remove_pair=false
jump_on_tab=true

View File

@ -0,0 +1,7 @@
[filebrowser]
open_command=dolphin "%d"
show_hidden_files=true
hide_object_files=true
hidden_file_extensions=.o .obj .so .dll .a .lib .pyc
fb_follow_path=false
fb_set_project_base_path=false

View File

@ -0,0 +1,26 @@
[C]
internal=false
command0=man -P "col -b" -S 2:3:5 '%w'
command1=devhelp -s '%w'
[C++]
internal=false
command0=man -P "col -b" -S 2:3:5 '%w'
command1=devhelp -s '%w'
[PHP]
internal=false
command0=firefox "http://www.php.net/%w"
[Sh]
internal=true
command0=man -P "col -b" -S 1:4:5:6:7:8:9 '%w'
[Python]
internal=true
command0=pydoc '%w'
[None]
internal=false
command0=safari "https://searxng.jaandrle.cz/search?q=%w&language=all&time_range=&safesearch=0&categories=general"

View File

@ -0,0 +1,17 @@
[saveactions]
enable_autosave=false
enable_autosave_losing_focus=false
enable_instantsave=false
enable_backupcopy=false
[autosave]
print_messages=false
save_all=false
interval=300
[instantsave]
default_ft=None
[backupcopy]
dir_levels=0
time_fmt=%Y-%m-%d-%H-%M-%S

View File

@ -0,0 +1,16 @@
[treebrowser]
open_external_cmd=xdg-open '%d'
open_terminal=xterm
reverse_filter=false
one_click_chdoc=false
show_hidden_files=false
hide_object_files=false
show_bars=1
chroot_on_dclick=false
follow_current_doc=true
on_delete_close_file=true
on_open_focus_editor=false
show_tree_lines=true
show_bookmarks=false
show_icons=2
open_new_files=true

View File

@ -0,0 +1,4 @@
[Settings]
enable_vim=false
insert_for_dummies=false
start_in_insert=true

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,424 @@
# format=pipe
E|||
Form|||
Infinity|||
LN10|||
LN2|||
LOG10E|||
LOG2E|||
NaN|||
Number|number|(object o)|
PI|||
Positioning|||
Property|||
SQRT2|||
String|string|(object o)|
URL|||
UTC|int|(int year, int month, int day, int hours, int minutes, int seconds, int ms)|
aLink|||
abbr|||
abs|float|(float x)|
accept|||
acceptCharset|||
accessKey|||
acos|float|(float x)|
action|||
add||(option o[, int before])|
alert||(mixed value)|
align|||
alt|||
altKey|||
appCodeName|||
appName|||
appVersion|||
appendChild|node|(node n)|
archive|||
asin|float|(float x)|
assign||(string url)|
atan|float|(float x)|
atan2|float|(float y, float x)|
attributes|||
availHeight|||
availWidth|||
axis|||
background|||
backgroundAttachment|||
backgroundColor|||
backgroundImage|||
backgroundPosition|||
backgroundPositionX|||
backgroundPositionY|||
backgroundRepeat|||
bgColor|||
border|||
borderBottom|||
borderBottomColor|||
borderBottomStyle|||
borderBottomWidth|||
borderCollapse|||
borderColor|||
borderLeft|||
borderLeftColor|||
borderLeftStyle|||
borderLeftWidth|||
borderRight|||
borderRightColor|||
borderRightStyle|||
borderRightWidth|||
borderSpacing|||
borderStyle|||
borderTop|||
borderTopColor|||
borderTopStyle|||
borderTopWidth|||
borderWidth|||
bottom|||
bubbles|||
button|||
cancelable|||
caption|||
captionSide|||
ceil|int|(float x)|
cellIndex|||
cellPadding|||
cellSpacing|||
cells|||
ch|||
chOff|||
charAt|string|(int index)|
charCodeAt|int|(int index)|
charset|||
checked|||
childNodes|||
className|||
clear|||
clearInterval||(int id)|
clearTimeout||(int id)|
clientHeight|||
clientWidth|||
clientX|||
clientY|||
clip|||
cloneNode|node|(bool deep)|
closed|||
code|||
codeBase|||
codeType|||
colSpan|||
color|||
colorDepth|||
cols|||
compile|regexp|(regexp r,[ string modifier])|
complete|||
concat|string|(string s1, string s2[, ...])|
confirm|bool|(string message)|
constructor|||
content|||
contentDocument|||
contentWindow|||
cookie|||
cookieEnabled|||
coords|||
cos|float|(float x)|
counterIncrement|||
counterReset|||
cssFloat|||
cssText|||
ctrlKey|||
currentTarget|||
cursor|||
data|||
declare|||
defaultChecked|||
defaultSelected|||
defaultStatus|||
defaultValue|||
deleteCell||(int index)|
deleteRow||(int index)|
dir|||
direction|||
disabled|||
display|||
document|||
documentMode|||
domain|||
elements|||
emptyCells|||
enctype|||
escape|string|(string str)|
eval|mixed|(string code)|
eventPhase|||
exec|mixed|(string str)|
exp|float|(float x)|
firstChild|||
floor|int|(float x)|
font|||
fontFamily|||
fontSize|||
fontSizeAdjust|||
fontStretch|||
fontStyle|||
fontVariant|||
fontWeight|||
form|||
frame|||
frameBorder|||
frames|||
fromCharCode|string|(int c1[, int c2[, ...]])|
getAttribute|mixed|(string name)|
getElementById|mixed|(string id)|
getElementsByName|array|(string name)|
getElementsByTagName|array|(string tagname)|
global|||
go||(mixed value)|
hash|||
headers|||
height|||
history|||
host|||
hostname|||
href|||
hreflang|||
hspace|||
httpEquiv|||
id|||
ignoreCase|||
index|||
indexOf|int|(string search[, int start])|
innerHTML|||
innerHeight|||
innerWidth|||
insertBefore|node|(node newnode[, node refnode])|
insertCell||(int index)|
insertRow||(int index)|
isFinite|bool|(mixed var)|
isNaN|bool|(mixed var)|
item|node|(int index)|
join|string|(string separator)|
label|||
lang|||
lastChild|||
lastIndex|||
lastIndexOf|int|(string search[, int start])|
lastModified|||
left|||
length|||
letterSpacing|||
lineHeight|||
link|||
listStyle|||
listStyleImage|||
listStylePosition|||
listStyleType|||
location|||
log|float|(float x)|
longDesc|||
lowsrc|||
margin|||
marginBottom|||
marginHeight|||
marginLeft|||
marginRight|||
marginTop|||
marginWidth|||
markerOffset|||
marks|||
match|bool|(regexp r)|
max|float|(float f1[, float f2[, ...]])|
maxHeight|||
maxLength|||
maxWidth|||
media|||
metaKey|||
method|||
min|float|(float f1[, float f2[, ...]])|
minHeight|||
minWidth|||
moveBy||(int x, int y)|
moveTo||(int x, int y)|
multiline|||
multiple|||
name|||
navigator|||
nextSibling|||
noHref|||
noResize|||
nodeName|||
nodeType|||
nodeValue|||
offsetHeight|||
offsetLeft|||
offsetParent|||
offsetTop|||
offsetWidth|||
onabort|||
onblur|||
onchange|||
onclick|||
ondblclick|||
onerror|||
onfocus|||
onkeydown|||
onkeypress|||
onkeyup|||
onload|||
onmousedown|||
onmousemove|||
onmouseout|||
onmouseover|||
onmouseup|||
onresize|||
onselect|||
onunload|||
open||([string url[, string name[, string specs[, bool replace]]]])|
opener|||
options|||
orphans|||
outerHeight|||
outerWidth|||
outline|||
outlineColor|||
outlineStyle|||
outlineWidth|||
overflow|||
ownerDocument|||
padding|||
paddingBottom|||
paddingLeft|||
paddingRight|||
paddingTop|||
page|||
pageBreakAfter|||
pageBreakBefore|||
pageBreakInside|||
pageXOffset|||
pageYOffset|||
parent|||
parentNode|||
parse|int|(string date)|
parseFloat|float|(string str)|
parseInt|int|(string str)|
pathname|||
pixelDepth|||
platform|||
port|||
position|||
pow|float|(float x, float y)|
previousSibling|||
prompt|string|(string message, string default)|
protocol|||
prototype|||
push||(mixed value)|
quotes|||
readOnly|||
readyState|||
referrer|||
rel|||
relatedTarget|||
remove||(int index)|
removeAttribute||(string name)|
removeChild||(node child)|
replace|string|(regexp r, string newstring)|
replaceChild|node|(node oldnode, node newnode)|
resizeBy||(int width, int height)|
resizeTo||(int width, int height)|
rev|||
right|||
round|int|(float x)|
rowIndex|||
rowSpan|||
rows|||
rules|||
scope|||
screen|||
screenLeft|||
screenTop|||
screenX|||
screenY|||
scrollBy||(int x, int y)|
scrollHeight|||
scrollLeft|||
scrollTo||(int x, int y)|
scrollTop|||
scrollWidth|||
scrolling|||
search|int|(regexp r)|
sectionRowIndex|||
selected|||
selectedIndex|||
self|||
setAttribute||(string name, mixed value)|
setDate||(int day)|
setFullYear||(int year)|
setHours||(int hours)|
setInterval|int|(mixed code, int millisec[, string language])|
setMilliseconds||(int milliseconds)|
setMinutes||(int minutes)|
setMonth||(int month)|
setSeconds||(int seconds)|
setTime||(int timestamp)|
setTimeout|int|(mixed code, int millisec[, string language])|
setUTCDate||(int day)|
setUTCFullYear||(int year)|
setUTCHours||(int hour)|
setUTCMilliseconds||(int milliseconds)|
setUTCMinutes||(int minutes)|
setUTCMonth||(int month)|
setUTCSeconds||(int seconds)|
setYear||(int year)|
shape|||
shiftKey|||
sin|float|(float x)|
size|||
slice|string|(int begin[, int end])|
sort|array|([function sortfunc])|
source|||
splice|array|(int index, int count[, mixed el1[, mixed el2[, ...]]])|
split|array|([string separator[, int limit]])|
sqrt|float|(float x)|
src|||
standby|||
status|||
style|||
substr|string|(int start[, int length])|
substring|string|(int from[, int to])|
summary|||
tBodies|||
tFoot|||
tHead|||
tabIndex|||
tableLayout|||
tagName|||
tan|float|(float x)|
target|||
test|bool|(string str)|
text|||
textAlign|||
textDecoration|||
textIndent|||
textShadow|||
textTransform|||
timeStamp|||
title|||
toExponential|string|(int digits)|
toFixed|string|(int digits)|
toPrecision|string|(int digits)|
top|||
type|||
undefined|||
unescape|string|(string str)|
unicodeBidi|||
unshift|int|(mixed el1[, mixed el2[, ...]])|
useMap|||
userAgent|||
vAlign|||
value|||
verticalAlign|||
visibility|||
vspace|||
whiteSpace|||
widows|||
width|||
write||(mixed e1[, mixed e2[, ...]])|
writeln||(mixed e1[, mixed e2[, ...]])|
zIndex|||

View File

@ -0,0 +1,415 @@
# format=pipe
log|console.|([data], [...])|
info|console.|([data], [...])|
error|console.|([data], [...])|
warn|console.|([data], [...])|
dir|console.|(obj)|
time|console.|(label)|
timeEnd|console.|(label)|
trace|console.|(label)|
assert|console.|(expression, [message])|
abort|process.|()|
chdir|process.|(directory)|
cwd|process.|()|
exit|process.|([code])|
getgid|process.|()|
setgid|process.|(id)|
getuid|process.|()|
setuid|process.|(id)|
kill|process.|(pid, [signal])|
memoryUsage|process.|()|
nextTick|process.|(callback)|
umask|process.|([mask])|
uptime|process.|()|
hrtime|process.|()|
resolve|require.|()|
setTimeout||(cb, ms)|
clearTimeout||(t)|
setInterval||(cb, ms)|
log|console.|([data], [...])|
info|console.|([data], [...])|
error|console.|([data], [...])|
warn|console.|([data], [...])|
dir|console.|(obj)|
time|console.|(label)|
timeEnd|console.|(label)|
trace|console.|(label)|
assert|console.|(expression, [message])|
abort|process.|()|
chdir|process.|(directory)|
cwd|process.|()|
exit|process.|([code])|
getgid|process.|()|
setgid|process.|(id)|
getuid|process.|()|
setuid|process.|(id)|
kill|process.|(pid, [signal])|
memoryUsage|process.|()|
nextTick|process.|(callback)|
umask|process.|([mask])|
uptime|process.|()|
hrtime|process.|()|
resolve|require.|()|
setTimeout||(cb, ms)|
clearTimeout||(t)|
setInterval||(cb, ms)|
require|module.|(id): Object|
format|util.|(format, [...])|
debug|util.|(string)|
error|util.|([...])|
puts|util.|([...])|
print|util.|([...])|
log|util.|(string)|
inspect|util.|(object, [showHidden], [depth], [colors])|
isArray|util.|(object)|
isRegExp|util.|(object)|
isDate|util.|(object)|
isError|util.|(object)|
pump|util.|(readableStream, writableStream, [callback])|
inherits|util.|(constructor, superConstructor)|
addListener|events.EventEmitter#|(event, listener)|
on|events.EventEmitter#|(event, listener)|
once|events.EventEmitter#|(event, listener)|
removeListener|events.EventEmitter#|(event, listener)|
removeAllListeners|events.EventEmitter#|([event])|
setMaxListeners|events.EventEmitter#|(n)|
listeners|events.EventEmitter#|(event)|
emit|events.EventEmitter#|(event, [arg1], [arg2], [...])|
create|domain.|(): Domain|
run|Domain#|(fn)|
add|Domain#|(emitter)|
remove|Domain#|(emitter)|
bind|Domain#|(callback): Function|
intercept|Domain#|(callback): Function|
dispose|Domain#|()|
write|Buffer#|(string, [offset], [length], [encoding])|
toString|Buffer#|([encoding], [start], [end])|
copy|Buffer#|(targetBuffer, [targetStart], [sourceStart], [sourceEnd])|
slice|Buffer#|([start], [end])|
readUInt8|Buffer#|(offset, [noAssert])|
readUInt16LE|Buffer#|(offset, [noAssert])|
readUInt16BE|Buffer#|(offset, [noAssert])|
readUInt32LE|Buffer#|(offset, [noAssert])|
readUInt32BE|Buffer#|(offset, [noAssert])|
readInt8|Buffer#|(offset, [noAssert])|
readInt16LE|Buffer#|(offset, [noAssert])|
readInt16BE|Buffer#|(offset, [noAssert])|
readInt32LE|Buffer#|(offset, [noAssert])|
readInt32BE|Buffer#|(offset, [noAssert])|
readFloatLE|Buffer#|(offset, [noAssert])|
readFloatBE|Buffer#|(offset, [noAssert])|
readDoubleLE|Buffer#|(offset, [noAssert])|
readDoubleBE|Buffer#|(offset, [noAssert])|
writeUInt8|Buffer#|(value, offset, [noAssert])|
writeUInt16LE|Buffer#|(value, offset, [noAssert])|
writeUInt16BE|Buffer#|(value, offset, [noAssert])|
writeUInt32LE|Buffer#|(value, offset, [noAssert])|
writeUInt32BE|Buffer#|(value, offset, [noAssert])|
writeInt8|Buffer#|(value, offset, [noAssert])|
writeInt16LE|Buffer#|(value, offset, [noAssert])|
writeInt16BE|Buffer#|(value, offset, [noAssert])|
writeInt32LE|Buffer#|(value, offset, [noAssert])|
writeInt32BE|Buffer#|(value, offset, [noAssert])|
writeFloatLE|Buffer#|(value, offset, [noAssert])|
writeFloatBE|Buffer#|(value, offset, [noAssert])|
writeDoubleLE|Buffer#|(value, offset, [noAssert])|
writeDoubleBE|Buffer#|(value, offset, [noAssert])|
fill|Buffer#|(value, [offset], [end])|
isBuffer|Buffer#|(obj)|
byteLength|Buffer#|(string, [encoding])|
concat|Buffer#|(list, [totalLength])|
Buffer|buffer.||
setEncoding|Readable Stream#|([encoding])|
pause|Readable Stream#|()|
resume|Readable Stream#|()|
destroy|Readable Stream#|()|
pipe|Readable Stream#|(destination, [options])|
write|Writable Stream#|(string, [encoding])|
write|Writable Stream#|(buffer)|
end|Writable Stream#|()|
end|Writable Stream#|(string, encoding)|
end|Writable Stream#|(buffer)|
destroy|Writable Stream#|()|
destroySoon|Writable Stream#|()|
createCredentials|crypto.|(details)|
createHash|crypto.|(algorithm)|
createHmac|crypto.|(algorithm, key)|
createCipher|crypto.|(algorithm, password)|
createCipheriv|crypto.|(algorithm, key, iv)|
createDecipher|crypto.|(algorithm, password)|
createDecipheriv|crypto.|(algorithm, key, iv)|
createSign|crypto.|(algorithm)|
createVerify|crypto.|(algorithm)|
createDiffieHellman|crypto.|(prime_length)|
createDiffieHellman|crypto.|(prime, [encoding])|
getDiffieHellman|crypto.|(group_name)|
pbkdf2|crypto.|(password, salt, iterations, keylen, callback)|
randomBytes|crypto.|(size, [callback])|
update|Hash#|(data, [input_encoding])|
digest|Hash#|([encoding])|
update|Hmac#|(data)|
digest|Hmac#|([encoding])|
update|Cipher#|(data, [input_encoding], [output_encoding])|
final|Cipher#|([output_encoding])|
setAutoPadding|Cipher#|(auto_padding=true)|
update|Decipher#|(data, [input_encoding], [output_encoding])|
final|Decipher#|([output_encoding])|
setAutoPadding|Decipher#|(auto_padding=true)|
update|Signer#|(data)|
sign|Signer#|(private_key, [output_format])|
update|Verify#|(data)|
verify|Verify#|(object, signature, [signature_format])|
generateKeys|DiffieHellman#|([encoding])|
computeSecret|DiffieHellman#|(other_public_key, [input_encoding], [output_encoding])|
getPrime|DiffieHellman#|([encoding])|
getGenerator|DiffieHellman#|([encoding])|
getPublicKey|DiffieHellman#|([encoding])|
getPrivateKey|DiffieHellman#|([encoding])|
setPublicKey|DiffieHellman#|(public_key, [encoding])|
setPrivateKey|DiffieHellman#|(public_key, [encoding])|
createServer|tls_(ssl).|(options, [secureConnectionListener])|
connect|tls_(ssl).|(options, [callback])|
connect|tls_(ssl).|(port, [host], [options], [callback])|
createSecurePair|tls_(ssl).|([credentials], [isServer], [requestCert], [rejectUnauthorized])|
listen|tls.Server#|(port, [host], [callback])|
close|tls.Server#|()|
address|tls.Server#|()|
addContext|tls.Server#|(hostname, credentials)|
getPeerCertificate|tls.CleartextStream#|()|
getCipher|tls.CleartextStream#|()|
address|tls.CleartextStream#|()|
write|StringDecoder#|(buffer)|
rename|fs.|(oldPath, newPath, [callback])|
renameSync|fs.|(oldPath, newPath)|
truncate|fs.|(fd, len, [callback])|
truncateSync|fs.|(fd, len)|
chown|fs.|(path, uid, gid, [callback])|
chownSync|fs.|(path, uid, gid)|
fchown|fs.|(fd, uid, gid, [callback])|
fchownSync|fs.|(fd, uid, gid)|
lchown|fs.|(path, uid, gid, [callback])|
lchownSync|fs.|(path, uid, gid)|
chmod|fs.|(path, mode, [callback])|
chmodSync|fs.|(path, mode)|
fchmod|fs.|(fd, mode, [callback])|
fchmodSync|fs.|(fd, mode)|
lchmod|fs.|(path, mode, [callback])|
lchmodSync|fs.|(path, mode)|
stat|fs.|(path, [callback])|
lstat|fs.|(path, [callback])|
fstat|fs.|(fd, [callback])|
statSync|fs.|(path)|
lstatSync|fs.|(path)|
fstatSync|fs.|(fd)|
link|fs.|(srcpath, dstpath, [callback])|
linkSync|fs.|(srcpath, dstpath)|
symlink|fs.|(srcpath, dstpath, [type], [callback])|
symlinkSync|fs.|(srcpath, dstpath, [type])|
readlink|fs.|(path, [callback])|
readlinkSync|fs.|(path)|
realpath|fs.|(path, [cache], callback)|
realpathSync|fs.|(path, [cache])|
unlink|fs.|(path, [callback])|
unlinkSync|fs.|(path)|
rmdir|fs.|(path, [callback])|
rmdirSync|fs.|(path)|
mkdir|fs.|(path, [mode], [callback])|
mkdirSync|fs.|(path, [mode])|
readdir|fs.|(path, [callback])|
readdirSync|fs.|(path)|
close|fs.|(fd, [callback])|
closeSync|fs.|(fd)|
open|fs.|(path, flags, [mode], [callback])|
openSync|fs.|(path, flags, [mode])|
utimes|fs.|(path, atime, mtime, [callback])|
utimesSync|fs.|(path, atime, mtime)|
futimes|fs.|(fd, atime, mtime, [callback])|
futimesSync|fs.|(fd, atime, mtime)|
fsync|fs.|(fd, [callback])|
fsyncSync|fs.|(fd)|
write|fs.|(fd, buffer, offset, length, position, [callback])|
writeSync|fs.|(fd, buffer, offset, length, position)|
read|fs.|(fd, buffer, offset, length, position, [callback])|
readSync|fs.|(fd, buffer, offset, length, position)|
readFile|fs.|(filename, [encoding], [callback])|
readFileSync|fs.|(filename, [encoding])|
writeFile|fs.|(filename, data, [encoding], [callback])|
writeFileSync|fs.|(filename, data, [encoding])|
appendFile|fs.|(filename, data, encoding='utf8', [callback])|
appendFileSync|fs.|(filename, data, encoding='utf8')|
watchFile|fs.|(filename, [options], listener)|
unwatchFile|fs.|(filename, [listener])|
watch|fs.|(filename, [options], [listener])|
exists|fs.|(path, [callback])|
existsSync|fs.|(path)|
createReadStream|fs.|(path, [options])|
createWriteStream|fs.|(path, [options])|
close|fs.FSWatcher#|()|
normalize|path.|(p)|
join|path.|([path1], [path2], [...])|
resolve|path.|([from ...], to)|
relative|path.|(from, to)|
dirname|path.|(p)|
basename|path.|(p, [ext])|
extname|path.|(p)|
createServer|net.|([options], [connectionListener])|
connect|net.|(options, [connectionListener])|
createConnection|net.|(options, [connectionListener])|
connect|net.|(port, [host], [connectListener])|
createConnection|net.|(port, [host], [connectListener])|
connect|net.|(path, [connectListener])|
createConnection|net.|(path, [connectListener])|
isIP|net.|(input)|
isIPv4|net.|(input)|
isIPv6|net.|(input)|
listen|net.Server#|(port, [host], [backlog], [callback])|
listen|net.Server#|(path, [callback])|
listen|net.Server#|(handle, [callback])|
close|net.Server#|([callback])|
address|net.Server#|()|
Socket|net.Socket#|([options])|
connect|net.Socket#|(port, [host], [connectListener])|
connect|net.Socket#|(path, [connectListener])|
setEncoding|net.Socket#|([encoding])|
write|net.Socket#|(data, [encoding], [callback])|
end|net.Socket#|([data], [encoding])|
destroy|net.Socket#|()|
pause|net.Socket#|()|
resume|net.Socket#|()|
setTimeout|net.Socket#|(timeout, [callback])|
setNoDelay|net.Socket#|([noDelay])|
setKeepAlive|net.Socket#|([enable], [initialDelay])|
address|net.Socket#|()|
createSocket|dgram.|(type, [callback])|
send|Socket#|(buf, offset, length, port, address, [callback])|
bind|Socket#|(port, [address])|
close|Socket#|()|
address|Socket#|()|
setBroadcast|Socket#|(flag)|
setTTL|Socket#|(ttl)|
setMulticastTTL|Socket#|(ttl)|
setMulticastLoopback|Socket#|(flag)|
addMembership|Socket#|(multicastAddress, [multicastInterface])|
dropMembership|Socket#|(multicastAddress, [multicastInterface])|
lookup|dns.|(domain, [family], callback)|
resolve|dns.|(domain, [rrtype], callback)|
resolve4|dns.|(domain, callback)|
resolve6|dns.|(domain, callback)|
resolveMx|dns.|(domain, callback)|
resolveTxt|dns.|(domain, callback)|
resolveSrv|dns.|(domain, callback)|
resolveNs|dns.|(domain, callback)|
resolveCname|dns.|(domain, callback)|
reverse|dns.|(ip, callback)|
setEncoding|ClientResponse.|([encoding])|
pause|ClientResponse.|()|
resume|ClientResponse.|()|
createServer|http.|([requestListener])|
createClient|http.|([port], [host])|
request|http.|(options, callback)|
get|http.|(options, callback)|
listen|http.Server#|(port, [hostname], [backlog], [callback])|
listen|http.Server#|(path, [callback])|
listen|http.Server#|(handle, [callback])|
close|http.Server#|([callback])|
setEncoding|http.ServerRequest#|([encoding])|
pause|http.ServerRequest#|()|
resume|http.ServerRequest#|()|
writeContinue|http.ServerResponse#|()|
writeHead|http.ServerResponse#|(statusCode, [reasonPhrase], [headers])|
setHeader|http.ServerResponse#|(name, value)|
getHeader|http.ServerResponse#|(name)|
removeHeader|http.ServerResponse#|(name)|
write|http.ServerResponse#|(chunk, [encoding])|
addTrailers|http.ServerResponse#|(headers)|
end|http.ServerResponse#|([data], [encoding])|
write|http.ClientRequest#|(chunk, [encoding])|
end|http.ClientRequest#|([data], [encoding])|
abort|http.ClientRequest#|()|
setTimeout|http.ClientRequest#|(timeout, [callback])|
setNoDelay|http.ClientRequest#|([noDelay])|
setSocketKeepAlive|http.ClientRequest#|([enable], [initialDelay])|
listen|createServer.|(path, [callback])|
listen|createServer.|(handle, [callback])|
close|createServer.|([callback])|
createServer|https.|(options, [requestListener])|
request|https.|(options, callback)|
get|https.|(options, callback)|
parse|url.|(urlStr, [parseQueryString], [slashesDenoteHost])|
format|url.|(urlObj)|
resolve|url.|(from, to)|
stringify|querystring.|(obj, [sep], [eq])|
parse|querystring.|(str, [sep], [eq], [options])|
decode|punycode.|(string)|
encode|punycode.|(string)|
toUnicode|punycode.|(domain)|
toASCII|punycode.|(domain)|
createInterface|readline.|(options)|
setPrompt|Interface#|(prompt, length)|
prompt|Interface#|([preserveCursor])|
question|Interface#|(query, callback)|
pause|Interface#|()|
resume|Interface#|()|
close|Interface#|()|
write|Interface#|(data, [key])|
start|repl.|(options)|
runInThisContext|vm.|(code, [filename])|
runInNewContext|vm.|(code, [sandbox], [filename])|
runInContext|vm.|(code, context, [filename])|
createContext|vm.|([initSandbox])|
createScript|vm.|(code, [filename])|
runInThisContext|Script#|()|
runInNewContext|Script#|([sandbox])|
kill|ChildProcess#|([signal])|
send|ChildProcess#|(message, [sendHandle])|
disconnect|ChildProcess#|()|
spawn|child_process.|(command, [args], [options]): ChildProcess object|
exec|child_process.|(command, [options], callback)|
execFile|child_process.|(file, args, options, callback)|
fork|child_process.|(modulePath, [args], [options])|
fail|assert.|(actual, expected, message, operator)|
ok|assert.|(value, message), assert.ok(value, [message])|
equal|assert.|(actual, expected, [message])|
notEqual|assert.|(actual, expected, [message])|
deepEqual|assert.|(actual, expected, [message])|
notDeepEqual|assert.|(actual, expected, [message])|
strictEqual|assert.|(actual, expected, [message])|
notStrictEqual|assert.|(actual, expected, [message])|
throws|assert.|(block, [error], [message])|
doesNotThrow|assert.|(block, [error], [message])|
ifError|assert.|(value)|
isatty|tty.|(fd)|
setRawMode|tty.|(mode)|
setRawMode|ReadStream#|(mode)|
createGzip|zlib.|([options])|
createGunzip|zlib.|([options])|
createDeflate|zlib.|([options])|
createInflate|zlib.|([options])|
createDeflateRaw|zlib.|([options])|
createInflateRaw|zlib.|([options])|
createUnzip|zlib.|([options])|
deflate|zlib.|(buf, callback)|
deflateRaw|zlib.|(buf, callback)|
gzip|zlib.|(buf, callback)|
gunzip|zlib.|(buf, callback)|
inflate|zlib.|(buf, callback)|
inflateRaw|zlib.|(buf, callback)|
unzip|zlib.|(buf, callback)|
tmpDir|os.|()|
hostname|os.|()|
type|os.|()|
platform|os.|()|
arch|os.|()|
release|os.|()|
uptime|os.|()|
loadavg|os.|()|
totalmem|os.|()|
freemem|os.|()|
cpus|os.|()|
networkInterfaces|os.|()|
setupMaster|cluster.|([settings])|
fork|cluster.|([env]): Worker object|
disconnect|cluster.|([callback])|
send|Worker#|(message, [sendHandle])|
destroy|Worker#|()|
disconnect|Worker#|()|

View File

@ -0,0 +1,211 @@
# format=pipe
## global objects
Array|||
ArrayBuffer|||
Boolean|||
Date|||
decodeURI||(encodedURI): string|
decodeURIComponent||(encodedURI): string|
encodeURI||(URI): string|
encodeURIComponent||(str): string|
Error|||
eval||(string): void|
EvalError|||
Float32Array|||
Float64Array|||
Function|||
Infinity|||
Int16Array|||
Int32Array|||
Int8Array|||
isFinite||(number): boolean|
isNaN||(object): boolean|
Iterator|||
JSON|||
Math|||
NaN|||
Number|||
Object|||
parseFloat||(string): number|
parseInt||(string[, radix]): number|
RangeError|||
ReferenceError|||
RegExp|||
StopIteration|||
String|||
SyntaxError|||
TypeError|||
Uint16Array|||
Uint32Array|||
Uint8Array|||
Uint8ClampedArray|||
undefined|||
uneval|||
URIError|||
## Array
isArray|[static] Array.|(obj: Object): Boolean|
length|Array.||
pop|Array.|(): Array|
push|Array.|(element1: Object, ..., elementN: Object): Number|
reverse|Array.|(): Array|
shift|Array.|(): Object|
sort|Array.|([compareFunction]): Array|
splice|Array.|(index: number[, howMany: number[, element1: Object[, ...[, elementN: Object]]]]): Array|
unshift|Array.|(element1: Object, ..., elementN: Object): Number|
concat|Array.|(value1: Object, value2: Object, ..., valueN: Object): Array|
join|Array.|(separator: string): Array|
slice|Array.|(begin: number[, end: number]): Array|
indexOf|Array.|(element: Object): Number|
lastIndexOf|Array.|(element: Object): Number|
filter|Array.|(callback: Function[, thisObject: Object]): Array|
forEach|Array.|(callback: Function[, thisObject: Object]): Array|
every|Array.|(callback: Function[, thisObject: Object]): Boolean|
map|Array.|(callback: Function[, thisObject: Object]): Array|
some|Array.|(callback: Function[, thisObject: Object]): Boolean|
reduce|Array.|(callback: Function[, initialValue: Object]): Object|
reduceRight|Array.|(callback: Function[, initialValue: Object]): Object|
## Date
now|[static] Date.|(): void|
parse|[static] Date.|(): number|
UTC|[static] Date.|(): number|
getDate|Date.|(): number|
getDay|Date.|(): number|
getFullYear|Date.|(): number|
getHours|Date.|(): number|
getMilliseconds|Date.|(): number|
getMinutes|Date.|(): number|
getMonth|Date.|(): number|
getSeconds|Date.|(): number|
getTime|Date.|(): number|
getTimezoneOffset|Date.|(): number|
getUTCDate|Date.|(): number|
getUTCDay|Date.|(): number|
getUTCFullYear|Date.|(): number|
getUTCHours|Date.|(): number|
getUTCMilliseconds|Date.|(): number|
getUTCMinutes|Date.|(): number|
getUTCMonth|Date.|(): number|
getUTCSeconds|Date.|(): number|
getYear|Date.|(): number|
setFullYear|Date.|(year, [month], [day]): void|
setMonth|Date.|(month, [day]): void|
setDate|Date.|(day_of_month): void|
setHours|Date.|(hours, [minutes], [seconds], [millisec]): void|
setMinutes|Date.|(minutes, [seconds], [millisec]): void|
setSeconds|Date.|(seconds, [millisec]): void|
setMilliseconds|Date.|(milli): void|
setTime|Date.|(milli): void|
setUTCFullYear|Date.|(year, [month], [day]): void|
setUTCMonth|Date.|(month, [day]): void|
setUTCDate|Date.|(day_of_month): void|
setUTCHours|Date.|(hours, [minutes], [seconds], [millisec]): void|
setUTCMinutes|Date.|(minutes, [seconds], [millisec]): void|
setUTCSeconds|Date.|(seconds, [millisec]): void|
setUTCMilliseconds|Date.|(milli): void|
setYear|Date.|(year): void|
toDateString|Date.|(): string|
toISOString|Date.|(): string|
toGMTString|Date.|(): string|
toLocaleDateString|Date.|(): string|
toLocaleFormat|Date.|(): string|
toLocaleString|Date.|(): string|
toLocaleTimeString|Date.|(): string|
toSource|Date.|(): string|
toString|Date.|(): string|
toTimeString|Date.|(): string|
toUTCString|Date.|(): string|
## Function
arguments|function(){|: Object}|
arguments.callee|||
arguments.caller|||
arguments.length|||
length|Function.||
apply|Function.|(thisArg[, argsArray]): void|
bind|Function.|(thisArg[, arg1[, arg2[, ...]]]): Function|
call|Function.|(thisArg[, arg1[, arg2[, ...]]]): void|
isGenerator|Function.|(): boolean)|
## Math
E|[static] Math.||
LN2|[static] Math.||
LN10|[static] Math.||
LOG2E|[static] Math.||
LOG10E|[static] Math.||
PI|[static] Math.||
SQRT1_2|[static] Math.||
SQRT2|[static] Math.||
abs|[static] Math.|(x: number): number|
acos|[static] Math.|(x: number): number|
asin|[static] Math.|(x: number): number|
atan|[static] Math.|(x: number): number|
atan2|[static] Math.|(y: number, x: number): number|
ceil|[static] Math.|(x: number): number|
cos|[static] Math.|(x: number): number|
exp|[static] Math.|(x: number): number|
floor|[static] Math.|(x: number): number|
log|[static] Math.|(x: number): number|
max|[static] Math.|(a: number, b: number): number|
min|[static] Math.|(a: number, b: number): number|
pow|[static] Math.|(x: number, y: number): number|
random|[static] Math.|(): number|
round|[static] Math.|(x: number): number|
sin|[static] Math.|(x: number): number|
sqrt|[static] Math.|(x: number): number|
tan|[static] Math.|(x: number): number|
## Number
MAX_VALUE|[static] Number.||
MIN_VALUE|[static] Number.||
NEGATIVE_INFINITY|[static] Number.||
POSITIVE_INFINITY|[static] Number.||
toExponential|Number.|(x: number): string|
toFixed|Number.|(trail: number): string|
toPrecision|Number.|(length: number): string|
## Object
create|[static] Object.|(proto [, propertiesObject ]): Object|
defineProperty|[static] Object.|(obj, prop, descriptor): Object|
defineProperties|[static] Object.|(obj, props): Object|
getOwnPropertyDescriptor|[static] Object.|(obj, prop): Object|
keys|[static] Object.|(obj): Array|
getOwnPropertyNames|[static] Object.|(obj: Object): Array|
getPrototypeOf|[static] Object.|(obj): Object|
preventExtensions|[static] Object.|(obj): Object|
isExtensible|[static] Object.|(): boolean|
seal|[static] Object.|(obj): Object|
isSealed|[static] Object.|(): boolean|
freeze|[static] Object.|()|
isFrozen|[static] Object.|(): boolean|
constructor|Object.||
hasOwnProperty|Object.|(prop: string): boolean|
isPrototypeOf|Object.|(obj: Object): boolean|
propertyIsEnumerable|Object.|(prop: string): boolean|
toLocaleString|Object.|(): string|
toString|Object.|(): string|
valueOf|Object.|(): Object|
## RegExp
global|[static] RegExp.||
ignoreCase|[static] RegExp.||
lastIndex|[static] RegExp.||
multiline|[static] RegExp.||
exec|RegExp.|(str: string): Array|
test|RegExp.|(str: string): boolean|
## String
fromCharCode|[static] String.|(num1, ..., numN): string|
charAt|String.|(index: number): String|
charCodeAt|String.|(index: number): Number|
concat|String.|(v1: Object,..., vN: Object): String|
indexOf|String.|(substr: string, [start: number]): Number|
lastIndexOf|String.|(substr: string, [start: number]): Number|
localeCompare|String.|(compareString: string): number|
match|String.|(RegExp regexp): Array|
replace|String.|(RegExp regexp, replacement: string): String|
search|String.|(RegExp regexp): Number|
slice|String.|(start: number, end: number): String|
split|String.|(delimiter: string, [limit: number]): Array|
substr|String.|(start: number[, length: number]): String|
substring|String.|(from: number[, to: number]): String|
toLocaleLowerCase|String.|(): String|
toLocaleUpperCase|String.|(): String|
toLowerCase|String.|(): String|
toUpperCase|String.|(): String|
trim|String.|(): String|
trimLeft|String.|(): String|
trimRight|String.|(): String|

View File

@ -0,0 +1,2 @@
There are several template files in this directory. For these templates you can use wildcards.
For more information read the documentation (in /Applications/Geany.app/Contents/Resources/share/doc/geany/html/index.html or visit https://www.geany.org/).

View File

@ -0,0 +1,44 @@
<ui>
<!--
This is Geany's toolbar UI definition.
The DTD can be found at
https://docs.gtk.org/gtk3/class.UIManager.html.
You can re-order all items and freely add and remove available actions.
You cannot add new actions which are not listed in the documentation.
Everything you add or change must be inside the /ui/toolbar/ path.
For changes to take effect, you need to restart Geany. Alternatively you can use the toolbar
editor in Geany.
A list of available actions can be found in the documentation included with Geany or
at https://www.geany.org/manual/current/index.html#customizing-the-toolbar.
-->
<toolbar name='GeanyToolbar'>
<toolitem action='SearchEntry' />
<toolitem action='Search' />
<separator/>
<toolitem action='GotoEntry' />
<toolitem action='Goto' />
<separator/>
<toolitem action='NavBack' />
<toolitem action='NavFor' />
<separator/>
<toolitem action='New' />
<toolitem action='Open' />
<toolitem action='Save' />
<toolitem action='SaveAll' />
<separator/>
<toolitem action='Reload' />
<toolitem action='Close' />
<separator/>
<toolitem action='Compile' />
<toolitem action='Build' />
<toolitem action='Run' />
<separator/>
<toolitem action='Color' />
<separator/>
<toolitem action='Quit' />
</toolbar>
</ui>

View File

@ -1,8 +1,5 @@
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[init]
defaultBranch = main
[user]
name = Jan Andrle
email = andrle.jan@centrum.cz
@ -38,14 +35,22 @@
editor = vim
pager = delta
whitespace = -trailing-space,-space-before-tab
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[status]
submoduleSummary = true
[diff]
tool = vimdiff
colorMoved = default
submodule = log
[merge]
tool = vimdiff
conflictstyle = diff3
[log]
date=iso
date = iso
[interactive]
diffFilter = delta --color-only
[delta] # [dandavison/delta: A syntax-highlighting pager for git, diff, and grep output](https://github.com/dandavison/delta)
@ -58,8 +63,6 @@
reflogExpireUnreachable = 90
[push]
autoSetupRemote = true
[init]
defaultBranch = main
[commit]
gpgsign = true
[rerere]

64
.config/git/gitk Normal file
View File

@ -0,0 +1,64 @@
set mainfont {{Ubuntu Mono} 11}
set textfont {{Ubuntu Mono} 11}
set uifont {{Ubuntu Mono} 11 bold}
set tabstop 8
set findmergefiles 0
set maxgraphpct 50
set maxwidth 16
set cmitmode patch
set wrapcomment none
set autoselect 1
set autosellen 40
set showneartags 1
set maxrefs 20
set visiblerefs {"master"}
set hideremotes 0
set showlocalchanges 1
set datetimeformat {%Y-%m-%d %H:%M:%S}
set limitdiffs 1
set uicolor #302c2c
set want_ttk 1
set bgcolor #2e3031
set fgcolor #d9dedc
set uifgcolor black
set uifgdisabledcolor #999
set colors {"#00ff00" red blue magenta darkgrey brown orange}
set diffcolors {{#ffffff} #ffffff #3376f0}
set mergecolors {red blue "#00ff00" purple brown "#009090" magenta "#808000" "#009000" "#ff0080" cyan "#b07070" "#70b0f0" "#70f0b0" "#f0b070" "#ff70b0"}
set markbgcolor #8b8b8e
set diffcontext 3
set selectbgcolor #000000
set foundbgcolor yellow
set currentsearchhitbgcolor orange
set extdifftool meld
set perfile_attrs 0
set headbgcolor #00ff00
set headfgcolor black
set headoutlinecolor black
set remotebgcolor #ffddaa
set tagbgcolor yellow
set tagfgcolor black
set tagoutlinecolor black
set reflinecolor black
set filesepbgcolor #aaaaaa
set filesepfgcolor black
set linehoverbgcolor #ffff80
set linehoverfgcolor black
set linehoveroutlinecolor black
set mainheadcirclecolor yellow
set workingfilescirclecolor red
set indexcirclecolor #00ff00
set circlecolors {white blue gray blue blue}
set linkfgcolor blue
set circleoutlinecolor black
set diffbgcolors {{#600000} #004800}
set web_browser xdg-open
set geometry(main) 1920x1023+0+26
set geometry(state) normal
set geometry(topwidth) 1920
set geometry(topheight) 255
set geometry(pwsash0) "672 1"
set geometry(pwsash1) "1008 1"
set geometry(botwidth) 836
set geometry(botheight) 763
set permviews {}

View File

@ -0,0 +1,257 @@
{
"target": "/home/jaandrle/bin/",
"packages": [
{
"repository": "shiftkey/desktop",
"name": "GitHub Desktop",
"group": "dev",
"file_name": "github-desktop",
"exec": "yes",
"description": "Fork of GitHub Desktop to support various Linux distributions",
"last_update": "2024-08-10T17:00:04Z",
"downloads": "/home/jaandrle/bin/github-desktop",
"version": "release-3.4.3-linux1",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "pinokiocomputer/pinokio",
"name": "Pinokio",
"group": "ai",
"file_name": "pinokio",
"exec": "yes",
"description": "AI Browser",
"glare": "AppImage",
"last_update": "2024-07-29T15:29:11Z",
"version": "2.1.17",
"downloads": "/home/jaandrle/bin/pinokio"
},
{
"repository": "jaandrle/jaaCSS-cli",
"name": "jaaCSS",
"description": "EXPERIMENT Helper for managing functional CSS classes",
"group": "dev",
"file_name": "jaaCSS.js",
"exec": "yes",
"downloads": "/home/jaandrle/bin/jaaCSS.js",
"version": "v1.3.2",
"last_update": "2022-09-02T13:33:16Z",
"glare": "jaaCSS.js"
},
{
"repository": "th-ch/youtube-music",
"name": "youtube-music",
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
"group": "nondev",
"file_name": "youtube-music",
"exec": "yes",
"last_update": "2024-08-01T11:48:59Z",
"downloads": "/home/jaandrle/bin/youtube-music",
"version": "v3.5.1",
"glare": "AppImage"
},
{
"repository": "ArchGPT/insomnium",
"name": "insomnium",
"description": "Insomnium is a fast local API testing tool that is privacy-focused and 100% local. For testing GraphQL, REST, WebSockets and gRPC. This is a fork of Kong/insomnia",
"group": "dev",
"file_name": "insomnium",
"exec": "yes",
"last_update": "2023-11-13T10:03:28Z",
"downloads": "/home/jaandrle/bin/insomnium",
"tag_name_regex": "core@.*",
"version": "core@0.2.3-a",
"glare": "AppImage"
},
{
"repository": "Kong/insomnia",
"name": "insomnia",
"description": "The open-source, cross-platform API client for GraphQL, REST, and gRPC.",
"group": "skip",
"file_name": "insomnia",
"exec": "yes",
"last_update": "2024-04-17T16:38:03Z",
"downloads": "/home/jaandrle/bin/insomnia",
"tag_name_regex": "core@.*",
"version": "core@9.0.0-beta.4",
"glare": "AppImage"
},
{
"repository": "rvpanoz/luna",
"name": "luna",
"description": "Manage npm dependencies through a modern UI.",
"group": "skip",
"file_name": "luna",
"exec": "yes",
"glare": "AppImage"
},
{
"repository": "angela-d/wifi-channel-watcher",
"name": "wifi-channel-watcher",
"group": "skip",
"file_name": "wifi-channel-watcher",
"exec": "no",
"description": "Monitor channel usage of neighboring routers & get an alert if your active channel is not optimal.\tTroubleshoot wifi without lifting a finger!"
},
{
"repository": "vinceliuice/Tela-circle-icon-theme",
"name": "Tela-circle-icon-theme",
"description": "Tela-circle-icon-theme",
"group": "skip",
"file_name": "tela-circle-icon-theme.zip",
"last_update": "2021-07-19T14:12:05Z",
"exec": "no"
},
{
"repository": "AppImage/AppImageKit",
"name": "AppImageKit",
"group": "skip",
"file_name": "appimagekit",
"exec": "yes",
"description": "Package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, openSUSE, SLED, Ubuntu, Fedora, debian and derivatives. Join #AppImage on irc.freenode.net",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "dynobo/normcap",
"name": "NormCap",
"description": "Switched to flatpak version | OCR powered screen-capture tool to capture information instead of images",
"group": "skip",
"file_name": "normcap",
"exec": "yes",
"last_update": "2023-12-12T22:23:37Z",
"downloads": "/home/jaandrle/bin/normcap",
"version": "v0.5.2"
},
{
"repository": "upscayl/upscayl",
"name": "upscayl",
"description": "🆙 Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.",
"group": "nondev",
"file_name": "upscayl",
"exec": "yes",
"last_update": "2024-06-01T14:48:20Z",
"downloads": "/home/jaandrle/bin/upscayl",
"version": "v2.11.5",
"glare": "AppImage"
},
{
"repository": "RasmusLindroth/tut",
"name": "tut",
"description": "TUI for Mastodon with vim inspired keys",
"group": "nondev",
"file_name": "tut",
"exec": "yes",
"last_update": "2023-01-26T17:48:00Z",
"downloads": "/home/jaandrle/bin/tut",
"version": "2.0.1",
"glare": "tut-amd64"
},
{
"repository": "sunner/ChatALL",
"name": "ChatALL",
"description": " Concurrently chat with ChatGPT, Bing Chat, bard, Alpaca, Vincuna, Claude, ChatGLM, MOSS, iFlytek Spark, ERNIE and more, discover the best answers",
"group": "skip",
"file_name": "chatall",
"exec": "yes",
"last_update": "2024-04-14T02:09:42Z",
"downloads": "/home/jaandrle/bin/chatall",
"version": "v1.71.100",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "jaandrle/bs",
"name": "bs",
"description": "The simplest possible build system using executables",
"group": "dev",
"file_name": "bs",
"exec": "yes",
"last_update": "2024-03-28T13:16:41Z",
"downloads": "/home/jaandrle/bin/bs",
"version": "v0.7.4",
"glare": "bs-linux"
},
{
"repository": "h3poteto/fedistar",
"name": "Fedistar",
"description": "Multi-column Mastodon, Pleroma, and Friendica client for desktop",
"group": "nondev",
"file_name": "fedistar",
"exec": "yes",
"last_update": "2024-08-08T13:46:23Z",
"downloads": "/home/jaandrle/bin/fedistar",
"version": "v1.9.10",
"glare": ".*amd64.*.AppImage"
},
{
"repository": "ollama/ollama",
"name": "ollama",
"description": "Get up and running with Llama 2 and other large language models locally",
"group": "ai",
"file_name": "ollama",
"exec": "yes",
"last_update": "2024-08-13T20:27:42Z",
"downloads": "/home/jaandrle/bin/ollama",
"version": "v0.3.6",
"glare": "linux-amd64"
},
{
"repository": "neovim/neovim",
"name": "neovim",
"tag_name_regex": "v.*",
"description": "Vim-fork focused on extensibility and usability",
"group": "skip",
"file_name": "nvim",
"exec": "yes",
"downloads": "/home/jaandrle/bin/nvim",
"version": "v0.9.5",
"last_update": "2023-12-30T13:31:47Z"
},
{
"repository": "viarotel-org/escrcpy",
"name": "Escrcpy",
"description": "📱 Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备,由 Electron 驱动。",
"group": "dev",
"file_name": "escrcpy",
"exec": "yes",
"last_update": "2024-08-03T17:09:45Z",
"downloads": "/home/jaandrle/bin/escrcpy",
"version": "v1.22.4",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "drovp/drovp",
"name": "drovp",
"description": "Desktop app for encoding, converting, upscaling, and much more.",
"group": "dev-test",
"file_name": "drovp",
"exec": "yes",
"last_update": "2023-12-06T11:30:02Z",
"downloads": "/home/jaandrle/bin/drovp",
"version": "0.8.0",
"glare": "x64.AppImage"
},
{
"repository": "janhq/jan",
"name": "Jan",
"description": "Jan is an open source alternative to ChatGPT that runs 100% offline on your computer",
"group": "ai",
"file_name": "jan",
"exec": "yes",
"last_update": "2024-07-15T08:37:42Z",
"downloads": "/home/jaandrle/bin/jan",
"version": "v0.5.2",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "Bin-Huang/chatbox",
"name": "Chatbox",
"description": "Chatbox is a desktop client for ChatGPT, Claude and other LLMs, available on Windows, Mac, Linux",
"group": "ai",
"file_name": "Chatbox",
"exec": "yes",
"last_update": "2024-05-15T06:10:47Z",
"downloads": "/home/jaandrle/bin/Chatbox",
"version": "v1.3.10",
"glare": ".*x86_64.*.AppImage"
}
]
}

View File

@ -1,8 +1,3 @@
[TabBox]
DesktopLayout=org.kde.breeze.desktop
DesktopListLayout=org.kde.breeze.desktop
LayoutName=org.kde.breeze.desktop
[Windows]
Placement=Centered

View File

@ -32,6 +32,22 @@
"--help",
"--version"
]
},
"§time.mjs": {
"npx": false,
"completions": {
"diff": [
"--unit"
],
"?": "diff",
"zone": [
"--z"
]
},
"completions_all": [
"--help",
"--version"
]
}
}
}

View File

@ -1,8 +1,3 @@
/* --print/--echo aliases */
Reflect.defineProperty($, "nosed", { get(){ return this.stdin.text(""); }, });
Reflect.defineProperty($, "nojq", { get(){ return this.stdin.json(null); }, });
Reflect.defineProperty($, "noawk", { get(){ return this.stdin.lines([]); }, });
/* deprecated/fallback */
globalThis.cyclicLoop= function*(items){
if(!items) items= 'win32'===process.platform ? '|/-\\' : "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏";
@ -14,5 +9,24 @@ globalThis.cyclicLoop= function*(items){
}
Reflect.defineProperty($, "clipboard", {
get(){ return s.$().run`xclip -o -selection clipboard`; }
get(){
if($.env.XDG_SESSION_TYPE === "x11")
return s.$().run`xclip -o -selection clipboard`;
return s.$().run`wl-paste`;
}
})
// /** Custom uncaughtException function */
// export const uncaughtException= console.log;
// /** Place for custom code when script starts */
// export function onscript(){}
/** Place for custom code when REPL starts (`--interactive`) */
export function onrepl(){
Reflect.defineProperty(s, "jq", { get(){ return file=> s.cat(file).xargs(JSON.parse); } });
}
/** Place for custom code when eval starts (`--eval`/`--print`) */
export function oneval(){ /* --print/--echo aliases */
Reflect.defineProperty($, "nosed", { get(){ return this.stdin.text(""); }, });
Reflect.defineProperty($, "nojq", { get(){ return this.stdin.json(null); }, });
Reflect.defineProperty($, "noawk", { get(){ return this.stdin.lines([]); }, });
}

View File

@ -0,0 +1,6 @@
// Settings in here override those in "Default/Preferences.sublime-settings",
// and are overridden in turn by syntax-specific settings.
{
"theme": "Merge Dark.sublime-theme",
"hardware_acceleration": "opengl",
}

View File

@ -0,0 +1,3 @@
{
"spell_check": false
}

View File

@ -0,0 +1,31 @@
// https://github.com/Sublime-Instincts/CommandsBrowser/tree/master/sm_commands_metadata
[
{
"caption": "Switch…",
"command": "checkout_branch",
},
{
"caption": "Switch -C…",
"command": "create_branch",
},
{
"caption": "Checkout -B…",
"command": "create_branch",
},
{
"caption": "Commit…",
"command": "commit",
},
{
"caption": "Browse repository",
"command": "git",
"args": { "argv": [ "browse" ] }
},
{
"caption": "Branch -D --all (delete remote and local branch)",
"command": "delete_branch",
"args": {
"argv": [ true, true, true ]
}
}
]

View File

@ -0,0 +1,6 @@
[
{
"keys": ["ctrl+;"],
"command": "show_command_palette"
},
]

View File

@ -0,0 +1,3 @@
{
"draw_white_space": "all"
}

View File

@ -0,0 +1,12 @@
// Settings in here override those in "Default/Preferences.sublime-settings",
// and are overridden in turn by syntax-specific settings.
{
"hardware_acceleration": "opengl",
"diff_algorithm": "match_git",
"diff_style": "auto",
"font_face": "Ubuntu Mono",
"side_bar_layout": "tabs",
"signature_error_highlighting": "no_public_key",
"theme": "Merge Dark.sublime-theme",
"expand_merge_commits_by_default": true,
}

View File

@ -0,0 +1,298 @@
/* stylelint-disable declaration-colon-space-after, scss/dollar-variable-colon-space-after */
:root {
--background-0: #1d2021;
--background-1: #282828;
--background-2: #32302f;
--background-3: #3c3836;
--background-4: #504945;
--background-5: #665c54;
--foreground-0: #665c54;
--foreground-1: #bdae93;
--foreground-2: #d5c4a1;
--foreground-3: #ebdbb2;
--foreground-4: #fbf1c7;
--red: #ea6962;
--orange: #e78a4e;
--yellow: #d8a657;
--green: #a9b665;
--cyan: #89b482;
--blue: #7daea3;
--magenta: #d3869b;
}
:root {
--border-radius-0: 3px;
--border-radius-1: 4px;
--border-radius-2: 6px;
--border-radius-3: 8px;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--shadow-0:
0 0.1px 0.1px 0 rgb(0 0 0 / 35%),
0 0.4px 0.5px -0.7px rgb(0 0 0 / 35%),
0 1.1px 1.2px -1.5px rgb(0 0 0 / 25%),
0 2.7px 3.2px -2px rgb(0 0 0 / 35%),
0 -0.1px 1.2px 0 rgb(0 0 0 / 20%),
0 0 3.5px -2.2px rgb(0 0 0 / 30%);
--shadow-1:
rgb(0 0 0 / 7%) 0 0.4px 0.5px 0,
rgb(0 0 0 / 7%) 0 1.2px 1.3px -0.8px,
rgb(0 0 0 / 7%) 0 2.9px 3.3px -1.7px,
rgb(0 0 0 / 7%) 0.1px 6.9px 7.8px -2.5px,
rgb(0 0 0 / 10%) 0 0 7.8px -2.5px;
--shadow-2:
rgb(0 0 0 / 15%) 0 0.4px 0.5px 0,
rgb(0 0 0 / 15%) 0 1.8px 2px -0.4px,
rgb(0 0 0 / 15%) 0 3.3px 3.7px -0.7px,
rgb(0 0 0 / 15%) 0.1px 5.3px 6px -1.1px,
rgb(0 0 0 / 15%) 0.1px 8.4px 9.5px -1.4px,
rgb(0 0 0 / 15%) 0.1px 13.1px 14.7px -1.8px,
rgb(0 0 0 / 15%) 0.2px 19.9px 22.4px -2.1px,
rgb(0 0 0 / 15%) 0.3px 29.3px 33px -2.5px,
rgb(0 0 0 / 17.5%) 0 0 9.5px -1.4px;
--font-family-sans:
-apple-system,
blinkmacsystemfont,
"Open Sans",
"Helvetica Neue",
"Segoe UI",
roboto,
oxygen,
ubuntu,
cantarell,
sans-serif;
--font-family-mono:
"Mono Lisa",
sfmono-regular,
"Source Code Pro",
menlo,
monaco,
consolas,
"Liberation Mono",
monospace;
--font-size-1: 10px;
--font-size-2: 16px;
--font-size-3: 20px;
--font-weight-mono-normal: 400;
--font-weight-sans-normal: 400;
--font-weight-mono-semibold: 500;
--font-weight-sans-semibold: 500;
--font-weight-mono-bold: 600;
--font-weight-sans-bold: 600;
}
:root {
--tridactyl-cmdl-font-size: var(--font-size-3);
--tridactyl-header-font-size: var(--font-size-2);
--tridactyl-cmdl-font-family: var(--font-family-mono);
--tridactyl-cmplt-font-family: var(--font-family-mono);
--tridactyl-header-font-weight: var(--font-weight-mono-semibold);
--tridactyl-fg: var(--foreground-2);
--tridactyl-bg: var(--background-2);
--tridactyl-url-fg: var(--blue);
--tridactyl-url-bg: var(--background-2);
--tridactyl-highlight-box-bg: var(--green);
--tridactyl-highlight-box-fg: var(--background-2);
--tridactyl-photon-colours-accent-1: var(--blue);
--tridactyl-hintspan-fg: var(--background-2) !important;
--tridactyl-hintspan-bg: var(--cyan) !important;
--tridactyl-hint-active-fg: none;
--tridactyl-hint-active-bg: none;
--tridactyl-hint-active-outline: none;
--tridactyl-hint-bg: none;
--tridactyl-hint-outline: none;
}
span.TridactylHint {
padding: 1px var(--space-1) 2px !important;
border-radius: var(--border-radius-0) !important;
font-family: var(--font-family-mono) !important;
font-weight: var(--font-weight-mono-semibold) !important;
box-shadow: var(--shadow-0) !important;
animation: 3s linear 1s infinite running hint !important;
}
span.TridactylHint:nth-child(1n) {
background: #ea6962 !important;
}
span.TridactylHint:nth-child(2n) {
background: #e78a4e !important;
}
span.TridactylHint:nth-child(3n) {
background: #d8a657 !important;
}
span.TridactylHint:nth-child(4n) {
background: #a9b665 !important;
}
span.TridactylHint:nth-child(5n) {
background: #89b482 !important;
}
span.TridactylHint:nth-child(6n) {
background: #7daea3 !important;
}
span.TridactylHint:nth-child(7n) {
background: #d3869b !important;
}
#trinewtab > img {
display: none;
}
.TridactylStatusIndicator {
position: fixed !important;
right: 5px !important;
bottom: 0 !important;
bottom: 5px !important;
padding: 0.25rem 0.375rem !important;
border: unset !important;
background: var(--tridactyl-bg) !important;
border-radius: var(--border-radius-1) !important;
box-shadow: var(--shadow-1) !important;
color: var(--yellow) !important;
font-size: 0.75rem !important;
font-weight: 500 !important;
opacity: 0.75;
}
#cmdline_iframe {
position: fixed !important;
z-index: 2147483647 !important;
top: 20% !important;
bottom: unset;
left: 10% !important;
width: 80% !important;
color-scheme: light;
}
.TridactylOwnNamespace > body {
display: flex;
box-sizing: border-box;
flex-direction: column;
align-items: stretch;
padding: 3rem;
}
#command-line-holder {
display: flex;
overflow: hidden;
flex-direction: row;
align-items: center;
order: 1;
background: var(--background-0);
border-radius: 0;
border-top-left-radius: var(--border-radius-3);
border-top-right-radius: var(--border-radius-3);
box-shadow: var(--shadow-2);
color: var(--tridactyl-bg);
opacity: 0.95;
}
#command-line-holder #tridactyl-colon {
padding-left: 0.75rem;
color: var(--foreground-1);
font-size: 1.25rem;
opacity: 0.5;
}
#tridactyl-input {
width: 100%;
box-sizing: border-box;
padding: 1rem;
padding-left: 0.25rem;
background: transparent;
color: var(--tridactyl-fg);
line-height: 1.5;
}
#completions {
--option-height: 1.4em;
display: inline-block;
overflow: hidden;
width: auto;
order: 2;
padding-bottom: 0.5rem;
border-top: unset;
background: var(--tridactyl-bg);
border-radius: 0;
border-bottom-left-radius: var(--border-radius-3);
border-bottom-right-radius: var(--border-radius-3);
box-shadow: var(--shadow-2);
color: var(--tridactyl-fg);
font-size: unset;
opacity: 0.95;
}
#completions > div {
min-height: auto;
max-height: calc(20 * var(--option-height));
}
#completions .sectionHeader {
padding: 0.5rem !important;
padding-bottom: 0.2rem;
padding-left: unset;
border-bottom: unset;
background: var(--background-1);
font-weight: var(--font-weight-mono-semibold);
}
#completions table.optionContainer {
padding-top: 0;
padding-bottom: 1rem;
border-spacing: 0;
table-layout: fixed;
}
#completions table.optionContainer td {
padding: 0.25rem 0.5rem;
}
#completions table.optionContainer td.content, #completions table.optionContainer td.documentation, #completions table.optionContainer td.title {
font-family: var(--font-family-sans);
font-weight: var(--font-weight-sans-normal);
}
#completions table.optionContainer td.title {
width: 50%;
font-weight: var(--font-weight-sans-semibold);
}
#completions table.optionContainer td.privatewindow, #completions table.optionContainer td.container {
display: none;
}
#completions table.optionContainer td.prefix {
color: var(--foreground-0);
font-weight: var(--font-weight-mono-bold);
}
#completions table.optionContainer td.icon {
position: relative;
}
#completions table.optionContainer td.icon img {
filter: sepia(100%);
}
#completions .focused {
background: var(--background-4);
color: var(--foreground-3);
}
#completions .focused .excmd {
color: var(--magenta);
}
#completions .focused .url {
background: var(--background-4);
color: var(--magenta);
}
#completions .BmarkCompletionSource {
min-height: unset;
max-height: unset;
}
#completions .BufferCompletionSource {
min-height: unset;
max-height: unset;
}
#completions .HistoryCompletionSource {
min-height: unset;
max-height: unset;
}
#completions .BufferCompletionSource tablecompletion-table {
width: unset;
border-spacing: unset;
font-size: unset;
table-layout: unset;
}
#completions .HistoryCompletionSource td.prefix {
display: none;
}
/*# sourceMappingURL=dark-soft.css.map */

View File

@ -0,0 +1,133 @@
:root {
/* Generic */
--tridactyl-font-family: Monospace;
--tridactyl-font-size: 12pt;
--tridactyl-bg: #141414;
--tridactyl-highlight: #C25C3C;
--tridactyl-focused-bg: #2F2F2F;
--tridactyl-fg: #E0D3B3;
--tridactyl-url: #4988BF;
--tridactyl-hint-fg: #FF774D;
/* Hint character tags */
--tridactyl-hintspan-font-family: var(--tridactyl-font-family);
--tridactyl-hintspan-font-size: var(--tridactyl-font-size);
--tridactyl-hintspan-font-weight: bold;
--tridactyl-hintspan-fg: var(--tridactyl-hint-fg);
--tridactyl-hintspan-bg: rgba(0, 0, 0, 0.7);
--tridactyl-hintspan-border-color: black;
--tridactyl-hintspan-border-width: 1px;
--tridactyl-hintspan-border-style: solid;
--tridactyl-hintspan-js-background: hsla(0, 0%, 65%);
/* Element highlights */
--tridactyl-hint-active-fg: none;
--tridactyl-hint-active-bg: none;
--tridactyl-hint-active-outline: none;
--tridactyl-hint-bg: none;
--tridactyl-hint-outline: 0px solid black;
/* :viewsource */
--tridactyl-vs-bg: var(--tridactyl-bg);
--tridactyl-vs-fg: var(--tridactyl-fg);
--tridactyl-vs-font-family: var(--tridactyl-font-family);
/*commandline*/
--tridactyl-cmdl-bg: var(--tridactyl-bg);
--tridactyl-cmdl-fg: var(--tridactyl-fg);
--tridactyl-font-size-cmdl: 1.30rem;
--tridactyl-cmdl-line-height: 1.30em;
--tridactyl-cmdl-font-family: var(--tridactyl-font-family);
--tridactyl-cmdl-font-size: var(--tridactyl-font-size-cmdl);
--tridactyl-cmdl-font-weight: 800;
/*completions*/
--tridactyl-cmplt-option-height: 1.60em;
--tridactyl-cmplt-fg: var(--tridactyl-fg);
--tridactyl-cmplt-bg: var(--tridactyl-bg);
--tridactyl-cmplt-font-size: var(--tridactyl-font-size);
--tridactyl-cmplt-font-family: var(--tridactyl-font-family);
/*url style*/
--tridactyl-url-text-decoration: none;
--tridactyl-url-fg: var(--tridactyl-url);
--tridactyl-url-bg: var(--tridactyl-bg);
--tridactyl-url-cursor: pointer;
}
.TridactylOwnNamespace body {
max-height: 500px;
min-height: 500px;
}
:root #command-line-holder {
order: 2;
border-top: 1px solid black; /* cmdline top */
background: var(--tridactyl-focused-bg);
}
:root #tridactyl-input {
background: var(--tridactyl-focused-bg);
}
:root #completions {
max-height: 470px;
min-height: 470px;
font-weight: 200;
}
:root #completions .sectionHeader {
display: none;
}
:root #tridactyl-colon::before {
content: " :";
font-size: var(--tridactyl-font-size-cmdl);
}
:root #completions > div {
max-height: 500px;
min-height: 500px;
padding: 5px;
}
:root #completions table {
white-space: nowrap;
-webkit-mask-image: linear-gradient(to right, rgba(0,0,0,1) 97%, rgba(0,0,0,0));
}
:root #completions table tr td.prefix,
:root #completions table tr td.privatewindow,
:root #completions table tr td.container {
display: none;
}
:root #completions .focused,
:root #completions .focused .url {
background: var(--tridactyl-focused-bg);
color: var(--tridactyl-highlight);
text-decoration: none;
}
:root #completions .SessionCompletionOption .extraInfo {
color: var(--tridactyl-url);
}
:root #completions table tr .title {
padding-left: 5px !important;
}
:root #cmdline_iframe {
position: fixed !important;
bottom: unset;
/* opacity: 1; */
top: 30% !important;
left: 23% !important;
width: 60% !important;
z-index: 2147483647 !important;
border: 1px solid black !important; /* around window */
box-shadow: rgba(0, 0, 0, 0.8) 0px 0px 5px !important;
}
:root #cmdline_iframe.cleanslate.hidden {
display: none !important;
}

View File

@ -43,8 +43,10 @@ unbindurl ^https://www.youtube.com/* <<
" see https://gist.github.com/jaandrle/031198ab5130deb903065138532cc066
bindurl ^https://www.youtube.com/* ss fillcmdline open B: YT
bindurl ^https://www.o2tv.cz/* ss fillcmdline open B: O2
bindurl ^https://chat.openai.com/* ss fillcmdline open B: OPENAI
bindurl ^https://chatgpt.com/* ss fillcmdline open B: OPENAI
bindurl ^https://chat.mistral.ai/chat* ss fillcmdline open B: OPENAI
bindurl ^https://rss.jaandrle.cz/* ss nmode ignore 1 mode normal
bindurl ^https://rss.jaandrle.cz/* sn hint -c div
command pauseVideos js Array.from(document.querySelectorAll("video")).forEach(el=> ( location.hostname!=="www.o2tv.cz" ? el.pause() : [ "Pauza" ].map(l=> document.querySelector(`[aria-label=${l}]`)).find(Boolean)?.dispatchEvent(new Event("click")) ))
tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${document.title.replace(/["':|\.,\?\!_]/g, '').replace(/ /g, '-').toLowerCase()}`)
@ -64,6 +66,7 @@ bind dd tabclose
unbind --mode=normal s
bind st fillcmdline_notrail tab
bind \t fillcmdline_notrail tab
" h keyboardlayoutoverrides … https://gistpreview.github.io/?324119c773fac31651f6422087b36804
" set keyboardlayoutoverrides "Digit2: ;, Backquote: :"
@ -83,7 +86,7 @@ bind --mode=normal n fillcmdline tabopen
bind --mode=normal N current_url tabopen
bind -c fillcmdline recontain
bind sc fillcmdline_notrail container
bind \c fillcmdline_notrail container
bind --mode=visual \t composite js "https://libretranslate.com/?source=auto&target=cs&q="+encodeURI(document.getSelection().toString()) | tabopen
bind --mode=visual \T composite js "https://translate.google.com/?sl=auto&tl=cs&op=translate&text="+encodeURI(document.getSelection().toString()) | tabopen
@ -96,12 +99,6 @@ bind gnC tabopen -c osobní https://calendar.google.com
bind goC open -c osobní https://calendar.google.com
bind gwC winopen -c osobní https://calendar.google.com
" Sites (mails) notes using Github Gists
bind sn js tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${document.title.replace(/["':|\.,\?\!_]/g, '').replace(/ /g, '-').toLowerCase()}`)
bind sN composite clipboard yankmd ; tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62/edit
bindurl ^https://mail.centrum.cz/* sn js tri.controller.acceptExCmd(`tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62#${(new URLSearchParams(window.location.search)).get("msg")}`)
bindurl ^https://mail.centrum.cz/* sN composite js tri.controller.acceptExCmd(`clipboard yank [${(new URLSearchParams(window.location.search)).get("msg")}](https://mail.centrum.cz/?msg=${(new URLSearchParams(window.location.search)).get("msg")})`) ; tabopen -c pracovní https://gist.github.com/jaandrle/ff1de72c500557f401e190b4ec05aa62/edit
alias hint_focus hint -;
quickmark c moz-extension://616498c0-3916-4f0b-b0a9-ce01ecf2298d/popup.html

4
.config/xremap.yml Normal file
View File

@ -0,0 +1,4 @@
keymap:
- name: Ctrl+tab alias
remap:
C-KEY_KPSLASH: C-KEY_TAB

206
.ctags Normal file
View File

@ -0,0 +1,206 @@
--exclude="*/node_modules/*"
--exclude=*.min.js
--exclude=*.min.css
--exclude=*.map
--exclude=.backup
--exclude=.sass-cache
--exclude=vendors
--exclude=.git
--langdef=css
--langmap=css:.css
--langmap=css:+.styl
--langmap=css:+.less
--regex-css=/^[ \t]*\.([A-Za-z0-9_-]+)/\1/c,class,classes/
--regex-css=/^[ \t]*#([A-Za-z0-9_-]+)/\1/i,id,ids/
--regex-css=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/
--regex-css=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/
--langdef=scss
--langmap=scss:.sass
--langmap=scss:+.scss
--regex-scss=/^[ \t]*@mixin ([A-Za-z0-9_-]+)/\1/m,mixin,mixins/
--regex-scss=/^[ \t]*@function ([A-Za-z0-9_-]+)/\1/f,function,functions/
--regex-scss=/^[ \t]*\$([A-Za-z0-9_-]+)/\1/v,variable,variables/
--regex-scss=/^([A-Za-z0-9_-]*)*\.([A-Za-z0-9_-]+) *[,{]/\2/c,class,classes/
--regex-scss=/^[ \t]+\.([A-Za-z0-9_-]+) *[,{]/\1/c,class,classes/
--regex-scss=/^(.*)*\#([A-Za-z0-9_-]+) *[,{]/\2/i,id,ids/
--regex-scss=/^[ \t]*#([A-Za-z0-9_-]+)/\1/i,id,ids/
--regex-scss=/(^([A-Za-z0-9_-])*([A-Za-z0-9_-]+)) *[,|\{]/\1/t,tag,tags/
--regex-scss=/(^([^\/\/])*)[ \t]+([A-Za-z0-9_-]+)) *[,|\{]/\3/t,tag,tags/
--regex-scss=/(^(.*, *)([A-Za-z0-9_-]+)) *[,|\{]/\3/t,tag,tags/
--regex-scss=/(^[ \t]+([A-Za-z0-9_-]+)) *[,|\{]/\1/t,tag,tags/
--regex-scss=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/d,media,media/
--langdef=stylus
--langmap=stylus:.styl
--regex-stylus=/^[ \t]*\.([A-Za-z0-9_-]+)/\1/c,class,classes/
--regex-stylus=/^[ \t]*#([A-Za-z0-9_-]+)/\1/i,id,ids/
--regex-stylus=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/
--regex-stylus=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/
--langdef=markdown
--langmap=markdown:.md
--regex-markdown=/^# (<.*>)?(.+)/\2/i,h1/
--regex-markdown=/^## (<.*>)?(.+)/\2/i,h2/
--regex-markdown=/^### (<.*>)?(.+)/\2/i,h3/
--langdef=js
--langmap=javascript:.js.es6.es.jsx.mjs
--javascript-kinds=-c-f-m-p-v
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\[/\1/A,Array,Arrays/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\[/\1/A,Array,Arrays/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\[/\1/A,Array,Arrays/b
--regex-javascript=/^[ \t]*class[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/C,Class,Classes/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\5/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\7/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}function[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\5/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}\({[ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\7/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}function[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)/\1/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*export[ \t]\{1,\}default[ \t]\{1,\}const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[^,]\{1,\},[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/E,Export,Exports/b
--regex-javascript=/^[ \t]*function[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t(]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*[(]function[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t(]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*async[ \t]function[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t(]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*[(]async[ \t]function[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t(]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\(async[ \t]\{1,\}\)*function[^\*][^\*]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\(async[ \t]\{1,\}\)*function[^\*][^\*]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*\(async[ \t]\{1,\}\)*function[^\*][^\*]/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*([^)]*$/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*([^)]*$/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*([^)]*$/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=.\{1,\}=>/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=.\{1,\}=>/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=.\{1,\}=>/\1/F,Function,Functions/b
--regex-javascript=/^[ \t]*function[ \t]*\*[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\1/G,Generator,Generators/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*function\([ \t]*\*\)/\1/G,Generator,Generators/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*function\([ \t]*\*\)/\1/G,Generator,Generators/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*function\([ \t]*\*\)/\1/G,Generator,Generators/b
--regex-javascript=/^[ \t]*\(\*[ \t]\)\([A-Za-z0-9_$]\{1,\}\)[ \t]*(.*)[ \t]*[{]/\2/G,Generator,Generators/b
--regex-javascript=/^[ \t]*import[ \t]\{1,\}\([{][ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\3/I,Import,Imports/b
--regex-javascript=/^[ \t]*import[ \t]\{1,\}\([{][ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\5/I,Import,Imports/b
--regex-javascript=/^[ \t]*import[ \t]\{1,\}\([{][ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)*\([A-Za-z0-9_]\{1,\}\),[ \t]*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\7/I,Import,Imports/b
--regex-javascript=/^[ \t]*import[ \t]\{1,\}type[ \t]\{1,\}\([{][ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\3/I,Import,Imports/b
--regex-javascript=/^[ \t]*import[ \t]\{1,\}typeof[ \t]\{1,\}\([{][ \t]*\)*\([A-Za-z0-9_\*]*[ \t]as[ \t]\)\([A-Za-z0-9_]\{1,\}\)/\3/I,Import,Imports/b
--regex-javascript=/^[ \t]*[A-Za-z0-9_]\{1,\}[ \t]as[ \t]\([A-Za-z0-9_]\{1,\}\)/\1/I,Import,Imports/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*function/\2/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*(/\2/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*function/\3/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*(/\3/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[:=][ \t]*[(]*function[ \t]*(/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[:=][ \t](\{1,\}/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[:=][ \t]\{1,\}async[ \t](\{1,\}/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*static[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*(/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*async[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*(/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)(.*)[ \t]*[{]/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*get[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*(/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*set[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*(/\1/M,Method,Methods/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)\.\([A-Za-z0-9_$]\{1,\}\)[ \t]*[=][ \t]*{/\2/P,Property,Properties/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*:[ \t]*[{"\/\[]/\1/P,Property,Properties/b
--regex-javascript=/^[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*:[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t,]*$/\1/P,Property,Properties/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[{]/\1/O,Object,Objects/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[{]/\1/O,Object,Objects/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[{]/\1/O,Object,Objects/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*styled/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*styled/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*styled/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*createGlobalStyle/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*createGlobalStyle/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*createGlobalStyle/\1/S,StyledComponent,StyledComponents/b
--regex-javascript=/\/\/[ \t]*\(FIXME\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(TODO\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(BUG\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(NOBUG\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(???\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(!!!\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(HACK\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/\/\/[ \t]*\(XXX\)[ \t]*:*\(.*\)/\1/T,Tag,Tags/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[0-9\"'\/]/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[0-9\"'\/]/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*[0-9\"'\/]/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*new/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*new/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*=[ \t]*new/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[,;]/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*[,;]/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*const[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*var[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}{[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[^}]*}[ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\2/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\3/V,Variable,Variables/b
--regex-javascript=/^[ \t]*let[ \t]\{1,\}\[[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\)[ \t]*,[ \t]*\([A-Za-z0-9_$]\{1,\}\).*\][ \t]*=/\4/V,Variable,Variables/b
--regex-javascript=/^[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\),$/\1/V,Variable,Variables/b
--regex-javascript=/^[ \t]\{1,\}\([A-Za-z0-9_$]\{1,\}\)$/\1/V,Variable,Variables/b
--langdef=typescript
--langmap=typescript:.ts.tsx
--regex-typescript=/^[ \t]*(export[ \t]+([a-z]+[ \t]+)?)?class[ \t]+([a-zA-Z0-9_$]+)/\3/c,classes/
--regex-typescript=/^[ \t]*(declare[ \t]+)?namespace[ \t]+([a-zA-Z0-9_$]+)/\2/c,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?module[ \t]+([a-zA-Z0-9_$]+)/\2/n,modules/
--regex-typescript=/^[ \t]*(export[ \t]+)?(default[ \t]+)?(async[ \t]+)?function(\*)?[ \t]+([a-zA-Z0-9_$]+)/\5/f,functions/
--regex-typescript=/^[ \t]*export[ \t]+(var|let|const)[ \t]+([a-zA-Z0-9_$]+)/\2/v,variables/
--regex-typescript=/^[ \t]*(var|let|const)[ \t]+([a-zA-Z0-9_$]+)[ \t]*=[ \t]*function[ \t]*[*]?[ \t]*\(\)/\2/v,varlambdas/
--regex-typescript=/^[ \t]*(export[ \t]+)?(public|protected|private)?[ \t]*(static[ \t]+)?(abstract[ \t]+)?(((get|set|readonly)[ \t]+)|(async[ \t]+[*]*[ \t]*))?(#?[a-zA-Z1-9_$]+)[ \t]*[:(]/\9/m,members/
--regex-typescript=/^[ \t]*(export[ \t]+)?interface[ \t]+([a-zA-Z0-9_$]+)/\2/i,interfaces/
--regex-typescript=/^[ \t]*(export[ \t]+)?type[ \t]+([a-zA-Z0-9_$]+)/\2/t,types/
--regex-typescript=/^[ \t]*(export[ \t]+)?enum[ \t]+([a-zA-Z0-9_$]+)/\2/e,enums/
--regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_$]+)/\1/I,imports/

View File

@ -8,7 +8,7 @@ set keymap vi-insert
set show-mode-in-prompt on
set vi-ins-mode-string ">_"
set vi-cmd-mode-string "$_"
# aka set wildmode=longest:full:list,full
# aka set wildmode=longest:full:list,full (tab and shift+tab)
TAB: menu-complete
"\e[Z": menu-complete-backward
set show-all-if-ambiguous on
@ -17,7 +17,8 @@ set menu-complete-display-prefix on
"\e[A":history-search-backward
"\e[B":history-search-forward
"\e\C-e": history-and-alias-expand-line
# shift+enter
"OM": history-and-alias-expand-line
set colored-stats On

View File

@ -3,7 +3,7 @@ AntiAliasFonts=true
BoldIntense=true
ColorScheme=DarkPastels
DimmValue=54
Font=Ubuntu Mono,9,-1,5,75,0,0,0,0,0,Bold
Font=Ubuntu Mono,9,-1,5,700,0,0,0,0,0,0,0,0,0,0,1,Bold
UseFontLineChararacters=false
[General]
@ -12,4 +12,5 @@ Name=Můj
Parent=FALLBACK/
[Scrolling]
HistoryMode=2
ScrollBarPosition=2

View File

@ -3,7 +3,7 @@ In fact, lots of settings are synced by Firefox itself.
So this folder contains just some infos around and settings for [tridactyl](#tridactyl).
## Related files
- [../../.tridactylrc](../../.tridactylrc)
- [../../.config/tridactyl/](../../.config/tridactyl/)
- [../native-messaging-hosts/tridactyl.json](../native-messaging-hosts/tridactyl.json)
## Extensions

View File

@ -53,6 +53,7 @@ bind-key U show-urls
unbind-key ^B
bind-key m bookmark
# TODO: replace with nocodb
bookmark-cmd "~/bin/pocket-sh-add.sh"
bookmark-autopilot yes

View File

@ -1,25 +1,21 @@
https://www.youtube.com/feeds/videos.xml?channel_id=UCMiyV_Ib77XLpzHPQH_q0qQ video
https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg video
https://www.youtube.com/feeds/videos.xml?channel_id=UCACJQqtYw6sASWAHXWkBWpw ! video
https://www.youtube.com/feeds/videos.xml?playlist_id=PLanJ0JNOqYbysIbQ3KnHkWeotmTEWXCTA ! video
https://www.youtube.com/feeds/videos.xml?channel_id=UC0398rTdnjLI1V_QypTEP4g ! video
https://www.youtube.com/feeds/videos.xml?playlist_id=PLCKZKxlikAKzhux_uS3BZgejHhYk8yOYO ! video
https://www.youtube.com/feeds/videos.xml?channel_id=UCPeHT7xKjaw_-8hHW0GEXLg ! video
https://www.youtube.com/feeds/videos.xml?channel_id=UCD9L1HvpYpmZ8rrXABARCRQ ! video
https://www.youtube.com/feeds/videos.xml?channel_id=UCONH73CdRXUjlh3-DdLGCPw ! video
https://herohero.co/services/functions/rss-feed?token=eyJhbGciOiJSUzI1NiJ9.eyJ1IjoiYWpzbHV6YnlsdXh1dnlueSIsImMiOiJuYXBvdGl0a3V6d3VhdWhvZCIsInQiOjE2ODU2MDk1ODl9.LfJHvtdm4fPq25NCfoC5ZU6cPmZLRjXO2Xhl6fcG78j-8tjatznyBDQdKwKiMfdQMKK9peOkYAKyIXTBvjBBN9XJ9CKoOnAfIyHiBlyo200TWeG3Ll37U8LRN7So4npT4-Qr_FzZGSMYO_ispVL6Gj2HYfwYORq6-1t78v9k5Ke7up-w4aM4-jUXD3_Zdsu70jJV5-fEAM11pgkfh8HydW9vm_MvkZ1q1DSIRlZR8jQNQZgGWeYMjzF9owD00TQGUGsXGNH0lit-IhFX9_VFqG5so5i6ugv8AyCJK7g3B59YV6TsWVANtWN5NB_B3f-TXSE4Cs7tOZrU0riVxI-4Ew ! video
https://www.youtube.com/feeds/videos.xml?channel_id=UCKlOmM_eB0nzTNiDFZibSSA !
"query:Sakitech Note/Update:title =~ \"(Note|Phones|phones)\" and title !~ \"(Wallpaper|wallpaper)\" and rssurl == \"https://www.youtube.com/feeds/videos.xml?channel_id=UCKlOmM_eB0nzTNiDFZibSSA\"" video
"exec:~/.newsboat/html2rss-streamCZ.mjs 'Kokoti na neděli' 'https://www.stream.cz/kokoti-na-nedeli'" ! video
"exec:~/.newsboat/html2rss-streamCZ.mjs 'Šťastné pondělí' 'https://www.stream.cz/stastne-pondeli'" !
"query:Šťastné pondělí:title =~ \"Šťastné pondělí\" and feedtitle == \"Šťastné pondělí\"" video
https://www.mall.tv/rssfeed/mikyrova-uzasna-pout-internetem ! video
"query:📹:tags # \"video\""
https://nitter.cz/spreadmastodon/rss
https://www.mfcr.cz/cs/rss/vydali-jsme-k-hospodareni-statu ! stát
https://www.sporicidluhopisycr.cz/cs/rss/aktuality ! stát
https://nitter.cz/gov_cz/rss ! stát
http://www.vlada.cz/cs/urad/RSS/rss.xml ! stát
https://mastodonczech.cz/@SpravedlnostCZ.rss ! stát
https://zpravobot.news/@NUKIB_CZ.rss ! stát
https://www.ceskezajmy.eu/feed/ ! stát
https://poladprahu.cz/category/novinky/feed/ ! stát
https://sdilenedomy.cz/feed/ ! stát
@ -27,18 +23,25 @@ https://sdilenedomy.cz/feed/ ! stát
https://www.irozhlas.cz/rss/irozhlas ! news
https://denikn.cz/feed?ref=inc ! news
# Voxpot Klub
https://kill-the-newsletter.com/feeds/qghk07pleeqa2hiy6054.xml ! news
https://www.voxpot.cz/feed/ ! news
https://www.investigace.cz/feed/ ! news
# PageNotFound.CZ
https://kill-the-newsletter.com/feeds/rblo6you9l4fpbgs3i53.xml ! news
https://gitea.jaandrle.cz/jaandrle/pagenotfound-cli/raw/branch/main/rss.xml
"query:📰👋:tags # \"news\""
https://denikn.cz/veda/feed?ref=inc ! news/science
"query:Petr Koubský:author = \"Petr Koubský\"" news/science
https://vedator.org/feed/ ! news/science
# TODO: https://www.threads.net/@vedator_cz
http://feeds.feedburner.com/Backreaction ! news/science
https://www.osel.cz/rss/rss.php ! news/science
https://news.mit.edu/rss/feed ! news/science
https://news.mit.edu/rss/research ! news/science
https://nautil.us/feed/ ! news/science
https://nitter.cz/PatrikKorenar/rss ! news/science
# ? tw PatrikKorenar → patreon, https://www.instagram.com/patrikkorenar
"query:📰🔬:tags # \"news/science\""
https://www.lupa.cz/rss/clanky/ ! news/tech
@ -50,6 +53,8 @@ https://www.vzhurudolu.cz/rss ! news/tech
https://anuradha.hashnode.dev/rss.xml ! news/tech
https://lea.verou.me/feed.xml ! news/tech
https://developer.mozilla.org/en-US/blog/rss.xml ! news/tech
# mozilla.ai
https://kill-the-newsletter.com/feeds/9a4r1e63xui0n5ozxs3j.xml ! news/tech
https://www.omgubuntu.co.uk/feed ! news/tech
https://servis.idnes.cz/rss.aspx?c=technet ! news/tech
"query:📰💻💡:tags # \"news/tech\""
@ -66,118 +71,75 @@ https://lemmy.ml/feeds/c/kde.xml?sort=Active ! lemmy
"query:📰👋💻💡 Lemmy:tags # \"lemmy\""
https://github.com/jordwalke.atom ! twitter/α
# https://nitter.cz/ell2cz/rss ! twitter/α
# https://nitter.cz/fieldsofmoab/rss ! twitter/α
# https://nitter.cz/cztomsik/rss ! twitter/α
# https://nitter.cz/sw_samuraj/rss ! twitter/α
# https://nitter.cz/AndroidDev/rss ! twitter/α
# https://nitter.cz/EduardStula/rss ! twitter/α
# https://nitter.cz/ubuntu_unity/rss ! twitter/α → ?https://ubuntuunity.org/blog/
https://gts.eilhart.cz/@kayla/feed.rss ! twitter/α
# TODO: https://www.threads.net/@annie.tumova
# TODO: https://www.threads.net/@filip.titlbach
https://www.youtube.com/feeds/videos.xml?channel_id=UCVHFbqXqoYvEWM1Ddxl0QDg ! twitter/α_hide
"query:#TheAndroidShow:title =~ \"^#TheAndroidShow\" and rssurl == \"https://www.youtube.com/feeds/videos.xml?channel_id=UCVHFbqXqoYvEWM1Ddxl0QDg\"" twitter/α
# TODO: https://ubuntuunity.org/blog/
https://blog.neon.kde.org/feed/ ! twitter/α
https://undinealmani.com/feed/ ! twitter/α
# https://nitter.cz/erikengheim/rss ! twitter/α
# https://nitter.cz/LeaVerou/rss ! twitter/α
# https://nitter.cz/jpschroeder/rss ! twitter/α
# https://nitter.cz/machal/rss ! twitter/α
# https://nitter.cz/devgirlFL/rss ! twitter/α
# https://nitter.cz/maxiorel/rss ! twitter/α
# https://nitter.cz/firt/rss ! twitter/α
https://princiya.com/newblog/feeds/all.atom.xml ! twitter/α
https://techhub.social/@erikengheim.rss ! twitter/α
https://github.com/justin-schroeder.atom ! twitter/α
# TODO: @jpschroeder@fosstodon.org
https://mastodon.social/@firt.rss ! twitter/α
https://princiya.com/feed/ ! twitter/α
https://davidwalsh.name/feed ! twitter/α
# https://nitter.cz/jakubvrana/rss ! twitter/α
https://jecas.cz/rss ! twitter/α
# JanKoWeb geekovo zdrojak
"query:📰👋💻💡 Twitter/α:tags # \"twitter/α\""
# https://nitter.cz/Zeptej_se_vedce/rss ! twitter/mixed
# https://nitter.cz/Olinium42/rss ! twitter/mixed
#
https://nitter.cz/narodnitymzen/rss ! twitter/mixed
# https://nitter.cz/Julianne_SF/rss ! twitter/α
#!
https://nitter.cz/_Case/rss ! twitter/α
#!
https://nitter.cz/olgarichterova/rss ! twitter/mixed
# https://nitter.cz/eicul/rss ! twitter/mixed
# https://nitter.cz/CO2IN/rss ! twitter/mixed
#
https://nitter.cz/Iluminator_cz/rss ! twitter/mixed
# TODO: https://www.threads.net/@Zeptej_se_vedce
# TODO: https://www.threads.net/@oliniumchemistry
# TODO: https://www.threads.net/@narodnitymzen
https://mindly.social/@adrianacerna.rss ! twitter/mixed
https://olgarichterova.cz/feed/ ! twitter/mixed
https://faktaoklimatu.cz/feed.xml ! twitter/mixed
#?
https://nitter.cz/anna_gumplova/rss ! twitter/mixed
#?
https://nitter.cz/DearAbbyHansen/rss ! twitter/mixed
# https://nitter.cz/FZU_AVCR/rss ! twitter/mixed
#!
https://nitter.cz/_A_d_e_l_k_a_/rss ! twitter/mixed
#!
https://nitter.cz/TGuthJarkovsky/rss ! twitter/mixed
# https://nitter.cz/ClaireAccendit/rss ! twitter/mixed
# https://nitter.cz/PavlaHub/rss ! twitter/mixed
# https://nitter.cz/laurencikova_k/rss ! twitter/mixed
# https://popculturedetective.tumblr.com/rss twitter/mixed
#!
https://nitter.cz/dan_prokop/rss ! twitter/mixed
https://www.paqresearch.cz/blog-feed.xml ! twitter/mixed
#!
https://nitter.cz/danusenerudova/rss ! twitter/mixed
#!
https://nitter.cz/Akademie_ved_CR/rss ! twitter/mixed
#!
https://nitter.cz/glacier_ecology/rss ! twitter/mixed
https://www.youtube.com/feeds/videos.xml?channel_id=UCtYxnvekc2-3P74TdLx0srQ ! twitter/mixed
# https://genderaveda.cz/
https://kill-the-newsletter.com/feeds/c6e1z94wpw0eds67.xml ! twitter/mixed
# FZU_AVCR
https://kill-the-newsletter.com/feeds/39xfn7p1cvf8dif4.xml ! twitter/mixed
# AVCR
https://kill-the-newsletter.com/feeds/5tww0ecg9y4twnxz.xml ! twitter/mixed
https://mastodonczech.cz/@ewajelinek.rss ! twitter/mixed
# TODO: https://www.threads.net/@claireklingenberg
# TODO: https://www.threads.net/@pavlahubalkova
# TODO: https://www.threads.net/@popdetective
https://zpravobot.news/@dan_prokop.rss ! twitter/mixed
https://www.paqresearch.cz/studie-a-clanky/rss/ ! twitter/mixed
https://archetypal.cz/feed/ ! twitter/mixed
# https://nitter.cz/MarieHermanova/rss ! twitter/mixed
# https://nitter.cz/NKC_CZ/rss ! twitter/mixed
#!
https://nitter.cz/lkristoufek/rss ! twitter/mixed
# https://nitter.cz/OSAliance/rss ! twitter/mixed
# https://nitter.cz/Madla_G/rss ! twitter/mixed
# https://nitter.cz/matfyz/rss ! twitter/mixed
#!
https://nitter.cz/Mitokochan/rss twitter/mixed
# TODO: https://www.threads.net/@mariehermanova
# Sociologicky
https://kill-the-newsletter.com/feeds/xmub9gn72ecekvbi.xml ! twitter/mixed
https://www.mimoagendu.cz/rss/ ! twitter/mixed
# https://nitter.cz/malyvedec/rss ! twitter/mixed
#!
https://nitter.cz/kasikp/rss ! twitter/mixed
# https://nitter.cz/CERN/rss ! twitter/mixed
# https://nitter.cz/josefslerka/rss ! twitter/mixed
# https://nitter.cz/hassmanm/rss ! twitter/mixed
#!
https://nitter.cz/marenamat/rss ! twitter/mixed
# https://nitter.cz/traintravels42/rss ! twitter/mixed
https://nitter.cz/JulieMontek/rss ! twitter/mixed
#
https://nitter.cz/bara_soukup/rss ! twitter/mixed
# TODO: https://www.threads.net/@barasoukup
# PulseofEuropeCZ KohoVolitEU
"query:📰👋💻💡 Twitter/mixed:tags # \"twitter/mixed\""
https://us8.campaign-archive.com/feed?u=5ec4c91d59d1b26aefb919e61&id=2ebe3120ac ! newsletters
# UX that actually works in 3 minutes or less
https://kill-the-newsletter.com/feeds/mx8wi1fifxu6scj8.xml ! newsletters
# Lékaři bez hranic
https://kill-the-newsletter.com/feeds/9l096daq56dxjw3z.xml ! newsletters
https://denikn.cz/autor/toman/feed/ ! newsletters
https://denikn.cz/tag/vylety-n/feed/ ! newsletters
https://denikn.cz/tag/evropska-unie/feed/ ! newsletters
"query:🗞️📰💡 Newsletters:tags # \"newsletters\""
# https://nitter.cz/randomMDN/rss dev/servises
# "exec:randomMDN rss --limit 3" dev/servises
https://botsin.space/@randomMDN.rss dev/servises
https://github.com/evanw/esbuild/releases.atom ! dev/servises
https://bun.sh/rss.xml ! dev/servises
https://www.githubstatus.com/history.rss ! dev/servises
# https://nitter.cz/GitHubSecurity/rss ! dev/servises
https://developer.apple.com/news/rss/news.rss "~Apple Dev News" dev/servises
# https://nitter.cz/JetBrains_Fleet/rss ! dev/servises → ?https://blog.jetbrains.com/feed/
# https://nitter.cz/NativeScript/rss ! dev/servises
# https://nitter.cz/sveltejs/rss ! dev/servises
# https://nitter.cz/github/rss ! dev/servises
https://cordova.apache.org/feed.xml ! twitter/α
https://www.mozilla.cz/feed/ ! twitter/α
#! https://nitter.cz/janovsky/rss ! twitter/α
# https://www.githubstatus.com/history.rss ! dev/servises
"query:⌨🖱:tags # \"dev/servises\""
https://github.com/mdn.atom ! dev/github
# Charles Games
https://kill-the-newsletter.com/feeds/spatxxuabdy4yboqeenu.xml ! dev/github
https://github.com/LeaVerou.atom ! dev/github
https://github.com/susieward/witchly-js/commits/main.atom ! dev/github
https://github.com/staltz.atom ! dev/github
@ -195,7 +157,6 @@ https://manipulatori.cz/feed/ ! desinfo
https://n3wjack.net/feed/ ! blogs
https://boundedlyrational.substack.com/feed ! blogs
https://blog.eischmann.cz/feed/ ! blogs
https://www.zoonpolitikon.cz/feed/ ! blogs
https://blog.zvestov.cz/feed.xml ! blogs
https://www.pirati.cz/feed.xml ! blogs
https://www.kdu.cz/system/rss ! blogs
@ -211,15 +172,51 @@ https://www.edna.cz/doctor-who/rss/ ! news/info
"query:🗞 💰📱:tags # \"news/info\""
http://feeds.bbci.co.uk/news/world/rss.xml ! news/rest
# https://feeds.a.dj.com/rss/RSSWorldNews.xml ! news/rest news/rest-wsj
# https://feeds.a.dj.com/rss/RSSWSJD.xml ! news/rest news/rest-wsj
https://domaci.hn.cz/?m=rss ! news/rest
https://ekonom.cz/?m=rss ! news/rest
https://vikend.hn.cz/?m=rss ! news/rest
https://procne.hn.cz/?m=rss ! news/rest
http://casopisargument.cz/?feed=rss2 ! news/rest
"query:↓ The Wall Street Journal:tags # \"news/rest-wsj\""
"query:🗞 🌐⏩:tags # \"news/rest\""
https://www.seznamzpravy.cz/rss ! rest
"query:🗞 💤:tags # \"rest\""
# TODO: https://www.threads.net/@pirativanbartos
https://mastodonczech.cz/@jantvrdon.rss ! mastodon/neak
https://mastodonczech.cz/@eliska.rss ! mastodon/neak
https://mastodon.rozhlas.cz/@kristinarohackova.rss ! mastodon/neak
https://mastodon.social/@Prof_Mirya.rss ! mastodon/neak
https://mastodonczech.cz/@NAKIT.rss ! mastodon/neak
https://mastodonczech.cz/@strakovka.rss ! mastodon/neak
https://mastodonczech.cz/@SpravedlnostCZ.rss ! mastodon/neak
https://witter.cz/@petrinfinite.rss ! mastodon/neak
https://mastodonczech.cz/@danusenerudova.rss ! mastodon/neak
# TODO: https://www.threads.net/@danusenerudova
https://witter.cz/@Apolenarychlikova.rss ! mastodon/neak
# TODO: https://www.threads.net/@apolenarychlikova
https://mastodonczech.cz/@marekl.rss ! mastodon/neak
https://mastodon.social/@spreadmastodon.rss ! mastodon/neak
https://mastodon.pirati.cz/@OlgaRichterova.rss ! mastodon/neak
# TODO: https://www.threads.net/@olga_piratka_richterova
https://witter.cz/@zeleni.rss ! mastodon/neak
https://mastodonczech.cz/@Lenislavka.rss ! mastodon/neak
https://witter.cz/@guth.rss ! mastodon/neak
# TODO: https://www.threads.net/@tgjarkovsky
https://mastodonczech.cz/@madla.rss ! mastodon/neak
# TODO: https://www.threads.net/@madla__g
https://witter.cz/@malyvedec.rss ! mastodon/neak
# TODO: https://www.threads.net/@malyvedec
"query:🗞 🐘:tags # \"mastodon/neak\""
# TW bez náhrady:
# fieldsofmoab, machal, devgirlFL,
# jakubvrana, _Case, eicul,
# CO2IN, Iluminator_cz, DearAbbyHansen,
# _A_d_e_l_k_a_, ClaireAccendit, laurencikova_k,
# PopDetective, dan_prokop, danusenerudova,
# glacier_ecology, MarieHermanova, lkristoufek,
# matfyz, Mitokochan, kasikp,
# CERN, josefslerka, traintravels42,
# JulieMontek, bara_soukup, janovsky

View File

@ -35,3 +35,8 @@ export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
PATH=/home/jaandrle/.local/share/umake/bin:$PATH
[ -f /home/jaandrle/.bash/.profile_androidsdk ] && . /home/jaandrle/.bash/.profile_androidsdk
# Added by Toolbox App
export PATH="$PATH:/home/jaandrle/.local/share/JetBrains/Toolbox/scripts"

View File

@ -1,3 +1,3 @@
execute "source ".system("mdexpr-agenda vim 2> /dev/null")
command MDEXPRclose lclose | lexpr []
call scommands#map('m', 'MDEXPR', "n")
cabbrev žm feedkeys("MDEXPR")

View File

@ -9,9 +9,13 @@ let g:user_tips_list= [
\ ':set foldopen-=search',
\ 'Buffer info → <c-g> g<c-g> … :map <buffer><tab>',
\ 'Rename file → :saveas * | :silent !rm # | :bw #',
\ 'packadd cfilter',
\ 'packadd cfilter justify',
\ 'Next word location → ]I [I ]<c-I> [<c-I> … <leader>]I <leader>[I',
\ ':w !sudo tee > /dev/null %',
\ 'v`]o`[ visual last change — https://www.reddit.com/r/vim/comments/ypt6uf/comment/ivl68xu/?utm_source=share&utm_medium=web2x&context=3',
\ ':exec ''argdo bw'' | %argdelete',
\ 'changes g, g; || jumps ^i ^o || marks g`…',
\ 'set foldmethod=marker/indent foldlevel=i foldnestmax=j',
\ '`0·`"·`.·`` … last exit·edit·change·pre-jump … also g''*',
\ 'q: q? q/ … @: ?<cr> /<cr> :&<cr> , ;',
\ '<c-n><c-p> <c-x><c-l> <c-x><c-f> … :h ins-completion',

83
.vimrc
View File

@ -1,10 +1,10 @@
""" VIM config file | Jan Andrle | 2024-02-07 (VIM >=8.1)
""" VIM config file | Jan Andrle | 2024-07-10 (VIM >=8.1)
"" #region B Base
scriptencoding utf-8 | set encoding=utf-8
let $BASH_ENV = "~/.bashrc"
set runtimepath^=~/.vim/bundle/*
packadd! matchit
set hidden
" set hidden
set title
colorscheme codedark
@ -13,6 +13,7 @@
set belloff=esc
set confirm
set guioptions-=T
set shortmess-=i
cabbrev <expr> %PWD% execute('pwd')
cabbrev <expr> %CD% fnameescape(expand('%:p:h'))
@ -48,25 +49,15 @@
let g:vifm_replace_netrw= 1 | let g:loaded_netrw= 1 | let g:loaded_netrwPlugin= 1 " this line needs to be commented to let vim dowmload spelllangs!!! … see http://jdem.cz/fgyw25
""" #endregion BB
"" #endregion B
"" #region H Helpers + remap 'sS' (primary ss, see `vim-scommands`)
nmap sh :execute 'ALTredir :map s \<bar> map '.mapleader.' \<bar> map § \<bar> map ů \<bar> map ; \<bar> map U \<bar> map ž'<cr>:g/^$/d<cr>:g/^v s/m$<cr>úgg
call scommands#map('s', 'CL', "n,v")
"" #region H Helpers
command! -nargs=? CLscratch 10split | enew | setlocal buftype=nofile bufhidden=wipe noswapfile nobuflisted | if <q-args>!='' | execute 'normal "'.<q-args>.'p' | endif | nnoremap <buffer> ;q :q<cr>
call scommands#map('S', 'SET', "n,v")
call scommands#map('a', 'ALT', "n,V")
cabbrev ALTR ALTredrawSyntax
set grepprg=LC_ALL=C\ grep\ -nrsH
command! -nargs=0
\ ALTredrawSyntax edit | exec 'normal `"' | exec 'set ft='.&ft
command! -complete=command -bar -range -nargs=+
\ ALTredir call jaandrle_utils#redir(0, <q-args>, <range>, <line1>, <line2>)
command! -nargs=+ -complete=file_in_path -bar
\ ALTgrep cgetexpr jaandrle_utils#grep(<f-args>) | call setqflist([], 'a', {'title': ':' . g:jaandrle_utils#last_command})
command! -nargs=+ -complete=file_in_path -bar
\ ALTlgrep lgetexpr jaandrle_utils#grep(<f-args>) | call setloclist(0, [], 'a', {'title': ':' . g:jaandrle_utils#last_command})
command! -nargs=0
\ ALTargsBWQA execute 'argdo bw' | %argdelete
let g:quickfix_len= 0
function! QuickFixStatus() abort
@ -99,7 +90,7 @@
"" #endregion H
"" #region SLH Status Line + Command Line + History (general) + Sessions + File Update, …
set showcmd cmdheight=2 showmode
set wildmenu wildoptions=pum
set wildmenu wildoptions=pum,fuzzy
"" wildmode=list:longest,list:full " Tab autocomplete in command mode
cabbrev wbw w<bar>bw
@ -144,13 +135,12 @@
set pastetoggle=<F2> | nnoremap <F2> :set invpaste paste?<CR>
nnoremap <silent> <leader>" :call jaandrle_utils#copyRegister()<cr>
nmap <expr> š buffer_number("#")==-1 ? "sš<cr>" : "\<c-^>"
nmap s3 :buffers<cr>:b<space>
nmap sš :CtrlPBuffer<cr>
nmap č sš
nmap <expr> š buffer_number("#")==-1 ? "\<leader>š<cr>" : "\<c-^>"
nmap <leader>3 :buffers<cr>:b<space>
nmap <leader>š :CtrlPBuffer<cr>
nmap č <leader>š
let g:ctrlp_map = 'ě'
command! -nargs=? SETctrlp execute 'nnoremap '.g:ctrlp_map.' :CtrlP <args><cr>'
call scommands#map(g:ctrlp_map, 'CtrlP', "n")
let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_prompt_mappings= {
\ 'ToggleType(1)': ['<c-up>'],
@ -173,7 +163,6 @@
set wildignore+=*.pdf,*.psd
nmap <leader>e :Vifm<cr>
call scommands#map('e', 'Vifm', "n")
nnoremap gx :silent exec "!xdg-open '".shellescape(substitute(expand('<cfile>'), '?', '\\?', ''), 1)."'" \| redraw!<cr>
vnoremap gx :silent exec "!xdg-open '".shellescape(substitute(mini_enhancement#selectedText(), '?', '\\?', ''), 1)."'" \| redraw!<cr>
"" #endregion FOS
@ -181,13 +170,9 @@
set hlsearch incsearch " highlight search, start when typing
if maparg('<C-L>', 'n') ==# ''
nnoremap <silent> <c-l> :nohlsearch<c-r>=has('diff')?'<bar>diffupdate':''<cr><cr><c-l> | endif
call scommands#map('n', 'NAV', "n")
command! NAVjumps call jaandrle_utils#gotoJumpChange('jump')
command! NAVchanges call jaandrle_utils#gotoJumpChange('change')
command! NAVmarks call jaandrle_utils#gotoMarks()
let g:markbar_persist_mark_names = v:false
let g:markbar_cache_with_hidden_buffers = v:false " last buffers are reopened as hidden https://github.com/Yilin-Yang/vim-markbar/blob/9f5a948d44652074bf2b90d3da6a400d8a369ba5/doc/vim-markbar.txt#L136
nmap <Leader>m <Plug>ToggleMarkbar
"" #endregion EN
"" #region EA Editing adjustment + Syntax + White chars + Folds
@ -200,7 +185,7 @@
let g:markdown_fenced_languages= [ 'javascript', 'js=javascript', 'json', 'html', 'php', 'bash', 'vim', 'vimscript=javascript', 'sass' ]
augroup conceal
autocmd!
au FileType markdown
au FileType markdown
\ syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained conceal
\| syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart concealends
au FileType markdown,json
@ -250,14 +235,10 @@
nnoremap <s-k> a<cr><esc>
for l in [ 'y', 'p', 'P', 'd' ] | for m in [ 'n', 'v' ]
execute m.'noremap <leader>'.l.' "+'.l | endfor | endfor
" ik ak (last change pseudo-text objects) src: https://www.reddit.com/r/vim/comments/ypt6uf/comment/ivl68xu/?utm_source=share&utm_medium=web2x&context=3
xnoremap ik `]o`[
onoremap ik :<C-u>normal vik<cr>
onoremap ak :<C-u>normal vikV<cr>
" FOLDS
command! -nargs=0 SETFOLDregions set foldmethod=marker
command! -nargs=1 SETFOLDindent set foldmethod=indent | let &foldlevel=<q-args> | let &foldnestmax=<q-args>+1
command! -nargs=* SETFOLDindents set foldmethod=indent | let &foldlevel=split(<q-args>, ' ')[0] | let &foldnestmax=split(<q-args>, ' ')[1]
" TODO DEL: FOLDS
" TODO DEL: command! -nargs=0 SETFOLDregions set foldmethod=marker
" TODO DEL: command! -nargs=1 SETFOLDindent set foldmethod=indent | let &foldlevel=<q-args> | let &foldnestmax=<q-args>+1
" TODO DEL: command! -nargs=* SETFOLDindents set foldmethod=indent | let &foldlevel=split(<q-args>, ' ')[0] | let &foldnestmax=split(<q-args>, ' ')[1]
set foldmarker=#region,#endregion
" SAVE VIEW
set viewoptions=cursor,folds
@ -268,7 +249,6 @@
augroup END
"" #endregion EA
"" #region GIT
call scommands#map('g', 'GIT', "n,V")
function s:gitCompletion(_, CmdLine, __)
let l:cmd= a:CmdLine->split()
let l:cmd_start= l:cmd[0]
@ -306,7 +286,7 @@
\ GITblameThis GitMessenger
"" #endregion GIT
"" #region COC COC and so on, compilers, code/commands completions
let g:coc_global_extensions= ['coc-css', 'coc-docthis', 'coc-emmet', 'coc-emoji', 'coc-eslint', 'coc-gitmoji', 'coc-html', 'coc-json', 'coc-marketplace', 'coc-phpls', 'coc-sh', 'coc-snippets', 'coc-styled-components', 'coc-svg', 'coc-tabnine', 'coc-tsserver']
let g:coc_global_extensions= ['coc-css', 'coc-docthis', 'coc-emmet', 'coc-emoji', 'coc-pretty-ts-errors', 'coc-eslint', 'coc-gitmoji', 'coc-html', 'coc-json', 'coc-marketplace', 'coc-phpls', 'coc-sh', 'coc-snippets', 'coc-styled-components', 'coc-svg', 'coc-tabnine', 'coc-tsserver']
" https://github.com/antonk52/cssmodules-language-server
call coc#config('languageserver.cssmodules', {
\ "command": "cssmodules-language-server",
@ -343,7 +323,7 @@
endif
endfunction
set completeopt=menuone,preview,noinsert,noselect
set completeopt=menuone,longest,preview "longest vs ,noinsert,noselect
inoremap <silent><expr> <F1> coc#pum#visible() ? coc#pum#confirm() : coc#refresh()
set wildcharm=<f1>
inoremap <silent><expr> <tab> coc#pum#visible() ? coc#pum#next(1) : <sid>check_back_space() ? "\<tab>" : coc#refresh()
@ -356,11 +336,13 @@
nmap <silent> gd <Plug>(coc-definition)
nmap <leader>/ :CocSearch
nmap <leader>? <leader>/
command! -bang NAVdiagnostic call CocActionAsync('diagnostic'.( "<bang>" == '!' ? 'Previous' : 'Next' ))
command! NAVdefinition call CocActionAsync('jumpDefinition')
command! NAVtype call CocActionAsync('jumpTypeDefinition')
command! NAVimplementation call CocActionAsync('jumpImplementation')
command! NAVreferences call CocActionAsync('jumpReferences')
command! -nargs=* -complete=customlist,<sid>SCommandCocActionComplete CocAction call CocActionAsync(<f-args>)
function s:SCommandCocActionComplete(argLead, cmdLine, cursorPos)
return readfile(expand('~/.vim/pack/coc/start/coc.nvim/doc/tags'), 'r')
\->filter('v:val =~ ''^CocAction''')
\->map({ k, v -> strpart(v, 11, stridx(v, ')')-12) })
\->filter({ k, v -> v =~ a:argLead && !v->empty() })
endfunction
" navigate diagnostics, use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
nnoremap <silent> gh :call <sid>show_documentation(expand("<cword>"))<cr>
vnoremap <silent> gh :<c-u>call <sid>show_documentation(mini_enhancement#selectedText())<cr>
@ -376,11 +358,13 @@
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
endif
""" #endregion COCP
command! -nargs=? SETFOLDcoc :call CocAction('fold', <f-args>)
" TODO DEL: command! -nargs=? SETFOLDcoc :call CocAction('fold', <f-args>)
call scommands#map('C', 'Coc', "n,v")
nmap sc :CocList lists<cr>
nmap Sc :CocListResume<cr>
command! -nargs=? CLhelpMy if <q-args>!='' | exec 'map '.<q-args> | else | call popup_notification([
\ 'Custom mappings starting: '.mapleader.',§, ů, ;, U, ž',
\ 'Custom commands starting: CL, SET, ALT, CtrlP, Vifm, GIT, Coc',
\ 'Helpful commands: CocAction, CocCommand, CocList',
\], #{ line: &lines-3, pos: 'botleft', moved: 'any', close: 'button', time: 6000 }) | endif
nnoremap <c-g> :CLwhereami<cr>
command! CLwhereami :call popup_notification([
\expand('%:t').( coc#status() != "" ? '/'.CocAction("getCurrentFunctionSymbol")."\t…\t".coc#status() : '' ),
@ -388,18 +372,13 @@
\"Line:\t".line('.').' / '.line('$'),
\"Column:\t".col('.').' / '.col('$'),
\"Path:\t".expand('%:p:h')
\], #{ line: &lines-3, pos: 'botleft', moved: 'any', close: 'button', time: 3000 })
\], #{ line: &lines-3, pos: 'botleft', moved: 'any', close: 'button', time: 6000 })
command! CLhelpCocPlug call feedkeys(':<c-u>help <Plug>(coc ', 'tn')
command! CLhelpCocAction call feedkeys(':<c-u>help CocAction('' ', 'tn')
command! CLrename call CocActionAsync('rename')
command! CLrenameFile exec 'CocCommand workspace.renameCurrentFile'
command! -nargs=? -bang
\ CLreplace call feedkeys(':<c-u>'.(<q-args>==''?'.':<q-args>).'s/'.("<bang>"=='!'?mini_enhancement#selectedText():expand('<cword>')).'//cgODODOD', 'tn')
command! CLrepeatLastChange call feedkeys('/\V<C-r>"<CR>cgn<C-a><Esc>', 'tn')
command! CLjsdoc exec 'CocCommand docthis.documentThis'
command! CLjshintGlobal normal yiwmm?\/\* global<cr><c-l>f*hi, p`m
command! CLcodeactionCursor call CocActionAsync('codeAction', 'cursor')
command! CLfixCodeQuick call CocActionAsync('doQuickfix')
function! AIcodeFn(range, ...) range abort
let l:instruction = 'Hi, can you help me with ' . &filetype . 'code? Thanks in advance. I would like to: '

View File

@ -1,26 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bing Image Of The Day</title>
<style>
body{ display: flex; flex-flow: row nowrap;
width: 100vw; height: 100vh; overflow: hidden; margin: 0;
}
div{ position: relative; flex: 1; }
img{ height: 100%; width: 100%; object-fit: contain; }
.detail{ position: absolute; bottom: 0; left: 0; padding: .5rem 1rem;
text-align: center; background: rgba(0, 0, 0, .35); color: whitesmoke; }
.prev .detail{ left: initial; right: 0; }
@media screen and (max-aspect-ratio: 16/9){
.prev{display: none;}
}
</style>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bing Image Of The Day</title>
<style>
body{ display: flex; flex-flow: row nowrap;
width: 100vw; height: 100vh; overflow: hidden; margin: 0;
}
div{ position: relative; flex: 1; }
img{ height: 100%; width: 100%; object-fit: cover; }
.detail{ position: absolute; bottom: 0; left: 0; padding: .5rem 1rem;
max-width: 35ch;
text-align: center; background: rgba(0, 0, 0, .35); color: whitesmoke; }
.prev .detail{ left: initial; right: 0; }
@media screen and (max-aspect-ratio: 16/9){
.prev{display: none;}
}
</style>
</head>
<body>
<div class="now"> <img src="now.jpg"> <div class="detail">::now::</div> </div>
<div class="prev"> <img src="prev.jpg"> <div class="detail">::prev::</div> </div>
<div class="now"> <img src="now.jpg"> <div class="detail">::now::</div> </div>
<div class="prev"> <img src="prev.jpg"> <div class="detail">::prev::</div> </div>
</body>
</html>

View File

@ -14,10 +14,11 @@ see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git
## Files overview
- [Bash](./.bash/README.md)
- [Vim](./.vim/README.md)
- [Geany](./.config/geany/README.md)
- [Vifm](./.config/vifm/README.md)
- [SSH](./.ssh/README.md)
- [Newsboat](./.newsboat/README.md)
- Git: [.gitconfig](./.gitconfig), [gh](./.config/gh/config.yml)
- [git](./.config/git/config), [gh](./.config/gh/config.yml)
- [KDE Neon](#kde-neon)
- [Mozilla Firefox](./.mozilla/firefox/README.md)
- [Bin scripts and executables](./bin/README.md)
@ -25,7 +26,7 @@ see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git
## On a new machine
1. install git
1. `cd ~`
1. `gd_branch=main`
1. `gd_branch=main` (see also variants `main-termux`)
1. `git clone --bare --branch $gd_branch --depth 1 --recurse-submodules --shallow-submodules git@jaandrle.cz:jaandrle/dotfiles.git ~/.dotfiles`
1. `alias gitdotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"'`
1. `gitdotfiles config --local status.showUntrackedFiles no`
@ -34,23 +35,48 @@ see for example [How to Store Dotfiles - A Bare Git Repository \| Atlassian Git
1. `gitdotfiles checkout -f`
1. `gitdotfiles submodule update --init --recursive`
## KDE Neon
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
- Using HTML Wallpaper (wip)
- [Bing Image Of The Day](./Obrázky/Bing Image Of The Day/index_template.html)
- [GNOME Keyring in KDE Plasma - JWillikers](https://www.jwillikers.com/gnome-keyring-in-kde-plasma)
- `sudo apt install $(check-language-support)`, see [Popup Language support is incomplete](http://unix.stackexchange.com/questions/421066/ddg#421079)
- [KDE Neon does not have an hibernation option? : kde](https://www.reddit.com/r/kde/comments/6n5m49/kde_neon_does_not_have_an_hibernation_option/dk7hd8v/)
- [kde plasma 5 - How to use miracast as an extended desktop on Linux? - Super User](https://superuser.com/questions/1160078/how-to-use-miracast-as-an-extended-desktop-on-linux)
- [Best tiling extensions for kwin? : kde](https://www.reddit.com/r/kde/comments/qgsv2u/best_tiling_extensions_for_kwin/?sort=new)
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
- [Setup git on the CLI to use 2FA with GitHub](https://gist.github.com/ateucher/4634038875263d10fb4817e5ad3d332f)
- [G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Main](https://gmic.eu/)
## PC log (cs)
Sekce obsahuje log změn v Tuxedo laptopu s KDE Neon.
- [Aloxaf/silicon: Create beautiful image of your source code.](https://github.com/Aloxaf/silicon) {DONE <2024-03-07> *utils* agenda}$
### KDE Neon 6.0 (22.04)
{NEXT <2024-03-20> *tilling* *hud* *html-wallpaper* *virtual-desktop* *klipper* agenda}$
- mostly OK
- [ ] Kup is missing in Settings (only restore files option is available): *investigation → report a bug*
- [ ] !!! Event calendar widget (in progress [ALikesToCode/plasma-applet-eventcalendar at plasma-6](https://github.com/ALikesToCode/plasma-applet-eventcalendar/tree/plasma-6))
- [ ] tilling → try to use native, try to use [zeroxoneafour/polonium: Tiling window manager for KWin 5.27](https://github.com/zeroxoneafour/polonium) (when there will be a new release)
- [ ] WIP: hud ([uszie/plasma-hud), in KDE Plasma.](https://github.com/uszie/plasma-hud)/[Zren/plasma-hud](https://github.com/Zren/plasma-hud) still works on X11), but maybe Ctrl+Alt+i and so on is OK?
- testing to use command palletes in programs and sets shortcuts to `ctr+;` (✓ kde programs, ✓ gimp, ✓ libreoffice, ✓ inkscape, ✓ vscode)
- [ ] [Fingerprint reader support : r/tuxedocomputers](https://www.reddit.com/r/tuxedocomputers/comments/176fscp/fingerprint_reader_support/), still receiving “no match”
- [ ] [Clipboard support in Wayland · Issue #5157 · vim/vim](https://github.com/vim/vim/issues/5157#issuecomment-776008833)
- [ ] partially FIXED by update: Wayland go to sleep even the external monitor is connected (HDMI)
- *→ seems to be this issue [438716 Lid close leads to suspend even when external monitor is attached](https://bugs.kde.org/show_bug.cgi?id=438716)*
- needs to keyboard/mouse imput to intterupt the go sleep process
- [x] [PSA: How to re-enable LibreOffice integration in Plasma 6 : r/kde](https://www.reddit.com/r/kde/comments/1b9k755/psa_how_to_reenable_libreoffice_integration_in/)
- [x] FIXED by update: ~desktop exceptionally freeze for less than a second: *investigation → report a bug*~
- [x] FIXED by update: ~logout/poweroff dialog not showing and not working: *investigation → report a bug* … see below~
- [x] krunner not launching → created `/usr/share/dbus-1/services/org.kde.krunner.service` (see below)
- [x] meta+tab (last virtual desktop) → workaround [./bin/kde6-workarounds.mjs](./bin/kde6-workarounds.mjs)
- [x] klipper (edit last item) → workaround [./bin/kde6-workarounds.mjs](./bin/kde6-workarounds.mjs)
- [x] Active Window Control replaced with Window Title widget and its better
- [x] FIXED by widget update: ~html wallpaper → workaround just concat images (see [./bin/§wallpaper\_BIOTD](./bin/§wallpaper_BIOTD))~
- [x] ctrl+tab using [k0kubun/xremap: Key remapper for X11 and Wayland](https://github.com/k0kubun/xremap) and `sudo crontab -e`+`@reboot` and [./.config/xremap.yml](./.config/xremap.yml)
- [ ] [`npx npmkill` — Why are node_modules SO BIG 🤦‍♂️ #javascript #software #technology #code #webdev - YouTube](https://www.youtube.com/shorts/VgPNtow7fNM?app=desktop&si=Kl7CH3vCoyH7tqFU)
```bash
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout 1
Cannot find 'org.kde.KSMServerInterface.logout' in object /KSMServer at org.kde.ksmserver
```
[KDE Bugtracking System Main Page](https://bugs.kde.org/)
```ini
[D-BUS Service]
Name=org.kde.krunner
Exec=/usr/bin/krunner
```
### KDE neon 5.26 (22.04)
{DONE <2022-10-25 17:21> *mail* *hud* *klíčenka* agenda}$
@ -80,9 +106,18 @@ Sekce obsahuje log změn v Tuxedo laptopu s KDE Neon.
Postupováno podle návodu [Rename the `~/.local/lib/python3.8/site-packages/pkg_resources` folder to `pkg_resources_back`](https://askubuntu.com/a/1398073).
### kwin-tiling
- https://gitlab.com/faho/kwin-tiling/
### KDE Neon
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
- Using HTML Wallpaper (wip)
- [Bing Image Of The Day](./Obrázky/Bing Image Of The Day/index_template.html)
- [GNOME Keyring in KDE Plasma - JWillikers](https://www.jwillikers.com/gnome-keyring-in-kde-plasma)
- `sudo apt install $(check-language-support)`, see [Popup Language support is incomplete](http://unix.stackexchange.com/questions/421066/ddg#421079)
- [KDE Neon does not have an hibernation option? : kde](https://www.reddit.com/r/kde/comments/6n5m49/kde_neon_does_not_have_an_hibernation_option/dk7hd8v/)
- [kde plasma 5 - How to use miracast as an extended desktop on Linux? - Super User](https://superuser.com/questions/1160078/how-to-use-miracast-as-an-extended-desktop-on-linux)
- [Best tiling extensions for kwin? : kde](https://www.reddit.com/r/kde/comments/qgsv2u/best_tiling_extensions_for_kwin/?sort=new), https://gitlab.com/faho/kwin-tiling/
- [KDE Plasma5 Fixes](https://zren.github.io/kde/)
- [Setup git on the CLI to use 2FA with GitHub](https://gist.github.com/ateucher/4634038875263d10fb4817e5ad3d332f)
- [G'MIC - GREYC's Magic for Image Computing: A Full-Featured Open-Source Framework for Image Processing - Main](https://gmic.eu/)
<details>
<summary>`{… cmd}$` explanation</summary>

View File

@ -7,9 +7,9 @@
"file_name": "github-desktop",
"exec": "yes",
"description": "Fork of GitHub Desktop to support various Linux distributions",
"last_update": "2023-12-20T15:25:06Z",
"last_update": "2024-03-31T17:49:36Z",
"downloads": "/home/jaandrle/bin/github-desktop",
"version": "release-3.3.6-linux3"
"version": "release-3.3.12-linux2"
},
{
"repository": "jaandrle/jaaCSS-cli",
@ -29,9 +29,9 @@
"group": "nondev",
"file_name": "youtube-music",
"exec": "yes",
"last_update": "2024-01-05T14:44:27Z",
"last_update": "2024-03-26T10:58:44Z",
"downloads": "/home/jaandrle/bin/youtube-music",
"version": "v3.2.2"
"version": "v3.3.5"
},
{
"repository": "ArchGPT/insomnium",
@ -93,8 +93,8 @@
{
"repository": "dynobo/normcap",
"name": "NormCap",
"description": "OCR powered screen-capture tool to capture information instead of images",
"group": "nondev",
"description": "Switched to flatpak version | OCR powered screen-capture tool to capture information instead of images",
"group": "skip",
"file_name": "normcap",
"exec": "yes",
"last_update": "2023-12-12T22:23:37Z",
@ -108,9 +108,9 @@
"group": "nondev",
"file_name": "upscayl",
"exec": "yes",
"last_update": "2024-01-16T09:54:25Z",
"last_update": "2024-02-29T16:31:09Z",
"downloads": "/home/jaandrle/bin/upscayl",
"version": "v2.9.8"
"version": "v2.10.0"
},
{
"repository": "RasmusLindroth/tut",
@ -141,9 +141,9 @@
"group": "dev",
"file_name": "bs",
"exec": "yes",
"last_update": "2023-06-30T07:48:58Z",
"last_update": "2024-03-28T13:16:41Z",
"downloads": "/home/jaandrle/bin/bs",
"version": "v0.7.3"
"version": "v0.7.4"
},
{
"repository": "h3poteto/fedistar",
@ -152,9 +152,9 @@
"group": "nondev",
"file_name": "fedistar",
"exec": "yes",
"last_update": "2024-01-29T10:29:58Z",
"last_update": "2024-03-29T15:39:36Z",
"downloads": "/home/jaandrle/bin/fedistar",
"version": "v1.8.3"
"version": "v1.9.2"
},
{
"repository": "ollama/ollama",
@ -163,9 +163,9 @@
"group": "ai",
"file_name": "ollama",
"exec": "yes",
"last_update": "2024-01-26T18:19:36Z",
"last_update": "2024-03-10T02:24:04Z",
"downloads": "/home/jaandrle/bin/ollama",
"version": "v0.1.22"
"version": "v0.1.29"
},
{
"repository": "neovim/neovim",
@ -186,9 +186,9 @@
"group": "dev",
"file_name": "escrcpy",
"exec": "yes",
"last_update": "2023-12-27T01:18:21Z",
"last_update": "2024-03-29T03:30:14Z",
"downloads": "/home/jaandrle/bin/escrcpy",
"version": "v1.16.8"
"version": "v1.17.8"
},
{
"repository": "drovp/drovp",
@ -208,9 +208,31 @@
"group": "ai",
"file_name": "jan",
"exec": "yes",
"last_update": "2024-01-29T05:19:22Z",
"last_update": "2024-03-11T06:34:40Z",
"downloads": "/home/jaandrle/bin/jan",
"version": "v0.4.5"
"version": "v0.4.8"
},
{
"repository": "Bin-Huang/chatbox",
"name": "Chatbox",
"description": "Chatbox is a desktop client for ChatGPT, Claude and other LLMs, available on Windows, Mac, Linux",
"group": "ai",
"file_name": "Chatbox",
"exec": "yes",
"last_update": "2024-03-15T15:58:59Z",
"downloads": "/home/jaandrle/bin/Chatbox",
"version": "v1.3.1"
},
{
"repository": "Helium314/HeliBoard",
"name": "HeliBoard",
"description": "Customizable and privacy-conscious open-source keyboard",
"group": "android",
"file_name": "heliboard.apk",
"exec": "no",
"last_update": "2024-03-31T20:11:03Z",
"downloads": "/home/jaandrle/bin/heliboard.apk",
"version": "v1.0"
}
]
}

253
bin/github-releases.mjs Executable file
View File

@ -0,0 +1,253 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
// "\x1b[38;2;150;150;150m"
// https://talyian.github.io/ansicolors/
/**
* Represents a package record stored locally
*
* @typedef ConfigPackage
* @type {Object}
* @property {string} repository - Repo in the form `<owner>/<repo>`
* @property {string} name - Name/Identifier
* @property {string} description - A description of the repo/package
* @property {string} file_name - The name of the file as stored locally
* @property {"yes"|"no"} exec - Whether the file is executable
* @property {string} last_update - The date and time of the last update
* @property {string} downloads - The path to the file
* @property {string} version - The version of the file
* @property {string} tag_name_regex - Filter only matching releases
* */
/**
* @typedef Config
* @type {{ packages: ConfigPackage[] }}
* */
/**
* Represents a GitHub release information.
*
* @typedef {Object} GitHubRelease
* @property {number} id - The ID of the GitHub release.
* @property {string} url - The URL of the GitHub release.
* @property {string} assets_url - The URL of the assets associated with the GitHub release.
* @property {string} html_url - The HTML URL of the GitHub release.
* @property {string} tag_name - The tag name of the GitHub release.
* @property {string} published_at - The publication date of the GitHub release.
*/
import { join } from "node:path";
const path_config= $.xdg.config`github-releases`;
const path_config_json= join(path_config, "config.json");
const path_config_lock= join(path_config, "lock");
const path_temp= $.xdg.temp`github-releases.json`;
let url_api= "github";
const urls_api= {
github: "https://api.github.com/repos/",
ungh: "https://ungh.cc/repos/"
};
const url_download= "https://glare.now.sh/"; // https://github.com/Contextualist/glare
const css= echo.css`
.pkg { color: lightcyan; }
.ok { color: lightgreen; }
.err { color: lightred; }
.skip { color: red; color: gray; }
.spin { display: list-item; list-style: --terminal-spin; }
`;
$.api()
.version("2.1.0")
.describe("Helper for working with “packages” stored in GitHub releases.")
.option("--verbose", "Verbose output (WIP)")
.option("--group, -G", "Filter by group (not awaiable for noGRA)")
.option("--repository, -R", "Filter by repository (not awaiable for noGRA)")
.option("--api", [ "Choose API URL",
"- GitHub (default): https://api.github.com/repos/",
"- Ungh: https://ungh.cc/repos/", "(not awaiable for noGRA)" ], "github")
.command("unlock", "[noGRA] DANGER: Removes lock file. Use only if you know what you are doing!")
.action(function(){
s.rm(path_config_lock);
})
.command("config [mode]", [ "[noGR] Config (file), use `mode` with these options:",
"- `edit`: opens config file in terminal editor using `$EDITOR` (defaults to vim)",
"- `path`: prints path to config file"
])
.action(async function(mode= "path"){
switch(mode){
case "path": echo(path_config_json); break;
case "edit":
const editor= $.env.EDITOR || "vim";
await s.runA`${editor} ${path_config_json}`.pipe(process.stdout);
break;
default:
echo(`Unknown mode: '${mode}'. See '--help' for details.`);
}
$.exit(0);
})
.command("ls", [ "Lists registered packages",
"Repositories marked with `-` signifies that the package is in the 'skip' group.",
"These are registered by this script but not managed by it (updates, etc).",
"Repositories marked with `+` signify that updates of the package are checked."
])
.action(function(filter){
const config = readConfig();
for(const { repository, version, description, group } of grepPackages(config, filter))
if(group!=="skip")
echo(`+ %c${repository}%c@${version ? version : "—"}: %c${description}`, css.pkg, css.unset, css.skip);
else
echo(`- %c${repository}: ${description}`, css.skip);
$.exit(0);
})
.command("check", "Shows/checks updates for registered packages")
.option("--cache", "Use cache [yes, no]", "yes")
.action(async function({ cache, ...filter }){
const config = readConfig();
const results= await check(grepPackages(config, filter), cache);
for(const { status, value } of results)
echoPkgStatus(status, value);
if(!results.length) echo("Nothing to do.");
$.exit(0);
})
.command("update", "Updates registered packages")
.action(async function(filter){
if(s.test("-f", path_config_lock))
return $.error(`The lock file '${path_config_lock}' already exists! Check if some other instance is running.`);
s.touch(path_config_lock);
const config = readConfig();
const results= await check(grepPackages(config, filter));
const start= Date.now();
let done= 0;
let todo= [];
echo("Collecting packages to update…");
for(const { status, value } of results){
if(status!==3 || value.local.group==="skip") continue;
echo("%c"+value.local.repository, css.pkg);
todo.push(download(
value,
()=> done+= 1,
config.target
));
}
const { length }= todo;
if(!length){
echo("%cAll up-to-date!%c Nothing to do.", css.ok);
} else {
const id= setInterval(()=>
echo.use("-R", `%cUpdating packages (${done}/${length})`, css.spin), 500);
const updates= await Promise.allSettled(todo);
clearInterval(id);
echo("Updating packages completed:");
for (const { status, value, reason } of updates) {
if(status==="rejected"){
echo("%c✗ TBD reason.local.repository: %c"+reason.err, css.err);
continue;
}
const { local, remote }= value;
echo("%c✓ "+local.repository+"%c@"+remote.tag_name, css.ok, css.skip);
}
s.echo(JSON.stringify(config, null, "\t")).to(path_config_json);
}
s.rm(path_config_lock);
$.exit(0);
})
.parse();
import { createWriteStream } from "node:fs";
async function download(value, onprogress, target){
const { repository, glare }= value.local;
const { tag_name }= value.remote;
if(!glare) return Promise.reject({ err: "Missing 'glare' in config.", ...value });
const response= await fetch(url_download+repository+`@${tag_name}/${glare}`);
const buffer= Buffer.from(await response.arrayBuffer());
const downloads= target+value.local.file_name;
const ws= createWriteStream(downloads, { flags: "w" });
ws.write(buffer);
Object.assign(value.local, {
last_update: value.remote.published_at,
version: value.remote.tag_name,
downloads
});
if(value.local.exec==="yes")
s.chmod("+x", downloads);
onprogress();
return value;
}
function grepPackages({ packages }, { group, repository, api, verbose }){
if(api && api!==url_api && urls_api.hasOwnProperty(api))
url_api= api;
if(verbose)
echo(`Using API: ${url_api} (${urls_api[url_api]})`);
const f= {};
let is_filter= false;
if(group){ is_filter= true; f.group= group; }
if(repository){ is_filter= true; f.repository= repository; }
if(verbose)
echo("Filter:", f);
if(!is_filter) return packages;
return packages.filter(r=> Object.keys(f).every(k=> r[k]===f[k]));
}
function echoPkgStatus(status, { local, remote }){
let status_css, status_text;
if(local.group==="skip"){
status_text= "skipped";
status_css= "skip";
} else {
status_text= status===3 ? "outdated" : "up-to-date";
status_css= status===3 ? "err" : "ok";
}
echo((status_text==="outdated" ? "+" : "-") + " %c"+local.repository + "%c: %c"+status_text+"%c (%c"+remote.tag_name+"%c)",
css.pkg, css.unset, css[status_css], css.unset, css.skip, css.unset);
}
/**
* @param {Config.packages} packages
* @return {{ status: 0|1|2|3, value: { remote: GitHubRelease, local: ConfigPackage } }}
* */
async function check(packages, cache){
return (await pipe(
ps=> ps.map(p=> fetchRelease(p, cache).then(remote=> ({ local: p, remote }))),
ps=> Promise.allSettled(ps)
)(packages))
.map(({ status, ...v })=> status==="rejected" ?
{ status: -1, value: v } :
{ status: packageStatus(v.value.local, v.value.remote), value: v.value })
.filter(({ status, value })=> {
if(status!==-1) return true;
echo("%c"+value.reason, css.err);
});
}
/** @type {(local: ConfigPackage, remote: GitHubRelease)=> 0|1|2|3} */
function packageStatus({ last_update: local }, { published_at: remote }){
if(!remote) return 0;
if(!local) return 3;
if(remote===local) return 1;
return 2+(local<remote);
}
/** @param {ConfigPackage} package */
async function fetchRelease({ repository, tag_name_regex }, cache){
const headers= { 'User-Agent': 'node' };
if(cache==="no") headers['Cache-Control'] = 'no-cache';
const url= urls_api[url_api]+repository+"/releases";
const releases= await fetch(url, { headers }).then(res=> res.json());
if(releases.message) return $.error(url+": "+releases.message);
if(url.includes("github.com"))
return releases.find(function ({ draft, published_at, tag_name }){
if(draft||!published_at) return false;
if(!tag_name_regex) return true;
return (new RegExp(tag_name_regex, 'g')).test(tag_name);
});
const { draft, publishedAt, tag }= releases.releases.find(function ({ draft, publishedAt, tag }){
if(draft||!publishedAt) return false;
if(!tag_name_regex) return true;
return (new RegExp(tag_name_regex, 'g')).test(tag);
});
return { draft, published_at: publishedAt, tag_name: tag };
}
function readConfig(){
if(!s.test("-f", path_config_json)) return { packages: [] };
const out= Object.assign({ target: "~/bin/" },
s.cat(path_config_json).xargs(JSON.parse));
if(out.target.startsWith("~/")) out.target= $.xdg.home(out.target.slice(2));
return out;
}

78
bin/kde6-workarounds.mjs Executable file
View File

@ -0,0 +1,78 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
const pathLastDesktop= ()=> $.xdg.temp`kde6-workarounds-last-desktop.txt`;
const css= echo.css`
.code { color: gray; }
`;
$.api()
.version("2024-02-29")
.describe("Workarounds for KDE6.")
.command("logout")
.action(function(){
$.is_silent= true;
const res= s.run([
"echo ::options::",
"|",
"rofi -dmenu -p 'Logout' -l 4 -theme-str 'window { width: 25ch; }' -normal-window"
].join(" "), {
options: [ "-", "poweroff", "reboot" ].join("\n")
}).trim();
if(res && res!=="-") s.run(res);
$.exit(0);
})
.command("klipper-edit", "Edit last item in klipper.")
.action(async function(){
$.is_silent= true;
const qdbus= "qdbus org.kde.klipper /klipper org.kde.klipper.klipper.";
try{
const candidate= s.run(`${qdbus}getClipboardContents`).trim();
const content= await $.read({ "-p": "Edit", completions: [ candidate ] });
s.run(`${qdbus}setClipboardContents "${content}"`);
$.exit(0);
} catch (_){
$.exit(1);
}
})
.command("desktops-alttab", "Workaround for KDE6 alt-tab between virtual desktops.")
.action(function(){
const path= pathLastDesktop();
// Regarding ★ : this is a workaround for diagonal switching (it duplicates desktop index)
let desktop= s.cat(path).trim() || "1";
if(desktop.length>3){ // ★
const [ _1, _2, ..._3 ]= desktop.slice(-4, desktop.length);
if(_1===_2)
desktop= desktop.slice(0, -4).concat(_1, ..._3);
}
if(desktop.length>2){ // ★
const [ _1, _2 ]= desktop.slice(-2, desktop.length);
if(_1===_2)
desktop= desktop.slice(0, -1);
}
if(desktop.length>2){
desktop= desktop.slice(-2, desktop.length);
s.echo(desktop).to(path);
}
echo(desktop);
s.run`qdbus org.kde.KWin /KWin org.kde.KWin.setCurrentDesktop ${desktop[0]}`;
$.exit(0);
})
.command("desktops-last-dbus")
.action(function(){
echo([
"dbus-monitor",
'"interface=org.kde.KWin.VirtualDesktopManager" "member=currentChanged"',
"|",
'xargs -e -I {} kde6-workarounds.mjs desktops-last-save {}'
].join(" "));
$.exit(0);
})
.command("desktops-last-save <dbus>", "Workaround for KDE6 alt-tab between virtual desktops.")
.action(function(dbus){
if(-1===dbus.indexOf("path=/VirtualDesktopManager; interface=org.kde.KWin.VirtualDesktopManager; member=currentChanged"))
return $.exit(1);
const desktop= s.run`qdbus org.kde.KWin /KWin org.kde.KWin.currentDesktop`.trim();
s.echo(desktop).toEnd(pathLastDesktop());
})
.parse();

View File

@ -1,5 +1,6 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
import { kwallet } from "./§kwallet.mjs";
const url_api= "https://nocodb.jaandrle.cz/api/v1/db/data/v1/Linky/Linky";
$.api()
.command("add-md")
@ -9,7 +10,7 @@ $.api()
const res= await fetch(url_api, {
body: JSON.stringify({ Popis: title.slice(1), Url: url.slice(0, -1) }),
headers: { "xc-token": "Js7Qu0oT_wTmGJDFKlIZEBhwk87WF0L1wLmQO01F",
headers: { "xc-token": kwallet([ "readPassword", "Passwords", "nocodb-linky" ])[0].toString(),
"accept": "application/json", "Content-Type": "application/json"
},
method: "post"

View File

@ -2,7 +2,37 @@
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
$.api("")
.version("2023-08-11")
.version("2024-03-18")
.command("silicon [file]", [
"Generovat obrázek s kódem pro sdílení na sociálních sítích. (alternativa k Carbon)",
"Toto je jen drobný wrapper s mými defaultními parametry.",
"Další nápověda viz `silicon --help`.",
])
.option("--title", "Set window title (default: file name).")
.option("--range", "Select lines from file in the form `start:end`")
.option("--font-size, --fs", "Font size", 25)
.action(function silicon(file, { title= file, range, fs, ["font-size"]: _fs, _, ...args }){
args= Object.assign({
theme: "OneHalfDark",
font: `Ubuntu Mono =${fs}`,
background: "#f06d78",
["shadow-blur-radius"]: 30,
["tab-width"]: 2
}, args);
args= Object.keys(args).flatMap(key=> [ "--"+key, args[key] ]);
let from= file;
const index_ext= file.lastIndexOf(".");
const output= !file ? "silicon.png" : file.slice(0, index_ext+1)+"png";
if(range && typeof range=== "string" && range.includes(":")){
from= $.xdg.temp`silicon-range${file.slice(index_ext)}`;
const content= s.$().cat(file).toString().split(/\r?\n/).slice(...range.split(":").map(n=> parseInt(n)+1));
s.echo(content.join("\n")).to(from);
}
s.run`silicon ${from} --output ${output} --window-title ${title} ${args}`;
echo(`Generated ${output}`);
if(from!== file) s.rm(from);
$.exit(0);
})
.command("textInImage [file]", "Generovat obrázek s textem pro sdílení na sociálních sítích.")
.alias("tii")
.option("--pointsize", "Text size", "62")
@ -41,6 +71,7 @@ function textSplit(file, { limit, counter, text }){
function textInImage(file, { text, gravity, pointsize }){
text= getText(file, text);
const output= !file ? "textInImage.png" : (({ pathname: p })=> p.slice(1, p.lastIndexOf(".")+1)+"png")(new URL(file, "file://"));
if(s.test("-f", output)) s.rm(output);
const round_corners= [ //https://9to5answer.com/rounding-corners-of-pictures-with-imagemagick
"\\(",
"+clone -alpha extract",

View File

@ -68,8 +68,7 @@ $.api("", true)
.map(pipe(
j=> j.choices[0].text.trim(),
convertToArray,
j=> (console.log(j), j),
format==="regular" ? i=> i : i=> gitmoji(i, format==="git3moji"),
format==="regular" || format==="conventional" ? i=> i : i=> gitmoji(i, format==="git3moji"),
a=> a.join("\n")
))
.join("\n\n");

157
bin/§kwallet.mjs Executable file
View File

@ -0,0 +1,157 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
const css= echo.css`
.error{ color: lightred; }
.code, .method{ color: lightblue; }
.code::before, .code::after{ content: "\`"; }
.li{ padding-left: 2ch; }
`;
const default_wallet= "kdewallet";
const cmd= "qdbus";
if(!s.which(cmd))
$.exit(1, echo([
`%cError: ${cmd} not found.`,
`%cInstall it with: %csudo apt install ${cmd}`,
].join("\n"), css.error, css.unset, css.code));
import { EventEmitter } from "node:events";
const events= new EventEmitter();
const exit_event= "exit";
if($.isMain(import.meta)){
events.on(exit_event, $.exit);
$.api("", true)
.version("2024-03-05")
.describe([
`KWallet CLI using ${cmd}.`,
"Call with no arguments to list all methods.",
])
.example("--wallet kdewallet folderList")
.example("--wallet kdewallet readPassword folder entry")
.option("--wallet, -w", "Wallet name", default_wallet)
.action(function main({ _, wallet }){
const [ results, is_ls ]= kwallet(_, { wallet });
if(is_ls) echoLs(results);
else echo(results);
events.emit(exit_event);
})
.parse();
}
/**
* @param {string[]} _ Query/arguments for qdbus
* @param {object} [options]
* @param {string} [options.wallet] Wallet name
* @returns {[ string[], true ]|[ string, false ]}
* */
export function kwallet(_, { wallet= default_wallet }= {}){
const qdbus= qdbusGenerator({
service: "org.kde.kwalletd6",
methods: "/modules/kwalletd6",
wallet,
exit_event
});
if(!_.length)
return [ qdbus(), true ];
else{
//TODO: Map (`--literal` in qdbus and decode the result `echoMap`)
const result= qdbus(_);
return [ result, false ];
}
}
function qdbusGenerator({ service, methods, wallet, exit_event }){
const name= getScriptName();
const no_id= [
'allWalletsClosed',
'applicationDisconnected',
'folderListUpdated',
'folderUpdated',
'walletClosed',
'walletCreated',
'walletDeleted',
'walletListDirty',
'walletOpened',
'changePassword',
'close',
'closeAllWallets',
'deleteWallet',
'disconnectApplication',
'folderDoesNotExist',
'isEnabled',
'isOpen',
'keyDoesNotExist',
'localWallet',
'networkWallet',
'open',
'openAsync',
'openPath',
'openPathAsync',
'pamOpen',
'reconfigure',
'users',
'wallets'
];
let id;
const qdbus= (...args)=> s.$().run`${cmd} ${service} ${methods} ${args}`;
events.on(exit_event, ()=>{
if(!id) return;
qdbus("close", id, false, name);
id= null;
});
return function([ method, ...args ]= []){
if(!method) return qdbus();
if(no_id.includes(method)) return qdbus(method, ...args);
if(!id) open();
return qdbus(method, id, ...args, name);
};
function open(){
id= qdbus("open", wallet, 0, name).trim();
return id;
}
}
function echoMap(map){
map= map.slice(1, -1).split(", ").map(n=> Number.parseInt(n));
const ab= new ArrayBuffer(map.length);
const view= new Uint8Array(ab);
for(let i= 0; i<map.length; i++)
view[i]= map[i];
const words= [];
for(let i= 0; i<map.length; i+= 4){
words.push(String.fromCharCode.apply(null, view.subarray(i, i+4)));
}
pipe(
echo
)(words);
}
function echoLs(list){
const ns= "org.kde.KWallet.";
pipe(
list=> list.split("\n").filter(l=> l.startsWith("method") && -1!==l.indexOf(ns)),
list=> list.map(l=> l.slice(l.indexOf(" ")+1)).map(l=> l.replace(ns, "")),
list=> list.reduce((o, l)=> (o[Number(l.indexOf("int handle")!==-1)].push(l), o), [ [], [] ]),
([ no_wallet, wallet ])=> [
"Methods available without wallet:",
...no_wallet.map(formatMethod),
"Methods available with wallet (" + echo.format("%c--wallet", css.code) + " option):",
...wallet.map(formatMethod)
].join("\n"),
echo
)(list);
function formatMethod(line){
const ch_type= line.indexOf(" ")+1;
const ch_name= line.indexOf("(", ch_type);
return echo.format([
"",
line.slice(0, ch_type),
line.slice(ch_type, ch_name),
line.slice(ch_name)
].join("%c"), css.li, css.method, css.unset);
}
}
function getScriptName(){
const { url }= import.meta;
return (new URL(url)).href.slice((new URL("./", url).href.length));
}

86
bin/§time.mjs Executable file
View File

@ -0,0 +1,86 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
const units= {
second: 1000,
get minute(){ return this.second*60; },
get hour(){ return this.minute*60; },
get day(){ return this.hour*24; },
get month(){ return this.day*30; },
get year(){ return this.day*365; }
};
$.api()
.version("2024-03-27")
.command("diff <time> [reference]", [
"Returns remaining time diff <time>.",
"The <time> is argument to bash `date -d <time> +%s`.",
"Optionally, you can specify <reference> (with the same format) to compare with. By default it is current time."
])
.alias("?")
.option("--unit", "Unit, use one of the: "+Object.keys(units).join(", "))
.action(diff)
.command("zone [time]", "Returns times in different time zones.")
.option("-z", "Use multiple times to see time in different time zones.")
.action(zone)
.parse();
function diff(given, reference, { unit }){
const date_now= !reference ? new Date() : date("[reference]", reference);
const date_given= date("<time>", given);
debugger;
const rtf= new Intl.RelativeTimeFormat();
let future= 1;
let diff= date_given - date_now;
if(diff < 0){
future= -1;
diff= -diff;
}
if(unit){
if(unit.endsWith("s")) unit= unit.slice(0, -1);
echo(rtf.format(future*Math.floor(diff/units[unit]), unit));
$.exit(0);
}
diff= echoUnit(future, diff, "year", rtf);
diff= echoUnit(future, diff, "month", rtf);
diff= echoUnit(future, diff, "day", rtf);
diff= echoUnit(future, diff, "hour", rtf);
diff= echoUnit(future, diff, "minute", rtf);
diff= echoUnit(future, diff, "second", rtf);
$.exit(0);
}
function zone(time, { z: zones }){
if(!Array.isArray(zones)) zones= zones ? [ zones ] : [];
if(!zones.length)
return $.error("Please specify at least one zone.");
const date_given= time ? date("[time]", time) : new Date();
if(date_given.toLocaleString() === "Invalid Date")
return $.error(date_given);
const max_length= Math.max(...zones.map(zone=> zone.length));
const dtf= timeZone=> new Intl.DateTimeFormat(undefined, { timeZone, dateStyle: "full", timeStyle: "long", hour12: false });
for(const zone of zones)
echo(zone.padStart(max_length, " "), "—", dtf(zone).format(date_given));
$.exit(0);
}
function date(name, given){
const date_given= new Date(s.$().run`date -d ${given} +%Y-%m-%dT%H:%M:%S%z`.trim());
if(date_given.toLocaleString() === "Invalid Date")
return $.exit(1, echo(name, date_given));
return date_given;
}
/**
* @param {1|-1} future
* @param {number} num
* @param {'year'|'month'|'day'|'hour'|'minute'|'second'} unit
* @param {string} rtf
* */
function echoUnit(future, num, unit, rtf){
if(num <= units[unit]) return num;
echo(rtf.format(future*Math.floor(num/units[unit]), unit));
return num%units[unit];
}

14
bin/§ultisnips.mjs Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
$.is_fatal= true;
const root= "~/.config/coc/ultisnips/";
const files= Object.fromEntries( s.ls(root).map(fn=> [fn, s.cat(root+fn).trim()]) );
Object.keys(files).forEach(fn=> {
const file= files[fn];
if(!file.startsWith("extends ")) return;
const lines= file.split("\n");
const line_end= pipe( id=> id===-1 ? lines.length : id )( lines.findIndex(l=> l.startsWith("#endextends")) );
const include= lines[0].replace("extends ", "").trim().split(/, ?/g).map(s=> files[s+".snippets"]).join("\n");
lines.splice(1, line_end-1, include);
s.echo(lines.join("\n").trim()).to(root+fn);
})

View File

@ -153,7 +153,11 @@ async function actionUpdate(){
}).then(f=> s.echo(f).to(dirs.one_files+fileName(url)));
}));
echo("One-file plugin(s) updated.");
s.cd(dirs.bundle).$().run`git commit -m "Update"`;
try{
s.cd(dirs.bundle).$().run`git commit -m "Update"`;
} catch(e){
echo(e?.message);
}
updateRepo(dirs.pack, getPack());
$.exit(0);

6
bin/§wallpaper_BIOTD Executable file
View File

@ -0,0 +1,6 @@
#!/bin/bash
nm-online -x -q && \
node "/home/jaandrle/.nvm/versions/node/$(node --version)/bin/nodejsscript" /home/jaandrle/bin/§wallpaper_WCPOTD.mjs pull && \
cd "/home/jaandrle/Obrázky/Bing Image Of The Day" && \
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'const d= desktops().filter(d=> d.wallpaperPlugin==="de.unkn0wn.htmlwallpaper")[0];const url= (i= "")=> `file:///home/jaandrle/Obr%C3%A1zky/Bing%20Image%20Of%20The%20Day/index${i}.html`;d.currentConfigGroup= Array("Wallpaper", "de.unkn0wn.htmlwallpaper","General");d.writeConfig("DisplayPage", url("1"));d.writeConfig("DisplayPage", url());'
# convert now.jpg prev.jpg +append horizontally.jpg

View File

@ -9,36 +9,36 @@ const folder= homedir()+"/Obrázky/Bing Image Of The Day/";
get_(url_main+"/HPImageArchive.aspx?format=js&idx=0&n=2&mkt=cs-CZ")
.then(res=> {
let body= "";
res.on("data", chunk=> body+= chunk);
res.on("end", ()=> pipe(data, update)(body));
let body= "";
res.on("data", chunk=> body+= chunk);
res.on("end", ()=> pipe(data, update)(body));
})
.catch(e=> console.error(String(e)));
function update(data){
if(data===null) return false;
Promise.allSettled(data.map(({ url, copyright }, id)=> getImage_(url, id ? "prev" : "now", copyright)))
.then(res=> {
let template= readFileSync(folder+"index_template.html").toString();
writeFileSync(folder+"index.html", res.reduce((out, { status, value })=> status==="rejected" ? out : out.replace(`::${value.name}::`, value.description), template));
})
.catch(e=> console.error(String(e)));
if(data===null) return false;
Promise.allSettled(data.map(({ url, copyright }, id)=> getImage_(url, id ? "prev" : "now", copyright)))
.then(res=> {
let template= readFileSync(folder+"index_template.html").toString();
writeFileSync(folder+"index.html", res.reduce((out, { status, value })=> status==="rejected" ? out : out.replace(`::${value.name}::`, value.description), template));
})
.catch(e=> console.error(String(e)));
}
function getImage_(url, name, desc){
const description= desc.replace("(©", "<br>(©");
return get_(url_main+url)
.then(res=> {
const fs= createWriteStream(folder+name+'.jpg');
res.pipe(fs);
return new Promise(res=> fs.on("finish", ()=> {
fs.close();
res({ name, description });
}));
});
const description= desc.replace("(©", "<br>(©");
return get_(url_main+url)
.then(res=> {
const fs= createWriteStream(folder+name+'.jpg');
res.pipe(fs);
return new Promise(res=> fs.on("finish", ()=> {
fs.close();
res({ name, description });
}));
});
}
function data(body){
try { return JSON.parse(body).images; }
catch (_) { return null; }
try { return JSON.parse(body).images; }
catch (_) { return null; }
}
function get_(url){ return new Promise(function(res,rej){ get(url, res).on("error", rej); }); }
function pipe(...f){ return Array.prototype.reduce.bind(f, (acc, f)=> f(acc)); }

118
bin/§wallpaper_WCPOTD.mjs Executable file
View File

@ -0,0 +1,118 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
const img_params= "?width=1920";
const url_api= "https://commons.wikimedia.org/w/api.php";
const url_image= "https://commons.wikimedia.org/wiki/Special:FilePath/";
import { join } from "node:path";
const path_home= $.xdg.home`Obrázky/Bing Image Of The Day/`;
const path_info= join(path_home, "images.json");
$.api()
.version("2024-06-17")
.command("pull", "Pull new/today image(s)")
.action(async function pull(){
const images= {
now: await getImagePath(0),
prev: await getImagePath(-1)
};
const paths= await downloadImages(images);
updateHTML(images);
convert(paths);
pipe(
images=> Object.entries(images)
.reduce((acc, [ key, { caption } ])=>
Reflect.set(acc, key, caption) && acc,
{}),
images=> JSON.stringify(images, null, "\t"),
s.echo
)(images).to(path_info);
$.exit(0);
})
.command("status")
.action(function status(){
const images= s.cat(path_info).xargs(JSON.parse);
const [ stats ]= s.ls("-l", path_info);
echo({ timestamp: stats.mtime, ...images });
$.exit(0);
})
.parse();
/** @typedef {{ url: string, caption: string }} T_response */
/** @typedef {Record<"now"|"prev",T_response>} T_images */
/** @param {Record<"now"|"prev",string>} paths */
function convert(paths){
const resize_to= "1920x1080";
paths= Object.values(paths);
const target= join(path_home, "horizontally.jpg");
const params= `-resize ${resize_to}^ -gravity center -extent ${resize_to}`.split(" ");
s.run`convert ${paths} ${params} +append ${target}`;
}
import { writeFileSync } from "node:fs";
/** @param {T_images} images */
function updateHTML(images){
let template= s.cat(join(path_home, "index_template.html")).trim();
for(const [ key, image ] of Object.entries(images))
template= template.replace(`::${key}::`, image.caption);
s.echo(template).to(join(path_home, "index.html"));
}
/** @param {T_images} images */
async function downloadImages(images){
const out= {};
for(const [ key, image ] of Object.entries(images))
out[key]= await downloadImage(image, key);
return out;
}
async function getImagePath(shift= 0){
const date= dateISO(shift);
const { expandtemplates: { wikitext: filepath } }= await fetchGet({
action: "expandtemplates",
prop: "wikitext",
text: `{{Potd/${date}}}`,
});
const caption= pipe(
response=> response.expandtemplates.wikitext,
caption=> caption.replace(/\[\[.*?\]\]/g, m=> m.slice(2, -2).split("|").reverse()[0]),
caption=> caption.replace(/''(.*?)''/g, "„$1”"),
)(await fetchGet({
action: "expandtemplates",
prop: "wikitext",
text: `{{Potd/${date} (cs)}}`,
}));
/* TODO?
* action: 'query',
* prop: 'imageinfo',
* iiprop: 'extmetadata',
* iiextmetadatafilter: 'LicenseShortName|Artist|LicenseUrl',
* titles: `Image:${ filename }`
*
* res.data.query.pages[0].imageinfo[0].extmetadata
* */
return {
caption: caption,
url: url_image+encodeURI(filepath)
};
}
/** @param {T_response} image @param {"prev"|"now"} type */
async function downloadImage({ url }, type){
const filename= join(path_home, `${type}.jpg`);
let response= await fetch(url+img_params);
if(response.status!==200){
response= await fetch(url);
if(response.status!==200)
throw new Error(`Failed to download image: ${response.status} ${response.statusText}`);
}
const buffer= await response.arrayBuffer();
writeFileSync(filename, Buffer.from(buffer));
return filename;
}
function dateISO(shift= 0){
const d= new Date();
d.setDate(d.getDate()+shift);
return d.toISOString().substring(0, 10);
}
function fetchGet(params){
if(!params.format) params.format= "json";
return fetch(url_api+"?"+(new URLSearchParams(params)).toString(), { method: "GET" }).then(res=> res.json());
}