Compare commits

...

10 commits

Author SHA1 Message Date
Tykayn
7931e6973c up aliases and emacs conf straight.el 2025-07-22 23:32:08 +02:00
Tykayn
71b99adbb5 add binaries to sort files 2025-07-19 17:22:58 +02:00
Tykayn
728457f71c add config assets, backup round 2025-07-19 17:15:10 +02:00
Tykayn
cb1e4934b5 up ckeck installed 2025-07-19 15:53:25 +02:00
Tykayn
3942a254b6 ignore appimages in bin 2025-07-19 15:52:26 +02:00
Tykayn
4a38feca34 list installed, add zshrc 2025-07-19 14:58:00 +02:00
Tykayn
6571fae87a up fast install 2025-07-18 17:07:39 +02:00
Tykayn
dbe131f96a fast init 2025-07-18 15:56:02 +02:00
Tykayn
d3a0db47fe up custom aliases 2025-07-17 14:40:50 +02:00
Tykayn
8b7acbd6dc up chemins source 2025-07-17 14:39:07 +02:00
38 changed files with 2513 additions and 38 deletions

7
.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
.idea
.vscode
bin/Nextcloud*
bin/Veracrypt*
/bin/VeraCrypt-1.26.24-x86_64.AppImage
/bin/Nextcloud-3.16.6-x86_64.AppImage

View file

@ -1,2 +1,4 @@
default:
bash ./init.sh
bash ./init.sh
fast:
bash initialization/fast.sh

View file

@ -11,16 +11,17 @@ idéalement dans:
# débuter
Récupérer le script d'initialisation
```bash
SETUP_WORKFLOW_FOLDER="~/Nextcloud/ressources/workflow_nextcloud/public_workflow"
export SETUP_WORKFLOW_FOLDER="$HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow"
mkdir -p "$SETUP_WORKFLOW_FOLDER"
git clone https://forge.chapril.org/tykayn/workflow "$SETUP_WORKFLOW_FOLDER"
cd "$SETUP_WORKFLOW_FOLDER"
bash init.sh
git pull
make
```
Configrer les variables, avoir le droit d'exécuter des scripts avec `sudo` puis lancer le script d'initialisation
```bash
editor workflow_variables.sh
bash ~/Nextcloud/ressources/workflow_nextcloud/public_workflow/initialization/init_workflow.sh
bash $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/initialization/init_workflow.sh
```
# Ce que fait ce dépot
[doc/sections.md]

View file

@ -5,7 +5,10 @@
#
# load variables
# echo "bash custom aliases: load functions to sync files"
source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
source "$HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh"
source "$HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/initialization/functions.sh"
source "$HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh"
############################ current
@ -13,10 +16,11 @@ alias work="cd $www_folder/scripts/mapping_geojson_to_osm_tags"
########## lieux ###########
alias gow="cd $WORKFLOW_PATH" # go to folder of nextcloud where i store my scripts
alias gopw="cd $WORKFLOW_PUBLIC_PATH" # go to folder of nextcloud where i store my scripts
###### lieux locaux
alias goj="ssh -p 3910 tykayn@bbb.liness.org"
alias gopi="ssh pi@192.168.1.156"
alias gopi="ssh pi@192.168.1.19"
alias gofat="ssh tykayn@192.168.1.7"
alias gowork="work"
alias gowww="cd $www_folder"
@ -24,15 +28,15 @@ alias gox="ssh tykayn@proxmox.coussinet.org"
alias gok="ssh debian@ns3247177.ip-164-132-173.eu" # hébergement kimsufi
alias gonas="ssh $main_user@$IP_DU_NAS -p20522"
alias gonas="ssh $main_user@$IP_DU_NAS"
alias gos="cd $stockage_syncable_folder"
alias goa="ssh root@biliz.cluster.chapril.org"
alias goad="cd /home/poule/encrypted/stockage-syncable/photos/a_dispatcher"
alias goo="cd ~/Nextcloud/textes/orgmode"
alias goi="cd ~/Nextcloud/inbox"
alias gov="cd '~/vidéos à voir'"
alias gown="cd ~/Nextcloud/ressources/workflow_nextcloud"
alias goo="cd $HOME/Nextcloud/textes/orgmode"
alias goi="cd $HOME/Nextcloud/inbox"
alias gov="cd '$HOME/vidéos à voir'"
alias gown="cd $HOME/Nextcloud/ressources/workflow_nextcloud"
alias gos="cd /home/poule/encrypted/stockage-syncable"
alias gomob="ssh -6 tykayn@mobilizon.vm.openstreetmap.fr -i .ssh/id_rsa_spaceship" # go to mobilizon osm26
################ personal info management - file management - PIM #########
@ -49,8 +53,8 @@ alias exgps="exiftool '-filename<GPSDateTime' -d \"%Y-%m-%dT%H.%I.%S%%c -- has_g
# lister les disques en blocs sans les snaps
alias lsb="lsblk |grep -v loop"
alias range="ts-node /home/poule/encrypted/stockage-syncable/www/development/html/rangement/index.ts --dry-run=true "
alias rangereal="ts-node /home/poule/encrypted/stockage-syncable/www/development/html/rangement/index.ts"
alias range="$HOME/.npm-global/bin/ts-node /home/poule/encrypted/stockage-syncable/www/development/html/rangement/index.ts --dry-run=true "
alias rangereal="$HOME/.npm-global/bin/ts-node /home/poule/encrypted/stockage-syncable/www/development/html/rangement/index.ts"
################ symfony3 ######################
alias sf="php bin/console"
@ -81,7 +85,7 @@ alias tfa="tail -f /var/log/nginx/*.log" # suivi des erreurs de serveur
alias aupg="sudo apt-get autoremove && sudo apt-get autoclean && sudo apt-get update -y && sudo apt-get upgrade -y"
################ système with X server ################
alias phps="bash /home/poule/encrypted/stockage-syncable/ressources/logiciels/PhpStorm-2020.1.4/PhpStorm-201.8743.18/bin/phpstorm.sh"
alias phps="bash /home/tykayn/Nextcloud/ressources/ide/PhpStorm-251.26927.60/bin/phpstorm.sh"
################ git helpers ################
alias gci="git commit"
@ -103,36 +107,39 @@ alias whatport="sudo netstat -pna | grep "
alias runport="firefox https://localhost:$1"
alias dff='df -h --exclude-type=squashfs --exclude-type=devtmpfs --exclude-type=tmpfs' # voir l'espace libre sans les paritions snap
export RUBY_ENV=devlopment
export GIT_AUTHOR_NAME="Tykayn"
export GIT_AUTHOR_EMAIL="contact@cipherbliss.com"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# développement
alias python=python3
alias py=python3
# rangement
alias lwc="ls -ls |wc -l" # compter les fichiers et dossiers
alias findup="snap run czkawka"
alias ft="filetags --tagtrees --tagtrees-handle-no-tag \"has_no_tag\" --tagtrees-depth 2 --recursive"
alias netre="sudo service network-manager restart"
# syncronisations
alias getrise="rsync root@proxmox.coussinet.org:/poule/encrypted /home/poule/borg_archives/production-servers-backup/rise/ -avzPW --inplace --delete-before --exclude borgbackup_tkland"
alias getrise="rsync root@proxmox.coussinet.org:/poule/encrypted /home/poule/borg_archives/production-servers-backup/rise/ -avzPW --inplace --delete-before --exclude borgbackup_tkland"
alias ascan="sudo arp-scan --local"
# youtube dl
alias ydl='yt-dlp -o "%(title)s.f%(format_id)s.%(ext)s"'
alias ydla='yt-dlp -o "%(title)s.f%(format_id)s.%(ext)s"'
alias ydlup='python3 -m pip install -U yt-dlp'
alias ydlup='python3 -m pip install -U yt-dlp --break'
alias upydl='ydlup'
# stopper les messageries pour être au calme
alias oklm="killall gajim telegram-desktop signal-desktop dino-im java vlc"
alias oklm="killall gajim telegram-desktop signal-desktop dino-im java vlc webstorm firefox-esr"
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
@ -156,18 +163,21 @@ export RAILS_ENV=development
# ----------------------------------------------------------------------
# logiciels
alias ws="bash $HOME/Nextcloud/ressources/ide/WebStorm-2023.2.8/bin/webstorm.sh &"
alias ws="bash $HOME/Nextcloud/ressources/ide/WebStorm-232.10335.13/bin/webstorm.sh"
alias j="java -jar $HOME/Nextcloud/ressources/logiciels/josm-tested.jar"
alias jup="wget https://josm.openstreetmap.de/josm-tested.jar -O $HOME/Nextcloud/ressources/logiciels/josm-tested.jar"
alias dok="docker-compose"
alias dc="docker-compose"
alias plz="sudo !!"
alias please="plz"
alias e="snap run emacs"
export HISTTIMEFORMAT="%d/%m/%y %T "
export EDITOR=nano
export HUGO_BASE_DIR="~/Nextcloud/textes/hugo"
export PATH=~/.pyenv/bin/:~/.cargo/bin:/snap/bin:$WORKFLOW_PATH/bin:$PATH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
#eval "$(rbenv init -)"
source $WORKFLOW_PATH/install/functions_sync.sh
source $WORKFLOW_PATH/install/functions_tk.sh
@ -182,7 +192,7 @@ if command -v nvm &> /dev/null
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
fi
if [ "$(pwd)" = "/var/www/html/" ] || [ "$(pwd)" = "/var/www/html/*" ]; then
echo "chargement de node version stable"
nvm use stable
@ -206,16 +216,40 @@ function dckill() {
}
# créer un post de blog: new cipher bliss
ncb(){
python /home/poule/encrypted/stockage-syncable/www/development/html/orgmode-to-gemini-blog/new_article.py cipherbliss_blog fr "$@"
title_as_args="$@"
echo "$title_as_args"
python /home/poule/encrypted/stockage-syncable/www/development/html/orgmode-to-gemini-blog/new_article.py --blog_dir="cipherbliss_blog" --lang="fr" --title="$title_as_args"
}
# créer un post de tykayn blog
ntk(){
title_as_args="$@"
echo "$title_as_args"
python /home/poule/encrypted/stockage-syncable/www/development/html/orgmode-to-gemini-blog/new_article.py --blog_dir="tykayn_blog" --lang="fr" --title="$title_as_args"
}
# commit avec git
function gc() {
git add .
git commit -m "$1"
git push
}
export PATH="~/.pyenv/bin/:~/.cargo/bin:/snap/bin:$WORKFLOW_PATH/bin:$WORKFLOW_PUBLIC_PATH/bin:$PATH"
#export PATH="$HOME/.rbenv/bin:$PATH"
export PATH="~/.npm-global/bin:$PATH"
export PATH="$HOME/.symfony5/bin:$PATH"
export PATH="$PATH:$HOME/.npm-global/bin"
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
eval "$(rbenv init -)"
eval "$(zoxide init zsh)" # zoxyde, navigation de dossier avec fuzzy finder
export alias please='sudo !!'
export alias plz='please'
# pour debug
# echo "custom aliases chargés depuis:"
# pwd

View file

@ -0,0 +1,37 @@
amis
animaux
bâtiment
brouillon final
carte
chantier
chat
chien
claire
dodo
doudou
famille
festival
fête
gopro
gopro-back
gopro-front
graph
gull
has_no_tag
hélia
illustration
maison
manif
matériel
nourriture
papier
plan
portrait
public private
regulus
sélection
sexy
taiga
tykayn
voiture
voyage

View file

