Compare commits

37 Commits

Author SHA1 Message Date
386ff7259c git-identity 2025-05-08 12:20:48 +02:00
28f1604b78 updates 2025-05-08 11:07:28 +02:00
04477c25bf 2025-04-25 16:23:44 +02:00
46e9b50a13 (bash) crossSession, m; (git) interactive (+vim) 2025-02-22 14:36:08 +01:00
fff74676d9 vim cleanup 2025-01-07 14:21:11 +01:00
40b17c99e4 cleaning vimrc 2025-01-07 10:38:55 +01:00
cf083e866b manpager, gh releases, Potd 2025-01-07 09:44:15 +01:00
5e7e5b6f33 updated 2024-11-29 16:09:45 +01:00
f3bf9e0612 Mainly because os (re)instalation TUXEDO OS 3 2024-10-21 16:06:54 +02:00
ded3151a67 apps 2024-10-11 09:49:05 +02:00
4674684254 update 2024-10-11 09:25:12 +02:00
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
102 changed files with 6749 additions and 6711 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

@ -14,6 +14,7 @@ if [ -x /usr/bin/dircolors ]; then
alias egrep='egrep --color=auto'
alias diff='diff --color=auto'
fi
alias §rm='rm -vi'
alias §cp='cp -vi'
alias §mv='mv -vi'
@ -26,9 +27,42 @@ alias §df='df -Th'
alias §xclip-copy='xclip -selection clipboard'
alias §xclip-paste='xclip -o -selection clipboard'
LAST_PWD_PATH="$BASH_DOTFILES/.bash_last_pwd"
[ -f "$LAST_PWD_PATH" ] && OLDPWD=`cat $LAST_PWD_PATH`
cd(){ builtin cd "$@" && echo `pwd` > "$LAST_PWD_PATH"; }
CROSS_SESSION="$BASH_DOTFILES/.bash_cross_session"
[ -f "$CROSS_SESSION" ] && . "$CROSS_SESSION"
crossSession() {
if [[ '--help' == "${1:---help}" ]]; then
echo 'crossSession [--help]'
echo ' Print this help.'
echo 'crossSession [--list]'
echo ' Lists all cross session variables or print this help.'
echo 'crossSession <name> [<value>]'
echo ' Sets cross session variable <name> to <value> (or empty for unset).'
return 0
fi
if [[ '--list' == "$1" ]]; then
cat "$CROSS_SESSION"
return 0
fi
local name="$1"
local value="$2"
# Check if the variable already exists in the file
if grep -q "^export $name=" "$CROSS_SESSION"; then
if [ -z "$value" ]; then
# If new value is empty, remove the variable from the file
sed -i "/^export $name=/d" "$CROSS_SESSION"
else
# If it exists, replace the old value with the new value
sed -i "s|^export $name=.*|export $name=\"$value\"|" "$CROSS_SESSION"
fi
else
if [ -n "$value" ]; then
# If it doesn't exist and new value is not empty, append the new variable to the file
echo "export $name=\"$value\"" >> "$CROSS_SESSION"
fi
fi
}
cd(){ builtin cd "$@" && crossSession 'OLDPWD' "$(pwd)"; }
history_clean(){ awk '!seen[$0]++ {print $0}' $HOME/.bash_history; }
history_edit(){ vim $HOME/.bash_history; }
@ -46,6 +80,11 @@ history_most_used(){ LC_ALL=C cat ~/.bash_history | cut -d ';' -f 2- | §awk 1 |
alias §less='less -R -S'
m(){
if [[ '-d' == "$1" ]]; then
unset "m$2"
crossSession "m$2"
return 0
fi
if [[ -z "$1" ]]; then
printenv | grep -e '^m'
return 0
@ -53,6 +92,8 @@ m(){
if [[ "--help" == "$1" ]]; then
echo 'm [--help]'
echo ' Lists all marks or print this help.'
echo 'm -d <name>'
echo ' Deletes mark <name>. Unsets variable and cross session variable.'
echo 'm <name> [path]'
echo ' Sets mark <name> to current directory or [path].'
echo ' The mark is just a bash variable, use `$m<name>`.'
@ -61,6 +102,7 @@ m(){
local n="m$1"
[[ -z "${!n}" ]] || return 1
[[ -z "$2" ]] && local p="$(pwd)" || local p="$(readlink -f $2)"
crossSession "$n" "$p"
export $n="$p"
}
alias cd-vifm='cd `vifm --choose-dir -`'
@ -110,19 +152,22 @@ alias §ck-grep='cat /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose | gre
§cmdfu(){ curl "https://www.commandlinefu.com/commands/matching/$@/$(echo -n $@ | openssl base64)/plaintext"; }
aai(){
[[ "$1" == '--help' ]] && ai ask --help && return 0;
echo "ai ask \"$*, thanks for your help\""; ai ask "\"$*, thanks for your help\"";
#echo "ai ask \"$*, thanks for your help\""; ai ask "\"$*, thanks for your help\"";
aipick -m "hi, would like to ask for help: $*\n…please response only with plain text to be used in terminal command without any explanation, thanks for your help";
}
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 npx-markdown='npx -y markserv'
alias fzf=fzf-carroarmato0.fzf
alias smerge='/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=sublime_merge --file-forwarding com.sublimemerge.App @@u %u @@'
kommit(){ command kommit $* > /dev/null 2>&1 & disown; }
§url-curl(){ curl --silent -I "$1" | grep -i location; }
alias bathelp='bat --plain --language=help'
alias bathelp='batcat --plain --language=help'
rpg(){
rpg-cli "$@"

View File

@ -8,15 +8,15 @@ source "$SCRIPT_DIR/complete-alias/complete_alias"
complete -F _complete_alias gitdotfiles
alias C--asana='eval "$($HOME/bin/asana.mjs completion_bash)"'
alias C--himalaya='\. "$BASH_DOTFILES/himalaya.completion"'
alias C--brew='\. "$BASH_DOTFILES/brew.completion"'
alias C--pnpm='\. "$BASH_DOTFILES/pnpm.completion"'
alias C--uu='eval "$($HOME/bin/uu --completion-bash)"'
alias C--bs='eval "$(bs .completion bash)"'
alias C--jc='eval "$(jc -B)" … newer version needed'
\. <(bs .completion bash)
\. "$BASH_DOTFILES/cordova.completion"
\. "$BASH_DOTFILES/install-release.completion"
eval "$(node --completion-bash)"
eval "$(npm completion)"
eval "$(nodejsscript --completion bash)"
\. <(node --completion-bash)
\. <(npm completion)
\. <(nodejsscript --completion bash)
_npx() {
local cur="${COMP_WORDS[COMP_CWORD]}"

View File

@ -9,116 +9,145 @@ 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 | head -n 1 | cut -d'"' -f2 | cut -d'.' -f1)
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
local chP="\[\033[0;35m\]" #purple
local chW="\[\033[00m\]" #white
export PS1_jaaENV="${chP}¦${chW}"
if [ ! -z ${ANDROID_SDK_ROOT_BAK+x} ]; then
export ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT_BAK
echo \$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT_BAK
unset ANDROID_SDK_ROOT_BAK
fi
if [ ! -z ${unset_android_sdk+x} ]; then
export ANDROID_SDK_ROOT_BAK=$ANDROID_SDK_ROOT
unset ANDROID_SDK_ROOT
fi
if [ ! -z ${java+x} ]; then
[[ "$java" == "8" ]] && java=1.8
local java_local=$(java -version 2>&1 | head -n 1 | cut -d'"' -f2)
local java_local=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ "$java_local" != "$java"* ]]; then
[[ "$java" == "1.8" ]] && java=8
echo "java $java$java_local"
local v="/usr/lib/jvm/java-$java-openjdk-amd64/"
[[ "$java" == "8" ]] && local vv="jre/" || local vv=""
sudo update-alternatives --set java ${v}${vv}bin/java
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)
[ $javac ] && sudo update-alternatives --set javac $javac
[ -n "$javac" ] && sudo update-alternatives --set javac "$javac"
sudo -k
fi
export JAVA_HOME=$(update-alternatives --display java | grep momentálně | §awk 5 | cut -d \/ -f1-5)/
echo \$JAVA_HOME=$JAVA_HOME
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 ${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
unset java
# Cleanup variables
unset android_home unset_android_sdk nodejs gradle php java
}

View File

@ -52,7 +52,11 @@ function updatePromt {
PS1+="] "
fi
PS1+="${chB}\w${chW}"
PS1+="\n:"
if [ ! -z ${PS1_jaaENV+x} ]; then
PS1+="\n$PS1_jaaENV"
else
PS1+="\n:"
fi
history -a
}
setPromt

View File

@ -1,7 +1,6 @@
# IMPORT IN `$HOME/.profile`
export ANDROID_HOME_BAK="$HOME/.local/share/umake/android/android-studio"
export ANDROID_SDK_ROOT="$HOME/.local/share/umake/android/android-studio-sdk"
export PATH=$PATH:$ANDROID_SDK_ROOT/tools/
export ANDROID_HOME_BAK2="$HOME/.local/share/JetBrains/Toolbox/apps/android-studio/"
export ANDROID_HOME_BAK="$HOME/Android/Sdk"
export ANDROID_SDK_ROOT="$HOME/Android/Sdk"
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools/
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/
export PATH=$PATH:$ANDROID_SDK_ROOT/emulator/

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
_install_release_completion() {
local IFS=$'
'
COMPREPLY=( $( env COMP_WORDS="${COMP_WORDS[*]}" \
COMP_CWORD=$COMP_CWORD \
_INSTALL_RELEASE_COMPLETE=complete_bash $1 ) )
return 0
}
complete -o default -F _install_release_completion install-release

14
.bashrc
View File

@ -11,9 +11,9 @@ shopt -s expand_aliases
[ -f $BASH_DOTFILES/.bash_jaaENV ] && . $BASH_DOTFILES/.bash_jaaENV
[ -f $BASH_DOTFILES/.bash_sdkman ] && . $BASH_DOTFILES/.bash_sdkman
[ -f $BASH_DOTFILES/.bash_nvm ] && . $BASH_DOTFILES/.bash_nvm
# Install Ruby Gems to ~/.local/share/gems
export GEM_HOME="$HOME/.local/share/gems"
export PATH="$HOME/.local/share/gems/bin:$HOME/.local/bin:$PATH"
export NODE_COMPILE_CACHE=~/.cache/nodejs-compile-cache # https://nolanlawson.com/2024/10/20/why-im-skeptical-of-rewriting-javascript-tools-in-faster-languages/
export PATH="$HOME/.local/bin:$PATH"
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
[ -f $BASH_DOTFILES/.bash_completions ] && . $BASH_DOTFILES/.bash_completions # for Vim
[[ $- != *i* ]] && return # If not running interactively, don't do anything
@ -22,7 +22,8 @@ export PATH="$HOME/.local/share/gems/bin:$HOME/.local/bin:$PATH"
set -o vi # VIM mode for bash
bind -m vi-command 'Control-l: clear-screen'
bind -m vi-insert 'Control-l: clear-screen'
export MANPAGER="/bin/sh -c \"col -b | vim --not-a-term -c 'set ft=man ts=8 nomod nolist noma' -\""
# export MANPAGER="/bin/sh -c \"sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | vim --appimage-extract-and-run --not-a-term -c 'set ft=man ts=8 nomod nolist noma' -\""
export MANPAGER="vim --appimage-extract-and-run +MANPAGER --not-a-term -c 'set ts=8 nolist' -"
shopt -s checkwinsize # dynamic columns update after every cmd
## History
@ -60,6 +61,9 @@ if ! shopt -oq posix; then
fi
export GPG_TTY=$(tty)
shopt -s cdspell # autocorrects cd misspellings
# HSTR configuration - add this to ~/.bashrc
# if this is interactive shell, then bind hstr to Ctrl-space
if [[ $- =~ .*i.* ]]; then bind '"\C-@": "\e^ihstr -- \n"'; fi
# if [[ $- =~ .*i.* ]]; then bind '"\C-@": "\e^ihstr -- \C-j"'; fi
if [[ $- =~ .*i.* ]]; then bind '"\C-@": "\e^I history | grep '\''\e\e^A'\''\e\ei"'; fi

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;*.jsx;
#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=

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

@ -0,0 +1,233 @@
[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 Sans Mono Medium 8
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=710
geometry=321;29;1275;1020;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
[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=1014
position_find_y=519
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/htmlchars.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/spellcheck.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/.local/share/krunner-sources/krunner-alias-main/install.sh;/home/jaandrle/.local/share/krunner-sources/kolors/install.sh;/tmp/evolution-jaandrle-RZCWV2/Re: Fwd: 🎃Výstava dýní po mexicku🎃;/home/jaandrle/.vim/bundle/vim-html-template-literals/autoload/htl_syntax.vim;/home/jaandrle/.vim/bundle/vim-html-template-literals/test/example-code-tests/example-code-tests.vader;/home/jaandrle/Stažené/placeholder-sticker.svg;/media/jaandrle/neon/home/jaandrle/Vzdálené/GitHub/dcp-be-proxy-functions(1)/__azurite_db_blob__.json;/home/jaandrle/Vzdálené/GitHub/facilitator-network-cell/src/types/vite-env.d.ts;/media/jaandrle/neon/home/jaandrle/Stažené/.test_snap/wse_yl/test_conf/test.key;/home/jaandrle/Android/Sdk/emulator/NOTICE.txt;
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=-1

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,231 @@
[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=
[spellcheck]
spell_check=
spell_toggle_typing=

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>

116
.config/git/config Normal file
View File

@ -0,0 +1,116 @@
# better? defaults
[help]
autocorrect = prompt
[init]
defaultBranch = main
[column]
ui = auto
[branch]
sort = -committerdate
[tag]
sort = version:refname
[status]
branch = true
short = true
showStash = true
showUntrackedFiles = all
submoduleSummary = true
[log]
date = iso
[fetch]
prune = true
pruneTags = true
[push]
autoSetupRemote = true
followTags = true
recurseSubmodules = on-demand
[pull]
rebase = true
[rerere]
enabled = true
autoupdate = true
[gc]
reflogExpire = 200
reflogExpireUnreachable = 90
[commit]
verbose = true
gpgsign = true
template = ~/.config/git/template
[rebase]
autoSquash = true
autoStash = true
updateRefs = true
# my setup
[core]
editor = vim
pager = delta
whitespace = -trailing-space,-space-before-tab
compression = 9 # trade cpu for network
[alias]
# * replaced by git-extras
# * (alias) aliases = !git config -l | grep ^alias | cut -c 7- | sort # List all aliases. Stolen from here: https://twitter.com/TrevorBramble/status/774292970681937920
branch-default = !git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
# * branches (↓) = for-each-ref --sort=-committerdate refs --format=\"%(authordate:iso8601)\t%(color:blue)%(refname:short)%(HEAD)\t%(if:notequals="")%(upstream:short)%(then)→ %(upstream:short)%(color:reset)%(else)%(color:yellow)%(objectname:short)%(color:reset)\t%(contents:subject)%(end)\"
h-branches = !echo 'brv (git-extras)'
tags = tag -l --sort=-creatordate --format='%(refname:short): [%(creatordate:short)] %(subject)'
# * authors: log-authors = shortlog -ns
h-format-htma = !echo '%Cred%h%Creset %Cgreen[%ad] -%C(yellow)%d%Creset %s %C(bold blue)<%an>%Creset'
commit--interactive= !clear && git status && git commit --interactive
h-unstage = !echo reset HEAD --
h-undoall = !echo reset --soft HEAD^
diff-dirs = diff --dirstat --find-copies --find-renames --histogram --color
h-submodule-delete = !echo 'delete-submodule (git-extras)' # * delete-submodule: rm-submodule = !git submodule deinit -f $1 && rm -rf .git/modules/$1 && git rm -rf $1
submodule-update-merge = submodule update --remote --merge
set-upstream-to-current = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`
[diff]
wsErrorHighlight = all
tool = vimdiff
submodule = log
algorithm = histogram
# https://git-scm.com/docs/git-diff#Documentation/git-diff.txt-code--color-movedltmodegtcode
colorMoved = dimmed-zebra
mnemonicPrefix = true
renames = true
[interactive]
diffFilter = delta --color-only
[merge]
tool = vimdiff
conflictstyle = zdiff3
[delta] # [dandavison/delta: A syntax-highlighting pager for git, diff, and grep output](https://github.com/dandavison/delta)
syntax-theme= Visual Studio Dark+
navigate = true
side-by-side = true
line-numbers = true
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
[diff "exif"]
textconv = exiftool
[difftool "kommitdiff"]
cmd = kommitdiff \"$LOCAL\" \"$REMOTE\"
[mergetool "kommitmerge"]
cmd = kommitmerge \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = true
[maintenance]
repo = /home/jaandrle/Vzdálené/GitHub/dcp-fe-container-certifedpassport
repo = /home/jaandrle/Vzdálené/GitHub/DHLC-Internet-Networking-old
repo = /home/jaandrle/Vzdálené/GitHub/DGF-Certified-Supervisory-Academy
[submodule]
recurse = true
[format]
coverLetter = auto
compactSummary = true
minimal = true
signOff = true
outputDirectory = .patches
thread = shallow
numbered = auto
[am]
# keepcr = true # to preserve line endings
threeWay = true
[include]
path = ./identities/current.conf

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,21 @@
[user]
name = Jan Andrle
email = andrle.jan@centrum.cz
signingkey = B3A25AED155AFFAB
[credential]
# see https://stackoverflow.com/questions/5343068/is-there-a-way-to-cache-https-credentials-for-pushing-commits/18362082#18362082
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[credential "https://github.com"]
helper = !/usr/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper = !/usr/bin/gh auth git-credential
[credential "https://git.dhl.com"]
helper = !/usr/bin/gh auth git-credential
[sendemail]
anotate = true
smtpserver = smtp.centrum.cz
# chainReplyTo = false
suppresscc = self
smtpuser = andrle.jan@centrum.cz
smtpencryption = ssl
smtpserverport = 465

View File

@ -4,15 +4,27 @@
{
"repository": "shiftkey/desktop",
"name": "GitHub Desktop",
"group": "dev",
"group": "skip-dev",
"file_name": "github-desktop",
"exec": "yes",
"description": "Fork of GitHub Desktop to support various Linux distributions",
"last_update": "2024-03-31T17:49:36Z",
"last_update": "2024-08-17T01:47:21Z",
"downloads": "/home/jaandrle/bin/github-desktop",
"version": "release-3.3.12-linux2",
"version": "release-3.4.4-linuxbeta2",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "pinokiocomputer/pinokio",
"name": "Pinokio",
"group": "ai",
"file_name": "pinokio",
"exec": "yes",
"description": "AI Browser",
"glare": "AppImage",
"last_update": "2025-04-01T05:57:12Z",
"version": "3.8.0",
"downloads": "/home/jaandrle/bin/pinokio"
},
{
"repository": "jaandrle/jaaCSS-cli",
"name": "jaaCSS",
@ -29,19 +41,19 @@
"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",
"group": "skip-nondev",
"file_name": "youtube-music",
"exec": "yes",
"last_update": "2024-04-13T14:34:34Z",
"last_update": "2024-10-16T11:58:54Z",
"downloads": "/home/jaandrle/bin/youtube-music",
"version": "v3.3.6",
"version": "v3.6.2",
"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",
"group": "skip-dev",
"file_name": "insomnium",
"exec": "yes",
"last_update": "2023-11-13T10:03:28Z",
@ -50,59 +62,43 @@
"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",
"group": "skip-dev",
"file_name": "luna",
"exec": "yes",
"glare": "AppImage"
"glare": "AppImage",
"last_update": "2020-10-29T23:06:39Z",
"version": "v.3.4.6",
"downloads": "/home/jaandrle/bin/luna"
},
{
"repository": "angela-d/wifi-channel-watcher",
"name": "wifi-channel-watcher",
"group": "skip",
"group": "skip-nondev",
"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",
"group": "skip-nondev",
"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"
"glare": ".*x86_64.*.AppImage",
"last_update": "2023-03-08T23:25:46Z",
"version": "continuous",
"downloads": "/home/jaandrle/bin/appimagekit"
},
{
"repository": "dynobo/normcap",
"name": "NormCap",
"description": "Switched to flatpak version | OCR powered screen-capture tool to capture information instead of images",
"group": "skip",
"group": "skip-nondev",
"file_name": "normcap",
"exec": "yes",
"last_update": "2023-12-12T22:23:37Z",
@ -116,35 +112,11 @@
"group": "nondev",
"file_name": "upscayl",
"exec": "yes",
"last_update": "2024-04-25T04:29:38Z",
"last_update": "2024-12-25T13:44:34Z",
"downloads": "/home/jaandrle/bin/upscayl",
"version": "v2.11.0",
"version": "v2.15.0",
"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",
@ -152,9 +124,9 @@
"group": "dev",
"file_name": "bs",
"exec": "yes",
"last_update": "2024-03-28T13:16:41Z",
"last_update": "2024-10-22T12:04:29Z",
"downloads": "/home/jaandrle/bin/bs",
"version": "v0.7.4",
"version": "v0.8.0",
"glare": "bs-linux"
},
{
@ -162,11 +134,11 @@
"name": "Fedistar",
"description": "Multi-column Mastodon, Pleroma, and Friendica client for desktop",
"group": "nondev",
"file_name": "fedistar",
"file_name": "fedistar.appimage",
"exec": "yes",
"last_update": "2024-04-09T14:08:12Z",
"downloads": "/home/jaandrle/bin/fedistar",
"version": "v1.9.3",
"last_update": "2025-04-08T11:56:38Z",
"downloads": "/home/jaandrle/bin/fedistar.appimage",
"version": "v1.11.3",
"glare": ".*amd64.*.AppImage"
},
{
@ -176,9 +148,9 @@
"group": "ai",
"file_name": "ollama",
"exec": "yes",
"last_update": "2024-04-28T17:51:17Z",
"last_update": "2025-04-26T09:16:02Z",
"downloads": "/home/jaandrle/bin/ollama",
"version": "v0.1.33-rc5",
"version": "v0.6.7-rc1",
"glare": "linux-amd64"
},
{
@ -186,23 +158,35 @@
"name": "neovim",
"tag_name_regex": "v.*",
"description": "Vim-fork focused on extensibility and usability",
"group": "skip",
"group": "skip-dev",
"file_name": "nvim",
"exec": "yes",
"downloads": "/home/jaandrle/bin/nvim",
"version": "v0.9.5",
"last_update": "2023-12-30T13:31:47Z"
},
{
"repository": "vim/vim-appimage",
"name": "vim",
"description": "AppImage for gVim",
"group": "dev",
"file_name": "vim",
"exec": "yes",
"downloads": "/home/jaandrle/bin/vim",
"version": "v9.1.1355",
"last_update": "2025-04-30T01:25:38Z",
"glare": "GVim.*x86_64.*.AppImage"
},
{
"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",
"file_name": "escrcpy.appimage",
"exec": "yes",
"last_update": "2024-04-28T02:36:35Z",
"downloads": "/home/jaandrle/bin/escrcpy",
"version": "v1.18.3",
"last_update": "2025-04-27T07:04:58Z",
"downloads": "/home/jaandrle/bin/escrcpy.appimage",
"version": "v1.29.6",
"glare": ".*x86_64.*.AppImage"
},
{
@ -212,9 +196,9 @@
"group": "dev-test",
"file_name": "drovp",
"exec": "yes",
"last_update": "2023-12-06T11:30:02Z",
"last_update": "2024-10-06T16:26:38Z",
"downloads": "/home/jaandrle/bin/drovp",
"version": "0.8.0",
"version": "0.8.2",
"glare": "x64.AppImage"
},
{
@ -224,9 +208,9 @@
"group": "ai",
"file_name": "jan",
"exec": "yes",
"last_update": "2024-04-25T06:07:39Z",
"last_update": "2025-03-24T02:02:04Z",
"downloads": "/home/jaandrle/bin/jan",
"version": "v0.4.12",
"version": "v0.5.16",
"glare": ".*x86_64.*.AppImage"
},
{
@ -236,10 +220,34 @@
"group": "ai",
"file_name": "Chatbox",
"exec": "yes",
"last_update": "2024-04-18T08:15:47Z",
"last_update": "2025-01-14T13:29:06Z",
"downloads": "/home/jaandrle/bin/Chatbox",
"version": "v1.3.5",
"version": "v0.10.4",
"glare": ".*x86_64.*.AppImage"
},
{
"repository": "Martichou/rquickshare",
"group": "nondev",
"name": "r-quick-share",
"description": "Rust implementation of NearbyShare/QuickShare from Android for Linux and macOS.",
"file_name": "r-quick-share",
"exec": "yes",
"downloads": "/home/jaandrle/bin/r-quick-share",
"glare": ".*main.*amd64.AppImage",
"last_update": "2025-02-23T18:15:49Z",
"version": "v0.11.5"
},
{
"repository": "konnektoren/konnektoren-mobile-app",
"group": "nondev",
"name": "Konnektoren",
"description": "Konnektoren Mobile App (learning german) — https://konnektoren.help/home/",
"file_name": "konnektoren",
"exec": "yes",
"downloads": "/home/jaandrle/bin/konnektoren",
"glare": "AppImage",
"last_update": "2025-04-27T07:33:51Z",
"version": "konnektoren-mobile-app-v0.1.4"
}
]
}

View File

@ -1,39 +0,0 @@
name = "Jan Andrle"
downloads-dir = "~/Stažené"
[centrum]
default = true
email = "andrle.jan@centrum.cz"
imap-host = "imap.centrum.cz"
imap-port = 993
imap-login = "andrle.jan@centrum.cz"
imap-passwd-cmd = "bw get password mail-centrum"
smtp-host = "smtp.centrum.cz"
smtp-port = 465
smtp-login = "andrle.jan@centrum.cz"
smtp-passwd-cmd = "bw get password mail-centrum"
[centrum.mailboxes]
sent = "Odeslan&AOE- po&AWE-ta"
draft = "Koncepty"
[indigo]
email = "jan.andrle@indigo.cz"
imap-host = "imap.gmail.com"
imap-port = 993
imap-login = "jan.andrle@indigo.cz"
imap-passwd-cmd = "bw get password mail-gmail-indigo"
smtp-host = "smtp.gmail.com"
smtp-port = 465
smtp-login = "jan.andrle@indigo.cz"
smtp-passwd-cmd = "bw get password mail-gmail-indigo"
[indigo.mailboxes]
sent = "Odeslan&AOE- po&AWE-ta"
draft = "Koncepty"
# vim: ft=apachestyle cms=#\ %s :

View File

@ -1,8 +0,0 @@
[
{ "type": "text", "value": "Složka 'Příchozí'" },
{ "type": "himalaya", "value": [ "-m", "inbox", "list" ], "label": "inbox" },
{ "type": "text", "value": "Složka 'Hromadná'" },
{ "type": "himalaya", "value": [ "-m", "Hromadn&AOE-", "list" ], "label": "Hromadná" },
{ "type": "text", "value": "Složka 'Práce'" },
{ "type": "himalaya", "value": [ "-m", "_Prace", "list" ], "label": "_Prace" }
]

View File

@ -1,8 +1,8 @@
[General]
ColorScheme=BreezeDark
ColorScheme=TUXEDODark
[Icons]
Theme=breeze-dark
Theme=tuxedo-breeze-dark
[KDE]
widgetStyle=Breeze

View File

@ -1,2 +0,0 @@
[Greeter]
Theme=org.kde.breezedark.desktop

View File

@ -1,3 +1,3 @@
[KSplash]
Engine=KSplashQML
Theme=org.kde.breezedark.desktop
Theme=org.tuxedodark.desktop

View File

@ -1,6 +1,10 @@
[TabBox]
LayoutName=org.kde.breeze.desktop
[Windows]
Placement=Centered
[org.kde.kdecoration2]
NoPlugin=false
library=org.kde.breeze
theme=Breeze

View File

@ -1 +1 @@
org.kde.breezedark.desktop
org.tuxedodark.desktop

View File

@ -1,2 +1,2 @@
[Theme]
name=default
name=tuxedo-dark

View File

@ -48,6 +48,17 @@
"--help",
"--version"
]
},
"/home/jaandrle/Vzdálené/GitHub/DGF-Certified-Supervisory-Academy/build/bs/publishModule.mjs": {
"npx": true,
"completions": {},
"completions_all": [
"--lang",
"--division",
"--APP_CODE",
"--help",
"--version"
]
}
}
}

View File

@ -1,15 +1,9 @@
/* deprecated/fallback */
globalThis.cyclicLoop= function*(items){
if(!items) items= 'win32'===process.platform ? '|/-\\' : "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏";
const { length }= items;
for(let i=0; true; i++){
if(i===length) i= 0;
yield items[i];
}
}
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 */
@ -21,8 +15,4 @@ 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([]); }, });
}
// export function oneval(){}

View File

@ -1,133 +0,0 @@
/*
* breeze-dark.rasi
* rofi theme inspired by plasma breeze
* MonsieurBedard
*/
* {
/* Base */
default-background: rgba(49, 52, 56, 97.5%); // <- change this for transparency
default-foreground: rgba(239, 240, 241, 100%);
default-border: rgba(97, 101, 105, 100%);
alternative-background: rgba(35, 38, 41, 100%);
invisible: rgba(0, 0, 0, 0%);
/* Colors */
hard-blue: rgba(240, 84, 76, 100%);
light-blue: rgba(240, 84, 76, 25%);
hard-red: rgba(141, 58, 80, 100%);
light-red: rgba(77, 31, 37, 100%);
hard-green: rgba(39, 161, 69, 100%);
light-green: rgba(19, 55, 35, 100%);
/* Universal */
background-color: @invisible;
border-color: @default-border;
font: "Noto Sans 10";
text-color: @default-foreground;
}
#window {
background-color: @default-background;
border: 1;
border-radius: 3;
border-color: @default-border;
padding: 7;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 1;
border-radius: 3;
padding: 5;
background-color: @alternative-background;
}
#textbox {
background-color: @entry-background;
}
#listview {
fixed-height: 0;
spacing: 2;
scrollbar: false;
padding: 2 0 0;
}
#element {
padding: 5;
border: 1;
border-radius: 3;
border-color: @invisible;
}
#element.normal.normal {
background-color: @invisible;
}
#element.normal.urgent {
background-color: @light-red;
}
#element.normal.active {
background-color: @light-green;
}
#element.selected.normal {
background-color: @light-blue;
border-color: @hard-blue;
}
#element.selected.urgent {
background-color: @light-red;
border-color: @hard-red;
}
#element.selected.active {
background-color: @light-green;
border-color: @hard-green;
}
#mode-switcher {
spacing: 0;
}
#button {
border: 0 0 3 0;
border-color: @invisible;
padding: 3;
}
#button.selected {
border-color: @hard-blue;
}
#inputbar {
spacing: 0;
padding: 1;
}
#case-indicator {
spacing: 0;
padding: 3px;
background-color: @alternative-background;
border: 1 1 1 0;
border-radius: 0 2 2 0;
}
#entry {
background-color: @alternative-background;
padding: 3px;
border: 1 0 1 1;
border-radius: 2 0 0 2;
}
#prompt {
padding: 3 7 3 0;
}

View File

@ -1 +0,0 @@
@theme "~/.config/rofi/breeze-dark.rasi"

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,4 @@
{
"draw_white_space": "all",
"word_wrap": true,
}

View File

@ -0,0 +1,13 @@
// 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,
"ignore_diff_white_space": false,
}

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()}`)
@ -57,13 +59,14 @@ bind ůůl fillcmdline_notrail js document.querySelector("video").currentTime+=
bind ůk js (v=> { if(!v) return; v.playbackRate+= 0.25 })(document.querySelector("video"))
bind ůj js (v=> { if(!v) return; v.playbackRate-= 0.25 })(document.querySelector("video"))
bind ů= js (v=> { if(!v) return; v.playbackRate= 1 })(document.querySelector("video"))
bind ůG js (v=> { if(!v) return; v.play(); v.currentTime= v.duration-10; setTimeout(()=> tri.controller.acceptExCmd("pauseVideos"), 5000); })(document.querySelector("video"))
bind ůG js (v=> { if(!v) return; v.play(); v.currentTime= ( location.hostname!=="www.disneyplus.com" ? v.duration : (document.querySelector(".time-remaining-label").textContent.split(":").reduce((acc, curr, i)=> (!i ? 60 : 1)*curr+acc, 0)+v.currentTime) )-10; setTimeout(()=> tri.controller.acceptExCmd("pauseVideos"), 5000); })(document.querySelector("video"))
unbind --mode=normal d
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,17 +99,11 @@ 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
command mastodonUncoverAll composite hint_focus .scrollable ; js (onclick=document.createEvent("Events"), onclick.initEvent("click", true, false), Array.from(document.activeElement.getElementsByClassName("status__content__spoiler-link")).forEach(el=> el.dispatchEvent(onclick)))
command mastodonRedirectHome js const parts = location.pathname.split('/'); if(parts.length===2) location.href= `https://fosstodon.org/${parts[1]}@${location.host}`; else location.href= `https://fosstodon.org/authorize_interaction?uri=${location.href}`;
command mastodonRedirectHome js const canonicalHref = document.querySelector('link[rel=canonical]')?.href; const parts = (canonicalHref ? new URL(canonicalHref) : location).pathname.split('/'); if(parts.length===2) location.href= `https://fosstodon.org/${parts[1]}@${location.host}`; else location.href= `https://fosstodon.org/authorize_interaction?uri=${location.href}`;
bind sm fillcmdline_notrail mastodon
command data_delall composite hint_focus * ; js document.activeElement.querySelectorAll("input").forEach(el=> el.checked=false)

View File

@ -1,7 +0,0 @@
[[Accounts]]
Name = 'jaandrle'
Server = 'https://fosstodon.org'
ClientID = 'ggYBuM2y_jtFV_3wR4tGdJUoNh-4ZfVRl1SByK5bihU'
ClientSecret = 'j7ClbSP2UY8syZgV4E-7Kk1bf8Ph_6GQ7szcqVfqDtI'
AccessToken = '1iO5wZL-nXcC3dZGjxNHLcbbFoSZ3fmutno96oD_ZY8'

View File

@ -1,830 +0,0 @@
# Configuration file for tut
[general]
# Shows a confirmation view before actions such as favorite, delete toot, boost
# etc.
# default=true
confirmation=true
# Enable support for using the mouse in tut to select items.
# default=false
mouse-support=false
# Timelines adds windows of feeds. You can customize the number of feeds, what
# they should show and the key to activate them.
#
# Available timelines: home, direct, local, federated, special, bookmarks,
# saved, favorited, notifications, lists, mentions, tag
#
# The one named special are the home timeline with only boosts and/or replies.
#
# Tag is special as you need to add the tag after, see the example below.
#
# The syntax is:
# timelines=feed,[name],[keys...],[showBoosts],[showReplies]
#
# Tha values in brackets are optional. You can see the syntax for keys under the
# [input] section.
#
# showBoosts and showReplies must be formated as bools. So either true or false.
# They always defaults to true.
#
# Some examples:
#
# home timeline with the name Home
# timelines=home,Home
#
# local timeline with the name Local and it gets focus when you press 2. It will
# also hide boosts in the timeline, but show toots that are replies.
# timelines=local,Local,'2',false,true
#
# notification timeline with the name [N]otifications and it gets focus when you
# press n or N
# timelines=notifications,[N]otifications,'n','N'
#
# tag timeline for #linux with the name Linux and it gets focus when you press
# timelines=tag linux,Linux,"F2"
#
#
# If you don't set any timelines it will default to this:
# timelines=home
# timelines=notifications,[N]otifications,'n','N'
#
timelines=lists,Lists,'1'
timelines=home,Home,'2'
timelines=notifications,Notifications,'3'
timelines=tag webdev,Webdev,'4'
# The date format to be used. See https://godoc.org/time#Time.Format
# default=2006-01-02 15:04
date-format=2006-01-02 15:04
# Format for dates the same day. See date-format for more info.
# default=15:04
date-today-format=15:04
# This displays relative dates instead for statuses that are one day or older
# the output is 1y2m1d (1 year 2 months and 1 day)
#
# The value is an integear
# -1 = don't use relative dates
# 0 = always use relative dates, except for dates < 1 day
# 1 - ∞ = number of days to use relative dates
#
# Example: date-relative=28 will display a relative date for toots that are
# between 1-28 days old. Otherwhise it will use the short or long format.
# default=-1
date-relative=-1
# The max width of text before it wraps when displaying toots.
# 0 = no restriction.
# default=0
max-width=0
# Where do you want the list of toots to be placed?
# Valid values: left, right, top, bottom.
# default=left
list-placement=right
# If you have notification-feed set to true you can display it under the main
# list of toots (row) or place it to the right of the main list of toots
# (column).
# default=row
list-split=column
# You can change the proportions of the list view in relation to the content
# view list-proportion=1 and content-proportoin=3 will result in the content
# taking up 3 times more space.
# Must be n > 0
# default=1
list-proportion=2
# See list-proportion
# default=2
content-proportion=1
# Hide notifications of this type. If you have multiple you separate them with a
# comma. Valid types: mention, status, boost, follow, follow_request, favorite,
# poll, edit.
# default=
notifications-to-hide=
# If you always want to quote original message when replying.
# default=false
quote-reply=false
# If you want to show icons in the list of toots.
# default=true
show-icons=true
# If you've learnt all the shortcut keys you can remove the help text and only
# show the key in tui. So it gets less cluttered.
# default=false
short-hints=false
# If you want to display the filter that filtered a toot.
# default=true
show-filter-phrase=true
# If you want to show a message in the cmdbar on how to access the help text.
# default=true
show-help=true
# If you always want tut to jump to the newest post. May ruin your reading
# experience.
# default=false
stick-to-top=false
# If you want to display the username of the person being boosted instead of the
# person that boosted.
# default=false
show-boosted-user=false
# 0 = No terminal title
# 1 = Show title in terminal and top bar
# 2 = Only show terminal title, and no top bar in tut.
# default=0
terminal-title=0
# If you don't want the whole UI to update, and only the text content you can
# set this option to true. This will lead to some artifacts being left on the
# screen when emojis are present. But it will keep the UI from flashing on every
# single toot in some terminals.
# default=true
redraw-ui=true
# The leader is used as a shortcut to run commands as you can do in Vim. By
# default this is disabled and you enable it by setting a leader-key. It can
# only consist of one char and I like to use comma as leader key. So to set it
# you write leader-key=,
# default=
leader-key=
# Number of milliseconds before the leader command resets. So if you tap the
# leader-key by mistake or are to slow it empties all the input after X
# milliseconds.
# default=1000
leader-timeout=1000
# You set actions for the leader-key with one or more leader-action. It consists
# of two parts first the action then the shortcut. And they're separated by a
# comma.
#
# Available commands: blocking, bookmarks, boosts, clear-notifications,
# close-window, compose, direct, edit, favorited, favorites, federated,
# followers, following, history, home, list-placement, list-split, lists, local,
# mentions, move-window-left, move-window-right, move-window-up,
# move-window-down, move-window-home, move-window-end, muting, newer,
# notifications, preferences, profile, proportions, refetch, saved, special-all,
# special-boosts, special-replies, stick-to-top, switch, tag, tags, window
#
# The ones named special-* are the home timeline with only boosts and/or
# replies. All contains both, -boosts only boosts and -replies only replies.
#
# The shortcuts are up to you, but keep them quite short and make sure they
# don't collide. If you have one shortcut that is "f" and an other one that is
# "fav", the one with "f" will always run and "fav" will never run.
#
# Some special leaders:
# tag is special as you need to add the tag after, e.g. tag linux
# window is special as it's a shortcut for switching between the timelines
# you've set under general and they are zero indexed. window 0 = your first
# timeline, window 1 = your second and so on.
# list-placement as it takes the argument top, right, bottom or left
# list-split as it takes the argument column or row
# proportions takes the arguments [int] [int], where the first integer is the
# list and the other content, e.g. proportions 1 3. See list-proportion above
# for more information.
# switch let's you go to a timeline if it already exists, if it doesn't it will
# open the timeline in a new window. The syntax is almost the same as in
# timelines= and is displayed under the examples.
#
# Some examples:
# leader-action=local,lo
# leader-action=lists,li
# leader-action=federated,fed
# leader-action=direct,d
# leader-action=history,h
# leader-action=tag linux,tl
# leader-action=window 0,h
# leader-action=list-placement bottom,b
# leader-action=list-split column,c
# leader-action=proportions 1 3,3
#
# Syntax for switch:
# leader-action=switch feed,shortcut,[name],[showBoosts],[showReplies]
# showBoosts can be either true or false and they are both optional. Here are
# some examples:
#
# leader-action=switch home,h,false,true
# leader-action=switch tag tut,tt
#
[media]
# Your image viewer.
# default=xdg-open
image-viewer=xdg-open
# Open the image viewer in the same terminal as toot. Only for terminal based
# viewers.
# default=false
image-terminal=false
# If images should open one by one e.g. "imv image.png" multiple times. If set
# to false all images will open at the same time like this "imv image1.png
# image2.png image3.png". Not all image viewers support this, so try it first.
# default=true
image-single=true
# If you want to open the images in reverse order. In some image viewers this
# will display the images in the "right" order.
# default=false
image-reverse=false
# Your video viewer.
# default=xdg-open
video-viewer=xdg-open
# Open the video viewer in the same terminal as toot. Only for terminal based
# viewers.
# default=false
video-terminal=false
# If videos should open one by one. See image-single.
# default=true
video-single=true
# If you want your videos in reverse order. In some video apps this will play
# the files in the "right" order.
# default=false
video-reverse=false
# Your audio viewer.
# default=xdg-open
audio-viewer=xdg-open
# Open the audio viewer in the same terminal as toot. Only for terminal based
# viewers.
# default=false
audio-terminal=false
# If audio should open one by one. See image-single.
# default=true
audio-single=true
# If you want to play the audio files in reverse order. In some audio apps this
# will play the files in the "right" order.
# default=false
audio-reverse=false
# Your web browser.
# default=xdg-open
link-viewer=xdg-open
# Open the browser in the same terminal as toot. Only for terminal based
# browsers.
# default=false
link-terminal=false
[open-custom]
# This sections allows you to set up to five custom programs to open URLs with.
# If the url points to an image, you can set c1-name to img and c1-use to imv.
# If the program runs in a terminal and you want to run it in the same terminal
# as tut. Set cX-terminal to true. The name will show up in the UI, so keep it
# short so all five fits.
#
# c1-name=name
# c1-use=program
# c1-terminal=false
#
# c2-name=name
# c2-use=program
# c2-terminal=false
#
# c3-name=name
# c3-use=program
# c3-terminal=false
#
# c4-name=name
# c4-use=program
# c4-terminal=false
#
# c5-name=name
# c5-use=program
# c5-terminal=false
[open-pattern]
# Here you can set your own glob patterns for opening matching URLs in the
# program you want them to open up in. You could for example open Youtube videos
# in your video player instead of your default browser.
#
# You must name the keys foo-pattern, foo-use and foo-terminal, where use is the
# program that will open up the URL. To see the syntax for glob pattern you can
# follow this URL https://github.com/gobwas/glob#syntax. foo-terminal is if the
# program runs in the terminal and should open in the same terminal as tut
# itself.
#
# Example for youtube.com and youtu.be to open up in mpv instead of the browser.
#
# y1-pattern=*youtube.com/watch*
# y1-use=mpv
# y1-terminal=false
#
# y2-pattern=*youtu.be/*
# y2-use=mpv
# y2-terminal=false
[desktop-notification]
# Notification when someone follows you.
# default=false
followers=false
# Notification when someone favorites one of your toots.
# default=false
favorite=false
# Notification when someone mentions you.
# default=false
mention=false
# Notification when someone edits their toot.
# default=false
update=false
# Notification when someone boosts one of your toots.
# default=false
boost=false
# Notification of poll results.
# default=false
poll=true
# Notification when there is new posts in current timeline.
# default=false
posts=false
[style]
# All styles can be represented in their HEX value like #ffffff or with their
# name, so in this case white. The only special value is "default" which equals
# to transparent, so it will be the same color as your terminal.
#
# You can also use xrdb colors like this xrdb:color1 The program will use colors
# prefixed with an * first then look for URxvt or XTerm if it can't find any
# color prefixed with an asterisk. If you don't want tut to guess the prefix you
# can set the prefix yourself. If the xrdb color can't be found a preset color
# will be used. You'll have to set theme=none for this to work.
# The xrdb prefix used for colors in .Xresources.
# default=guess
xrdb-prefix=guess
# You can use some themes that comes bundled with tut. Check out the themes
# available on the URL below. If a theme is named "nord.ini" you just write
# theme=nord
#
# https://github.com/RasmusLindroth/tut/tree/master/config/themes
#
# You can also create a theme file in your config directory e.g.
# ~/.config/tut/themes/foo.ini and then set theme=foo.
#
# If you want to use your own theme but don't want to create a new file, set
# theme=none and then you can create your own theme below.
# default=default
theme=default
# The background color used on most elements.
# default=
background=
# The text color used on most of the text.
# default=
text=
# The color to display subtle elements or subtle text. Like lines and help text.
# default=
subtle=
# The color for errors or warnings
# default=
warning-text=
# This color is used to display username.
# default=
text-special-one=
# This color is used to display username and key hints.
# default=
text-special-two=
# The color of the bar at the top
# default=
top-bar-background=
# The color of the text in the bar at the top.
# default=
top-bar-text=
# The color of the bar at the bottom
# default=
status-bar-background=
# The color of the text in the bar at the bottom.
# default=
status-bar-text=
# The color of the bar at the bottom in view mode.
# default=
status-bar-view-background=
# The color of the text in the bar at the bottom in view mode.
# default=
status-bar-view-text=
# The color of the text in the command bar at the bottom.
# default=
command-text=
# Background of selected list items.
# default=
list-selected-background=
# The text color of selected list items.
# default=
list-selected-text=
# The background color of selected list items that are out of focus.
# default=
list-selected-inactive-background=
# The text color of selected list items that are out of focus.
# default=
list-selected-inactive-text=
# The main color of the text for key hints
# default=
controls-text=
# The highlight color of for key hints
# default=
controls-highlight=
# The background color in dropdowns and autocompletions
# default=
autocomplete-background=
# The text color in dropdowns at autocompletions
# default=
autocomplete-text=
# The background color for selected value in dropdowns and autocompletions
# default=
autocomplete-selected-background=
# The text color for selected value in dropdowns and autocompletions
# default=
autocomplete-selected-text=
# The background color on selected button and the text color of unselected
# buttons
# default=
button-color-one=
# The text color on selected button and the background color of unselected
# buttons
# default=
button-color-two=
# The background on named timelines.
# default=
timeline-name-background=
# The text color on named timelines
# default=
timeline-name-text=
[input]
# You can edit the keys for tut below.
#
# The syntax is a bit weird, but it works. And I'll try to explain it as well as
# I can.
#
# Example:
# status-favorite="[F]avorite","Un[F]avorite",'f','F'
# status-delete="[D]elete",'d','D'
#
# status-favorite and status-delete differs because favorite can be in two
# states, so you will have to add two key hints.
# Most keys will only have on key hint. Look at the default value for reference.
#
# Key hints must be in some of the following formats. Remember the quotation
# marks.
# "" = empty
# "[D]elete" = Delete with a highlighted D
# "Un[F]ollow" = UnFollow with a highlighted F
# "[Enter]" = Enter where everything is highlighted
# "Yan[K]" = YanK with a highlighted K
#
# After the hint (or hints) you must set the keys. You can do this in two ways,
# with single quotation marks or double ones.
#
# The single ones are for single chars like 'a', 'b', 'c' and double marks are
# for special keys like "Enter". Remember that they are case sensitive.
#
# To find the names of special keys you have to go to the following site and
# look for "var KeyNames = map[Key]string{"
#
# https://github.com/gdamore/tcell/blob/master/key.go
# Keys for moving down
# default="",'j','J',"Down"
global-down="",'j','J',"Down"
# Keys for moving up
# default="",'k','K',"Up"
global-up="",'k','K',"Up"
# To select items
# default="","Enter"
global-enter="","Enter"
# To go back
# default="[Esc]","Esc"
global-back="[Backspace]","Backspace2"
# To go back and exit Tut
# default="[Q]uit",'q','Q'
global-exit="[Q]uit",'q','Q'
# Move to the top
# default="",'g',"Home"
main-home="",'g',"Home"
# Move to the bottom
# default="",'G',"End"
main-end="",'G',"End"
# Go to previous feed
# default="",'h','H',"Left"
main-prev-feed="",'h','H',"Left"
# Go to next feed
# default="",'l','L',"Right"
main-next-feed="",'l','L',"Right"
# Focus on the previous feed window
# default="","Backtab"
main-prev-window="","Backtab"
# Focus on the next feed window
# default="","Tab"
main-next-window="","Tab"
# Focus on the notification list
# default="[N]otifications",'n','N'
main-notification-focus="[N]otifications",'n','N'
# Compose a new toot
# default="",'c','C'
main-compose="",'c','C'
# Open avatar
# default="[A]vatar",'a','A'
status-avatar="[A]vatar",'a','A'
# Boost a toot
# default="[B]oost","Un[B]oost",'b','B'
status-boost="[B]oost","Un[B]oost",'b','B'
# Edit a toot
# default="[E]dit",'e','E'
status-edit="[E]dit",'E'
# Delete a toot
# default="[D]elete",'d','D'
status-delete="[D]elete",'d','D'
# Favorite a toot
# default="[F]avorite","Un[F]avorite",'f','F'
status-favorite="[F]avorite","Un[F]avorite",'f','F'
# Open toots media files
# default="[M]edia",'m','M'
status-media="M[e]dia",'e'
# Open links
# default="[O]pen",'o','O'
status-links="[O]pen",'o','O'
# Open poll
# default="[P]oll",'p','P'
status-poll="Pol[l]",'l'
# Reply to toot
# default="[R]eply",'r','R'
status-reply="[R]eply",'r','R'
# Save/bookmark a toot
# default="[S]ave","Un[S]ave",'s','S'
status-bookmark="[S]ave","Un[S]ave",'s','S'
# View thread
# default="[T]hread",'t','T'
status-thread="[T]hread",'t','T'
# Open user profile
# default="[U]ser",'u','U'
status-user="[P]rofile",'p','P'
# Open the view mode
# default="[V]iew",'v','V'
status-view-focus="[V]iew",'v','V'
# Yank the url of the toot
# default="[Y]ank",'y','Y'
status-yank="[Y]ank",'y','Y'
# Show the content in a content warning
# default="Press [Z] to toggle cw",'z','Z'
status-toggle-cw="Press [x] to toggle cw",'x','X'
# Show the content of a filtered toot
# default="Press [Z] to view filtered toot",'z','Z'
status-show-filtered="Press [x] to view filtered toot",'x','X'
# View avatar
# default="[A]vatar",'a','A'
user-avatar="[A]vatar",'a','A'
# Block the user
# default="[B]lock","Un[B]lock",'b','B'
user-block="[B]lock","Un[B]lock",'b','B'
# Follow user
# default="[F]ollow","Un[F]ollow",'f','F'
user-follow="Follo[w]","UnFollo[w]",'w','W'
# Follow user
# default="Follow [R]equest","Follow [R]equest",'r','R'
user-follow-request-decide="Follow [R]equest","Follow [R]equest",'r','R'
# Mute user
# default="[M]ute","Un[M]ute",'m','M'
user-mute="[M]ute","Un[M]ute",'m','M'
# Open links
# default="[O]pen",'o','O'
user-links="[O]pen",'o','O'
# View user profile
# default="[U]ser",'u','U'
user-user="[P]rofile",'p','P'
# Open view mode
# default="[V]iew",'v','V'
user-view-focus="[V]iew",'v','V'
# Yank the user URL
# default="[Y]ank",'y','Y'
user-yank="[Y]ank",'y','Y'
# Open list
# default="[O]pen",'o','O'
list-open-feed="[O]pen",'o','O'
# List all users in a list
# default="[U]sers",'u','U'
list-user-list="[U]sers",'u','U'
# Add user to list
# default="[A]dd",'a','A'
list-user-add="[A]dd",'a','A'
# Delete user from list
# default="[D]elete",'d','D'
list-user-delete="[D]elete",'d','D'
# Open URL
# default="[O]pen",'o','O'
link-open="[O]pen",'o','O'
# Yank the URL
# default="[Y]ank",'y','Y'
link-yank="[Y]ank",'y','Y'
# Open tag feed
# default="[O]pen",'o','O'
tag-open-feed="[O]pen",'o','O'
# Toggle follow on tag
# default="[F]ollow","Un[F]ollow",'f','F'
tag-follow="[F]ollow","Un[F]ollow",'f','F'
# Edit content warning text on new toot
# default="[C]W text",'c','C'
compose-edit-cw="[C]W text",'c','C'
# Edit the text on new toot
# default="[E]dit text",'e','E'
compose-edit-text="[E]dit text",'e','E'
# Include a quote when replying
# default="[I]nclude quote",'i','I'
compose-include-quote="[I]nclude quote",'i','I'
# Focus on adding media to toot
# default="[M]edia",'m','M'
compose-media-focus="[M]edia",'m','M'
# Post the new toot
# default="[P]ost",'p','P'
compose-post="[P]ost",'p','P'
# Toggle content warning on toot
# default="[T]oggle CW",'t','T'
compose-toggle-content-warning="[T]oggle CW",'t','T'
# Edit the visibility on new toot
# default="[V]isibility",'v','V'
compose-visibility="[V]isibility",'v','V'
# Edit the language of a toot
# default="[L]ang",'l','L'
compose-language="[L]ang",'L'
# Switch to creating a poll
# default="P[O]ll",'o','O'
compose-poll="Pol[l]",'l'
# Delete media file
# default="[D]elete",'d','D'
media-delete="[D]elete",'d','D'
# Edit the description on media file
# default="[E]dit desc",'e','E'
media-edit-desc="[E]dit desc",'e','E'
# Add a new media file
# default="[A]dd",'a','A'
media-add="[A]dd",'a','A'
# Vote on poll
# default="[V]ote",'v','V'
vote-vote="[V]ote",'v','V'
# Select item to vote on
# default="[Enter] to select",' ', "Enter"
vote-select="[Enter] to select",' ', "Enter"
# Add a new poll option
# default="[A]dd",'a','A'
poll-add="[A]dd",'a','A'
# Edit a poll option
# default="[E]dit",'e','E'
poll-edit="[E]dit",'e','E'
# Delete a poll option
# default="[D]elete",'d','D'
poll-delete="[D]elete",'d','D'
# Toggle voting on multiple options
# default="Toggle [M]ultiple",'m','M'
poll-multi-toggle="Toggle [M]ultiple",'m','M'
# Change the expiration of poll
# default="E[X]pires",'x','X'
poll-expiration="E[X]pires",'x','X'
# Change display name
# default="[N]ame",'n','N'
preference-name="[N]ame",'n','N'
# Change default visibility of toots
# default="[V]isibility",'v','V'
preference-visibility="[V]isibility",'v','V'
# Change bio in profile
# default="[B]io",'b','B'
preference-bio="[B]io",'b','B'
# Save your preferences
# default="[S]ave",'s','S'
preference-save="[S]ave",'s','S'
# Edit profile fields
# default="[F]ields",'f','F'
preference-fields="[F]ields",'f','F'
# Add new field
# default="[A]dd",'a','A'
preference-fields-add="[A]dd",'a','A'
# Edit current field
# default="[E]dit",'e','E'
preference-fields-edit="[E]dit",'e','E'
# Delete current field
# default="[D]elete",'d','D'
preference-fields-delete="[D]elete",'d','D'

File diff suppressed because it is too large Load Diff

View File

@ -27,19 +27,18 @@
"" #region G General
" set vicmd=elvis\ -G\ termcap | " set vicmd=vile
set vicmd=vim
"set vimhelp
command! README :!vim ~/Dokumenty/GitHub/dotfiles/vifm/README.md
command! Help :!vim ~/.config/vifm/vifm-help.txt
map <f1> :Help<cr>
cabbrev help Help
" cabbrev help Help
set vimhelp
if !has('win')
set fusehome=/tmp/vifm_FUSE
set slowfs=curlftpfs
endif
set syscalls norunexec
" Automatically resolve symbolic links on l or Enter.
set nofollowlinks
set trash
set notrash
nmap dd :!trash %"f<cr>
nmap d? :exe "!clear && echo 'Native system trash (`trash-cli`): use `trash`|`trash-empty`|`trash-list`|`trash-put`|`trash-restore`|`trash-rm`' && trash-list | sort -r" | shell<cr>
set history=100 undolevels=100
@ -280,7 +279,7 @@
else
fileviewer
\*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm,
\ env -u COLORTERM viu-image-viewer.viu %"c -w %pw -t &&
\ env -u COLORTERM viu %"c -w %pw -t &&
\ echo $(file -b %f)
\ %pc
fileviewer
@ -291,15 +290,15 @@
fileviewer <video/*>,<audio/*> mediainfo %c
endif
" #endregion FmediaBin
fileviewer .*/,*/ tree %c -L 3 &
fileviewer ../ tree %c -L 1 &
fileviewer .*/,*/ tree %c -L 3 -C &
fileviewer ../ tree %c -L 1 -C &
fileviewer *.js,*.mjs,*.ts,*.sh,
\*.css,*.scss,
\*.php,
\*.md,*.html,
\*.json,*.xml
\ env -uCOLORTERM bat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
fileviewer <text/x-*>,<application/*> env -uCOLORTERM bat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
\ env -uCOLORTERM batcat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
fileviewer <text/x-*>,<application/*> env -uCOLORTERM batcat --color always --theme 'Visual Studio Dark+' --wrap never --pager never --tabs 2 %c -p
" #endregion F
" #region S sS keys
nnoremap sf :file &

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

@ -1,79 +0,0 @@
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[user]
name = Jan Andrle
email = andrle.jan@centrum.cz
signingkey = B3A25AED155AFFAB
[credential]
# see https://stackoverflow.com/questions/5343068/is-there-a-way-to-cache-https-credentials-for-pushing-commits/18362082#18362082
helper = /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
[alias]
# * replaced by git-extras
aliases = !git config -l | grep ^alias | cut -c 7- | sort # List all aliases. Stolen from here: https://twitter.com/TrevorBramble/status/774292970681937920
checkout-default= !git checkout `git branch-default`
checkout-default--= !git checkout-default && git branch --delete @{-1} --verbose
branch-default = !git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
branches = for-each-ref --sort=-committerdate refs --format=\"%(authordate:iso8601)\t%(color:blue)%(refname:short)%(HEAD)\t%(if:notequals="")%(upstream:short)%(then)→ %(upstream:short)%(color:reset)%(else)%(color:yellow)%(objectname:short)%(color:reset)\t%(contents:subject)%(end)\"
tags = tag -l --sort=-creatordate --format='%(refname:short): [%(creatordate:short)] %(subject)'
# * authors: log-authors = shortlog -ns
log-list = log --color --graph --pretty=format:'%Cred%h%Creset %Cgreen[%ad] -%C(yellow)%d%Creset %s %C(bold blue)<%an>%Creset'
log-list-nocolors = log --graph --pretty=format:'%h [%ad] -%d %s <%an>'
status--= !git fetch && git status && echo && echo Commits unpushed: && git log @{push}..HEAD && echo
commit--= !clear && git status -sb | grep -v -e '^ M' & git commit --interactive -v
stashpush = !git stash && git pull && git push && git stash pop
unstage = reset HEAD --
undoall = reset --soft HEAD^
diff-dirs = diff --dirstat --find-copies --find-renames --histogram --color
status-submodule = !git submodule --quiet foreach 'git fetch' && git submodule foreach 'git status && echo'
# * delete-submodule: rm-submodule = !git submodule deinit -f $1 && rm -rf .git/modules/$1 && git rm -rf $1
update-submodule = submodule update --remote --merge
pull-submodule = submodule foreach 'git pull'
diff-submodule = submodule foreach 'git diff'
set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`
push-new=!git push -u origin `git rev-parse --abbrev-ref HEAD`
[core]
editor = vim
pager = delta
whitespace = -trailing-space,-space-before-tab
[diff]
tool = vimdiff
colorMoved = default
[merge]
tool = vimdiff
conflictstyle = diff3
[log]
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)
syntax-theme= Visual Studio Dark+
navigate = true
side-by-side = true
line-numbers = true
[gc]
reflogExpire = 200
reflogExpireUnreachable = 90
[push]
autoSetupRemote = true
[init]
defaultBranch = main
[commit]
gpgsign = true
[rerere]
enabled = true
[credential "https://github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[credential "https://git.dhl.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[maintenance]
repo = /home/jaandrle/Vzdálené/GitHub/dcp-fe-container-certifedpassport
repo = /home/jaandrle/Vzdálené/GitHub/DHLC-Internet-Networking-old
repo = /home/jaandrle/Vzdálené/GitHub/DGF-Certified-Supervisory-Academy

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,6 +17,7 @@ set menu-complete-display-prefix on
"\e[A":history-search-backward
"\e[B":history-search-forward
# shift+enter
"OM": history-and-alias-expand-line
set colored-stats On

View File

@ -3,8 +3,8 @@ AntiAliasFonts=true
BoldIntense=true
ColorScheme=DarkPastels
DimmValue=54
Font=Ubuntu Mono,9,-1,5,700,0,0,0,0,0,0,0,0,0,0,1,Bold
UseFontLineChararacters=false
Font=Ubuntu Mono,9,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium
UseFontLineChararacters=true
[General]
DimWhenInactive=false
@ -14,3 +14,6 @@ Parent=FALLBACK/
[Scrolling]
HistoryMode=2
ScrollBarPosition=2
[Terminal Features]
BellMode=1

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

@ -1,5 +0,0 @@
# Newsboat
[newsboat/newsboat: An RSS/Atom feed reader for text terminals](https://github.com/newsboat/newsboat)
## Related files
- [./\*](./)

View File

@ -1,60 +0,0 @@
# for inspiration https://github.com/gpakosz/.newsboat/blob/master/config
auto-reload yes
reload-time 90
reload-threads 11
always-display-description true
error-log "~/.newsboat/error.log"
keep-articles-days 30
prepopulate-query-feeds yes
# confirm-mark-all-feeds-read no
player vlc
browser "xdg-open"
macro p set browser "vlc %u" ; open-in-browser ; set browser "xdg-open"
macro e set browser "vim ~/.newsboat/config" ; open-in-browser ; set browser "xdg-open"
color background color8 default bold
color info default color234
color listnormal default default
color listfocus color188 color234
color listnormal_unread color187 default
color listfocus_unread color179 default
search-highlight-colors color179 default
highlight article "^(Feed|Author|Title|Date|Link): .*$" color117 default
highlight articlelist "/date .\{4\}-.\{2\}-.\{2\} .\{2\}:.\{2\}" color43 default
highlight articlelist "/size \[^ \]*" color64 default
highlight articlelist "/feed .*$" color151 default
highlight-article "age > 1 and unread == \"no\"" color245 default
feedlist-format ":%-4i %-5U %?T?↓ &?%t"
articlelist-format ":%-4i %f %?T?%-3T|?%t /date %D /size %-4L %?T?/feed %T?%"
text-width 90
datetime-format "%Y-%m-%d %H:%M"
bind-key ; cmdline
unbind-key q
bind-key j down
bind-key k up
bind-key J next-feed articlelist
bind-key K prev-feed articlelist
bind-key h quit
bind-key LEFT quit
bind-key l open
bind-key RIGHT open
bind-key g home
bind-key G end
bind-key a toggle-article-read
bind-key n next-unread
unbind-key p
bind-key N prev-unread
bind-key s sort
bind-key S rev-sort
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
# vim: ft=apachestyle cms=#\ %s :

View File

@ -1,22 +0,0 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
import { html2rss } from './html2rss.mjs';
/** @typedef {import('./html2rss.mjs').T_RSSITEM} T_RSSITEM */
html2rss($[1], $[2], articles)
.then(pipe( echo, $.exit.bind(null, 0)));
/**
* @param {string} response
* @returns {T_RSSITEM[]}
* */
function articles(response){
const links= Array.from(response.matchAll(/vcard__link" href="([^"]*)"/g)).map(pluckFound);
const dates= Array.from(response.matchAll(/vcard__publish[^>]*>([^<]*)</g)).map(pluckFound).map(toISO);
return Array.from(response.matchAll(/<h3[^>]*>([^<]*)</g))
.map(pluckFound)
.filter(Boolean)
.map(function(title, i){ return { title, link: links[i], date: dates[i] }; });
/** @param {string} date */
function toISO(date){ return date.split(". ").reverse().map(d=> d.padStart(2, "0")).join("-")+"T00:00:00.000Z"; }
function pluckFound([ _, found]){ return found; }
}

View File

@ -1,39 +0,0 @@
#!/usr/bin/env nodejsscript
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
/**
* @typedef T_RSSITEM
* @type {{ title: string, link: string, date: string }}
* */
/**
* @param {string} title
* @param {string} url
* @param {(response: string)=> T_RSSITEM[]} parseItems
* @returns {Promise<string>}
* */
export function html2rss(title, url, parseItems){
return fetch(url)
.then(response=> response.text())
.then(pipe( parseItems, toRSS ));
function toRSS(items){
const articles_rss= items.map(function({ title, date, link }){
return [
"<item>",
"<title>"+title+"</title>",
"<link>"+link+"</link>",
"<updated>"+date+"</updated>",
"</item>"
].join("\n");
});
return [
`<?xml version="1.0" encoding="UTF-8" ?>`,
`<rss version="2.0">`,
"<channel>",
`<title>${title}</title>`,
`<link>${url}</link>`,
...articles_rss,
"</channel>",
"</rss>"
].join("\n");
}
}

View File

@ -1,212 +0,0 @@
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?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
"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://www.mfcr.cz/cs/rss/vydali-jsme-k-hospodareni-statu ! stát
https://www.sporicidluhopisycr.cz/cs/rss/aktuality ! stát
http://www.vlada.cz/cs/urad/RSS/rss.xml ! stát
https://mastodonczech.cz/@SpravedlnostCZ ! stát
https://zpravobot.news/@NUKIB_CZ ! stát
https://www.ceskezajmy.eu/feed/ ! stát
https://poladprahu.cz/category/novinky/feed/ ! stát
https://sdilenedomy.cz/feed/ ! stát
"query:📒:tags # \"stát\""
https://www.irozhlas.cz/rss/irozhlas ! news
https://denikn.cz/feed?ref=inc ! news
https://www.investigace.cz/feed/ ! news
"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
# ? tw PatrikKorenar → patreon, https://www.instagram.com/patrikkorenar
"query:📰🔬:tags # \"news/science\""
https://www.lupa.cz/rss/clanky/ ! news/tech
https://www.root.cz/rss/zpravicky/ ! news/tech
https://www.root.cz/rss/clanky/ ! news/tech
"query: Root Softwarová sklizeň:title =~ \"^Softwarová sklizeň\" and rssurl == \"https://www.root.cz/rss/clanky/\"" news/tech
https://zdrojak.cz/feed/ ! news/tech
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
https://www.omgubuntu.co.uk/feed ! news/tech
https://servis.idnes.cz/rss.aspx?c=technet ! news/tech
"query:📰💻💡:tags # \"news/tech\""
https://news.ycombinator.com/rss "~📰👋💻💡 Hackernews"
https://lemmy.kde.social/feeds/c/kde.xml?sort=Active ! lemmy
https://beehaw.org/feeds/c/science.xml?sort=Active ! lemmy
https://lemmy.ml/feeds/c/firefox.xml?sort=Active ! lemmy
https://lemmy.ml/feeds/c/vim.xml?sort=Active ! lemmy
https://lemmy.ml/feeds/c/css.xml?sort=Active ! lemmy
https://lemmy.ml/feeds/c/javascript.xml?sort=Active ! lemmy
https://lemmy.ml/feeds/c/kde.xml?sort=Active ! lemmy
"query:📰👋💻💡 Lemmy:tags # \"lemmy\""
https://github.com/jordwalke.atom ! twitter/α
https://gts.eilhart.cz/@kayla.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://techhub.social/@erikengheim ! twitter/α
https://bird.makeup/users/jpschroeder.rss ! twitter/α
# TODO: @jpschroeder@fosstodon.org
https://mastodon.social/@firt.rss ! twitter/α
https://princiya.com/newblog/feeds/all.atom.xml ! twitter/α
https://davidwalsh.name/feed ! twitter/α
https://jecas.cz/rss ! twitter/α
# JanKoWeb geekovo zdrojak
"query:📰👋💻💡 Twitter/α:tags # \"twitter/α\""
# 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://www.youtube.com/feeds/videos.xml?channel_id=UCtYxnvekc2-3P74TdLx0srQ ! twitter/mixed
https://kill-the-newsletter.com/feeds/c6e1z94wpw0eds67.xml ! twitter/mixed
https://kill-the-newsletter.com/feeds/39xfn7p1cvf8dif4.xml ! twitter/mixed
https://kill-the-newsletter.com/feeds/5tww0ecg9y4twnxz.xml ! twitter/mixed
https://mastodonczech.cz/@ewajelinek ! 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/blog-feed.xml ! twitter/mixed
https://archetypal.cz/feed/ ! twitter/mixed
# TODO: https://www.threads.net/@mariehermanova
https://kill-the-newsletter.com/feeds/xmub9gn72ecekvbi.xml ! twitter/mixed
https://www.mimoagendu.cz/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
https://kill-the-newsletter.com/feeds/mx8wi1fifxu6scj8.xml ! newsletters
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://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://developer.apple.com/news/rss/news.rss "~Apple Dev News" dev/servises
https://cordova.apache.org/feed.xml ! twitter/α
https://www.mozilla.cz/feed/ ! twitter/α
# https://www.githubstatus.com/history.rss ! dev/servises
"query:⌨🖱:tags # \"dev/servises\""
https://github.com/mdn.atom ! 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
https://github.com/jensimmons.atom ! dev/github
https://github.com/mirisuzanne.atom ! dev/github
# https://www.smashingmagazine.com/feed/
"query:⌨🖱:tags # \"dev/github\""
https://www.informacnigramotnost.cz/feed/ ! desinfo
https://demagog.cz/rss/index.atom ! desinfo
https://www.fakticke.info/feed/ ! desinfo
https://manipulatori.cz/feed/ ! desinfo
"query:🤔:tags # \"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
https://80000hours.org/feed/ ! glogs
http://tapolitika.cz/feed/ ! glogs
"query:🤓:tags # \"blogs\""
https://mobilmania.zive.cz/rss/sc-47/default.aspx ! news/info
https://feeds.feedburner.com/penize?format=xml ! news/info
https://www.mesec.cz/rss/clanky/ ! news/info
https://www.mesec.cz/rss/aktuality/ ! news/info
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

@ -30,8 +30,7 @@ export GTK_MODULES
export UBUNTU_MENUPROXY
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/"
# Ubuntu make installation of Ubuntu Make binary symlink
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,5 @@
Include /home/jaandrle/.config/colima/ssh_config
Host vpsfree
HostName 37.205.11.208
IdentityFile ~/.ssh/vpsfree

View File

@ -12,6 +12,9 @@ To navigate my secondary editor use [../vscode](../vscode).
See [./§vim_plugins_export-v0.json](./§vim_plugins_export-v0.json). Also call `:helptags ~/.vim/bundle/`.
## Removed
- [jasonccox/vim-wayland-clipboard](https://github.com/jasonccox/vim-wayland-clipboard) due to https://github.com/vim/vim/issues/5157#issuecomment-1916375710
## To consider
- [yaegassy/coc-html-css-support: HTML id and class attribute "completion" for coc.nvim.](https://github.com/yaegassy/coc-html-css-support): `alpine.js`, `petite-vue`
- [vimwiki/vimwiki: Personal Wiki for Vim](https://github.com/vimwiki/vimwiki)

View File

@ -1,6 +0,0 @@
nmap <leader>vd /diff --git<cr> 0vG$
command! AIcommit ALTredir !§ai-commit.mjs
command! AIcommitConventional ALTredir !§ai-commit.mjs --format conventional
command! AIcommitGitmoji ALTredir !§ai-commit.mjs --format gitmoji
command! AIcommitGit3moji ALTredir !§ai-commit.mjs --format git3moji
nmap <leader><f1> :AIcommitOP

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

@ -26,5 +26,6 @@
"complexity": ["error", 15]
}
}
}
},
"snippets.ultisnips.pythonPrompt": false
}

View File

@ -9,10 +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',

287
.vimrc
View File

@ -1,18 +1,23 @@
""" VIM config file | Jan Andrle | 2024-02-07 (VIM >=8.1)
""" VIM config file | Jan Andrle | 2025-04-05 (VIM >=9.1 AppImage)
"" #region B Base
scriptencoding utf-8 | set encoding=utf-8
set pythonthreedll=/lib/x86_64-linux-gnu/libpython3.12.so.1.0
let $BASH_ENV = "~/.bashrc"
set runtimepath^=~/.vim/bundle/*
packadd! matchit
set hidden
packadd! cfilter
let g:ft_man_folding_enable = 1
runtime! ftplugin/man.vim
" set hidden
set title
colorscheme codedark
set updatetime=300 lazyredraw ttyfast " Having longer updatetime (default is 4s) leads to noticeable delays and poor user experience. Also reduce redraw frequency and fast terminal typing
set updatetime=300 "TODO DEL lazyredraw
set noerrorbells novisualbell
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 +53,13 @@
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
" TODO DEL
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
@ -85,40 +78,25 @@
augroup quickfix
autocmd!
autocmd QuickFixCmdPost * call <sid>QuickFixCmdPost()
autocmd filetype qf
\ if filter(getwininfo(), {i,v -> v.winnr == winnr()})[0].loclist
\| nnoremap <buffer> ;q :lclose<cr>
\| nnoremap <buffer> ;w :lgetbuffer<CR>:lclose<CR>:lopen<CR>
\| nnoremap <buffer> ;s :ldo s///gc \| update<c-left><c-left><c-left><right><right>
\| else
\| nnoremap <buffer> ;q :cclose<cr>
\| nnoremap <buffer> ;w :cgetbuffer<CR>:cclose<CR>:copen<CR>
\| nnoremap <buffer> ;s :cdo s///gc \| update<c-left><c-left><c-left><right><right>
\| endif
augroup END
"" #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
set sessionoptions-=options
command! -nargs=1
\ CLSESSIONcreate :call mini_sessions#create(<f-args>)
command! -nargs=0
\ CLSESSIONconfig :call mini_sessions#sessionConfig()
command! -nargs=1 -complete=customlist,mini_sessions#complete
\ CLSESSIONload :call mini_sessions#load(<f-args>)
command! -nargs=0
\ Scd :call mini_sessions#recoverPwd()
if !has("gui_running")
execute 'hi! User2 ctermbg='.synIDattr(synIDtrans(hlID('StatusLine')), 'bg').' ctermfg=grey' | endif
function! NumberOfBuffers()
return len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
endfunction
set laststatus=2 " Show status line on startup
set statusline+=··%1*≡·%{QuickFixStatus()}%*··%2*»·%{user_tips#current()}%*··%=
set statusline+=%<%f%R\%M··▶·%{&fileformat}·%{&fileencoding?&fileencoding:&encoding}·%{&filetype}··∷·%{mini_sessions#name('')}·· 
set statusline+=··≡·%{QuickFixStatus()}%*··»·%{user_tips#current()}%*··%=
set statusline+=(%{NumberOfBuffers()})··%<%f%R\%M··▶·%{&fileformat}·%{&fileencoding?&fileencoding:&encoding}·%{&filetype}
set statusline+=··
" set statusline+=··∷·%{mini_sessions#name('')}·· 
set history=500 " How many lines of (cmd) history has to remember
set nobackup nowritebackup noswapfile " …there is issue #649 (for servers) and Im using git/system backups
@ -128,11 +106,11 @@
command! SETundoClear let old_undolevels=&undolevels | set undolevels=-1 | exe "normal a \<BS>\<Esc>" | let &undolevels=old_undolevels | unlet old_undolevels | write
"" #endregion SLH
"" #region LLW Left Column + Line + Wrap + Scrolling
if has("nvim-0.5.0") || has("patch-8.1.1564") " Recently vim can merge signcolumn and number column into one
set signcolumn=number | else | set signcolumn=yes | endif " show always to prevent shifting when diagnosticappears
set signcolumn=yes
set cursorline cursorcolumn " Always show current position
set number foldcolumn=2 " enable line numbers and add a bit extra margin to the left
set colorcolumn=+1 " …marker visual
" TODO DEL
command -nargs=? SETtextwidth if <q-args> | let &textwidth=<q-args> | let &colorcolumn='<args>,120,240' | else | let &textwidth=250 | let &colorcolumn='120,240' | endif
SETtextwidth " wraping lines and show two lines
set nowrap " Don't wrap long lines by default
@ -142,27 +120,53 @@
"" #endregion LLW
"" #region CN Clipboard + Navigation throught Buffers + Windows + … (CtrlP)
set pastetoggle=<F2> | nnoremap <F2> :set invpaste paste?<CR>
nnoremap <silent> <leader>" :call jaandrle_utils#copyRegister()<cr>
function! JaaCopyRegister()
echo "Copy content of the register: "
let sourceReg = nr2char(getchar())
if sourceReg !~# '\v^[a-z0-9"*+]'
echon sourceReg." invalid register"
return
endif
echon sourceReg."\ninto the register: "
let destinationReg = nr2char(getchar())
if destinationReg !~# '\v^[a-z0-9"*+]'
echon destinationReg." invalid register"
return
endif
call setreg(destinationReg, getreg(sourceReg, 1))
echon destinationReg
endfunction
nnoremap <silent> <leader>" :call JaaCopyRegister()<cr>
nmap <expr> š buffer_number("#")==-1 ? "sš<cr>" : "\<c-^>"
nmap s3 :buffers<cr>:b<space>
nmap :CtrlPBuffer<cr>
nmap č
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>'],
\ 'ToggleType(-1)': ['<c-down>'],
\ 'PrtCurStart()': ['<c-b>'],
\}
" CtrlP previously
nmap <expr> š buffer_number("#")==-1 ? ":CocList --normal buffers\<cr>" : "\<c-^>"
nmap ě :CocList
nmap <leader>3 :buffers<cr>:b<space>
nmap <leader>š :CocList buffers<cr> | :syntax on<cr>
nmap č <leader>š
"" #endregion CN
"" #region FOS File(s) + Openning + Saving
set autowrite autoread | autocmd FocusGained,BufEnter *.* checktime
set modeline
command! -nargs=?
\ CLmodeline :call jaandrle_utils#AppendModeline(<q-args>=='basic' ? 0 : 1)
function! JaaAppendModeline(additional= 0)
let l:modeline= printf(" vim: set tabstop=%d shiftwidth=%d textwidth=%d %sexpandtab :",
\ &tabstop, &shiftwidth, &textwidth, &expandtab ? '' : 'no')
let l:modeline= substitute(&commentstring, "%s", l:modeline, "")
call append(line("$"), l:modeline)
if !a:additional | return 0 | endif
if &foldmethod=="marker"
let l:modeline= printf(" vim>60: set foldmethod=marker foldmarker=%s :",
\ &foldmarker)
elseif &foldmethod=="indent"
let l:modeline= printf(" vim>60: set foldmethod=indent foldlevel=%d foldnestmax=%d:",
\ &foldlevel, &foldnestmax)
else
return 0
endif
let l:modeline= substitute(&commentstring, "%s", l:modeline, "")
call append(line("$"), l:modeline)
endfunction
set path+=src/**,app/**,build/** " File matching for `:find`
for ignore in [ '.git', '.npm', 'node_modules' ]
@ -173,28 +177,23 @@
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
"" #region EN Editor navigation + search
set grepprg=LC_ALL=C\ grep\ -HRIns
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()
nnoremap <silent> <c-l> :nohlsearch<c-r>=has('diff')?'<bar>diffupdate':''<cr><cr><c-l> | endif " TODO? <bar>syntax sync fromstart
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
" use <c-v>§ for §
inoremap § <esc>
set nrformats-=octal
command! -nargs=1 SETTOGGLEnrformats if &nf=~<q-args> | set nf-=<args> | else | set nf+=<args> | endif
let g:htl_css_templates=1
let g:markdown_fenced_languages= [ 'javascript', 'js=javascript', 'json', 'html', 'php', 'bash', 'vim', 'vimscript=javascript', 'sass' ]
@ -215,15 +214,16 @@
let g:rainbow#blacklist = [203,9]
autocmd VimEnter * try
\| call rainbow_parentheses#toggle() | catch | endtry
command! SETTOGGLErainbowParentheses call rainbow_parentheses#toggle()
" HIGHLIGHT&YANK plugins machakann/vim-highlightedyank & cwordhi.vim
let g:highlightedyank_highlight_duration= 250
" HIGHLIGHT&YANK plugins (buildin) hlyank & cwordhi.vim
packadd hlyank
let g:hlyank_duration= 250
let g:cwordhi#autoload= 1
set showmatch " Quick highlight oppening bracket/… for currently writted
set timeoutlen=1000 ttimeoutlen=0 " Remove timeout when hitting escape TAB
if v:version > 703 || v:version == 703 && has("patch541")
set formatoptions+=j | endif " Delete comment character when joining commented lines
set smarttab
" TODO DEL
command! -nargs=1 SETtab let &shiftwidth=<q-args> | let &tabstop=<q-args> | let &softtabstop=<q-args>
SETtab 4
set backspace=indent,eol,start " Allow cursor keys in insert mode: http://vi.stackexchange.com/a/2163
@ -233,11 +233,12 @@
if ($TERM =~ '256' && has("termguicolors"))
set termguicolors | endif
if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on")
syntax on | endif
syntax enable | endif
set list listchars=tab:»·,trail,extends:#,nbsp:~,space" Highlight spec. chars / Display extra whitespace
set redrawtime=10000
augroup syntax_sync_min_lines
autocmd!
autocmd Syntax * syn sync minlines=2000
autocmd BufEnter * syntax sync fromstart "TODO DEL syn sync minlines=2000
augroup END
let g:vim_vue_plugin_config = { 'foldexpr': 1, 'attribute': 1, 'keyword': 1 }
" SPELL
@ -249,11 +250,11 @@
nnoremap <leader>O O<space><bs><esc>
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
" 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]
execute m.'map <leader>'.l.' "+'.l | endfor | endfor " no noremap ⇐ https://github.com/jasonccox/vim-wayland-clipboard?tab=readme-ov-file#non-recursive-mappings
" 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
@ -263,46 +264,18 @@
autocmd BufWinEnter *.* silent! loadview
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]
\ ->substitute('GIThub', 'gh', '')
\ ->substitute('GIT', 'git ', '')->trim()->split(' ')
return bash#complete((l:cmd_start+l:cmd[1:])->join())
endfunction
function s:gitCmd(candidate)
execute '!clear && echo ":: git '.a:candidate->escape('"').' ::" && git '.a:candidate
endfunction
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GIT call <sid>gitCmd(<q-args>)
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GITstatus !git status-- <args>
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GITcommit !git commit-- <args>
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GITpush !git push <args>
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GITdiff if <q-args>=='' | execute '!clear && git diff %:p' | else | silent! execute '!git diff <args>' | endif
command! -nargs=*
\ GITrestore execute '!clear && git status '.(<q-args>=='.' ? '%:p':'<args>').' -bs & git restore '.(<q-args>=='' ? '%:p':'<args>').' --patch'
command! -nargs=* -complete=customlist,<sid>gitCompletion
\ GIThub execute '!clear && echo ":: gh '.<q-args>->escape('"').' ::" && gh '.<q-args>
command! -nargs=?
\ GIThubIssue execute '!clear && gh issue view '.expand('<cword>').' '.<q-args>
let g:git_messenger_no_default_mappings= v:true
let g:git_messenger_date_format= '%Y-%m-%d (%c)'
let g:git_messenger_always_into_popup= v:true
augroup git_messenger_help
autocmd!
autocmd FileType gitmessengerpopup setlocal keywordprg=git\ show
augroup END
command! -nargs=0
\ GITblameThis GitMessenger
"" #endregion GIT
"" #region AI
let g:codeium_disable_bindings = 1
imap <script><silent><nowait><expr> <f3><f3> codeium#Accept()
imap <script><silent><nowait><expr> <f3><w> codeium#AcceptNextWord()
imap <script><silent><nowait><expr> <f3><j> codeium#AcceptLine()
imap <f3>n <Cmd>call codeium#CycleCompletions(1)<CR>
imap <f3>N <Cmd>call codeium#CycleCompletions(-1)<CR>
imap <f3>d <Cmd>call codeium#Clear()<CR>
imap <f3>! <Cmd>call codeium#Complete()<CR>
"" #endregion AI
"" #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-git', 'coc-pretty-ts-errors', 'coc-eslint', 'coc-gitmoji', 'coc-html', 'coc-json', 'coc-lists', 'coc-marketplace', 'coc-phpls', 'coc-sh', 'coc-snippets', 'coc-styled-components', 'coc-svg', 'coc-tsserver']
" https://github.com/antonk52/cssmodules-language-server
call coc#config('languageserver.cssmodules', {
\ "command": "cssmodules-language-server",
@ -312,21 +285,6 @@
\ "settings": {}
\ })
autocmd FileType scss setl iskeyword+=@-@
command -nargs=? ALTmake if &filetype=='javascript' | compiler jshint | elseif &filetype=='php' | compiler php | endif
\| if <q-args>!='' | silent make <args> | else | silent make '%' | endif | checktime | silent redraw! " …prev line, hotfix (filetype detection doest works)
function <sid>ToggleALTmakeOnWrite()
if exists('#ALTmake_auto#BufWritePost')
augroup ALTmake_auto
autocmd!
augroup END
else
augroup ALTmake_auto
autocmd!
autocmd BufWritePost *.{php,js,mjs} execute 'ALTmake' | call <sid>QuickFixCmdPost()
augroup END
endif
endfunction
command! ALTmakeOnWrite call <sid>ToggleALTmakeOnWrite()
function! CustomKeyWord(word)
if(a:word=="gulp_place")
highlight link gulp_place ErrorMsg
@ -339,7 +297,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()
@ -349,19 +307,19 @@
return !col || getline('.')[col - 1] =~# '\s'
endfunction
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')
nmap <silent><nowait> gd <Plug>(coc-definition)
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>
nnoremap <leader>gf :let g:ctrlp_default_input=expand("<cword>") <bar> execute 'CtrlP' <bar> unlet g:ctrlp_default_input <cr>
vnoremap <leader>gf :<c-u>let g:ctrlp_default_input=mini_enhancement#selectedText() <bar> execute 'CtrlP' <bar> unlet g:ctrlp_default_input <cr>
nnoremap <leader>gf :CocList --interactive --normal --input='<c-r>=expand("<cword>")<cr>' files<cr>
vnoremap <leader>gf :<c-u>CocList --interactive --normal --input='<c-r>=mini_enhancement#selectedText()<cr>' files<cr>
""" #region COCP Coc popups scroll (Remap <C-f> and <C-b> for scroll float windows/popups.)
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
@ -372,11 +330,12 @@
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>)
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, Vifm, 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() : '' ),
@ -384,18 +343,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: '
@ -415,28 +369,8 @@
\ CLcheat call cheat_copilot#open(<q-args>==''?&filetype:<q-args>)
function! s:show_documentation(word)
if (index(['vim', 'help'], &filetype) >= 0)
" inspired by https://github.com/tpope/vim-scriptease/blob/74bd5bf46a63b982b100466f9fd47d2d0597fcdd/autoload/scriptease.vim#L737
let syn= get(reverse(map(synstack(line('.'), col('.')), 'synIDattr(v:val,"name")')), 0, '')
if syn ==# 'vimFuncName' | return <sid>show_documentation_vim('h '.a:word.'()')
elseif syn ==# 'vimOption' | return <sid>show_documentation_vim("h '".a:word."'")
elseif syn ==# 'vimUserAttrbKey' | return <sid>show_documentation_vim('h :command-'.a:word)
endif
let col= col('.') - 1
while col && getline('.')[col] =~# '\k' | let col-= 1 | endwhile
let pre= col == 0 ? '' : getline('.')[0 : col]
let col= col('.') - 1
while col && getline('.')[col] =~# '\k' | let col+= 1 | endwhile
if pre =~# '^\s*:\=$' | return <sid>show_documentation_vim('h :'.a:word)
elseif pre =~# '\<v:$' | return <sid>show_documentation_vim('h v:'.a:word)
endif
let post= getline('.')[col : -0]
if a:word ==# 'v' && post =~# ':\w\+' | return <sid>show_documentation_vim('h v'.matchstr(post, ':\w\+')) | endif
return <sid>show_documentation_vim('h '.a:word)
endif
if (!CocAction('hasProvider', 'hover'))
if &filetype=='man' | call dist#man#PreGetPage(0) | return 0 | endif
return feedkeys('K', 'in')
endif
if &filetype=='html' && coc#source#custom_elements#hover(a:word)!=0
@ -445,16 +379,7 @@
return CocActionAsync('doHover')
endfunction
function! s:show_documentation_vim(cmd)
call execute(a:cmd) | call histadd("cmd", a:cmd)
endfunction
"" #endregion COC
let g:codeium_disable_bindings = 1
imap <script><silent><nowait><expr> <f3><f3> codeium#Accept()
imap <f3>n <Cmd>call codeium#CycleCompletions(1)<CR>
imap <f3>N <Cmd>call codeium#CycleCompletions(-1)<CR>
imap <f3>d <Cmd>call codeium#Clear()<CR>
imap <f3>! <Cmd>call codeium#Complete()<CR>
" vim: set textwidth=250 :
" vim>60: set foldmethod=marker foldmarker=#region,#endregion :

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)

File diff suppressed because it is too large Load Diff

39
bin/git-identity Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -euo pipefail
config="$HOME/.config/git/identities"
input="${1:-}"
usage="Usage
git identity [<name>|help|-]
git-identity --help
"
[ -z "$input" ] \
&& echo "$usage"\
&& echo -e "$config/current.conf … current identity:" \
&& cat "$config/current.conf" \
&& exit 0
[ "$input" = --help ] \
&& input="help"
[ "$input" = help ] \
&& echo "$usage"\
&& echo '- _empty_: shows usage and current identity' \
&& echo '- <name>: set identity' \
&& echo '- -: show path to identities directory' \
&& echo '- help: shows this help' \
&& echo -e '\n\nExamples' \
&& echo '- git identity' \
&& echo '- git identity user' \
&& echo '- ls $(git identity -)' \
&& echo -e '\n\nGit config' \
&& echo "- git config --global include.path '$config/current.conf'" \
&& exit 0
[ "$input" = - ] \
&& echo "$config" \
&& exit 0
identity="$config/$input.conf"
[ ! -e "$identity" ] \
&& echo "No such identity: $input" >&2 \
&& echo "$identity" >&2 \
&& exit 1
ln --verbose --force "$identity" "$config/current.conf"

View File

@ -1,418 +0,0 @@
#!/usr/bin/env node
/* jshint esversion: 8,-W097, -W040, node: true, expr: true, undef: true */
const /* dependencies */
[ fs, readline, https, { spawn } ]= [ "fs", "readline", "https", "child_process" ].map(p=> require(p));
const /* helper for coloring console | main program params */
colors= { e: "\x1b[38;2;252;76;76m", s: "\x1b[38;2;76;252;125m", w: "\x1b[33m", R: "\x1b[0m", y: "\x1b[38;2;200;190;90m", g: "\x1b[38;2;150;150;150m" },
info= {
name: __filename.slice(__filename.lastIndexOf("/")+1, __filename.lastIndexOf(".")),
version: "1.2.1",
description: "Helper for working with “packages” stored in GitHub releases.",
config: `${__filename.slice(0, __filename.lastIndexOf("."))}.json`,
folder: __filename.slice(0, __filename.lastIndexOf("/")+1),
commands: [
{
cmd: "help", args: [ "--help", "-h" ],
desc: "Shows this text"
},
{
cmd: "config", args: [ "--config" ],
desc: "Opens config file in terminal editor (defaults to vim)"
},
{
cmd: "check", args: [ "--check", "-c" ],
desc: "Shows/checks updates for registered packages"
},
{
cmd: "update", args: [ "--update", "-u" ], param: "group",
desc: "Installs lates versions of registered packages"
},
{
cmd: "uninstall", args: [ "--uninstall", "-u" ], param: "package",
desc: "Deletes downloaded file and moves package to the 'skip' group"
},
{
cmd: "register", args: [ "--register", "--change" ], param: "package",
desc: "Add package infos to internal list to be able installing/updating"
},
{
cmd: "remove", args: [ "--remove" ], param: "package",
desc: ([
"Uninstall package if needed (see `-u`)",
"And remove it from internal list (see `--config`)"
]).join(". ")
}
],
params: {
group: ([
"You can label each package to update only choosen one",
"There are sereved options:",
" - '' (empty): these packages are includes in all groups",
" - 'all': in case of `--update` process all packages (except skipped)",
" - 'skip': these packages are “uninstalled”",
" No updates will be downloaded",
"Group can be setted via '--register'"
]).join(". "),
package: ([
"Represents package identificator, it is in fact GitHub repository path",
"So, it schould be in the form `username/repository`"
]).join(". ")
}
};
printMain();
const current= getCurrent(process.argv.slice(2));
(function main_(){
const { cmd }= current.command;
if(!cmd) return Promise.resolve("No arguments (use `--help` for showing all oprions).");
switch(cmd){
case "help": return Promise.resolve(printHelp());
case "config": return vim_(info.config);
}
const config= getConfig();
switch(cmd){
case "register": return register_(config);
}
if(!config.packages) return Promise.resolve("No packages yet!");
switch(cmd){
case "check": return check_(config);
case "update": return update_(config);
case "uninstall":
case "remove":
return uninstall_(cmd, config);
}
})()
.then(function(message){
if(message)
log(1, `Operation '${current.command.cmd}' successfull: @s_${message}`);
process.exit();
})
.catch(error);
async function uninstall_(cmd, config){
const progress= [
[ "Deleting file", "not needed" ],
[ "Check out from updates", "yes" ],
[ "Remove from packages list", "no" ]
];
const pkg_name= current.param;
const pkg_index= config.packages.findIndex(({ repository })=> repository===pkg_name);
if(pkg_index===-1) return "nothing to do (maybe typo)";
const pkg= config.packages[pkg_index];
const { downloads }= pkg;
if(downloads&&fs.existsSync(downloads)){
try{ fs.unlinkSync(downloads); progress[0][1]= "done"; }
catch (_){ progress[0][1]= colors.e+"error, try manually "+downloads; }
}
Reflect.deleteProperty(pkg, "last_update");
Reflect.set(pkg, "group", "skip");
progress[1][1]= "done";
if(cmd!=="remove") return gotoEnd();
const y= await promt_(`Are you realy want to remove package ${pkg.repository} (yes/no)`, "no");
if(y!=="yes") return gotoEnd();
config.packages.splice(pkg_index, 1);
progress[2][1]= "done";
return gotoEnd();
function gotoEnd(){
const o= progress.reduce((o, [ k, v ])=> Reflect.set(o, k, v)&&o, {});
logSection(" ", pkg_name, o);
save(config);
}
}
function vim_(file){ return new Promise(function(resolve, reject){
const cmd= spawn((process.env.EDITOR||"vim")+(process.platform==="win32"?".bat":""), [ file ], { stdio: 'inherit' });
cmd.on('exit', e=> e ? reject("Editor error, try manually: "+file) : resolve("OK"));
});}
async function update_(config){
const filter= current.param;
const is_all= filter==="all";
let updates= [];
log(1, "Collecting packages to download:");
for(const [
i, { repository, last_update, group, file_name, exec, downloaded, tag_name_regex }
] of Object.entries(config.packages)){
if(group==="skip") continue;
if(!is_all&&group&&filter!==group) continue;
const { tag_name, published_at, html_url, assets_url }= await githubRelease_(repository, tag_name_regex);
const status= packageStatus(last_update, published_at);
if(status!==3) continue;
const assets= await downloadJSON_(repository, assets_url);
if(!assets.length){
console.log(" Nothing to download: Visit "+html_url);
continue;
}
const options= assets.map(({ name, download_count, size })=>
`${name} | size: ${Math.round(size/1048576)}MB | downloads: ${download_count}`);
logSection(" ", " "+repository, {
"Version": tag_name,
"Url": html_url
});
logSection(" ", " Available assets:", options);
const choose= await promt_(" Choose (empty for skip)", "");
if(choose==="") continue;
const { browser_download_url: url, name: remote_name, size }= assets[choose];
updates.push({
index: i,
file_name, exec, downloaded,
repository, version: tag_name, last_update: published_at,
url, remote_name, size
});
}
if(!updates.length){
log(2, "No packages in "+`group ${filter} needs updates.`);
return Promise.resolve("nothing to update");
}
log(1, "Downloading:");
return applySequentially_(updates, async function(todo){
const to= todo.file_name ? info.folder+todo.file_name : (
todo.downloaded ? todo.downloaded : info.folder+todo.remote_name);
const d= await downloadFile_(to, todo);
return Object.assign(todo, d);
})
.then(function(dones){
log(1, "Finalizing:");
let e= 0;
for(const nth of dones){
if(!nth.success){
e+= 1;
log(2, `${nth.repository}: @e_${nth.message}`);
continue;
}
Object.assign(config.packages[nth.index], registerDownloads(nth));
}
save(config);
const { length }= dones;
const msg= `updated ${length-e} of ${length} packages.`;
return e ? Promise.reject(msg) : Promise.resolve(msg);
});
}
function registerDownloads({ repository, last_update, message: downloads, exec, version }){
let msg= colors.s+"OK";
if(exec==="yes"){
try{ fs.chmodSync(downloads, 0o755); }
catch(e){ msg= colors.e+"try manual `chmod+x` for '"+downloads+"'"; }
}
log(2, `${repository}: ${msg}`);
return { last_update, downloads, version };
}
async function check_({ packages }){
let updates= 0, skipped= 0;
for(const { repository, name, version, last_update, group, tag_name_regex } of packages){
const { tag_name, published_at }= await githubRelease_(repository, tag_name_regex);
const status= packageStatus(last_update, published_at);
updates+= status===3;
const skip= group==="skip";
skipped+= skip;
log(2, `@g_${repository} [${group}]: `+( !version ? "not installed" : packageStatusText(status, skip) ));
}
const u= updates-skipped;
const s= skipped ? ` (inc. skipped: ${updates})` : "";
return (!u ? "" : colors.w)+u+" update(s) available"+s;
}
async function register_(config){
const { param: repository }= current;
if(!Reflect.has(config, "packages")) Reflect.set(config, "packages", []);
const packages= Reflect.get(config, "packages");
let local_id= packages.findIndex(p=> p.repository===repository);
if(local_id===-1)
local_id= packages.push({ repository })-1;
const local= config.packages[local_id];
const remote= await githubRepo_(repository) || {};
log(1, "Registering: "+repository);
const spaces= " ";
local.name= await promt_(spaces+"Name", local.name || remote.name || "");
if(!local.description) local.description= remote.description;
logLines(2, [
"@g_Group info:",
"- you can update specific packages by using their group name",
"- There some reserved options:",
" - '' (empty): will be included in all groups",
" - 'skip': will be always skipped"
]);
local.group= await promt_(spaces+"Group", local.group || "");
local.file_name= await promt_(spaces+"File Name", local.file_name || local.name.toLowerCase().replace(/\s/g, "-") || "");
local.exec= await promt_(spaces+"Make executable (yes/no)", local.exec || "no");
save(config);
return `${repository}: saved`;
}
function packageStatusText(status, skip){
const s= skip ? colors.R+"skipped "+colors.g : "";
switch(status){
case 0: return s+"nothing to compare";
case 1: return s+"@s_up-to-date";
case 2: return s+"newer";
case 3: return s+"@e_outdated/not instaled";
}
}
function packageStatus(local, remote){
if(!remote) return 0;
if(!local) return 3;
if(remote===local) return 1;
return 2+(local<remote);
}
function logSection(spaces, name, data){
console.log(spaces+name);
for(const [ key, value ] of Object.entries(data))
console.log(spaces.repeat(2)+colors.g+key+": "+value.replace(/@(\w)_/g, (_, m)=> colors[m])+colors.R);
}
function githubRelease_(repository, tag_name_regex= ""){
return downloadJSON_(repository, "https://api.github.com/repos/"+repository+"/releases")
.then(data=> data.find(function find({ 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);
})||{});
}
function githubRepo_(repository){ return downloadJSON_(repository, "https://api.github.com/repos/"+repository); }
function promt_(q, def){
const rl= readline.createInterface({ input: process.stdin, output: process.stdout });
return new Promise(function(resolve){
rl.question(q+": ", a=> { rl.close(); resolve(a); });
rl.write(def);
});
}
function getConfig(){
let config;
try{ config= JSON.parse(fs.readFileSync(info.config)); }
catch(e){ config= {}; log(1, "@w_Missing or corrupted config file. Creates empty one."); }
return config;
}
function save(config){
return fs.writeFileSync(info.config, JSON.stringify(config, null, " "));
}
function getCurrent(args){
let command, command_arg, param;
const hasArg= arg=> ({ args })=> args.includes(arg);
for(let i=0, { length }= args, arg; i<length; i++){
arg= args[i];
if(!command){
command= info.commands.find(hasArg(arg));
command_arg= arg;
continue;
}
if(!command.param||typeof param!=="undefined")
break;
param= arg;
}
if(!command)
command= { cmd: "" };
if(command.param&&typeof param==="undefined")
return error(`Missign arguments for '${command_arg}'.`);
return { command, param };
}
function downloadJSON_(repository, url){
return downloadText_(url)
.then(function(data){
try{
const response= JSON.parse(data);
if(Reflect.has(response, "message")) throw new Error(response.message);
return Promise.resolve(JSON.parse(data));
} catch(e){
log(1, "Received data: "+data);
log(1, "@e_"+e);
return Promise.reject(`JSON from '${repository}' failed.`);
}
});
}
function downloadText_(url){
return get_(url)
.then(function(response){ return new Promise(function(resolve){
let data= "";
response.on("data", chunk=> data+= chunk);
response.on("end", ()=> resolve(data));
}); });
}
function downloadFile_(to, { url, repository, size }){
const file= fs.createWriteStream(to);
return get_(url)
.then(r=> get_(r.headers.location))
.then(function(response){ return new Promise(function(resolve){
let progress= 0, pc_prev= 0, avg= 0;
const start= new Date();
const i= setInterval(function(){
readline.clearLine(process.stdout);
const pc= (100*progress/size).toFixed(2);
if(!pc_prev) pc_prev= pc;
else {
avg= ((100-pc)/(60*(pc-pc_prev))).toFixed(2);
pc_prev= 0;
}
const running= ((new Date()-start)/60000).toFixed(2);
log(2, repository+": "+pc+"%"+` (end in ~${avg} mins, running ${running} mins)`);
readline.moveCursor(process.stdout, 0, -1);
}, 500);
response.on('data', function(chunk){
file.write(chunk);
progress+= chunk.length;
});
response.on('end', function(){
clearInterval(i);
readline.clearLine(process.stdout);
log(2, repository+": @s_OK");
file.close(()=> resolve({ success: 1, message: to })); /* close() is async, call cb after close completes. */
});
}); })
.catch(({ message })=> {
fs.unlink(to); // Delete the file async. (But we don't check the result)
return { success: 0, message };
});
}
function get_(url){ return new Promise(function(resolve, reject){
https.get(
url,
{ headers: { 'Cache-Control': 'no-cache', 'User-Agent': 'node' } },
resolve
).on("error", reject);
});}
function applySequentially_(input, pF){
const data= [];
let p= pF(input[0]);
const tie= nth=> result_mth=> ( data.push(result_mth), pF(input[nth]) );
for(let i= 1, { length }= input; i<length; i++)
p= p.then(tie(i));
return p.then(o=> (data.push(o), data));
}
function error(message){
const help_text= `@w_See help using '${info.commands[0].args[0]}'.`;
log(1, `@e_Error: ${message} ${help_text}`);
return process.exit(1);
}
function printMain(){
const { name, version, description }= info;
log(1, `@w_${name}@${version}`);
log(1, description);
const cmds= info.commands.map(({args})=> args[0].replace("--", "")).join(", ");
log(1, `@w_Usage: ${name} --[cmd] [param]`);
log(2, `…cmd: ${cmds}`);
log(2, "…param: Based on cmd\n");
}
function printHelp(){
log(1, "@s_Help:");
log(2, "Commands:");
info.commands.forEach(({ args, param, desc })=> {
const args_text= args.join("|");
param= param ? " "+param : "";
log(3, `@g_${args_text}@R_${param}`);
logLines(4, desc);
});
log(2, "Params:");
for(const [ param, desc ] of Object.entries(info.params)){
log(3, `@g_${param}`);
logLines(4, desc);
}
}
function log(tab, text){
return console.log(" ".repeat(tab)+text.replace(/@(\w)_/g, (_, m)=> colors[m])+colors.R);
}
function logLines(tab, multiline_text){
if(!Array.isArray(multiline_text)) multiline_text= multiline_text.split(/(?<=\.) /g);
return log(tab, multiline_text.join("\n"+" ".repeat(tab)));
}

View File

@ -1,238 +0,0 @@
{
"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-03-31T17:49:36Z",
"downloads": "/home/jaandrle/bin/github-desktop",
"version": "release-3.3.12-linux2"
},
{
"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"
},
{
"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-03-26T10:58:44Z",
"downloads": "/home/jaandrle/bin/youtube-music",
"version": "v3.3.5"
},
{
"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"
},
{
"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": "2023-10-16T10:03:28Z",
"downloads": "/home/jaandrle/bin/insomnia",
"tag_name_regex": "core@.*",
"version": "core@8.3.0"
},
{
"repository": "rvpanoz/luna",
"name": "luna",
"description": "Manage npm dependencies through a modern UI.",
"group": "skip",
"file_name": "luna",
"exec": "yes"
},
{
"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": "themes",
"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"
},
{
"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-02-29T16:31:09Z",
"downloads": "/home/jaandrle/bin/upscayl",
"version": "v2.10.0"
},
{
"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"
},
{
"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": "2023-09-30T14:08:00Z",
"downloads": "/home/jaandrle/bin/chatall",
"version": "v1.50.73"
},
{
"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"
},
{
"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-03-29T15:39:36Z",
"downloads": "/home/jaandrle/bin/fedistar",
"version": "v1.9.2"
},
{
"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-03-10T02:24:04Z",
"downloads": "/home/jaandrle/bin/ollama",
"version": "v0.1.29"
},
{
"repository": "neovim/neovim",
"name": "neovim",
"tag_name_regex": "v.*",
"description": "Vim-fork focused on extensibility and usability",
"group": "dev-test",
"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-03-29T03:30:14Z",
"downloads": "/home/jaandrle/bin/escrcpy",
"version": "v1.17.8"
},
{
"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"
},
{
"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-03-11T06:34:40Z",
"downloads": "/home/jaandrle/bin/jan",
"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"
}
]
}

View File

@ -34,10 +34,16 @@
*/
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 paths= {
/** config file path — JSON stringify of {@link Config} */ config: join(path_config, "config.json"),
/** path to lock file to prevent multiple instances */ lock: join(path_config, "lock"),
};
const path_temp= $.xdg.temp`github-releases.json`;
const url_api= "https://api.github.com/repos/";
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; }
@ -48,43 +54,95 @@ const css= echo.css`
`;
$.api()
.version("2.0.0")
.version("2.2.0")
.describe("Helper for working with “packages” stored in GitHub releases.")
.command("config [mode]", [ "Config (file), use `mode` with these options:",
.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(paths.lock);
})
.command("config [mode]", [ "[noGRA] 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 "path": echo(paths.config); break;
case "edit":
const editor= $.env.EDITOR || "vim";
await s.runA`${editor} ${path_config_json}`.pipe(process.stdout);
await s.runA`${editor} ${paths.config}`.pipe(process.stdout);
break;
default:
echo(`Unknown mode: '${mode}'. See '--help' for details.`);
}
$.exit(0);
})
.command("edit <repository>", "Edit “package” information")
.alias("add")
.action(async function(repository){
if(!repository || !repository.includes("/"))
$.error(`Invalid repository: '${repository}'. Repository must be in the form '<owner>/<repo>'.`);
const config= /** @type {Config} */ ( readConfig() );
const i= config.packages.findIndex(r=> r.repository===repository);
echo(repository + `${i==-1 ? "New" : "Edit"} package:`);
echo(`Use <tab> to autocomplete${i===-1 ? "" : " and empty to keep current value"}.`);
echo("");
const pkg= config.packages[i] || { repository, group: "" };
const groups= [ ...new Set(config.packages.map(r=> r.group)) ];
const q= (question, initial, ...c)=> {
const completions= [ ...new Set([initial, ...c.flat()]) ].filter(Boolean);
if(initial) question+= ` (current \`${initial}\`)`;
question= echo.format("%c"+question, css.pkg);
return s.read({ "-p": question+": ", completions }).then(pipe(
value=> value || initial,
value=> value ? value : $.error(`Missing '${question}'.`)
));
};
try{
const name= await q("Name", pkg.name);
echo("(i) use `skip` as part of the group to skip it during checking/updating (“just register package”).");
const group= await q("Group", pkg.group, groups);
const { description: description_remote }= await fetch(urls_api[url_api]+repository).then(r=> r.json()).catch(_=> ({}));
const description= await q("Description", pkg.description, description_remote);
const file_name= await q("File name", pkg.file_name, repository.split("/"));
const downloads= config.target+file_name;
const exec= await q("Is executable", pkg.exec, [ "yes", "no" ]);
echo("(i) The glare is used to determine the right file to download. It is regular expression.");
const glare= await q("Glare", pkg.glare);
const pkg_edit= Object.assign({}, pkg,
{ repository, name, description, group, file_name, exec, downloads, glare });
config.packages[i===-1 ? config.packages.length : i]= pkg_edit;
s.echo(JSON.stringify(config, null, "\t")).to(paths.config);
echo(`%cSaved into config file '${paths.config}'.`, css.ok);
$.exit(0);
} catch(e){
if(e instanceof $.Error) echo("%c"+e, css.err);
else echo();
$.exit(1);
}
})
.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."
])
.option("--group, -G", "Filter by group")
.option("--repository, -R", "Filter by repository")
.action(function(filter){
const config = readConfig();
for(const { repository, version, description, group } of grepPackages(config, filter))
if(group!=="skip")
if(group && !group.includes("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("--group, -G", "Filter by group")
.option("--repository, -R", "Filter by repository")
.option("--cache", "Use cache [yes, no]", "yes")
.action(async function({ cache, ...filter }){
const config = readConfig();
@ -95,20 +153,17 @@ $.api()
$.exit(0);
})
.command("update", "Updates registered packages")
.option("--group, -G", "Filter by group")
.option("--repository, -R", "Filter by repository")
.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);
if(s.test("-f", paths.lock))
return $.error(`The lock file '${paths.lock}' already exists! Check if some other instance is running.`);
s.touch(paths.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;
if(status!==3 || (value.local.group || "skip").includes("skip")) continue;
echo("%c"+value.local.repository, css.pkg);
todo.push(download(
value,
@ -127,15 +182,15 @@ $.api()
echo("Updating packages completed:");
for (const { status, value, reason } of updates) {
if(status==="rejected"){
echo("%c✗ "+reason.local.repository+": %c"+reason.err, css.err);
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.echo(JSON.stringify(config, null, "\t")).to(paths.config);
}
s.rm(path_config_lock);
s.rm(paths.lock);
$.exit(0);
})
.parse();
@ -162,17 +217,23 @@ async function download(value, onprogress, target){
return value;
}
function grepPackages({ packages }, { group, repository }){
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"){
if(local.group && local.group.includes("skip")){
status_text= "skipped";
status_css= "skip";
} else {
@ -184,7 +245,7 @@ function echoPkgStatus(status, { local, remote }){
}
/**
* @param {Config.packages} packages
* @return {{ status: 0|1|2|3, value: { remote: GitHubRelease, local: ConfigPackage } }}
* @return {Promise<{ status: 0|1|2|3, value: { remote: GitHubRelease, local: ConfigPackage } }>}
* */
async function check(packages, cache){
return (await pipe(
@ -211,21 +272,29 @@ function packageStatus({ last_update: local }, { published_at: remote }){
async function fetchRelease({ repository, tag_name_regex }, cache){
const headers= { 'User-Agent': 'node' };
if(cache==="no") headers['Cache-Control'] = 'no-cache';
const url= url_api+repository+"/releases";
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);
return releases.find(function ({ draft, published_at, tag_name }){
if(draft||!published_at) return false;
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_name);
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: [] };
if(!s.test("-f", paths.config)) return { packages: [] };
const out= Object.assign({ target: "~/bin/" },
s.cat(path_config_json).xargs(JSON.parse));
s.cat(paths.config).xargs(JSON.parse));
if(out.target.startsWith("~/")) out.target= $.xdg.home(out.target.slice(2));
return out;
}

View File

@ -1,9 +0,0 @@
#!/bin/bash
if [[ $(mount | grep OneDrive) ]]; then
fusermount -uz ~/Vzdálené/OneDrive
notify-send -i system-file-manager "OneDrive disk ODPOJEN"
else
rclone --vfs-cache-mode full mount "onedrive": ~/Vzdálené/OneDrive &
dolphin ~/Vzdálené/OneDrive/ &
notify-send -i system-file-manager "OneDrive disk PŘIPOJEN"
fi

View File

@ -1,10 +0,0 @@
[ ! -r ~/.config/pocketshaddrc ] && echo "\`~/.config/pocketshaddrc\` not found" && exit 1
. ~/.config/pocketshaddrc
curl -sS -X POST \
-F "url=$1" \
-F "title=$2" \
-F "consumer_key=$CONSUMER_KEY" \
-F "access_token=$ACCESS_TOKEN" \
https://getpocket.com/v3/add \
> /dev/null

View File

@ -2,8 +2,8 @@
/* jshint esversion: 11,-W097, -W040, module: true, node: true, expr: true, undef: true *//* global echo, $, pipe, s, fetch, cyclicLoop */
$.api("")
.version("2024-03-18")
.command("silicon [file]", [
.version("2024-09-05")
.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`.",
@ -71,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

@ -78,7 +78,7 @@ function removePack(path){
s.cd(dirs.pack);
s.$("-V").rm("-rf", path);
const root= dirs.pack+path.split("/")[0];
const { code, stdout }= s.$().find(root+"/*/*");
const { code, stdout }= s.$("-Sf").find(root+"/*/*");
if(!code) echo(stdout);
else if(s.test("-d", root))
s.$("-V").rm("-rf", root);

Some files were not shown because too many files have changed in this diff Show More