Unter gnome habe ich im Kontextmenü eine Dateivergleichsfunktion mit meld - das ist sehr praktisch. Nun hätte ich gerne in caja unter Mint 17 (Ubuntu-Version) dieselbe Funktion; auf Github gibts auch sowas: https://github.com/cygwinports/mate-file-manager-pyextensions/blob/master/default-pyextensions/meld-compare.py Der Haken an dem Teil: Es stammt von einem, der noch nichtmal mit vorgehaltener Pistole auch nur eine einzige Zeile Dokumentation schreibt. Hat jemand eine Idee, was man damit anstellen muss, damit es mit caja läuft?
:
Bearbeitet durch User
Mint bringt eine Packung Extensions mit, die jedoch nicht unter Edit|Preferences|Plugins erscheinen. In der Hilfe zu diesem Preferences-Tab stehen tolle Dinge über Plugins - nur ist das offenbar alles reine Fantasie, zumindest in der Mate-Version...
:
Bearbeitet durch User
Hier ein kleinen Bash-script rein ...
1 | ~/.config/caja/scripts |
Zum Testen:
1 | #!/bin/bash
|
2 | T=/tmp/tmpout |
3 | date >> $T |
4 | env | sort | grep CAJA >> $T |
Dann taucht's in caja <kontextmenü/rechte Maustaste> auf. Dateien selektieren, <RM> -> scriptname und anschließend die env vars auswerten.
1 | CAJA_SCRIPT_CURRENT_URI= |
2 | CAJA_SCRIPT_SELECTED_FILE_PATHS= |
3 | CAJA_SCRIPT_SELECTED_URIS= |
4 | CAJA_SCRIPT_WINDOW_GEOMETRY= |
5 | CAJA_SCRIPT_NEXT_PANE_CURRENT_URI= |
6 | CAJA_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS= |
7 | CAJA_SCRIPT_NEXT_PANE_SELECTED_URIS= |
Bei mehreren Dateien stehen sie in EINER environment Varablen mit '\n' getrennt. Viel Spass.
Danke für den Hinweis. Problem ist also die Hilfe von caja:
1 | Installing File Manager Scripts |
2 | The file manager includes a special folder where you can store your |
3 | scripts. All executable files in this folder will appear in the Scripts |
4 | menu. The script folder is located at $HOME/.mate2/caja-scripts. |
5 | To install a script, simply copy the script to the script folder and give |
6 | it the user executable permission. |
7 | |
8 | To view the contents of your scripts folder, if you already have scripts |
9 | installed, choose File ▸ Scripts ▸ Open Scripts Folder. You will have to |
10 | navigate to the scripts folder with the file manager if you do not yet have |
11 | any scripts. You may need to show hidden files for this, use View ▸ Show |
12 | Hidden Files |
Jetzt gibts auch einen Menüpunkt Scripts... Nur das Meld-Teil, das ich jetzt installiert habe, tut gar nichts; aber das lässt sich evtl reparieren.
:
Bearbeitet durch User
Wenn du das hier als bash-script (chmod +x) in das caja scriptverzeichnis kopierst, müsste es sofort funktionieren. Ich hab hier zwar noch MATE 1.6 im Einsatz, aber das sollte kein Problem sein. ScanSelectedEntries() baut mehrere Arrays mit den selektierten Daten auf. Für die primary pane Files1[] sowie Type1[] und numFiles1. Für die 'next' pane Files2[] sowie Type2[] und numFiles2. Viel Spass
1 | #!/bin/bash
|
2 | #
|
3 | # meld script for caja
|
4 | #
|
5 | # Copyright 2014 Norbert ..... <norbert@Entwicklung>
|
6 | #
|
7 | # This program is free software; you can redistribute it and/or modify
|
8 | # it under the terms of the GNU General Public License as published by
|
9 | # the Free Software Foundation; either version 2 of the License, or
|
10 | # (at your option) any later version.
|
11 | #
|
12 | # This program is distributed in the hope that it will be useful,
|
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 | # GNU General Public License for more details.
|
16 | #
|
17 | # You should have received a copy of the GNU General Public License
|
18 | # along with this program; if not, write to the Free Software
|
19 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
20 | # MA 02110-1301, USA.
|
21 | #
|
22 | |
23 | function ScanSelectedEntries() { |
24 | |
25 | # Scan selected entries in primary pane
|
26 | |
27 | let idx=0 |
28 | PrepArray=$( |
29 | echo -e "${CAJA_SCRIPT_SELECTED_FILE_PATHS}" | while read line; do |
30 | if [ ${#line} -gt 0 ]; then |
31 | echo Files1[$idx]="'$line'" |
32 | let idx=$idx+1 |
33 | fi
|
34 | done
|
35 | )
|
36 | eval "$PrepArray" |
37 | let numFiles1=${#Files1[@]} |
38 | |
39 | for((i = 0; i < $numFiles1; i++)); do |
40 | Type1[$i]="-" |
41 | [ -f "${Files1[$i]}" ] && Type1[$i]="f" |
42 | [ -d "${Files1[$i]}" ] && Type1[$i]="d" |
43 | [ -h "${Files1[$i]}" ] && Type1[$i]="h" |
44 | done
|
45 | |
46 | # Scan selected entries in 'next' pane (opened with F3)
|
47 | |
48 | let idx=0 |
49 | PrepArray=$( |
50 | echo -e "${CAJA_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS}" | while read line; do |
51 | if [ ${#line} -gt 0 ]; then |
52 | echo Files2[$idx]="'$line'"\; |
53 | let idx=$idx+1 |
54 | fi
|
55 | done
|
56 | )
|
57 | eval "$PrepArray" |
58 | let numFiles2=${#Files2[@]} |
59 | |
60 | for((i = 0; i < $numFiles2; i++)); do |
61 | Type2[$i]="" |
62 | [ -f "${Files2[$i]}" ] && Type2[$i]="f" |
63 | [ -d "${Files2[$i]}" ] && Type2[$i]="d" |
64 | [ -h "${Files2[$i]}" ] && Type2[$i]="h" |
65 | done
|
66 | }
|
67 | |
68 | function DebugOutput() { |
69 | T=/tmp/tmpout |
70 | |
71 | (
|
72 | echo -e "CAJA_SCRIPT_CURRENT_URI " $CAJA_SCRIPT_CURRENT_URI |
73 | echo -e "CAJA_SCRIPT_SELECTED_FILE_PATHS " $CAJA_SCRIPT_SELECTED_FILE_PATHS |
74 | echo -e "CAJA_SCRIPT_SELECTED_URIS " $CAJA_SCRIPT_SELECTED_URIS |
75 | echo -e "CAJA_SCRIPT_NEXT_PANE_CURRENT_URI " $CAJA_SCRIPT_NEXT_PANE_CURRENT_URI |
76 | echo -e "CAJA_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS " $CAJA_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS |
77 | echo -e "CAJA_SCRIPT_NEXT_PANE_SELECTED_URIS " $CAJA_SCRIPT_NEXT_PANE_SELECTED_URIS |
78 | |
79 | for((i = 0; i < $numFiles1; i++)); do |
80 | echo "--- ${Type1[$i]} ${Files1[$i]}" |
81 | done
|
82 | |
83 | for((i = 0; i < $numFiles2; i++)); do |
84 | echo "--- ${Type2[$i]} ${Files2[$i]}" |
85 | done
|
86 | ) >>$T |
87 | |
88 | geany $T &
|
89 | }
|
90 | |
91 | ScanSelectedEntries |
92 | # DebugOutput
|
93 | |
94 | [ $numFiles1 -eq 2 ] && \ |
95 | meld "${Files1[0]}" "${Files1[1]}" |
96 | |
97 | [ $numFiles1 -eq 3 ] && \ |
98 | meld "${Files1[0]}" "${Files1[1]}" "${Files1[2]}" |
99 | |
100 | [ $numFiles1 -eq 1 ] && [ $numFiles2 -eq 1 ] && \ |
101 | meld "${Files1[0]}" "${Files2[0]}" |
102 | |
103 | exit
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.