@ -0,0 +1,330 @@
; geeqie GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark4Alt1" "KP_4")
; (gtk_accel_path "<Actions>/MenuActions/RatingM1" "<Alt>KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile2" "")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowSlower" "<Primary>minus")
(gtk_accel_path "<Actions>/MenuActions/Thumbnails" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tethered-photography.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/FirstPage" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom200" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tag-cosplay.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile1" "")
; (gtk_accel_path "<Actions>/MenuActions/ClearMarks" "")
; (gtk_accel_path "<Actions>/MenuActions/ViewMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/ViewIcons" "<Primary>i")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/Back" "")
; (gtk_accel_path "<Actions>/MenuActions/CloseWindow" "<Primary>w")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile0" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanCycle" "k")
; (gtk_accel_path "<Actions>/MenuActionsExternal/eom.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanV" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark5Alt1" "KP_5")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/Rename" "<Primary>r")
; (gtk_accel_path "<Actions>/MenuActions/ImageHistogram" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/ImageOverlayCycle" "i")
; (gtk_accel_path "<Actions>/MenuActions/ImageOverlay" "")
; (gtk_accel_path "<Actions>/MenuActions/AlterNone" "<Shift>o")
; (gtk_accel_path "<Actions>/MenuActions/ZoomOutAlt1" "KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/SBar" "<Primary>k")
; (gtk_accel_path "<Actions>/MenuActions/SetMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/IgnoreAlpha" "<Shift>a")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark0" "")
(gtk_accel_path "<Actions>/MenuActions/Animate" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFillHor" "h")
; (gtk_accel_path "<Actions>/MenuActions/HelpMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark9" "<Primary>9")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark6Alt1" "KP_6")
; (gtk_accel_path "<Actions>/MenuActions/SetMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark0Alt1" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/MenuActions/HelpKbd" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark8" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/export-jpeg.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark8" "<Primary>8")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanR" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark7" "")
(gtk_accel_path "<Actions>/MenuActionsExternal/remove-tags.desktop" "r")
; (gtk_accel_path "<Actions>/MenuActions/Move" "<Primary>m")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark7" "<Primary>7")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFit" "x")
; (gtk_accel_path "<Actions>/MenuActions/SetMark5" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/image-crop.desktop" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/gimp.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark7Alt1" "KP_7")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tag-administratif.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark6" "<Primary>6")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark1Alt1" "<Primary>KP_1")
; (gtk_accel_path "<Actions>/MenuActions/SetMark4" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/prepend-name.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/CopyPath" "")
; (gtk_accel_path "<Actions>/MenuActions/EditMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/NewWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark5" "<Primary>5")
; (gtk_accel_path "<Actions>/MenuActions/RectangularSelection" "<Alt>r")
; (gtk_accel_path "<Actions>/MenuActions/ViewInNewWindow" "<Primary>v")
; (gtk_accel_path "<Actions>/MenuActionsExternal/symlink.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFit" "<Shift>x")
; (gtk_accel_path "<Actions>/MenuActions/AddMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/ColorMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark4" "<Primary>4")
; (gtk_accel_path "<Actions>/MenuActions/ExifRotate" "<Alt>x")
; (gtk_accel_path "<Actions>/MenuActions/SetMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomOutAlt1" "<Shift>KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark8Alt1" "KP_8")
; (gtk_accel_path "<Actions>/MenuActions/AddMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/Flip" "<Shift>f")
; (gtk_accel_path "<Actions>/MenuActions/Search" "F3")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark2Alt1" "<Primary>KP_2")
; (gtk_accel_path "<Actions>/MenuActions/SplitPreviousPane" "<Alt>Left")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark3" "<Primary>3")
; (gtk_accel_path "<Actions>/MenuActions/RatingMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFillHor" "<Shift>h")
; (gtk_accel_path "<Actions>/MenuActions/HelpContents" "F1")
; (gtk_accel_path "<Actions>/MenuActions/AddMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark2" "")
(gtk_accel_path "<Actions>/MenuActions/Refresh" "")
; (gtk_accel_path "<Actions>/MenuActions/DeleteAlt1" "Delete")
; (gtk_accel_path "<Actions>/MenuActions/SetMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark2" "<Primary>2")
; (gtk_accel_path "<Actions>/MenuActions/DeleteAlt2" "KP_Delete")
; (gtk_accel_path "<Actions>/MenuActions/NextImageAlt2" "KP_Next")
; (gtk_accel_path "<Actions>/MenuActions/NextImageAlt1" "Page_Down")
; (gtk_accel_path "<Actions>/MenuActions/AddMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/DrawRectangle" "")
; (gtk_accel_path "<Actions>/MenuActions/DeleteWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/OpenArchive" "<Primary>o")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark1" "<Primary>1")
; (gtk_accel_path "<Actions>/MenuActions/PermanentDelete" "<Shift>Delete")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark9Alt1" "KP_9")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark3Alt1" "<Primary>KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Rotate180" "<Shift>r")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomInAlt1" "<Shift>KP_Add")
; (gtk_accel_path "<Actions>/MenuActions/AddMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/GoMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom33" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark0" "<Primary>0")
(gtk_accel_path "<Actions>/MenuActionsExternal/guess-filename.desktop" "g")
; (gtk_accel_path "<Actions>/MenuActions/HideBars" "grave")
; (gtk_accel_path "<Actions>/MenuActionsExternal/PTBatcherGUI.desktop" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/m2a.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FileMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SaveMetadata" "<Primary>s")
; (gtk_accel_path "<Actions>/MenuActions/ZoomIn" "equal")
; (gtk_accel_path "<Actions>/MenuActions/SlideShow" "s")
; (gtk_accel_path "<Actions>/MenuActions/NextPage" "")
; (gtk_accel_path "<Actions>/MenuActions/Copy" "<Primary>c")
; (gtk_accel_path "<Actions>/MenuActions/SplitQuad" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark4Alt1" "<Primary>KP_4")
; (gtk_accel_path "<Actions>/MenuActions/Quit" "<Primary>q")
; (gtk_accel_path "<Actions>/MenuActions/Maintenance" "")
; (gtk_accel_path "<Actions>/MenuActions/OpenRecent" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/FirstImage" "Home")
; (gtk_accel_path "<Actions>/MenuActionsExternal/org.kde.gwenview.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Plugins" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanG" "")
; (gtk_accel_path "<Actions>/MenuActions/PrevImage" "BackSpace")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFillVert" "<Shift>w")
; (gtk_accel_path "<Actions>/MenuActions/PrevImageAlt2" "KP_Page_Up")
; (gtk_accel_path "<Actions>/MenuActions/StereoSBS" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreenAlt2" "F11")
; (gtk_accel_path "<Actions>/MenuActions/Zoom100Alt1" "KP_Divide")
; (gtk_accel_path "<Actions>/MenuActions/SplitDownPane" "<Alt>Down")
; (gtk_accel_path "<Actions>/MenuActions/SplitPaneSync" "")
; (gtk_accel_path "<Actions>/MenuActions/PrevImageAlt1" "Page_Up")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark5Alt1" "<Primary>KP_5")
; (gtk_accel_path "<Actions>/MenuActions/NextImage" "space")
; (gtk_accel_path "<Actions>/MenuActions/NewWindowDefault" "<Primary>n")
; (gtk_accel_path "<Actions>/MenuActions/Zoom300" "")
; (gtk_accel_path "<Actions>/MenuActions/OverUnderExposed" "<Shift>e")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom50" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreenAlt1" "v")
; (gtk_accel_path "<Actions>/MenuActions/OverlayMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/FindDupes" "d")
; (gtk_accel_path "<Actions>/MenuActions/HideTools" "<Primary>h")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFillVert" "w")
; (gtk_accel_path "<Actions>/MenuActions/StereoAuto" "")
; (gtk_accel_path "<Actions>/MenuActions/PluginsMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoOff" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom25" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFitAlt1" "KP_Multiply")
; (gtk_accel_path "<Actions>/MenuActions/SelectAll" "<Primary>a")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark6Alt1" "<Primary>KP_6")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowPause" "p")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom300" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanB" "")
; (gtk_accel_path "<Actions>/MenuActions/ExifWin" "<Primary>e")
; (gtk_accel_path "<Actions>/MenuActions/Zoom100" "z")
; (gtk_accel_path "<Actions>/MenuActions/OpenCollection" "o")
; (gtk_accel_path "<Actions>/MenuActions/HelpSearch" "")
; (gtk_accel_path "<Actions>/MenuActions/LogWindow" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rangereal.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/HelpShortcuts" "")
; (gtk_accel_path "<Actions>/MenuActions/Print" "<Shift>p")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/KeywordAutocomplete" "<Alt>k")
; (gtk_accel_path "<Actions>/MenuActions/ShowFileFilter" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark7Alt1" "<Primary>KP_7")
; (gtk_accel_path "<Actions>/MenuActions/SplitHorizontal" "e")
; (gtk_accel_path "<Actions>/MenuActions/Mirror" "<Shift>m")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom100Alt1" "<Shift>KP_Divide")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/LastImage" "End")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom100" "<Shift>z")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate-270.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreen" "f")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Delete" "<Primary>d")
; (gtk_accel_path "<Actions>/MenuActions/RenameWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/About" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark8Alt1" "<Primary>KP_8")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/SplitSingle" "y")
; (gtk_accel_path "<Actions>/MenuActions/Up" "")
(gtk_accel_path "<Actions>/MenuActionsExternal/append-name.desktop" "a")
; (gtk_accel_path "<Actions>/MenuActions/NewFolder" "<Primary>f")
; (gtk_accel_path "<Actions>/MenuActions/NewCollection" "c")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tag-nourriture.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFitAlt1" "<Shift>KP_Multiply")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/Preferences" "<Primary>o")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeLog" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/HelpNotes" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark9" "9")
; (gtk_accel_path "<Actions>/MenuActions/StereoCross" "")
; (gtk_accel_path "<Actions>/MenuActions/EscapeAlt1" "q")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark9Alt1" "<Primary>KP_9")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/WriteRotationKeepDate" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark8" "8")
; (gtk_accel_path "<Actions>/MenuActions/WriteRotation" "")
(gtk_accel_path "<Actions>/MenuActionsExternal/add-tags.desktop" "t")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tag-illu.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanRGB" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark7" "7")
; (gtk_accel_path "<Actions>/MenuActionsExternal/camera-import.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/WindowsMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectInvert" "<Primary><Shift>i")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeCycle" "j")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark6" "6")
; (gtk_accel_path "<Actions>/MenuActions/SplitNextPane" "<Alt>Right")
; (gtk_accel_path "<Actions>/MenuActions/SplitUpPane" "<Alt>Up")
; (gtk_accel_path "<Actions>/MenuActions/SearchAndRunCommand" "slash")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark5" "5")
; (gtk_accel_path "<Actions>/MenuActions/HideToolbar" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectNone" "<Primary><Shift>a")
; (gtk_accel_path "<Actions>/MenuActions/PrevPage" "")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowFaster" "<Primary>equal")
; (gtk_accel_path "<Actions>/MenuActions/Mark9" "")
; (gtk_accel_path "<Actions>/MenuActions/Escape" "Escape")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Home" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark4" "4")
; (gtk_accel_path "<Actions>/MenuActions/ZoomInAlt1" "KP_Add")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeLin" "")
; (gtk_accel_path "<Actions>/MenuActions/SBarSort" "<Shift>s")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark0Alt1" "KP_0")
; (gtk_accel_path "<Actions>/MenuActions/Mark8" "")
; (gtk_accel_path "<Actions>/MenuActions/Forward" "")
; (gtk_accel_path "<Actions>/MenuActions/RotateCW" "bracketright")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark3" "3")
; (gtk_accel_path "<Actions>/MenuActions/OrientationMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark7" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom33" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomOut" "minus")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark2" "2")
; (gtk_accel_path "<Actions>/MenuActions/SplitMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark1" "1")
; (gtk_accel_path "<Actions>/MenuActions/FloatTools" "l")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark1Alt1" "KP_1")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomIn" "plus")
; (gtk_accel_path "<Actions>/MenuActions/CopyPathUnquoted" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark5" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark0" "0")
; (gtk_accel_path "<Actions>/MenuActions/FileDirMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/UseColorProfiles" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomOut" "underscore")
; (gtk_accel_path "<Actions>/MenuActions/Mark4" "")
; (gtk_accel_path "<Actions>/MenuActions/SplitVertical" "u")
; (gtk_accel_path "<Actions>/MenuActionsExternal/random-image.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/NewWindowFromCurrent" "")
; (gtk_accel_path "<Actions>/MenuActions/Grayscale" "<Shift>g")
; (gtk_accel_path "<Actions>/MenuActions/LayoutConfig" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating5" "<Alt>KP_5")
; (gtk_accel_path "<Actions>/MenuActions/Mark3" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark2Alt1" "KP_2")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate-90.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ShowMarks" "m")
; (gtk_accel_path "<Actions>/MenuActions/LastPage" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating4" "<Alt>KP_4")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark2" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom400" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/ShowInfoPixel" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoCycle" "")
; (gtk_accel_path "<Actions>/MenuActions/ImageBack" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating3" "<Alt>KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Mark1" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/hugin.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile5" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating2" "<Alt>KP_2")
; (gtk_accel_path "<Actions>/MenuActionsExternal/display-im6.q16.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark3Alt1" "KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Mark0" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom50" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom400" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating1" "<Alt>KP_1")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile4" "")
; (gtk_accel_path "<Actions>/MenuActions/FolderTree" "<Primary>t")
; (gtk_accel_path "<Actions>/MenuActions/UseImageProfile" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom200" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom25" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating0" "<Alt>KP_0")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile3" "")
; (gtk_accel_path "<Actions>/MenuActions/PanView" "<Primary>j")
; (gtk_accel_path "<Actions>/MenuActions/ViewList" "<Primary>l")
; (gtk_accel_path "<Actions>/MenuActions/RotateCCW" "bracketleft")
; (gtk_accel_path "<Actions>/MenuActions/ImageForward" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark5" "")

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=filetags add
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-adding-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=filetags append file name
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-append-file-name-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=filetags guess file name
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-guess-filename-with-gnome-terminal.sh %F | tee -a $HOME/guessfilename_history.txt 2>&1
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=m2a
GenericName=m2a
Comment=
Exec=$HOME/areas/www/misc/vk-m2a-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=filetags append file name
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-prepend-file-name-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=rangereal
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-rangereal-with-gnome-terminal.sh %F | tee -a $HOME/rangereal_history.txt 2>&1
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=filetags remove
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-interactive-removing-wrapper-with-gnome-terminal.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=tag administratif
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-append-tag-administratif.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=tag cosplay
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-append-tag-cosplay.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=tag illustration
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-append-tag-illu.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,12 @@
[Desktop Entry]
Name=tag nourriture
GenericName=filetags
Comment=
Exec=$HOME/areas/www/misc/vk-filetags-append-tag-nourriture.sh %F
Icon=
Terminal=true
Type=Application
Categories=Application;Graphics;
hidden=false
MimeType=image/*;video/*;image/mpo;image/thm
Categories=X-Geeqie;

View file

@ -0,0 +1,330 @@
; geeqie GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark4Alt1" "KP_4")
; (gtk_accel_path "<Actions>/MenuActions/RatingM1" "<Alt>KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile2" "")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowSlower" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/Thumbnails" "t")
; (gtk_accel_path "<Actions>/MenuActionsExternal/tethered-photography.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/FirstPage" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom200" "")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile1" "")
; (gtk_accel_path "<Actions>/MenuActions/ClearMarks" "")
; (gtk_accel_path "<Actions>/MenuActions/ViewMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/ViewIcons" "<Primary>i")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/Back" "")
; (gtk_accel_path "<Actions>/MenuActions/CloseWindow" "<Primary>w")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile0" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanCycle" "k")
; (gtk_accel_path "<Actions>/MenuActionsExternal/eom.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanV" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark5Alt1" "KP_5")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/Rename" "<Primary>r")
; (gtk_accel_path "<Actions>/MenuActions/ImageHistogram" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/ImageOverlayCycle" "i")
; (gtk_accel_path "<Actions>/MenuActions/ImageOverlay" "")
; (gtk_accel_path "<Actions>/MenuActions/AlterNone" "<Shift>o")
; (gtk_accel_path "<Actions>/MenuActions/ZoomOutAlt1" "KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/SBar" "<Primary>k")
; (gtk_accel_path "<Actions>/MenuActions/SetMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/IgnoreAlpha" "<Shift>a")
; (gtk_accel_path "<Actions>/MenuActionsExternal/qView.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/Animate" "a")
; (gtk_accel_path "<Actions>/MenuActions/AddMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFillHor" "h")
; (gtk_accel_path "<Actions>/MenuActions/HelpMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark9" "<Primary>9")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark6Alt1" "KP_6")
; (gtk_accel_path "<Actions>/MenuActions/SetMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark0Alt1" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/MenuActions/HelpKbd" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark8" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/export-jpeg.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark8" "<Primary>8")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanR" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Move" "<Primary>m")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark7" "<Primary>7")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFit" "x")
; (gtk_accel_path "<Actions>/MenuActions/SetMark5" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/image-crop.desktop" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/gimp.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark7Alt1" "KP_7")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark6" "<Primary>6")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark1Alt1" "<Primary>KP_1")
; (gtk_accel_path "<Actions>/MenuActions/SetMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/CopyPath" "")
; (gtk_accel_path "<Actions>/MenuActions/EditMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/AddMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/NewWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark5" "<Primary>5")
; (gtk_accel_path "<Actions>/MenuActions/RectangularSelection" "<Alt>r")
; (gtk_accel_path "<Actions>/MenuActions/ViewInNewWindow" "<Primary>v")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFit" "<Shift>x")
; (gtk_accel_path "<Actions>/MenuActions/AddMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark4" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/symlink.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark4" "<Primary>4")
; (gtk_accel_path "<Actions>/MenuActions/ExifRotate" "<Alt>x")
; (gtk_accel_path "<Actions>/MenuActions/SetMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomOutAlt1" "<Shift>KP_Subtract")
; (gtk_accel_path "<Actions>/MenuActions/IntMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark8Alt1" "KP_8")
; (gtk_accel_path "<Actions>/MenuActions/AddMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/Flip" "<Shift>f")
; (gtk_accel_path "<Actions>/MenuActions/Search" "F3")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark2Alt1" "<Primary>KP_2")
; (gtk_accel_path "<Actions>/MenuActions/SplitPreviousPane" "<Alt>Left")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark3" "<Primary>3")
; (gtk_accel_path "<Actions>/MenuActions/ColorMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/SetMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFillHor" "<Shift>h")
; (gtk_accel_path "<Actions>/MenuActions/HelpContents" "F1")
; (gtk_accel_path "<Actions>/MenuActions/AddMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/Refresh" "r")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark2" "<Primary>2")
; (gtk_accel_path "<Actions>/MenuActions/RatingMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/DeleteAlt2" "KP_Delete")
; (gtk_accel_path "<Actions>/MenuActions/NextImageAlt2" "KP_Next")
; (gtk_accel_path "<Actions>/MenuActions/DeleteAlt1" "Delete")
; (gtk_accel_path "<Actions>/MenuActions/AddMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/DrawRectangle" "")
; (gtk_accel_path "<Actions>/MenuActions/DeleteWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/NextImageAlt1" "Page_Down")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark1" "<Primary>1")
; (gtk_accel_path "<Actions>/MenuActions/PermanentDelete" "<Shift>Delete")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark9Alt1" "KP_9")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark3Alt1" "<Primary>KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Rotate180" "<Shift>r")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomInAlt1" "<Shift>KP_Add")
; (gtk_accel_path "<Actions>/MenuActions/AddMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/IntMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/GoMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom33" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark0" "<Primary>0")
; (gtk_accel_path "<Actions>/MenuActions/HideBars" "grave")
; (gtk_accel_path "<Actions>/MenuActionsExternal/PTBatcherGUI.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FileMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SaveMetadata" "<Primary>s")
; (gtk_accel_path "<Actions>/MenuActions/ZoomIn" "equal")
; (gtk_accel_path "<Actions>/MenuActions/SlideShow" "s")
; (gtk_accel_path "<Actions>/MenuActions/NextPage" "")
; (gtk_accel_path "<Actions>/MenuActions/Copy" "<Primary>c")
; (gtk_accel_path "<Actions>/MenuActions/SplitQuad" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark4Alt1" "<Primary>KP_4")
; (gtk_accel_path "<Actions>/MenuActions/Quit" "<Primary>q")
; (gtk_accel_path "<Actions>/MenuActions/Maintenance" "")
; (gtk_accel_path "<Actions>/MenuActions/OpenRecent" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/FirstImage" "Home")
; (gtk_accel_path "<Actions>/MenuActionsExternal/org.kde.gwenview.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Plugins" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanG" "")
; (gtk_accel_path "<Actions>/MenuActions/PrevImage" "BackSpace")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFillVert" "<Shift>w")
; (gtk_accel_path "<Actions>/MenuActions/PrevImageAlt2" "KP_Page_Up")
; (gtk_accel_path "<Actions>/MenuActions/StereoSBS" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreenAlt2" "F11")
; (gtk_accel_path "<Actions>/MenuActions/Zoom100Alt1" "KP_Divide")
; (gtk_accel_path "<Actions>/MenuActions/SplitDownPane" "<Alt>Down")
; (gtk_accel_path "<Actions>/MenuActions/SplitPaneSync" "")
; (gtk_accel_path "<Actions>/MenuActions/PrevImageAlt1" "Page_Up")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark5Alt1" "<Primary>KP_5")
; (gtk_accel_path "<Actions>/MenuActions/NextImage" "space")
; (gtk_accel_path "<Actions>/MenuActions/NewWindowDefault" "<Primary>n")
; (gtk_accel_path "<Actions>/MenuActionsExternal/cura.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom300" "")
; (gtk_accel_path "<Actions>/MenuActions/OverUnderExposed" "<Shift>e")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom50" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreenAlt1" "v")
; (gtk_accel_path "<Actions>/MenuActions/OverlayMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/FindDupes" "d")
; (gtk_accel_path "<Actions>/MenuActions/HideTools" "<Primary>h")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFillVert" "w")
; (gtk_accel_path "<Actions>/MenuActions/StereoAuto" "")
; (gtk_accel_path "<Actions>/MenuActions/PluginsMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoOff" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom25" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomFitAlt1" "KP_Multiply")
; (gtk_accel_path "<Actions>/MenuActions/SelectAll" "<Primary>a")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark6Alt1" "<Primary>KP_6")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowPause" "p")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom300" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanB" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/org.gnome.Evince.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ExifWin" "<Primary>e")
; (gtk_accel_path "<Actions>/MenuActions/Zoom100" "z")
; (gtk_accel_path "<Actions>/MenuActions/OpenCollection" "o")
; (gtk_accel_path "<Actions>/MenuActions/HelpSearch" "")
; (gtk_accel_path "<Actions>/MenuActions/LogWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/ImageGuidelines" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/HelpShortcuts" "")
; (gtk_accel_path "<Actions>/MenuActions/Print" "<Shift>p")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/KeywordAutocomplete" "<Alt>k")
; (gtk_accel_path "<Actions>/MenuActions/ShowFileFilter" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark7Alt1" "<Primary>KP_7")
; (gtk_accel_path "<Actions>/MenuActions/SplitHorizontal" "e")
; (gtk_accel_path "<Actions>/MenuActions/Mirror" "<Shift>m")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom100Alt1" "<Shift>KP_Divide")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/LastImage" "End")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom100" "<Shift>z")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate-270.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/FullScreen" "f")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Delete" "<Primary>d")
; (gtk_accel_path "<Actions>/MenuActions/RenameWindow" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark8Alt1" "<Primary>KP_8")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/About" "")
; (gtk_accel_path "<Actions>/MenuActions/SplitSingle" "y")
; (gtk_accel_path "<Actions>/MenuActions/Up" "")
; (gtk_accel_path "<Actions>/MenuActions/NewFolder" "<Primary>f")
; (gtk_accel_path "<Actions>/MenuActions/NewCollection" "c")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomFitAlt1" "<Shift>KP_Multiply")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/Preferences" "<Primary>o")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeLog" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/HelpNotes" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark9" "9")
; (gtk_accel_path "<Actions>/MenuActions/StereoCross" "")
; (gtk_accel_path "<Actions>/MenuActions/EscapeAlt1" "q")
; (gtk_accel_path "<Actions>/MenuActions/SelectMark9Alt1" "<Primary>KP_9")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark3" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/mypaint.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/WriteRotationKeepDate" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark8" "8")
; (gtk_accel_path "<Actions>/MenuActions/WriteRotation" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramChanRGB" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark7" "7")
; (gtk_accel_path "<Actions>/MenuActionsExternal/camera-import.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/WindowsMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/SelectInvert" "<Primary><Shift>i")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeCycle" "j")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark6" "6")
; (gtk_accel_path "<Actions>/MenuActions/SplitNextPane" "<Alt>Right")
; (gtk_accel_path "<Actions>/MenuActions/SplitUpPane" "<Alt>Up")
; (gtk_accel_path "<Actions>/MenuActions/SearchAndRunCommand" "slash")
; (gtk_accel_path "<Actions>/MenuActions/ResetMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark5" "5")
; (gtk_accel_path "<Actions>/MenuActions/HideToolbar" "")
; (gtk_accel_path "<Actions>/MenuActions/PrevPage" "")
; (gtk_accel_path "<Actions>/MenuActions/SlideShowFaster" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/MenuActions/Mark9" "")
; (gtk_accel_path "<Actions>/MenuActions/Escape" "Escape")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Home" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark4" "4")
; (gtk_accel_path "<Actions>/MenuActions/ZoomInAlt1" "KP_Add")
; (gtk_accel_path "<Actions>/MenuActions/HistogramModeLin" "")
; (gtk_accel_path "<Actions>/MenuActions/SBarSort" "<Shift>s")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark0Alt1" "KP_0")
; (gtk_accel_path "<Actions>/MenuActions/Mark8" "")
; (gtk_accel_path "<Actions>/MenuActions/Forward" "")
; (gtk_accel_path "<Actions>/MenuActions/RotateCW" "bracketright")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark3" "3")
; (gtk_accel_path "<Actions>/MenuActions/OrientationMenu" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/org.kde.kolourpaint.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark7" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom33" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomOut" "minus")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark5" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark2" "2")
; (gtk_accel_path "<Actions>/MenuActions/SplitMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark6" "")
; (gtk_accel_path "<Actions>/MenuActions/ZoomMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark4" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark1" "1")
; (gtk_accel_path "<Actions>/MenuActions/FloatTools" "l")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark1Alt1" "KP_1")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomIn" "plus")
; (gtk_accel_path "<Actions>/MenuActions/CopyPathUnquoted" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark5" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark3" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark0" "0")
; (gtk_accel_path "<Actions>/MenuActions/FileDirMenu" "")
; (gtk_accel_path "<Actions>/MenuActions/UseColorProfiles" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoomOut" "underscore")
; (gtk_accel_path "<Actions>/MenuActions/Mark4" "")
; (gtk_accel_path "<Actions>/MenuActions/SplitVertical" "u")
; (gtk_accel_path "<Actions>/MenuActionsExternal/random-image.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark2" "")
; (gtk_accel_path "<Actions>/MenuActions/NewWindowFromCurrent" "")
; (gtk_accel_path "<Actions>/MenuActions/Grayscale" "<Shift>g")
; (gtk_accel_path "<Actions>/MenuActions/LayoutConfig" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating5" "<Alt>KP_5")
; (gtk_accel_path "<Actions>/MenuActions/Mark3" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/org.gnome.eog.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark1" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark2Alt1" "KP_2")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate-90.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ShowMarks" "m")
; (gtk_accel_path "<Actions>/MenuActions/LastPage" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating4" "<Alt>KP_4")
; (gtk_accel_path "<Actions>/MenuActionsExternal/rotate.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/Mark2" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom400" "")
; (gtk_accel_path "<Actions>/MenuActions/UnselMark0" "")
; (gtk_accel_path "<Actions>/MenuActions/ShowInfoPixel" "")
; (gtk_accel_path "<Actions>/MenuActions/StereoCycle" "")
; (gtk_accel_path "<Actions>/MenuActions/ImageBack" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark9" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating3" "<Alt>KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Mark1" "")
; (gtk_accel_path "<Actions>/MenuActionsExternal/hugin.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile5" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark8" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating2" "<Alt>KP_2")
; (gtk_accel_path "<Actions>/MenuActionsExternal/display-im6.q16.desktop" "")
; (gtk_accel_path "<Actions>/MenuActions/ToggleMark3Alt1" "KP_3")
; (gtk_accel_path "<Actions>/MenuActions/Mark0" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom50" "")
; (gtk_accel_path "<Actions>/MenuActions/ConnectZoom400" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark7" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating1" "<Alt>KP_1")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile4" "")
; (gtk_accel_path "<Actions>/MenuActions/FolderTree" "<Primary>t")
; (gtk_accel_path "<Actions>/MenuActions/UseImageProfile" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom200" "")
; (gtk_accel_path "<Actions>/MenuActions/Zoom25" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark6" "")
; (gtk_accel_path "<Actions>/MenuActions/Rating0" "<Alt>KP_0")
; (gtk_accel_path "<Actions>/MenuActions/ColorProfile3" "")
; (gtk_accel_path "<Actions>/MenuActions/PanView" "<Primary>j")
; (gtk_accel_path "<Actions>/MenuActions/ViewList" "<Primary>l")
; (gtk_accel_path "<Actions>/MenuActions/RotateCCW" "bracketleft")
; (gtk_accel_path "<Actions>/MenuActions/ImageForward" "")
; (gtk_accel_path "<Actions>/MenuActions/FilterMark5" "")
(gtk_accel_path "<Actions>/MenuActions/SelectNone" "")
(gtk_accel_path "<Actions>/MenuActionsExternal/add-tags.desktop" "<Primary><Shift>a")
(gtk_accel_path "<Actions>/MenuActionsExternal/remove-tags.desktop" "<Primary><Shift>r")
(gtk_accel_path "<Actions>/MenuActionsExternal/guess-filename.desktop" "g")
(gtk_accel_path "<Actions>/MenuActionsExternal/rangereal.desktop" "<Primary>r")

View file

@ -0,0 +1,390 @@
<!--
######################################################################
# Geeqie config file version 2.0.1 #
######################################################################
# Note: This file is autogenerated. Options can be changed here,
# but user comments and formatting will be lost.
-->
<gq>
<global
show_icon_names = "false"
show_star_rating = "false"
show_predefined_keyword_tree = "true"
tree_descend_subdirs = "false"
view_dir_list_single_click_enter = "true"
circular_selection_lists = "true"
lazy_image_sync = "false"
update_on_time_change = "true"
progressive_key_scrolling = "true"
keyboard_scroll_step = "1"
duplicates_similarity_threshold = "99"
duplicates_match = "0"
duplicates_select_type = "0"
duplicates_thumbnails = "false"
rot_invariant_sim = "true"
sort_totals = "false"
mousewheel_scrolls = "false"
image_lm_click_nav = "true"
image_l_click_archive = "false"
image_l_click_video = "false"
image_l_click_video_editor = ""
open_recent_list_maxsize = "10"
recent_folder_image_list_maxsize = "10"
dnd_icon_size = "48"
dnd_default_action = "0"
place_dialogs_under_mouse = "false"
clipboard_selection = "2"
save_window_positions = "true"
use_saved_window_positions_for_new_windows = "false"
save_window_workspace = "false"
tools_restore_state = "true"
save_dialog_window_positions = "false"
show_window_ids = "false"
expand_menu_toolbar = "false"
log_window_lines = "1000"
log_window.timer_data = "false"
marks_save = "true"
help_search_engine = "https://duckduckgo.com/?q=site:geeqie.org/help "
external_preview.enable = "false"
external_preview.select = ""
external_preview.extract = ""
with_rename = "false"
collections_on_top = "false"
hide_window_in_fullscreen = "true"
file_ops.enable_in_place_rename = "true"
file_ops.confirm_delete = "true"
file_ops.confirm_move_to_trash = "true"
file_ops.enable_delete_key = "true"
file_ops.use_system_trash = "true"
file_ops.safe_delete_enable = "false"
file_ops.safe_delete_path = "/home/tykayn/.local/share/geeqie/trash"
file_ops.safe_delete_folder_maxsize = "128"
file_ops.no_trash = "false"
properties.tabs_order = ""
image.zoom_mode = "2"
image.zoom_2pass = "true"
image.zoom_to_fit_allow_expand = "false"
image.zoom_quality = "2"
image.zoom_increment = "5"
image.zoom_style = "0"
image.fit_window_to_image = "false"
image.limit_window_size = "true"
image.max_window_size = "90"
image.limit_autofit_size = "false"
image.max_autofit_size = "100"
image.max_enlargement_size = "900"
image.scroll_reset_method = "2"
image.tile_cache_max = "10"
image.image_cache_max = "128"
image.enable_read_ahead = "true"
image.exif_rotate_enable = "true"
image.use_custom_border_color = "false"
image.use_custom_border_color_in_fullscreen = "true"
image.border_color = "#000000000000"
image.alpha_color_1 = "#999999999999"
image.alpha_color_2 = "#666666666666"
image.tile_size = "128"
thumbnails.max_width = "96"
thumbnails.max_height = "72"
thumbnails.enable_caching = "true"
thumbnails.cache_into_dirs = "false"
thumbnails.use_xvpics = "true"
thumbnails.spec_standard = "true"
thumbnails.quality = "1"
thumbnails.use_exif = "false"
thumbnails.use_color_management = "false"
thumbnails.use_ft_metadata = "true"
thumbnails.collection_preview = "20"
file_sort.method = "1"
file_sort.ascending = "true"
file_sort.case_sensitive = "false"
file_sort.natural = "false"
fullscreen.screen = "-1"
fullscreen.clean_flip = "false"
fullscreen.disable_saver = "true"
fullscreen.above = "false"
image_overlay.template_string = "%collection:&lt;i&gt;*&lt;/i&gt;\\n%(%number%/%total%) [%zoom%] &lt;b&gt;%name%&lt;/b&gt;\n%res%|%date%|%size%\n%formatted.Aperture%|%formatted.ShutterSpeed%|%formatted.ISOSpeedRating:ISO *%|%formatted.FocalLength%|%formatted.ExposureBias:* Ev%\n%formatted.Camera:40%|%formatted.Flash%\n%formatted.star_rating%"
image_overlay.x = "10"
image_overlay.y = "-10"
image_overlay.text_red = "0"
image_overlay.text_green = "0"
image_overlay.text_blue = "0"
image_overlay.text_alpha = "255"
image_overlay.background_red = "240"
image_overlay.background_green = "240"
image_overlay.background_blue = "240"
image_overlay.background_alpha = "210"
image_overlay.font = ""
slideshow.delay = "5.0"
slideshow.random = "false"
slideshow.repeat = "false"
collections.rectangular_selection = "false"
file_filter.show_hidden_files = "false"
file_filter.show_parent_directory = "true"
file_filter.show_dot_directory = "false"
file_filter.disable_file_extension_checks = "false"
file_filter.disable = "false"
sidecar.ext = ".jpg;%raw;.xmp;%unknown"
shell.path = "/bin/sh"
shell.options = "-c"
helpers.html_browser.command_name = ""
helpers.html_browser.command_line = ""
metadata.enable_metadata_dirs = "false"
metadata.save_in_image_file = "false"
metadata.save_legacy_IPTC = "false"
metadata.warn_on_write_problems = "true"
metadata.save_legacy_format = "false"
metadata.sync_grouped_files = "true"
metadata.confirm_write = "true"
metadata.sidecar_extended_name = "false"
metadata.confirm_timeout = "10"
metadata.confirm_after_timeout = "false"
metadata.confirm_on_image_change = "false"
metadata.confirm_on_dir_change = "true"
metadata.keywords_case_sensitive = "false"
metadata.write_orientation = "true"
metadata.check_spelling = "true"
stereo.mode = "0"
stereo.fsmode = "0"
stereo.enable_fsmode = "false"
stereo.fixed_w = "1920"
stereo.fixed_h = "1080"
stereo.fixed_x1 = "0"
stereo.fixed_y1 = "0"
stereo.fixed_x2 = "0"
stereo.fixed_y2 = "1125"
read_metadata_in_idle = "false"
star_rating.star = "10040"
star_rating.rejected = "10060"
cp_mv_rn.auto_start = "0"
cp_mv_rn.auto_padding = "0"
cp_mv_rn.auto_end = ""
cp_mv_rn.formatted_start = "0"
printer.template_string = ""
printer.image_font = "Serif 10"
printer.page_font = "Serif 10"
printer.page_text = ""
printer.image_text_position = "1"
printer.page_text_position = "3"
printer.show_image_text = "false"
printer.show_page_text = "false"
threads.duplicates = "-1"
mouse_button_8 = "Back"
mouse_button_9 = "Forward"
override_disable_gpu = "false"
>
<color_profiles screen_file = "" enabled = "true" use_image = "true" input_type = "0" use_x11_screen_profile = "true" render_intent = "0" >
<profile input_file = "" input_name = "" />
<profile input_file = "" input_name = "" />
<profile input_file = "" input_name = "" />
<profile input_file = "" input_name = "" />
</color_profiles>
<filter>
<file_type key = "dds" enabled = "true" extensions = ".dds" description = "DirectDraw Surface" file_class = "1" writable = "false" allow_sidecar = "false" />
<file_type key = "pdf" enabled = "true" extensions = ".pdf" description = "Portable Document Format" file_class = "6" writable = "false" allow_sidecar = "false" />
<file_type key = "heif/avif" enabled = "true" extensions = ".heif;.heic;.avif" description = "HEIF/AVIF Image" file_class = "1" writable = "false" allow_sidecar = "true" />
<file_type key = "webp" enabled = "true" extensions = ".webp" description = "WebP Format" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "djvu" enabled = "true" extensions = ".djvu;.djv" description = "DjVu Format" file_class = "6" writable = "false" allow_sidecar = "false" />
<file_type key = "jp2" enabled = "true" extensions = ".jp2" description = "JPEG 2000" file_class = "1" writable = "false" allow_sidecar = "false" />
<file_type key = "zip" enabled = "true" extensions = ".zip;.rar;.tar;.tar.gz;.tar.bz2;.tar.xz;.tgz;.tbz;.txz;.cbr;.cbz;.gz;.bz2;.xz;.lzh;.lza;.7z" description = "Archive files" file_class = "7" writable = "false" allow_sidecar = "false" />
<file_type key = "scr" enabled = "true" extensions = ".scr" description = "ZX Spectrum screen Format" file_class = "1" writable = "false" allow_sidecar = "false" />
<file_type key = "psd" enabled = "true" extensions = ".psd" description = "Adobe Photoshop Document" file_class = "1" writable = "false" allow_sidecar = "false" />
<file_type key = "apng" enabled = "true" extensions = ".apng" description = "Animated Portable Network Graphic" file_class = "1" writable = "false" allow_sidecar = "false" />
<file_type key = "png" enabled = "true" extensions = ".png" description = "PNG" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "jpeg" enabled = "true" extensions = ".jpeg;.jpe;.jpg" description = "JPEG" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "ani" enabled = "true" extensions = ".ani" description = "Windows animated cursor" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "bmp" enabled = "true" extensions = ".bmp" description = "BMP" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "gif" enabled = "true" extensions = ".gif" description = "GIF" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "icns" enabled = "true" extensions = ".icns" description = "MacOS X icon" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "ico" enabled = "true" extensions = ".ico;.cur" description = "Windows icon" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "pnm" enabled = "true" extensions = ".pnm;.pbm;.pgm;.ppm" description = "PNM/PBM/PGM/PPM" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "qtif" enabled = "true" extensions = ".qtif;.qif" description = "QuickTime" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "svg" enabled = "true" extensions = ".svg;.svgz;.svg.gz" description = "Scalable Vector Graphics" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "tga" enabled = "true" extensions = ".tga;.targa" description = "Targa" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "tiff" enabled = "true" extensions = ".tiff;.tif" description = "TIFF" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "xbm" enabled = "true" extensions = ".xbm" description = "XBM" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "xpm" enabled = "true" extensions = ".xpm" description = "XPM" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "ras" enabled = "false" extensions = ".ras" description = "Raster" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "jps" enabled = "true" extensions = ".jps" description = "Stereo side-by-side jpeg" file_class = "1" writable = "true" allow_sidecar = "false" />
<file_type key = "mpo" enabled = "true" extensions = ".mpo" description = "Stereo multi-image jpeg" file_class = "1" writable = "false" allow_sidecar = "true" />
<file_type key = "xmp" enabled = "true" extensions = ".xmp" description = "XMP sidecar" file_class = "3" writable = "true" allow_sidecar = "false" />
<file_type key = "meta" enabled = "true" extensions = ".meta" description = "GQview legacy metadata" file_class = "3" writable = "true" allow_sidecar = "false" />
<file_type key = "gqv" enabled = "true" extensions = ".gqv" description = "Geeqie image collection" file_class = "5" writable = "false" allow_sidecar = "false" />
<file_type key = "pto" enabled = "true" extensions = ".pto" description = "Panorama script file" file_class = "3" writable = "false" allow_sidecar = "false" />
<file_type key = "arw" enabled = "true" extensions = ".arw;.srf;.sr2" description = "Sony raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "crw" enabled = "true" extensions = ".crw;.cr2;.cr3" description = "Canon raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "kdc" enabled = "true" extensions = ".kdc;.dcr;.k25" description = "Kodak raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "raf" enabled = "true" extensions = ".raf" description = "Fujifilm raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "mef" enabled = "true" extensions = ".mef;.mos" description = "Mamiya raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "mrw" enabled = "true" extensions = ".mrw" description = "Minolta raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "nef" enabled = "true" extensions = ".nef" description = "Nikon raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "orf" enabled = "true" extensions = ".orf" description = "Olympus raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "pef" enabled = "true" extensions = ".pef;.ptx" description = "Pentax or Samsung raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "dng" enabled = "true" extensions = ".dng" description = "Adobe Digital Negative raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "x3f" enabled = "true" extensions = ".x3f" description = "Sigma raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "raw" enabled = "true" extensions = ".raw" description = "Panasonic raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "r3d" enabled = "true" extensions = ".r3d" description = "Red raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "3fr" enabled = "true" extensions = ".3fr" description = "Hasselblad raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "erf" enabled = "true" extensions = ".erf" description = "Epson raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "srw" enabled = "true" extensions = ".srw" description = "Samsung raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "rw2" enabled = "true" extensions = ".rw2" description = "Panasonic raw format" file_class = "2" writable = "false" allow_sidecar = "true" />
<file_type key = "mp4" enabled = "false" extensions = ".mp4;.m4v;.3gp;.3g2" description = "MP4 video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "3gp" enabled = "false" extensions = ".3gp;.3g2" description = "3GP video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "mov" enabled = "false" extensions = ".mov;.qt" description = "MOV video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "avi" enabled = "false" extensions = ".avi" description = "AVI video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "mpg" enabled = "false" extensions = ".mpg;.mpeg;.mts;.m2ts" description = "MPG video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "mkv" enabled = "false" extensions = ".mkv;.webm" description = "Matroska video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "wmv" enabled = "false" extensions = ".wmv;.asf" description = "Windows Media Video file" file_class = "4" writable = "false" allow_sidecar = "false" />
<file_type key = "flv" enabled = "false" extensions = ".flv" description = "Flash Video file" file_class = "4" writable = "false" allow_sidecar = "false" />
</filter>
<marks_tooltips>
<tooltip text = "Mark 1" />
<tooltip text = "Mark 2" />
<tooltip text = "Mark 3" />
<tooltip text = "Mark 4" />
<tooltip text = "Mark 5" />
<tooltip text = "Mark 6" />
<tooltip text = "Mark 7" />
<tooltip text = "Mark 8" />
<tooltip text = "Mark 9" />
<tooltip text = "Mark 10" />
</marks_tooltips>
<disabled_plugins>
</disabled_plugins>
<class_filter>
<filter_type filter = "Unknown" enabled = "true" />
<filter_type filter = "Image" enabled = "true" />
<filter_type filter = "RAW Image" enabled = "true" />
<filter_type filter = "Metadata" enabled = "true" />
<filter_type filter = "Video" enabled = "true" />
<filter_type filter = "Collection" enabled = "true" />
<filter_type filter = "Document" enabled = "true" />
<filter_type filter = "Archive" enabled = "true" />
</class_filter>
<keyword_tree>
</keyword_tree>
</global>
<layout
id = "lw1"
style = "0"
order = "123"
dir_view_type = "0"
file_view_type = "1"
dir_view_list_sort.method = "1"
dir_view_list_sort.ascend = "true"
show_marks = "false"
show_file_filter = "false"
show_thumbnails = "false"
show_directory_date = "true"
home_path = "/home/poule/encrypted/stockage-syncable/photos/2024"
startup_path = "0"
main_window.x = "1920"
main_window.y = "0"
main_window.w = "1720"
main_window.h = "1359"
main_window.maximized = "true"
main_window.hdivider_pos = "660"
main_window.vdivider_pos = "494"
workspace = "-1"
folder_window.vdivider_pos = "216"
float_window.x = "0"
float_window.y = "0"
float_window.w = "260"
float_window.h = "450"
float_window.vdivider_pos = "-1"
properties_window.w = "0"
properties_window.h = "0"
tools_float = "false"
tools_hidden = "false"
toolbar_hidden = "false"
show_info_pixel = "false"
ignore_alpha = "false"
bars_state.info = "false"
bars_state.sort = "false"
bars_state.tools_float = "false"
bars_state.tools_hidden = "false"
bars_state.hidden = "false"
image_overlay.state = "0"
image_overlay.histogram_channel = "4"
image_overlay.histogram_mode = "1"
log_window.x = "0"
log_window.y = "0"
log_window.w = "520"
log_window.h = "400"
preferences_window.x = "472"
preferences_window.y = "225"
preferences_window.w = "975"
preferences_window.h = "600"
preferences_window.page_number = "4"
search_window.x = "100"
search_window.y = "100"
search_window.w = "700"
search_window.h = "650"
dupe_window.x = "100"
dupe_window.y = "100"
dupe_window.w = "800"
dupe_window.h = "400"
advanced_exif_window.x = "841"
advanced_exif_window.y = "475"
advanced_exif_window.w = "900"
advanced_exif_window.h = "600"
animate = "true" >
<toolbar>
<clear/>
<toolitem action = "Thumbnails" />
<toolitem action = "Back" />
<toolitem action = "Forward" />
<toolitem action = "Up" />
<toolitem action = "Home" />
<toolitem action = "Refresh" />
<toolitem action = "ZoomIn" />
<toolitem action = "ZoomOut" />
<toolitem action = "ZoomFit" />
<toolitem action = "Zoom100" />
<toolitem action = "Preferences" />
<toolitem action = "FloatTools" />
</toolbar>
<statusbar>
<clear/>
<toolitem action = "ExifRotate" />
<toolitem action = "ShowInfoPixel" />
<toolitem action = "UseColorProfiles" />
<toolitem action = "SaveMetadata" />
</statusbar>
</layout>
</gq>

View file

@ -36,3 +36,4 @@
(server-start)
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)

20
assets/.ssh/config Normal file
View file

@ -0,0 +1,20 @@
Host *
SetEnv TERM="xterm"
ServerAliveInterval 300
ServerAliveCountMax 2
Host cluster-moji.openstreetmap.fr
User tykayn
Host mobilizon.vm.openstreetmap.fr
ProxyJump cluster-moji.openstreetmap.fr
IdentityFile ~/.ssh/id_rsa_spaceship
User tykayn
Host sotm.vm.openstreetmap.fr
ProxyJump osm26.openstreetmap.fr
Host github.com
IdentityFile ~/.ssh/github.pub
User git
IdentitiesOnly yes

View file

@ -41,7 +41,7 @@ zstyle ':omz:update' mode auto # update automatically without asking
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="true"
#ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
@ -101,3 +101,13 @@ if [[ -n $SSH_CONNECTION ]]; then
# alias ohmyzsh="mate ~/.oh-my-zsh"
source ~/.bash_aliases
fpath+=~/.zfunc; autoload -Uz compinit; compinit
# Load Angular CLI autocompletion.
source <(ng completion script)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

137
backup-management/round.sh Executable file
View file

@ -0,0 +1,137 @@
#!/bin/bash
# Script to check if mounted disks have up-to-date borg2 backups
# Compares the last modification date of borg_archives/borg2 on each disk
# with /home/poule/borg_archives/borg2
# Set colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
echo "Checking mounted disks for borg2 backup status..."
# Reference directory
REFERENCE_DIR="/home/poule/borg_archives/borg2"
# Check if reference directory exists
if [ ! -d "$REFERENCE_DIR" ]; then
echo -e "${RED}Error: Reference directory $REFERENCE_DIR does not exist.${NC}"
exit 1
fi
# Get current time
CURRENT_TIME=$(date +%s)
# Calculate time 24 hours ago
TIME_24H_AGO=$((CURRENT_TIME - 86400))
# Get only mount points in /media/$USER/
MOUNT_POINTS=$(df -h | grep "/media/$USER/" | awk '{print $6}')
# Initialize arrays for results
OUTDATED_DISKS=()
OUTDATED_TIMES=()
UP_TO_DATE_DISKS=()
NO_BORG_DISKS=()
LOW_SPACE_DISKS=()
LOW_SPACE_VALUES=()
# Function to calculate time difference in years, months, days
calculate_time_diff() {
local timestamp=$1
local now=$(date +%s)
local diff=$((now - timestamp))
# Calculate years, months, days
local days=$((diff / 86400))
local years=$((days / 365))
local remaining_days=$((days % 365))
local months=$((remaining_days / 30))
remaining_days=$((remaining_days % 30))
echo "${years}y ${months}m ${remaining_days}d"
}
# Check each mount point
for MOUNT in $MOUNT_POINTS; do
BORG_DIR="$MOUNT/borg_archives/borg2"
# Skip the reference directory itself
if [ "$MOUNT" == "/home" ] || [ "$MOUNT" == "/" ]; then
continue
fi
echo -e "${YELLOW}Checking $MOUNT...${NC}"
# Check available disk space
AVAILABLE_SPACE=$(df -BG "$MOUNT" | awk 'NR==2 {print $4}' | sed 's/G//')
if [ "$AVAILABLE_SPACE" -lt 10 ]; then
echo -e " ${RED}! Low disk space: ${AVAILABLE_SPACE}GB available${NC}"
LOW_SPACE_DISKS+=("$MOUNT")
LOW_SPACE_VALUES+=("$AVAILABLE_SPACE")
fi
# Check if borg_archives/borg2 exists on this mount
if [ -d "$BORG_DIR" ]; then
# Get last modification time of the borg directory
BORG_TIME=$(stat -c %Y "$BORG_DIR")
# Compare times - consider up-to-date if modified within the last 24 hours
if [ "$BORG_TIME" -ge "$TIME_24H_AGO" ]; then
echo -e " ${GREEN}✓ Backup is up to date${NC}"
UP_TO_DATE_DISKS+=("$MOUNT")
else
echo -e " ${RED}✗ Backup is outdated${NC}"
OUTDATED_DISKS+=("$MOUNT")
OUTDATED_TIMES+=("$BORG_TIME")
fi
else
echo -e " ${YELLOW}! No borg2 backup directory found${NC}"
NO_BORG_DISKS+=("$MOUNT")
fi
done
# Print summary
echo -e "\n${YELLOW}=== Backup Status Summary ===${NC}"
if [ ${#UP_TO_DATE_DISKS[@]} -gt 0 ]; then
echo -e "\n${GREEN}Up-to-date disks:${NC}"
for DISK in "${UP_TO_DATE_DISKS[@]}"; do
echo " - $DISK"
done
fi
if [ ${#OUTDATED_DISKS[@]} -gt 0 ]; then
echo -e "\n${RED}Outdated disks (need backup):${NC}"
for i in "${!OUTDATED_DISKS[@]}"; do
DISK="${OUTDATED_DISKS[$i]}"
BORG_TIME="${OUTDATED_TIMES[$i]}"
FORMATTED_DATE=$(date -d "@$BORG_TIME" "+%Y-%m-%d %H:%M:%S")
TIME_DIFF=$(calculate_time_diff "$BORG_TIME")
echo " - $DISK (Last modified: $FORMATTED_DATE, Age: $TIME_DIFF)"
done
fi
if [ ${#NO_BORG_DISKS[@]} -gt 0 ]; then
echo -e "\n${YELLOW}Disks without borg2 backup directory:${NC}"
for DISK in "${NO_BORG_DISKS[@]}"; do
echo " - $DISK"
done
fi
if [ ${#LOW_SPACE_DISKS[@]} -gt 0 ]; then
echo -e "\n${RED}Disks with low space (less than 10GB free):${NC}"
for i in "${!LOW_SPACE_DISKS[@]}"; do
DISK="${LOW_SPACE_DISKS[$i]}"
SPACE="${LOW_SPACE_VALUES[$i]}"
echo " - $DISK (${SPACE}GB available)"
done
fi
# Exit with error code if there are outdated disks
if [ ${#OUTDATED_DISKS[@]} -gt 0 ]; then
exit 1
else
exit 0
fi

8
bin/appendfilename Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from appendfilename import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

0
bin/borg Normal file → Executable file
View file

8
bin/date2name Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from date2name import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
bin/filetags Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from filetags import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

8
bin/guessfilename Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from guessfilename import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

View file

@ -7,15 +7,19 @@ Le lancement du script d'init réalise la mise en place de configuration pour ch
Pour récupérer seulement les alias de commande sans prendre toutes les sections, faire ceci:
```shell
cd
wget https://forge.chapril.org/tykayn/workflow/raw/branch/main/assets/.bashrc
wget https://forge.chapril.org/tykayn/workflow/raw/branch/main/assets/.bash_custom_aliases -O .bash_aliases
wget https://source.cipherbliss.com/tykayn/workflow/raw/branch/main/assets/.bashrc
wget https://source.cipherbliss.com/tykayn/workflow/raw/branch/main/assets/.bash_custom_aliases -O .bash_aliases
source .bash_aliases
```
## Installation de programmes
```shell
sudo apt install ansible python3-pip arp-scan borgbackup curl docker docker-compose etckeeper git gnupg jq meld nano ncdu nginx restic npm pandoc php python3 python3-pip tig zsh testdisk texlive rbenv htop btop python3-setuptools autopostgresqlbackup automysqlbackup certbot smartmontools fail2ban snapd unattended-upgrades php php-fpm php-xml php-mysql rsync php-dom php-curl vrms syncthing sshfs geeqie calibre
sudo apt update
sudo apt upgrade
sudo apt install ansible python3-pip arp-scan borgbackup curl docker docker-compose etckeeper git gnupg jq meld nano ncdu nginx restic npm pandoc php8.4 python3 python3-pip tig zsh testdisk texlive rbenv htop python3-setuptools automysqlbackup certbot smartmontools fail2ban snapd unattended-upgrades php8.4-fpm php-xml php-mysql rsync php8.4-xml php-curl vrms syncthing sshfs geeqie calibre adduser snapd borgbackup exa adduser
snap install emacs --classic
snap install btop
pip install yt-dlp --user
```

View file

@ -4,9 +4,11 @@ echo "installation du workflow"
mkdir -p ~/Nextcloud/ressources/workflow_nextcloud/
cd ~/Nextcloud/ressources/workflow_nextcloud/
git clone https://forge.chapril.org/tykayn/workflow public_workflow
git clone https://source.cipherbliss.com/tykayn/workflow public_workflow
cd public_workflow
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B188E2B695BD4743
bash initialization/init_workflow.sh
echo "\n\n ça c'est fait"

View file

@ -0,0 +1,73 @@
#!/bin/bash
echo "========== Checking installed programs and files ======="
source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
# Check if apt-installed packages are present
echo "Checking apt-installed packages..."
PACKAGES="adduser ansible arp-scan automysqlbackup borgbackup calibre certbot curl docker docker-compose etckeeper eza fail2ban geeqie git gnupg ghostty htop jq meld nano ncdu nginx npm pandoc php-curl php-mysql php-xml php8.4 php8.4-fpm php8.4-xml python3 python3-pip python3-setuptools rbenv restic rsync smartmontools snapd sshfs syncthing testdisk texlive tig unattended-upgrades vrms zsh"
MISSING_PACKAGES=""
for pkg in $PACKAGES; do
if ! dpkg -l | grep -q " $pkg "; then
MISSING_PACKAGES="$MISSING_PACKAGES $pkg"
fi
done
if [ -n "$MISSING_PACKAGES" ]; then
echo -e "\e[31mThe following packages are missing:$MISSING_PACKAGES\e[0m"
else
echo "All apt packages are installed."
fi
# Check if snap-installed packages are present
echo "Checking snap-installed packages..."
SNAP_PACKAGES="btop emacs"
MISSING_SNAP_PACKAGES=""
for pkg in $SNAP_PACKAGES; do
if ! snap list | grep -q "$pkg"; then
MISSING_SNAP_PACKAGES="$MISSING_SNAP_PACKAGES $pkg"
fi
done
if [ -n "$MISSING_SNAP_PACKAGES" ]; then
echo -e "\e[31mThe following snap packages are missing:$MISSING_SNAP_PACKAGES\e[0m"
else
echo "All snap packages are installed."
fi
cd $WORKFLOW_PATH_PUBLIC/bin
# Check if AppImages are present
echo "Checking AppImages..."
if [ ! -f "$WORKFLOW_PATH_PUBLIC/bin/Nextcloud-3.16.6-x86_64.AppImage" ]; then
echo -e "\e[31m Nextcloud AppImage is missing.\e[0m"
fi
if [ ! -f "$WORKFLOW_PATH_PUBLIC/bin/VeraCrypt-1.26.24-x86_64.AppImage" ]; then
echo -e "\e[31m VeraCrypt AppImage is missing.\e[0m"
fi
if [ ! -f "$HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh" ]; then
echo -e "\e[31m secret vars file is missing. $HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh \e[0m"
fi
# Check if configuration files are present in home directory
echo "Checking configuration files in home directory..."
# Note: .bash_custom_aliases is downloaded as .bash_aliases in fast.sh
CONFIG_FILES=".bash_aliases .bashrc .zshrc"
MISSING_CONFIG_FILES=""
for file in $CONFIG_FILES; do
if [ ! -f "$HOME/$file" ]; then
MISSING_CONFIG_FILES="$MISSING_CONFIG_FILES $file"
fi
done
if [ -n "$MISSING_CONFIG_FILES" ]; then
echo -e "\e[31mThe following configuration files are missing in your home directory:$MISSING_CONFIG_FILES\e[0m"
else
echo "All configuration files are present in your home directory."
fi
echo "========== Check completed ======="

91
initialization/fast.sh Normal file
View file

@ -0,0 +1,91 @@
echo "========== init de workflow par Tykayn ======="
sudo apt update -y
sudo apt upgrade -y
sudo apt autoremove -y
mkdir -p $HOME/Nextcloud/ressources/workflow_nextcloud/
cd $HOME/Nextcloud/ressources/workflow_nextcloud/
git clone https://source.cipherbliss.com/tykayn/workflow public_workflow
cd $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow
git pull
# copie des assets de config
cp assets/.bash_custom_aliases $HOME/.bash_custom_aliases
cp assets/.bash_aliases $HOME/.bash_aliases
cp assets/.bashrc $HOME/.bashrc
cp assets/.zshrc $HOME/.zshrc
cp assets/.konsole.profile $HOME/.konsole.profile
mkdir -p $HOME/.config/filetags
mkdir -p $HOME/.config/guessfilename
mkdir -p $HOME/.config/geeqie
cp -r assets/filetags $HOME/.config/filetags
cp -r assets/geeqie $HOME/.config/geeqie
cp -r assets/guessfilename $HOME/.config/guessfilename
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B188E2B695BD4743
source "$HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh"
source "$HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh"
echo 'deb http://download.opensuse.org/repositories/home:/clayrisser:/bookworm/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:clayrisser:bookworm.list
curl -fsSL https://download.opensuse.org/repositories/home:clayrisser:bookworm/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_clayrisser_bookworm.gpg > /dev/null
sudo apt update
# ceci a été testé sur debian 12
# Définition des listes thématiques de paquets
# Outils de développement
DEV_TOOLS="ansible git npm python3 python3-pip python3-setuptools rbenv rustup"
# Langages et frameworks
LANGUAGES="php8.4 php8.4-fpm php-xml php-mysql php8.4-xml php-curl"
# Outils système
SYSTEM_TOOLS="arp-scan curl etckeeper ghostty gnupg htop jq meld nano ncdu testdisk tig vrms exa"
# Outils de sauvegarde et sécurité
# borgbackup est mis dans le dossier bin
BACKUP_SECURITY="automysqlbackup certbot fail2ban restic smartmontools unattended-upgrades"
# Outils réseau et serveur
NETWORK_SERVER="docker docker-compose nginx syncthing sshfs"
# Outils de texte et documents
TEXT_DOCS="pandoc texlive"
# Shells et terminaux
SHELLS="fzf zsh"
# Autres outils
OTHERS="adduser calibre geeqie rsync snapd krita gimp ffmpeg"
# Fusion des listes et tri alphabétique global
ALL_PACKAGES=$(echo "$DEV_TOOLS $LANGUAGES $SYSTEM_TOOLS $BACKUP_SECURITY $NETWORK_SERVER $TEXT_DOCS $SHELLS $OTHERS" | tr ' ' '\n' | sort | tr '\n' ' ')
# Installation des paquets
sudo apt install $ALL_PACKAGES
cd $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/bin
if [ ! -f "Nextcloud-3.16.6-x86_64.AppImage" ]; then
wget https://github.com/nextcloud-releases/desktop/releases/download/v3.16.6/Nextcloud-3.16.6-x86_64.AppImage
chmod +x Nextcloud-3.16.6-x86_64.AppImage
fi
if [ ! -f "VeraCrypt-1.26.24-x86_64.AppImage" ]; then
wget https://launchpad.net/veracrypt/trunk/1.26.24/+download/VeraCrypt-1.26.24-x86_64.AppImage
chmod +x VeraCrypt-1.26.24-x86_64.AppImage
fi
sudo snap install btop czkawka
snap install emacs --classic
if [ ! -f "$HOME/.oh-my-zsh" ]; then
echo -e "\e[31m oh my zsh missing.\e[0m"
curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh > install_oh_my_zsh.sh
bash install_oh_my_zsh.sh
fi
if[! -f $HOME/.oh-my-zsh ]

548
initialization/functions.sh Normal file
View file

@ -0,0 +1,548 @@
#!/bin/bash
# ----------------- documentation -----------------
#
# @author functions_sync by @tykayn - contact at cipherbliss.com
#!/bin/bash
# ----------------- documentation -----------------
#
# @author functions_sync by @tykayn - contact at cipherbliss.com
source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
logInOrgmodeInbox() {
local message=$1
echo "TODO: ERREUR functions sync: /!\ $message" | tee >>$inbox_orgmode
echo "CREATED: [$(date +%Y-%m-%d_%H-%M-%S)]" | tee >>$inbox_orgmode
}
export logInOrgmodeInbox
if [ ! -f ~/.tk-borg-passphrase-light ]; then
logInOrgmodeInbox "$HOST : il manque le fichier de borg passphrase dans ~/.tk-borg-passphrase-light"
fi
# --------- log de la date courante -------- #
logDate() {
echo -e "${txtcyn}${txtbold}---${txtreset}" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
date "+%Y-%m-%d %H:%M:%S" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo -e "${txtcyn}${txtbold} $1 ${txtreset}" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "${txtcyn}---${txtreset} " | tee -a $LOG_FILE_BACKUP_DATES 2>&1
}
export logDate
#logDate "exclusions de rsync: \n ${exclude_opts[@]}"
# --------- syncro uniquement de borg backup -------- #
# du -sch /home/poule/borg_archives/backup_land4to
clearDiskSyncBorg() {
local diskName=$1
echo " " >>$LOG_FILE_BACKUP_DATES
echo " ---------- sync borg folder to disk $diskName " >>$LOG_FILE_BACKUP_DATES
# chech that the disk exists
FILE=/media/$USER/$diskName
if test -d "$FILE"; then
echo "### $FILE , $diskName exists." >>$LOG_FILE_BACKUP_DATES
echo "### $FILE , dernière syncro:" >>$LOG_FILE_BACKUP_DATES
date -r /media/$USER/$diskName/borg_archives/borg2 "+%Y-%m-%d %H:%M:%S" >>$LOG_FILE_BACKUP_DATES
echo "### ${today} replicate to disk $diskName" >>$LOG_FILE_BACKUP_DATES
logDate "disk $diskName : partie $SPACESHIP_NEW_BORG_REPO"
# log the date of the last big syncro
touch $SPACESHIP_NEW_BORG_REPO/last_synced_from_$HOST.txt
date -r /media/$USER/$diskName/borg_archives/borg2 "+%Y-%m-%d %H:%M:%S" >$SPACESHIP_NEW_BORG_REPO/last_synced_from_$HOST.txt
rsync -avhWP /home/poule/borg_archives /media/$USER/$diskName --perms --delete-before --inplace
date "+%Y-%m-%d %H:%M:%S" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "---- clearDiskSyncBorg $diskName faite -----------------------" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
else
echo "### $FILE introuvable." >>$LOG_FILE_BACKUP_DATES
fi
}
export clearDiskSyncBorg
# syncroniser un laptop avec un disque usb contenant stockage syncable
# exemple:
# getStockageSyncableFromDisk louisbraille
getStockageSyncableFromDisk() {
local diskName=$1
echo " " >>$LOG_FILE_BACKUP_DATES
echo " ---------- get stockage syncable from disk $diskName " >>$LOG_FILE_BACKUP_DATES
FILE=/media/$USER/$diskName
if test -d "$FILE"; then
rsync -avhWP /media/$USER/$diskName/encrypted/stockage-syncable/photos $ARCHIVE_SYNCABLE --perms --delete-before --inplace
rsync -avhWP /media/$USER/$diskName/encrypted/stockage-syncable/ressources $ARCHIVE_SYNCABLE --perms --delete-before --inplace
rsync -avhWP /media/$USER/$diskName/encrypted/stockage-syncable/dessins $ARCHIVE_SYNCABLE --perms --delete-before --inplace
else
echo "### $FILE introuvable." >>$LOG_FILE_BACKUP_DATES
fi
date "+%Y-%m-%d %H:%M:%S" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "---- get stockage syncable from disk $diskName faite -----------------------" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
}
export getStockageSyncableFromDisk
clearDiskSyncBorgServer() {
local diskName=$1
echo " " >>$LOG_FILE_BACKUP_DATES
echo " ---------- sync borg server folder to disk $diskName " >>$LOG_FILE_BACKUP_DATES
# chech that the disk exists
FILE=/media/$USER/$diskName
# enlever le borg backup d'avant
# if test -d "/media/$USER/$diskName/backup_land4to"; then
# rm -rf /media/$USER/$diskName/backup_land4to
# fi
if test -d "$FILE"; then
echo "### $FILE , $diskName exists." >>$LOG_FILE_BACKUP_DATES
echo "### $FILE , dernière syncro:" >>$LOG_FILE_BACKUP_DATES
date -r /media/$USER/$diskName/borg_archives/borg2 "+%Y-%m-%d %H:%M:%S" >>$LOG_FILE_BACKUP_DATES
echo "### ${today} replicate to disk $diskName" >>$LOG_FILE_BACKUP_DATES
logDate "disk $diskName : partie borg2"
# log the date of the last big syncro
touch /home/poule/borg_archives/borg2/last_synced.txt
mkdir -p /media/$USER/$diskName/borg_archives/production-servers-backup
# rsync -avhWP /home/poule/borg_archives/production-servers-backup/rise /media/$USER/$diskName/borg_archives/production-servers-backup --perms --delete-before --inplace
rsync -avhWP /home/poule/borg_archives/borg2/* /media/$USER/$diskName/borg_archives/borg2/ --perms --delete-before --inplace
else
echo "### $FILE introuvable." >>$LOG_FILE_BACKUP_DATES
fi
date "+%Y-%m-%d %H:%M:%S" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "---- clearDiskSyncBorgServer $diskName faite -----------------------" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
}
export clearDiskSyncBorgServer
# --------- recopie des éléments de poule zfs -------- #
# les disques de desintation doivent avoir environ 2.5To de place disponible
# chacun doit refléter la partie interne de /home/poule ainsi que le dossier music
syncToBigDiskName() {
local diskName=$1
echo " " >>$LOG_FILE_BACKUP_DATES
#check that the disk exists
FILE=/media/$USER/$diskName
if test -d "$FILE"; then
echo "### $FILE , $diskName exists." >>$LOG_FILE_BACKUP_DATES
# tester si y'a de la place disponible
if test -d "$stockage_syncable_folder"; then
echo "### ${today} replicate to disk $diskName" >>$LOG_FILE_BACKUP_DATES
# logDate "disk $diskName : part home";
# rsync -avhWP /home/poule/encrypted/home /media/$USER/$diskName/encrypted --perms --delete-before --inplace "${exclude_opts[@]}"
logDate "${txtgrn} disk $diskName : part stockage-syncable : ressources ${txtreset}"
rsync -avhWP $stockage_syncable_folder/ressources/* /media/$USER/$diskName/encrypted/stockage-syncable/ressources/ --delete-before --inplace "${exclude_opts[@]}"
logDate "${txtgrn} disk $diskName : part wulfi borg ${txtreset}"
rsync -avhWP /home/poule/borg_archives/wulfi_backup_borg/ /media/$USER/$diskName/borg_archives/wulfi_backup_borg/ --delete-before --inplace "${exclude_opts[@]}"
logDate "disk $diskName : syncro borg2"
clearDiskSyncBorgServer $1
# log the date of the last big syncro
touch /home/poule/encrypted/last_synced.text
touch $stockage_syncable_folder/source-is-zfs-spaceship.txt
else
echo "### le dossier d'archives $stockage_syncable_folder est introuvable. Zfs n'a pas été dévérouillé par l'administrateur " >>$LOG_FILE_BACKUP_DATES
fi
# else
# echo "disque $diskName trop rempli"
# notify_desktop "ERREUR Syncronisation de sauvegarde: disque $diskName trop rempli"
# fi
else
echo "### $FILE introuvable." >>$LOG_FILE_BACKUP_DATES
fi
date "+%Y-%m-%d %H:%M:%S" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "---- syncToBigDiskName $diskName faite -----------------------" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
disque_libre $diskName
# marquer visuellement la dernière syncronisation à la racine du disque
rm "/media/$USER/$diskName/last synced from $HOST.txt"
rm "/media/$USER/$diskName/*synced from $HOST.txt"
touch "/media/$USER/$diskName/last synced from $HOST.txt"
}
export syncToBigDiskName
# ----------------------------------------------------------------------
# --------- le laptop fatland n"a que 2 To de disponible -------- #
getwulfinas() {
rsync -avhWP "tykayn@192.168.1.15:/volume1/bidules_partagés/wulfila_home/*" /home/poule/encrypted/backup_du_nas/wulfi_home_backup --delete-before --inplace --perms "${exclude_opts[@]}" --exclude "TK-LAND" --exclude=npm --delete-excluded
borg create -r /home/poule/borg_archives/wulfi_backup_borg wulfi_backup_borg::wulfi_home_{now} /home/poule/encrypted/backup_du_nas/wulfi_home_backup --progress --stats
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/wulfi_backup_borg
}
export getwulfinas
pushnas() {
rsync -avPz -e ssh /home/poule/borg_archives/borg2/* "tykayn@192.168.1.15:/volume1/bidules_partagés/backup a ne pas modifier/poule/borg_archives/borg2" --delete-before
rsync -avPz -e ssh /home/poule/borg_archives/wulfi_backup_borg/* "tykayn@192.168.1.15:/volume1/bidules_partagés/backup a ne pas modifier/poule/borg_archives/wulfi_backup_borg" --delete-before
}
export pushnas
syncdisksusb() {
syncToBigDiskName brossadent
syncToBigDiskName louisbraille
syncToBigDiskName rugged
syncToBigDiskName hulk
syncToBigDiskName ironman
}
export syncdisksusb
syncfatland() {
echo " " >>$LOG_FILE_BACKUP_DATES
echo " - envoi vers FATland" >>$LOG_FILE_BACKUP_DATES
#### vers le laptop FATland
rsync $stockage_syncable_folder/photos/$CURRENT_YEAR tykayn@192.168.1.12:$stockage_syncable_folder/photos -avhWP --delete-before "${exclude_opts[@]}"
rsync -avhWP $stockage_syncable_folder/photos/* tykayn@192.168.1.12:$stockage_syncable_folder/photos --delete-before "${exclude_opts[@]}"
rsync $stockage_syncable_folder tykayn@192.168.1.12:/home/poule/encrypted -avhWP --delete-before "${exclude_opts[@]}"
rsync /home/poule/borg_archives/* tykayn@192.168.1.12:/home/poule/borg_archives -avhWP --delete-before
date | tee -a $LOG_FILE_BACKUP_DATES 2>&1
echo "sync fatland fait" | tee -a $LOG_FILE_BACKUP_DATES 2>&1
}
export syncfatland
# ----------------- BORG -----------------
# partie contenant tout stockage-syncable
upBorg() {
#killall borg
logDate "### --------- SPACESHIP | creating borg archive at $SPACESHIP_BORG_REPO"
rm -rf ~/.cache/borg/150867528afd85114c8aba98af201a7ad8cf01869c507a87c025d2f8701040a9/lock.exclusive
rm -rf $SPACESHIP_BORG_REPO/lock.exclusive
# borg 2 way to create archive, dans /home/poule/borg_archives/borg2
borg create encrypted_spaceship_{now} $ARCHIVE_SYNCABLE "${exclude_opts[@]}" --progress --verbose --stats --compression zstd,9 | tee -a $LOG_FILE_BACKUP 2>&1
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/borg2
# small archive
borg create -r /home/poule/borg_archives/small_stockage_syncable small::{now}_stockage_syncable_small /home/poule/encrypted/stockage-syncable/dessins "${exclude_opts[@]}" --progress --verbose --stats --compression zstd,9 --exclude photos --exclude BAZAR --exclude www --exclude archives
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/small_stockage_syncable
borg create -r /home/poule/borg_archives/borg_tk_stockage_photos stockage_syncable::{now}_photos_only /home/poule/encrypted/stockage-syncable/photos/ --exclude imageries -v --stats --progress --verbose --stats --compression zstd,9
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/borg_tk_stockage_photos
borg create -r /home/poule/borg_archives/borg_tk_stockage_tout_sauf_photos tout_sauf_photos::stockage_syncable_{now} /home/poule/encrypted/stockage-syncable --exclude photos --progress --stats --compression zstd,9
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/borg_tk_stockage_tout_sauf_photos
rsync -avhWP "tykayn@192.168.1.15:/volume1/bidules_partagés/wulfila_home/*" /home/poule/encrypted/backup_du_nas/wulfi_home_backup --delete-before --inplace --perms "${exclude_opts[@]}" --exclude "TK-LAND" --exclude=npm --delete-excluded
# wulfi backup
borg create -r /home/poule/borg_archives/wulfi_backup_borg wulfi_backup_borg::wulfi_home_{now} /home/poule/encrypted/backup_du_nas/wulfi_home_backup --progress --stats
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 -r /home/poule/borg_archives/wulfi_backup_borg
echo " " | tee -a $LOG_FILE_BACKUP 2>&1
logDate "### --------- ${today} | SPACESHIP | pruning old archives" | tee -a $LOG_FILE_BACKUP 2>&1
# nettoyage tk_backup
borg prune -v --list --stats --keep-daily=8 --keep-weekly=6 --keep-monthly=3 --keep-yearly=2 --repo $SPACESHIP_BORG_REPO | tee -a $LOG_FILE_BACKUP 2>&1
logDate "### --------- pruning done"
}
export upBorg
getRiseupBorgArchivesToPoule() {
rsync -avzPW "tykayn@proxmox.coussinet.org:/poule/encrypted/*" /home/poule/borg_archives/production-servers-backup/rise/encrypted --inplace --delete-before --exclude do_not_sync_back --exclude borgbackup_tkland --exclude backup_land4to --exclude imagerie_carto --exclude borg2 --exclude mastodon
}
export getRiseupBorgArchivesToPoule
# envoi vers le serveur riseup de l'archive borg2
sendBorg2ToRiseupServer() {
rsync -avzhWP /home/poule/borg_archives/borg2/* tykayn@proxmox.coussinet.org:/poule/encrypted/borg2 --delete-before
rsync -avzhWP /home/poule/borg_archives/wulfi_backup_borg/* tykayn@proxmox.coussinet.org:/poule/encrypted/borg_archives/wulfi_backup_borg --delete-before
}
export sendBorg2ToRiseupServer
upPhotosADispatcher() {
cd $stockage_syncable_folder/photos/a_dispatcher
/home/tykayn/.local/bin/guessfilename IMG*
/home/tykayn/.local/bin/guessfilename *.jpg
/home/tykayn/.local/bin/guessfilename *.png
/home/tykayn/.local/bin/guessfilename *.mp4
/home/tykayn/.local/bin/guessfilename *.avi
/home/tykayn/.local/bin/date2name --files -w *.jpg
/home/tykayn/.local/bin/date2name --files -w *.png
/home/tykayn/.local/bin/date2name --files -w *.mp4
/home/tykayn/.local/bin/date2name --files -w *.avi
/home/tykayn/.local/bin/filetags "*Capture d'écran*" --tags="screenshots -screenshot"
mv $stockage_syncable_folder/photos/a_dispatcher/*screenshot* /home/poule/encrypted/stockage-syncable/photos/screenshots/
/home/tykayn/.local/bin/filetags /home/poule/encrypted/stockage-syncable/photos/screenshots/*.jpg --tags="screenshots -screenshot"
/home/tykayn/.local/bin/filetags /home/poule/encrypted/stockage-syncable/photos/screenshots/*.png --tags="screenshots -screenshot"
/home/tykayn/.local/bin/guessfilename /home/poule/encrypted/stockage-syncable/photos/screenshots/*.jpg
/home/tykayn/.local/bin/guessfilename /home/poule/encrypted/stockage-syncable/photos/screenshots/*.png
mkdir -p $stockage_syncable_folder/photos/$CURRENT_YEAR
mv $stockage_syncable_folder/photos/a_dispatcher/$CURRENT_YEAR* $stockage_syncable_folder/photos/$CURRENT_YEAR
move2archive --archivepath /home/poule/encrypted/stockage-syncable/photos --batchmode 20*
}
export upPhotosADispatcher
function syncFromSpaceship() {
echo "functions_sync.sh: récupération du dossier stockage syncable depuis spaceship 192.168.1.17"
rsync -avzP "tykayn@192.168.1.17:/home/poule/encrypted/stockage-syncable/photos" /home/poule/encrypted/stockage-syncable/ --delete-before --exclude Nextcloud --inplace "${exclude_opts[@]}"
}
export syncFromSpaceship
disque_libre() {
local disque=$1
# vérifier que le disque existe
if [ ! -d "/media/$USER/$disque" ]; then
# echo "Le disque $disque n'existe pas dans /media/$USER/"
if [ -e "/dev/disk/by-label/$disque" ] && [ ! -d "/media/$USER/$disque" ]; then
echo "Le disque $disque existe mais n'est pas monté dans /media/$USER/"
else
echo "Le disque $disque n'existe pas, il n'est probablement pas branché."
fi
return 1
fi
# seuil en Mo
local seuil=1024
local espace_disponible=$(df -H -k --output=avail "/media/$USER/$disque" | tail -n 1 | awk '{print $1}')
local espace_disponible_gb=$(echo "scale=2; $espace_disponible/1024/1024" | bc)
echo "espace disponible: $espace_disponible_gb GB"
if [ "$espace_disponible" -lt "$seuil" ]; then
echo "Il reste moins de 1Go d'espace disponible sur le disque $disque"
return 0
else
echo "Il reste de la place sur le disque $disque"
return 1
fi
}
export disque_libre
# ----------------------------------------------------------------------
# ------- # renommage des fichiers go pro en gardant le nom original et en ajoutant les tags
gopro_rename() {
echo "renommage des fichiers gorpo dans le dossier courant"
for current_file in ./*; do
if [[ $current_file == *"GPFR"* ]]; then
echo " "
echo "C'est une capture gopro frontale'"
exiftool '-filename<CreateDate' -d "%Y-%m-%dT%H.%I.%S%%c %%f -- gopro gopro-front.%%le" $current_file
elif [[ $current_file == *"GF"* ]]; then
echo " "
echo "C'est une capture gopro frontale'"
exiftool '-filename<CreateDate' -d "%Y-%m-%dT%H.%I.%S%%c %%f -- gopro gopro-front.%%le" $current_file
elif [[ $current_file == *"GPBK"* ]]; then
echo " "
echo "C'est une capture gopro arrière'"
exiftool '-filename<CreateDate' -d "%Y-%m-%dT%H.%I.%S%%c %%f -- gopro gopro-back.%%le" $current_file
elif [[ $current_file == *"GB"* ]]; then
echo " "
echo "C'est une capture gopro arrière'"
exiftool '-filename<CreateDate' -d "%Y-%m-%dT%H.%I.%S%%c %%f -- gopro gopro-back.%%le" $current_file
else
echo " "
echo " guess file name"
guessfilename $current_file
fi
done
echo "fichiers contenant le tag gopro: "
ls -larth . | grep " gopro " | wc -l
echo " "
echo " gopro_rename fini!"
}
export rename
move_geolocated_files() {
# Source directory
src_dir="$1"
# Destination directory
dest_dir="/home/poule/encrypted/stockage-syncable/photos/imageries/gopro/assemblages_géolocalisés/"
mkdir -p "$dest_dir"
for file in "$src_dir"/*; do
# Check if the file is a regular file and not already moved
if [[ -f $file && ! -e ${dest_dir}/$file ]]; then
# Extract GPS data from EXIF metadata using exiftool command line utility
gps=$(exiftool -s3 -GPSLatitude -GPSLongitude "$file")
# Check if GPS data was found
if [[ $gps != "" ]]; then
mv "$file" "${dest_dir}/${file}"
fi
fi
done
}
# ---------- manage log git
logGit_csv() {
git log --pretty=format:"%cd - %an : %s" --graph --since=8.weeks | tee -a log_boulot.org 2>&1
}
export logGit_csv
# écrire un log des commits réalisés groupés par jour pour le dossier courant
logGit_per_day() {
while read -r -u 9 since name; do
until=$(date "+%Y-%m-%d %H:%M:%S")
echo "$since $name"
echo
GIT_PAGER=cat git log \
--no-merges \
--committer="$name" \
--since="$since 00:00:00 +0000" \
--until="$until 00:00:00 +0000" \
--format=" * [%h] %s"
echo
done 9< <(git log --no-merges --format=$"%cd %cn" --date=short --since=8.weeks | sort --unique --reverse)
}
export logGit_per_day
logGit_to_org() {
folder_name=${PWD##*/}
touch log_git_list.org
echo "* Log git $folder_name\n" >log_git_list.org
pwd >>log_git_list.org
cat log_git_list.org
logGit_per_day | tee -a log_git_list.org 2>&1
}
export logGit_to_org
updateTags() {
cp $WORKFLOW_PATH/files_management/.filetags ~/
cp $WORKFLOW_PATH/files_management/.filetags $stockage_syncable_folder/photos
cat $WORKFLOW_PATH/files_management/.filetags
echo "tags mis à jour depuis $WORKFLOW_PATH/files_management/.filetags"
}
export updateTags
# trouver un fichier dans mon corpus de textes org qui contient un certain terme recherché
trouve()
{
# chercher dans mes textes du dossier orgmode
DOSSIER=$orgmode_path
# Rechercher le mot dans les fichiers du dossier
RESULTATS=$(rg -n -i --glob "*.{org,md,txt}" "$1" "$DOSSIER")
# Proposer de sélectionner le fichier avec fzf
SELECTION=$(echo "$RESULTATS" | fzf --prompt "Sélectionner un fichier : ")
# Ouvrir le fichier sélectionné dans gedit et aller à la ligne du résultat
FICHIER=$(echo "$SELECTION" | cut -d: -f1)
LIGNE=$(echo "$SELECTION" | cut -d: -f2)
if [ -n "$FICHIER" ]; then
gedit +$LIGNE "$FICHIER"
emacsclient --daemon --eval "(find-file \"$FICHIER\")(goto-line $LIGNE)" &
fi
}
export trouve
# recherche de fichier selon un terme contenu dans son nom
trouve_file()
{
# Définir le dossier à rechercher
DOSSIER="."
# Demander le terme à rechercher
TERME=$1
# Rechercher le terme dans les noms de fichiers avec rg
RESULTATS=$(rg -i --files-with-matches --glob "*$TERME*" "$DOSSIER")
# Proposer de sélectionner le fichier avec fzf
SELECTION=$(echo "$RESULTATS" | fzf --prompt "Sélectionner un fichier : ")
# Ouvrir le fichier sélectionné
if [ -n "$SELECTION" ]; then
gedit "$SELECTION"
fi
}
export trouve_file
# faire une notification sur le bureau quand un disque est plein
notify_desktop() {
local ICON="dialog-information"
local DURATION=10000
local TITLE=$1
local MESSAGE=$2
local TIMESTAMP=$(date +%s)
local LAST_NOTIFICATION=$(cat /tmp/last_notification 2>/dev/null)
if [ -z "$LAST_NOTIFICATION" ]; then
LAST_NOTIFICATION=0
fi
local ELAPSED_TIME=$((TIMESTAMP - LAST_NOTIFICATION))
if [ $ELAPSED_TIME -gt 60 ]; then
LAST_NOTIFICATION=$TIMESTAMP
echo $LAST_NOTIFICATION > /tmp/last_notification
notify-send -i "$ICON" -t "$DURATION" "$TITLE" "$MESSAGE"
else
local NOTIFICATION_COUNT=$(cat /tmp/notification_count 2>/dev/null)
if [ -z "$NOTIFICATION_COUNT" ]; then
NOTIFICATION_COUNT=0
fi
if [ $NOTIFICATION_COUNT -lt 3 ]; then
((NOTIFICATION_COUNT++))
echo $NOTIFICATION_COUNT > /tmp/notification_count
notify-send -i "$ICON" -t "$DURATION" "$TITLE" "$MESSAGE"
fi
fi
}
export notify_desktop
## rsync qui vérifie les erreurs et fait une notification de bureau
rsync_secure() {
local SOURCE=$1
local DESTINATION=$2
shift 2
local RSYNC_OPTIONS=("$@")
if [ ! -d "$SOURCE" ]; then
notify_desktop "Erreur" "Le dossier source n'existe pas" "Veuillez vérifier le chemin du dossier source"
return 1
fi
if [ ! -d "$DESTINATION" ]; then
notify_desktop "Erreur" "Le dossier de destination n'existe pas" "Veuillez vérifier le chemin du dossier de destination"
return 1
fi
local DISK_SPACE=$(df -h "$DESTINATION" | awk '{print $5}' | sed's/%//g')
if [ $DISK_SPACE -gt 90 ]; then
notify_desktop "Erreur" "La destination est trop remplie" "Veuillez libérer de l'espace disque avant de poursuivre. Dossier: $DESTINATION"
return 1
fi
rsync "${RSYNC_OPTIONS[@]}" "$SOURCE" "$DESTINATION"
if [ $? -ne 0 ]; then
notify_desktop "Erreur" "Erreur lors de la synchronisation" "Veuillez vérifier les journaux pour plus d'informations"
return 1
fi
notify_desktop "Succès" "La synchronisation a été effectuée avec succès" ""
}
export rsync_secure

View file

@ -3,7 +3,13 @@
# mise en place du workflow
echo "========== init de workflow par Tykayn ======="
source ~/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
if test -z "$WORKFLOW_PATH_PUBLIC"; then
echo "variable vide WORKFLOW_PATH_PUBLIC."
exit 1
fi
bash "$WORKFLOW_PATH_PUBLIC/initialization/partials/check_foler_integrity.sh"
bash "$WORKFLOW_PATH_PUBLIC/initialization/partials/git_config_glob.sh"

View file

@ -0,0 +1,287 @@
Searching for installed packages in bash and zsh history...
Parsing bash history...
Parsing zsh history...
=== Packages installed via apt ===
adb
android
android-sdk
ansible
apt-transport-https
apt-transport-https\
bison
boinc-client
boinc-manager
build-essential
ca-certificates
cargo
cmake
cnijfilter2
cups
cups-client
curl
displaylink-driver
docker-ce
docker.io
dolphin-plugins
dotnet-sdk-6.0
./Downloads/synaptics-repository-keyring.deb
duf
element-desktop
extra-cmake-modules
ffmpeg
firefox
flatpak
flex
g++
git
gnome-software-plugin-flatpak
gnome-terminal
gnupg2
grafana
heimdall-flash
john
john\
kde-config-tablet
libarchive-dev
libcups2-dev
libcupsimage2
libgeos-dev
libgtk-4-dev
librrd-dev
libusb-1.0-0-dev
mariadb-client-core
mariadb-plugin-provider-lz4
mariadb-server
mysql-server
pandoc
poppler-utils
python3
python3-dateutil
python3-gi
python3-nautilus
python3-pip
python3-polib
python3-psycopg2
python3-regex
python3-requests
python3-shapely
qtbase5-dev
ripgrep
scangearmp2
signal-desktop
smartmontools
software-properties-common\
wget
winehq
winehq-stable
xz-utils
=== Packages installed via apt-get ===
\\
apache2
apache2-utils
arbtt
autoconf
boinc-client
build-essential
ca-certificates
cmake
containerd.io
curl
dkms
docker-buildx-plugin
docker-ce
docker-ce-cli
docker-compose-plugin
docker-compose-v2
dotnet-runtime-6.0
dotnet-runtime-7.0
dotnet-sdk-6.0
dotnet-sdk-7.0
ffmpeg
gcc
gnupg\
libbluetooth-dev
libc6
libgd-dev\
libpq-dev
libsdl2-dev
libssl-dev
libssl-dev\
"linux-headers-$(uname
make
mkusb
mkusb-nox
munin-node
numlockx
obs-studio
openssl
php
php8.0-intl
php8.1-intl
php8.2-intl
php8.3-intl
php-intl
playonlinux
python3
python3-dev
python3-venv
python3-virtualenv
python-dev
python-pip
python-virtualenv
redis-server
ruby-full
sile
tesseract-ocr
tesseract-ocr-fra\
unzip
usb-pack-efi\
virtualenv
wacom-tools
wget
zlib1g-dev
=== Packages installed via snap ===
barrier
berreer
chromium
chromium-browser
core
czkawka
czkawkaw
dotnet
dotnet-dsk
dotnet-sdk
dust
exa
ferdium\
firefox
manuskript
ms-teams
msteams
plex-desktop
rpi-imager
rustup
sqlitebrowser
storage-explorer
teams
teams-for-linux
telegram-desktop
tor-mkg20001
=== Packages installed via pipx ===
borgmatic
flask
json
matplotlib\
numpy\
panoramax
=== Packages installed via pip/pip3 ===
addok
addok-csv
addok-france
appendfilename
argparse
argsparse
chafa
dash
dash_html_components
dash_table
date2name
docker-compose
exifread
filetags
flask
folium
geojson
geojson2osm
geovisio-cli
geovisio_cli
guessfilename
hgrep
install
install"
jinja2
json
jupyter
kaleido
matplotlib
md2gemini
mdgemini
notebook
numpy
ogr2ogr
ogrtools
opentimelineio
osm2geojson
osmnx
pandas
pandas_geojson
panoramax
panoramax-cli
panoramax_cli
piexif
"pip
pip
"pip3
pipx\
plotly
pyexiv2
pypandoc
pytest
readability-lxml
requirements.txt
scikit
scikit-learn
sentencepiece
setuptools
streamlit
svgwrite
timezonefinder
timg
torch
torchaudio
torchvision
wheel
youtube_dl
yt-dlp
=== Packages installed via npm ===
@angular/cli
@babel/core
babel-jest
@babel/preset-env
@babel/preset-typescript
chartjs-adapter-date-fns
@compodoc/compodoc
csv2geojson
geojsontoosm
install
install\
@jest/globals
nord
npm
npm@10.8.1
@nuxtjs/auth-next
@nuxtjs/auth-nuxt
@nuxtjs/axios
osm-and-geojson
osmtogeojson
@pnpm/exe
remixicon
sass
sass\
sass-migrator
@storybook/nextjs
ts-jest
@types/jest
@types/vue-shepherd
vsce
vue-cool-select
vue-shepherd
yarn
Search complete.

View file

@ -1,7 +1,7 @@
#!/bin/bash
# ajouter dans les scripts avec cette ligne:
#
# source ~/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
# source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_variables.sh
#
#
export load_only_once=true
@ -20,14 +20,15 @@ if [ -z ${load_only_once+x} ]; then
export backup_laptop_archive_path="/home/poule/backup/encrypted"
export WORKFLOW_PATH=~/Nextcloud/ressources/workflow_nextcloud
export WORKFLOW_PATH_PUBLIC=~/Nextcloud/ressources/workflow_nextcloud/public_workflow
export WORKFLOW_PATH=$HOME/Nextcloud/ressources/workflow_nextcloud
export WORKFLOW_PATH_PUBLIC=$HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow
export WORKFLOW_PUBLIC_PATH=$WORKFLOW_PATH_PUBLIC
export WORKFLOW_PATH_ROOT=/home/$main_user/Nextcloud/ressources/workflow_nextcloud
export ALIASES_PATH=$WORKFLOW_PATH_PUBLIC/assets/.bash_custom_aliases
# fichiers orgmode, wiki personnel
export orgmode_path=~/Nextcloud/textes/orgmode
export orgmode_path=$HOME/Nextcloud/textes/orgmode
export inbox_orgmode=$orgmode_path/incoming_inbox.org
export orgroam_path=~/Nextcloud/textes/orgmode/org-roam
export orgroam_path=$HOME/Nextcloud/textes/orgmode/org-roam
export backup_texts_folder=~/archives/backup_automatique
export HOME_OF_SCRIPTS=$www_folder/scripts
@ -56,7 +57,7 @@ if [ -z ${load_only_once+x} ]; then
export LOG_FILE_BACKUP_DATES="$ARCHIVE_SYNCABLE/www/backup/summary_log_backup.log"
export main_archive_source_sftop_spaceship="/mnt/spaceship_poule"
export IP_DU_NAS="/mnt/spaceship_poule"
export IP_DU_NAS="192.168.1.15"
export CURRENT_YEAR=$(date +%Y)