Aus einer Laune heraus, haben wir heute Abend einfach mal eine RECALL Funktion für den Linux Desktop gebaut 😀
Linux am Dienstag baut Recall nach
Jemand sagte: „Das sind nur drei Zeilen Bashcode…“ und das stimmt auch, es sind sogar nur zwei, aber die alleine reichen leider nicht um eine vernünftige Recall Funktion zu bauen. Es waren dann doch 20 Zeilen Bash 😉
Wir brauchen 3 Teile, damit das funktioniert:
1. einen Systemd.Timer
2. das Recall Script selbst
3. die Recallsuche
4. einige Tools: flameshot, systemd, tesseract und zenity .
Die Tools einfach aus dem Repo installieren.
Dazu legen wir erst einmal .local/systemd/user/recall.service an:
[Unit]
DefaultDependencies=no
Description=Linux am Dienstag RECALL Experiment
[Service]
Type=oneshot
ExecStart=/home/<username>/.local/bin/recall
dann legen wir .local/systemd/user/recall.timer
[Unit]
Description=Timer für RECALL
[Timer]
OnCalendar=*-*-* *:*:0/10
[Install]
WantedBy=timers.target
Dann die beiden Scripte .local/bin/recall und .local/bin/recall-ui an:
#!/bin/bash
BILDER=$(cat $HOME/.config/recall/path)
if [ "$BILDER" == "" ]; then
exit 1;
fi
mkdir -p $BILDER
SIZE=$(du -s $BILDER/|awk '{print $1;}')
if [ $SIZE -gt 1000000 ]; then
DNAME=$(ls -d $BILDER/*png 2>&1 | head -n 1 )
if [[ "$DNAME" =~ ^/ ]]; then
rm -f $DNAME
fi
fi
find $BILDER -iname "*txt" -ctime +180 -delete
WLISTE=$(wmctrl -l | grep -c -E -f $HOME/.config/recall/exclude )
if [ $WLISTE -eq 0 ]; then
FILENAME=$(flameshot full -p $BILDER/ 2>&1 | sed -e "s/flameshot: info: Capture saved as //g")
tesseract $FILENAME $FILENAME
fi
und die Such-UI:
#!/bin/bash
BILDER=$(cat $HOME/.config/recall/path)
if [ "$BILDER" == "" ]; then
exit 1;
fi
SUCHE=$(zenity --entry --text="RECALL Suchbegriff" --entry-text="" --title="Suchbegriff")
TREFFER=$(grep -l -i "$SUCHE" $BILDER/*txt| sed -e "s/\.txt$//g")
eog -n -w -s $TREFFER
Führen „chmod 700 .local/bin/recall*“ aus und legen kurz die config an:
mkdir -p .config/recall
echo „/home/<username>/Bilder/recall“ > .config/recall/path
touch .config/recall/exclude
Jetzt starten wir den Timer:
systemctl –user enable –now recall.timer
Wenn man nicht möchte, daß bestimmt Inhalte erfasst werden, z.b. die Bankseite, dann tragt Ihr den Fenstertitle aus folgender Ausgabe:
[~]$ wmctrl -l
0x02e00007 0 linux-am-dienstag.de Desktop
0x02e0000f 0 linux-am-dienstag.de nemo-desktop
0x0460003a 0 linux-am-dienstag.de Bugzilla – Mozilla Thunderbird
0x0200002c 0 linux-am-dienstag.de Google News – Mozilla Firefox
0x0aa00004 0 linux-am-dienstag.de Easy Effects
0x020012e3 0 linux-am-dienstag.de Firefox – Share-Notice
Die beiden grün markierten Fenstertitle dienen jetzt mal als Beispiel. die tragt Ihr ohne irgendwas anderes in die Exclude-Datei ein z.b. mit echo „Easy Effects“ >> .config/recall/exclude oder einfach einem Texteditor 😉 Wichtig ist, das da nur zeilenweise ein Titel nach dem anderen drin steht.
Jetzt braucht es für due Suchmaske nur noch einen Shortcut und wir sind fertig:
Und das wars schon 😀 100% Lokal.
Jetzt noch ein Wort zum Platzverbrauch:
1. wenn das Recall Verzeichnis größer als 1 GB ist, werden die ersten Bilder gelöscht.
2. die erzeugten OCR Texte werden nach 180 Tagen automatisch gelöscht.
Beide Werte könnt Ihr in den Scripten einfach ändern, wie Ihr wollt.
Viel Spaß 😉
GitHub:
https://github.com/Cyborgscode/Linux-Recall-in-bash/