add config assets, backup round

This commit is contained in:
Tykayn 2025-07-19 17:15:10 +02:00 committed by tykayn
parent cb1e4934b5
commit 728457f71c
26 changed files with 2011 additions and 126 deletions

2
.gitignore vendored
View file

@ -3,3 +3,5 @@
bin/Nextcloud*
bin/Veracrypt*
/bin/VeraCrypt-1.26.24-x86_64.AppImage
/bin/Nextcloud-3.16.6-x86_64.AppImage

View file

@ -1,82 +0,0 @@
import osmnx as ox
import pandas as pd
import matplotlib.pyplot as plt
import networkx as nx
# 1. Télécharger les routes principales de l'Essonne
# On cible les types de routes principales
highway_types = ["motorway", "trunk", "primary", "secondary"]
# Essonne (département 91, France)
place = "Essonne, France"
print("Téléchargement du graphe routier...")
G = ox.graph_from_place(place, network_type='drive', custom_filter='["highway"~"motorway|trunk|primary|secondary"]')
# 2. Extraire les limitations de vitesse et calculer la longueur
edges = ox.graph_to_gdfs(G, nodes=False, edges=True)
# On normalise les limitations de vitesse
def parse_maxspeed(val):
# Si c'est une liste ou un array, on prend le premier élément
if isinstance(val, (list, tuple)):
if len(val) == 0:
return None
val = val[0]
if pd.isna(val):
return None
try:
# On ne garde que le nombre
return int(str(val).split()[0])
except Exception:
return None
edges['maxspeed_norm'] = edges['maxspeed'].apply(parse_maxspeed)
# Calcul de la longueur en km
edges['length_km'] = edges['length'] / 1000
# 3. Statistiques
speed_stats = edges.groupby('maxspeed_norm')['length_km'].sum().reset_index()
speed_stats = speed_stats.rename(columns={'maxspeed_norm': 'limitation_vitesse', 'length_km': 'longueur_km'})
# Combien de km sans limitation ?
no_speed = edges[edges['maxspeed_norm'].isna()]['length_km'].sum()
# Remplacer les NaN par -1 pour les routes sans limitation spécifiée
speed_stats['limitation_vitesse'] = speed_stats['limitation_vitesse'].fillna(-1).astype(int)
# 4. Export CSV
speed_stats.to_csv('limitations_vitesse_essonne.csv', index=False)
# 5. Graphique SVG
fig, ax = plt.subplots(figsize=(12, 12))
# Routes avec limitation: gris, sans limitation: rouge
edges_with_speed = edges[edges['maxspeed_norm'].notna()]
edges_no_speed = edges[edges['maxspeed_norm'].isna()]
edges_with_speed.plot(ax=ax, linewidth=0.7, color='grey', alpha=0.5)
edges_no_speed.plot(ax=ax, linewidth=1.2, color='red', alpha=0.8)
ax.set_title("Routes principales de l'Essonne sans limitation de vitesse (en rouge)")
ax.axis('off')
plt.tight_layout()
plt.savefig('routes_sans_limitation_essonne.svg', format='svg')
# 5b. Histogramme des limitations de vitesse
plt.figure(figsize=(10,6))
plt.bar(speed_stats['limitation_vitesse'].astype(str), speed_stats['longueur_km'], color='skyblue', edgecolor='black')
plt.xlabel('Limitation de vitesse (km/h)')
plt.ylabel('Longueur totale (km)')
plt.title("Histogramme des limitations de vitesse sur les routes principales de l'Essonne")
plt.tight_layout()
plt.savefig('histogramme_limitations_vitesse_essonne.png')
print("Histogramme sauvegardé sous histogramme_limitations_vitesse_essonne.png")
# 6. Résumé console
print("\nRésumé:")
print(speed_stats)
print(f"\nLongueur totale sans limitation de vitesse: {no_speed:.2f} km")
print("CSV sauvegardé sous limitations_vitesse_essonne.csv")
print("SVG sauvegardé sous routes_sans_limitation_essonne.svg")

View file

@ -6,9 +6,8 @@
# 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/initialization/functions.sh"
source "$HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh"
source "$WORKFLOW_PATH/install/functions_sync.sh"
source "$WORKFLOW_PATH/install/functions_tk.sh"
@ -17,6 +16,7 @@ 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"
@ -106,8 +106,6 @@ alias hgrep="history |grep"
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
alias pup='/home/tykayn/.local/pipx/venvs/panoramax-cli/bin/panoramax_cli upload --api-url https://panoramax.openstreetmap.fr .' #panoramax upload avec mon compte perso
alias pum='/home/tykayn/.local/pipx/venvs/panoramax-cli/bin/panoramax_cli upload --api-url https://panoramax.openstreetmap.fr . --token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnZW92aXNpbyIsInN1YiI6IjQ1NmJmMWQ1LTgxNzEtNDdlMy05MmQ1LWNkNTM1MjBiOWZkMyJ9.JqedjxqgwVY6bB9vKe4v5HiSvZAndiXICre_iI06Auc" --disable-duplicates-check --parallel-uploads 15' #panoramax upload motocultrice
export RUBY_ENV=devlopment
@ -239,7 +237,7 @@ function gc() {
git push
}
export PATH="~/.pyenv/bin/:~/.cargo/bin:/snap/bin:$WORKFLOW_PATH/bin:$PATH"
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="$PATH:$HOME/.npm-global/bin"
@ -251,3 +249,7 @@ 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>

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

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

View file

@ -1,18 +0,0 @@
import pandas as pd
import matplotlib.pyplot as plt
# Charger le CSV
csv_path = 'limitations_vitesse_essonne.csv'
df = pd.read_csv(csv_path)
# Générer l'histogramme
plt.figure(figsize=(10,6))
plt.bar(df['limitation_vitesse'].astype(str), df['longueur_km'], color='skyblue', edgecolor='black')
plt.xlabel('Limitation de vitesse (km/h)')
plt.ylabel('Longueur totale (km)')
plt.title("Histogramme des limitations de vitesse sur les routes principales de l'Essonne")
plt.tight_layout()
# Sauvegarder en SVG
plt.savefig('histogramme_limitations_vitesse_essonne.svg', format='svg')
print("Histogramme sauvegardé sous histogramme_limitations_vitesse_essonne.svg")

View file

@ -5,7 +5,7 @@ source $HOME/Nextcloud/ressources/workflow_nextcloud/public_workflow/workflow_va
# 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 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"
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

View file

@ -9,27 +9,83 @@ 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
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 eza adduser
# 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
snap install btop
snap install czkawka
sudo snap install btop czkawka
snap install emacs --classic
cd
wget https://source.cipherbliss.com/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/.zshrc
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

@ -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