Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
JaiBee schrieb: Das Skript sollte insgesamt 2 Dateien erstellen. 1x die Datei, die das Skript bereits jetzt erstellt; dann aber noch eine zusätzliche, in welcher Infos zu den Icons (<icon>icon-x</icon> ) stehen (etwa icons.ini). Diese soll so aussehen:
...[snip]
Ich hoffe, das war jetzt verständlicher 😉.
Jo. http://paste.pocoo.org/show/131243/ Allerdings sind in dann in der Bildsammeldatei teilweise doppelte Einträge drin.
Vielleicht kann ich da noch was filtern. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Super, es funktioniert alles! Hast du echt klasse hinbekommen, danke! Ungültiges MakroDieses Makro ist nicht verfügbar
Stumml schrieb: Allerdings sind in dann in der Bildsammeldatei teilweise doppelte Einträge drin.
Vielleicht kann ich da noch was filtern.
Das wäre praktisch, aber nicht zwingend notwendig. Was jetzt noch fehlt ist ein funktionierendes Installations-Skript für das Menü, da es bei Opera kein Erweiterungs-System wie bei Firefox gibt. Das Menü selbst ist auch manuell schnell eingerichtet, da man nur 1 Datei im Homeverzeichnis bearbeiten muss. Allerdings wird es bei den Icons schon komplizierter, da man diese für jedes Opera-Skin einzeln konfigurieren muss (Skindatei entpacken - Ordner mit Icons erstellen - skin.ini bearbeiten - Skindatei neu packen). Wäre Python dafür auch geeignet, oder soll ich lieber selbst ein Shellskript schreiben (die meisten Leute werden ubuntuusers Menu ja unter Ubuntu, nicht unter Windows, nutzen). Viele Grüße JaiBee
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
JaiBee schrieb: Ungültiges MakroDieses Makro ist nicht verfügbar
sieht wirklich schick aus, muss ich schon sagen.
Stumml schrieb: Allerdings sind in dann in der Bildsammeldatei teilweise doppelte Einträge drin.
Vielleicht kann ich da noch was filtern.
Das wäre praktisch, aber nicht zwingend notwendig.
ich habe das jetzt mal eingebaut, dadurch wird die ini-Datei doch erheblich kleiner. http://paste.pocoo.org/show/131249/
Was jetzt noch fehlt ist ein funktionierendes Installations-Skript für das Menü, da es bei Opera kein Erweiterungs-System wie bei Firefox gibt. Das Menü selbst ist auch manuell schnell eingerichtet, da man nur 1 Datei im Homeverzeichnis bearbeiten muss. Allerdings wird es bei den Icons schon komplizierter, da man diese für jedes Opera-Skin einzeln konfigurieren muss (Skindatei entpacken - Ordner mit Icons erstellen - skin.ini bearbeiten - Skindatei neu packen). Wäre Python dafür auch geeignet, oder soll ich lieber selbst ein Shellskript schreiben (die meisten Leute werden ubuntuusers Menu ja unter Ubuntu, nicht unter Windows, nutzen).
Hmmm kommt echt darauf an. Wenn man nur eine Datei bearbeiten muss, geht das sicher mit einem Shellskript sehr einfach. Je nachdem, welches Format die Skindatei hat, kann man auch das mit einem Shellskript erledigen. Kommt wirklich echt auf den Umfang an. Mit Python geht das aber auf alle Fälle auch. Wenn du mir sagst, welches Format die Skindatei hat und was bearbeitet werden muss, kann ich versuchen, dass noch in das bestehende Skript zu implementieren. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Stumml schrieb: JaiBee schrieb: Ungültiges MakroDieses Makro ist nicht verfügbar
sieht wirklich schick aus, muss ich schon sagen.
danke Stumml schrieb: Allerdings sind in dann in der Bildsammeldatei teilweise doppelte Einträge drin.
Vielleicht kann ich da noch was filtern.
Das wäre praktisch, aber nicht zwingend notwendig.
ich habe das jetzt mal eingebaut, dadurch wird die ini-Datei doch erheblich kleiner. http://paste.pocoo.org/show/131249/
Super! Was jetzt noch fehlt ist ein funktionierendes Installations-Skript für das Menü, da es bei Opera kein Erweiterungs-System wie bei Firefox gibt.[...]
Hmmm kommt echt darauf an. Wenn man nur eine Datei bearbeiten muss, geht das sicher mit einem Shellskript sehr einfach. Je nachdem, welches Format die Skindatei hat, kann man auch das mit einem Shellskript erledigen. Kommt wirklich echt auf den Umfang an. Mit Python geht das aber auf alle Fälle auch. Wenn du mir sagst, welches Format die Skindatei hat und was bearbeitet werden muss, kann ich versuchen, dass noch in das bestehende Skript zu implementieren.
Danke für das Angebot. Die Skindatei ist ein zip-Archiv. Welches Skin momentan verwendet wird lässt sich über die Konfigurationsdateien auslesen. Wie bereits erwähnt muss in der Zip-Datei ein Ordner mit den entsprechenden Icons erstellt und in der skin.ini die erstellte "Icon-Liste" einfügen werden. Für das Menü selbst muss man eigentlich nur 1 Datei in ~/.opera/menu anlegen und in operaprefs.ini angeben, dass das neue Menü verwendet werden soll. Morgen werde ich das mal noch genauer beschreiben. Falls dir momentan langweilig sein sollte:
Leider unterscheiden sich bei den verschiedenen Opera-Versionen die Pfade teilweise. Eine Unterstützung für Opera 9 und 10 sollten aber in den meisten Fällen ausreichen. Viele Grüße JaiBee
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Ich hab jetzt mal ein Shellscript geschrieben, welches zwar noch nicht ganz perfekt ist, aber bereits funktioniert (zumindest konnte ich mit Opera 9.* und 10.0 keine Fehler finden).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 | #!/bin/bash
TEMP="/tmp/uu-menu"
# Opera version
if (( $(opera -version | cut -d " " -f2 | cut -d "." -f1) >= 10 )); then
PREFS="$HOME/.opera/operaprefs.ini"
else
PREFS="$HOME/.opera/opera6.ini"
fi
# Current skin
if [[ $(cat $PREFS | grep "Button Set") ]]; then
OPERA_DIR="\/usr\/share\/opera"
SKIN=$(cat $PREFS | grep "Button Set" | cut -d "=" -f2 | sed -e "s/\$OPERA_DIR/$OPERA_DIR/g")
else
SKIN="/usr/share/opera/skin/standard_skin.zip"
fi
echo $PREFS
echo $SKIN
######## MENU
[ ! -d $HOME/.opera/menu/ ] && mkdir $HOME/.opera/menu/
cp uu-menu.ini $HOME/.opera/menu/
if [[ $(cat $PREFS | grep "Menu Configuration") ]]; then
sed -i '/Menu Configuration/c\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
else
sed -i '/User Prefs/a\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
fi
######## ICONS
# unzip skin file
unzip -q $SKIN -d $TEMP
# copy icons
[ ! -d $TEMP/icons-uu-menu ] && cp -r ./icons-uu-menu/ $TEMP
# edit skin config file
if ! cat $TEMP/skin.ini | grep "; ubuntuusers Menu icons:"; then
echo -e "\n\n; ubuntuusers Menu icons:\n[Images]" >> $TEMP/skin.ini
cat ./icons.ini >> $TEMP/skin.ini
fi
# rezip the edited skin
cd $TEMP
zip -rmq $(basename $SKIN) .
[[ $(touch $SKIN) ]] || SUDO=sudo # use sudo, if necessary
$SUDO mv $(basename $SKIN) $SKIN
|
Das Skript läuft jetzt natürlich nur unter Ubuntu, aber das reicht imho auch aus. Ein paar Fragen habe ich noch:
kann man Zeile 6 noch geschickter machen? Problematisch ist, dass man offenbar nur ganze Zahlen vergleichen kann (und ich daher alles hinter dem ersten Punkt wegschneiden musste) wie kann man die Ausgabe in Zeile 42 unterdrücken? in Z.50 möchte ich testen, ob sudo benötigt wird. Ist das so in Ordnung? habt ihr sonstige Anregungen und Verbesserungsvorschläge?
Viele Grüße JaiBee
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
JaiBee schrieb: Ein paar Fragen habe ich noch:
Hm naja nicht viel, imho könnte man ein cut durch grep ersetzen. Ob das einen Vorteil bringt kann ich nicht sagen.
Da kommt eine Ausgabe? Ich habe ein anderes Skript in der mittels echo auch was an eine Datei angehangen wird, da gibts aber keine Ausgabe 😲
Ich würde das Skript dash kompatibel aufbauen also POSIX konform. In Zeile 13 ist das cat überflüssig, grep kann direkt die Datei lesen. In Zeile 15 verstehe ich das sed nicht, was macht das da eigentlich? Den Rest muss ich mir morgen mal zu Gemüte führen und ich probier mal, dass in Python umzusetzen.
mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Hi, ich habe das Skript mittlerweile etwas überarbeitet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 | #!/bin/bash
# Already tested under KUbuntu 9.04 with Opera 9.86 + 10.00b2
OPERA_HOME="$HOME/.opera/" # see opera:about -> Opera directory
TEMP="/tmp/uu-menu"
clear
echo "* * * * * * * * * * * * * * * *"
echo "* ubuntuusers Menu für Opera *"
echo "* * * * * * * * * * * * * * * *"
cd $(dirname $0)
# Opera version
if (( $(opera -version | cut -d " " -f2 | cut -d "." -f1) >= 10 )); then
PREFS="$OPERA_HOME/operaprefs.ini"
else
PREFS="$OPERA_HOME/opera6.ini"
fi
######## MENU
echo "Installiere Menü..."
[ ! -d $OPERA_HOME/menu/ ] && mkdir $OPERA_HOME/menu/
[ ! -f $OPERA_HOME/menu/uu-menu.ini ] && cp uu-menu.ini $OPERA_HOME/menu/
if grep "Menu Configuration" $PREFS > /dev/null; then
sed -i '/Menu Configuration/c\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
else
sed -i '/User Prefs/a\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
fi
######## ICONS
# # find current skin
# if [[ $(cat $PREFS | grep "Button Set") ]]; then
# SKIN=$(cat $PREFS | grep "Button Set" | cut -d "=" -f2 | sed -e "s/\$OPERA_DIR/\/usr\/share\/opera/g")
# else
# SKIN="/usr/share/opera/skin/standard_skin.zip"
# fi
SKIN="/usr/share/opera/skin/standard_skin.zip"
# unzip skin
unzip -q $SKIN -d $TEMP
if test -d $TEMP/icons-uu-menu/ && grep "; ubuntuusers Menu icons:" $TEMP/skin.ini > /dev/null; then
echo "Icons sind bereits installiert"
else
echo "Installiere Icons..."
# copy icons
cp -r ./icons-uu-menu/ $TEMP
# edit skin config file
echo -e "\n\n; ubuntuusers Menu icons:\n[Images]" >> $TEMP/skin.ini
cat ./icons.ini >> $TEMP/skin.ini
# rezip the edited skin
cd $TEMP
zip -rmq $(basename $SKIN) .
# $(touch $SKIN) || SUDO=sudo # use sudo, if necessary
sudo mv $(basename $SKIN) $SKIN
sudo chown root.root $SKIN
fi
rm -r $TEMP
|
Da kommt eine Ausgabe? Ich habe ein anderes Skript in der mittels echo auch was an eine Datei angehangen wird, da gibts aber keine Ausgabe 😲
Ups, die Ausgabe kommt von der Zeile davor. Habe es nun mit > /dev/null gelöst.
Ich würde das Skript dash kompatibel aufbauen also POSIX konform.
Was bedeutet das?
In Zeile 13 ist das cat überflüssig, grep kann direkt die Datei lesen.
habs verbessert, danke.
In Zeile 15 verstehe ich das sed nicht, was macht das da eigentlich?
In der Konfigurationsdatei steht $OPERA_DIR für /usr/share/opera. Opera weiß, was damit gemeint ist - das Skript aber nicht. Damit ich also den korrekten Pfad zum Skin ohne Variabel erhalte, muss $OPERA_DIR durch /usr/share/opera ersetzt werden.
Den Rest muss ich mir morgen mal zu Gemüte führen und ich probier mal, dass in Python umzusetzen.
Dann müssten auch alle Pfade noch für Windows angepasst werden. Vermutlich lohnt sich der der Aufwand, den du dir machen würdest, nicht, da bestimmt (wenn überhaupt) nur wenige Leute ubuntuusers Menu unter Windows mit Opera verwenden würden. Viele Grüße und Danke Stumml für deine Hilfe! JaiBee EDIT: Bislang bin ich davon ausgegangen, dass die Icons für jedes Skin einzeln installiert werden müssen, da sich diese ja in den Skin-Dateien befinden. Nun habe ich festgestellt, dass die Icons im Menü auch erscheinen, wenn ein alternatives Skin verwendet wird und sich die Icons nur im Standard-Skin befinden (und nicht in der alternativen Skindatei). Ich habe das Skript (oben) dementsprechend abgeändert.
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
Moin, JaiBee schrieb: ich habe das Skript mittlerweile etwas überarbeitet:
jo sieht gut aus.
| #!/bin/bash
# Already tested under KUbuntu 9.04 with Opera 9.86 + 10.00b2
OPERA_HOME="$HOME/.opera/" # see opera:about -> Opera directory
...
# Opera version
if (( $(opera -version | cut -d " " -f2 | cut -d "." -f1) >= 10 )); then
PREFS="$OPERA_HOME/operaprefs.ini"
else
PREFS="$OPERA_HOME/opera6.ini"
fi
|
Da kommt eine Ausgabe? Ich habe ein anderes Skript in der mittels echo auch was an eine Datei angehangen wird, da gibts aber keine Ausgabe 😲
Ups, die Ausgabe kommt von der Zeile davor. Habe es nun mit > /dev/null gelöst.
Im Zweifel geht das natürlich immer ☺ Man könnte grep auch mit der Option -q benutzen, dann wird nix auf die Standardausgabe geschrieben. man grep offenbart aber, dass man für portable Skripte das nicht benutzen sollte, sondern, wie du es schon gemacht hast, die Ausgabe entsprechend umlenken.
Ich würde das Skript dash kompatibel aufbauen also POSIX konform.
Was bedeutet das?
Die BASH hat mehr Befehlskonstrukte z.B. (( )) , sowas kennt die DASH als POSIX konforme Shell nicht. Dafür laufen Skripte die so konform sind auf so gut wie allen Unix-artigen Systemen. Somit könnte das Skript z.B. dann auch unter Debian genutzt werden, aber ist vielleicht nicht so wichtig, weil sich der geneigte Debianer dieses Menü ja nicht unbedingt installiert.
In der Konfigurationsdatei steht $OPERA_DIR für /usr/share/opera. Opera weiß, was damit gemeint ist - das Skript aber nicht. Damit ich also den korrekten Pfad zum Skin ohne Variabel erhalte, muss $OPERA_DIR durch /usr/share/opera ersetzt werden.
Hm mal abgesehen davon, dass es jetzt eh obsolet ist: Ich habe bei mir auch ein Opera laufen 9.$irgendwas
Da steht in der opera6.ini auch das Button Set= drin mit der Pfadangabe /usr/share/opera//skin/standard_skin.ini und das sed macht dann ja nichts weiter als den schon vorhandenen Pfad auszutauschen.
Den Rest muss ich mir morgen mal zu Gemüte führen und ich probier mal, dass in Python umzusetzen.
Dann müssten auch alle Pfade noch für Windows angepasst werden.
Nö warum? Ich würd dann vorher testen, in welcher Umgebung man unterwegs ist und wenn es Windows ist, wird das Skript einfach beendet und fertig, da kenn ich nix ☺ Ansonsten habe ich noch eine Frage zu obigen Skriptfragment. Du hast ja bei dir auf deinem System 2 Opera. Gibt es in deinem Verzeichnis $HOME/.opera jeweils die Datei operaprefs und opera6? Gib mal auf der Konsole folgendes ein und poste mal bitte die Ausgabe:
echo $HOME/.opera/opera*.ini
Täte mich mal interessieren, somit könnte man unter Umständen, wenn die Ausgabe eindeutig ist, sprich nur die entsprechend eine gültige Datei gefunden wird, einfach die Prüfung auf die Version weglassen. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Die BASH hat mehr Befehlskonstrukte z.B. (( )) , sowas kennt die DASH als POSIX konforme Shell nicht. Dafür laufen Skripte die so konform sind auf so gut wie allen Unix-artigen Systemen. Somit könnte das Skript z.B. dann auch unter Debian genutzt werden, aber ist vielleicht nicht so wichtig, weil sich der geneigte Debianer dieses Menü ja nicht unbedingt installiert.
Ok, wir müssen uns jetzt nur entscheiden, ob wir beim Bash-Skript bleiben, oder ob du ein Skript in Python schreibst. Bash kann ich ein bisschen, aber bei Python wäre ich komplett auf deine Hilfe angewiesen. Was spricht denn gegen Bash und für Python?
In der Konfigurationsdatei steht $OPERA_DIR für /usr/share/opera. Opera weiß, was damit gemeint ist - das Skript aber nicht. Damit ich also den korrekten Pfad zum Skin ohne Variabel erhalte, muss $OPERA_DIR durch /usr/share/opera ersetzt werden.
Hm mal abgesehen davon, dass es jetzt eh obsolet ist: Ich habe bei mir auch ein Opera laufen 9.$irgendwas
Da steht in der opera6.ini auch das Button Set= drin mit der Pfadangabe /usr/share/opera//skin/standard_skin.ini und das sed macht dann ja nichts weiter als den schon vorhandenen Pfad auszutauschen.
$OPERA_DIR wird offenbar nur bei Opera 10 verwendet. Bei Opera 9 steht der vollständige Pfad.
Dann müssten auch alle Pfade noch für Windows angepasst werden.
Nö warum? Ich würd dann vorher testen, in welcher Umgebung man unterwegs ist und wenn es Windows ist, wird das Skript einfach beendet und fertig, da kenn ich nix ☺
Wenn das Skript aber ohnehin nur unter Ubuntu laufen wird - welchen Vorteil bietet Python dann überhaupt?
Ansonsten habe ich noch eine Frage zu obigen Skriptfragment. Du hast ja bei dir auf deinem System 2 Opera. Gibt es in deinem Verzeichnis $HOME/.opera jeweils die Datei operaprefs und opera6?
Täte mich mal interessieren, somit könnte man unter Umständen, wenn die Ausgabe eindeutig ist, sprich nur die entsprechend eine gültige Datei gefunden wird, einfach die Prüfung auf die Version weglassen.
Das Ergebnis ist nicht eindeutig. Ich habe momentan Opera 9 installiert, aber beide Dateien im Opera-Verzeichnis. Die Datei operaprefs.ini ist noch vorhanden, da ich schon einmal Opera 10 installiert hatte und bei dessen Deinstallation diese Datei nicht gelöscht wurde. Bei einem Upgrade von Opera9 auf Opera10 ist es glaub genauso - die alte Datei opera6.ini wird nicht gelöscht, auch wenn sie bei Opera10 nicht mehr verwendet wird. Eine Versionsüberprüfung lässt sich also nicht vermeiden. Was mir gestern Abend noch eingefallen ist: das Skript benötigt noch eine Update-Funktion. Ich habe mir das in etwa so vorgestellt:
das Skript muss überprüfen, ob es eine neuere Version gibt dazu evtl. bei Launchpad/uu-wiki/etc. eine Textdatei runterladen, in der die aktuelle Versionsnummer steht wenn diese höher, als die installierte, dann
Deinstallation von ubuntuusers Menu dann eine Neuinstallation Installation dann wie gehabt
Bei einer Erstinstallation könnte man genauso vorgehen (also, dass man nur das Installations-Skript hat und der Rest automatisch heruntergeladen wird). Was hältst du davon? Gruß JaiBee
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
JaiBee schrieb: Ok, wir müssen uns jetzt nur entscheiden, ob wir beim Bash-Skript bleiben... Was spricht denn gegen Bash und für Python?
Es spricht nichts gegen Bash und nichts für Python, nur würde man als Endbenutzer es sicherlich einfacher finden nur eine Datei auszuführen. Man kann das natürlich auch so lösen, dass man vom Bash Skript aus das Python Skript aufruft um damit die Dateien zu erstellen, man hätte aber 2 Dateien, die man sich herunterladen müsste. Manch einer mag das, ein anderer nicht.
$OPERA_DIR wird offenbar nur bei Opera 10 verwendet. Bei Opera 9 steht der vollständige Pfad.
Ahja alles klar. Dann ist das verständlich.
Wenn das Skript aber ohnehin nur unter Ubuntu laufen wird - welchen Vorteil bietet Python dann überhaupt?
siehe oben. Man hätte dann insgesamt 2 Dateien. Mir ist es egal, da es ja dein Projekt ist, entscheide du.
Das Ergebnis ist nicht eindeutig. Ich habe momentan Opera 9 installiert, aber beide Dateien im Opera-Verzeichnis....
Eine Versionsüberprüfung lässt sich also nicht vermeiden.
Das hatte ich mir schon fast gedacht. Ja, dann ist das unvermeidlich.
Was mir gestern Abend noch eingefallen ist: das Skript benötigt noch eine Update-Funktion. Ich habe mir das in etwa so vorgestellt:
das Skript muss überprüfen, ob es eine neuere Version gibt dazu evtl. bei Launchpad/uu-wiki/etc. eine Textdatei runterladen, in der die aktuelle Versionsnummer steht wenn diese höher, als die installierte, dann
Deinstallation von ubuntuusers Menu dann eine Neuinstallation Installation dann wie gehabt
Bei einer Erstinstallation könnte man genauso vorgehen (also, dass man nur das Installations-Skript hat und der Rest automatisch heruntergeladen wird). Was hältst du davon?
Hört sich interessant an. Das wäre natürlich das Optimum. Können wir gerne probieren. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Stumml schrieb: JaiBee schrieb: Ok, wir müssen uns jetzt nur entscheiden, ob wir beim Bash-Skript bleiben... Was spricht denn gegen Bash und für Python?
Es spricht nichts gegen Bash und nichts für Python, nur würde man als Endbenutzer es sicherlich einfacher finden nur eine Datei auszuführen. Man kann das natürlich auch so lösen, dass man vom Bash Skript aus das Python Skript aufruft um damit die Dateien zu erstellen, man hätte aber 2 Dateien, die man sich herunterladen müsste. Manch einer mag das, ein anderer nicht.
Dann lass uns zum Beginn mal Bash nehmen. Dann kann ich wenigstens auch etwas machen.
Hört sich interessant an. Das wäre natürlich das Optimum. Können wir gerne probieren.
Ok. Verwendest du irgendeinen Instant-Messenger? Gruß JaiBee
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
JaiBee schrieb: Dann lass uns zum Beginn mal Bash nehmen. Dann kann ich wenigstens auch etwas machen.
Alles klar.
Ok. Verwendest du irgendeinen Instant-Messenger?
Hin und wieder aber relativ selten ist Pidgin bei mir im Einsatz. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Das Bash-Skript kann ubuntuusers Menu nun auch aktualisieren:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 | #!/bin/bash
# Already tested under KUbuntu 9.04 with Opera 9.86 + 10.00b2
OPERA_HOME="$HOME/.opera" # see opera:about -> Opera directory
MENU="$OPERA_HOME/menu/uu-menu.ini"
SKIN="/usr/share/opera/skin/standard_skin.zip"
TEMP="/tmp/uu-menu"
clear
echo "* * * * * * * * * * * * * * *"
echo "* ubuntuusers Menu 4 Opera *"
echo "* * * * * * * * * * * * * * *"
cd $(dirname $0)
MAIN=$(pwd)
rezip(){
cd $TEMP
zip -rmq $(basename $SKIN) .
sudo mv $(basename $SKIN) $SKIN
sudo chown root.root $SKIN
}
##################### REMOVE UBUNTUUSERS MENU #####################
remove(){
### MENU
echo "Entferne Menü..."
rm $MENU
### ICONS
echo "Entferne Icons..."
unzip -q $SKIN -d $TEMP
[ -d $TEMP/icons-uu-menu/ ] && rm -r $TEMP/icons-uu-menu/
sed -i "/ubuntuusers Menu START/,/ubuntuusers Menu END/d" $TEMP/skin.ini
# rezip the edited skin
rezip
}
##################### INSTALL UBUNTUUSERS MENU ####################
install(){
[ ! -d $OPERA_HOME ] && echo "ERROR: \"$OPERA_HOME\" existiert nicht!" && exit 1
# Opera version
if (( $(opera -version | cut -d " " -f2 | cut -d "." -f1) >= 10 )); then
PREFS="$OPERA_HOME/operaprefs.ini"
else
PREFS="$OPERA_HOME/opera6.ini"
fi
cd $MAIN
echo "Download ubuntuusers Menu $CURRENT"
wget "http://launchpad.net/ubuntuusers-menu/opera/opera-downloads/+download/uu-menu4opera.zip" &> /dev/null
unzip -q uu-menu4opera.zip
### MENU
echo "Installiere Menü..."
[ ! -d $OPERA_HOME/menu/ ] && mkdir $OPERA_HOME/menu/
mv -f uu-menu.ini $OPERA_HOME/menu/
if grep "Menu Configuration" $PREFS > /dev/null; then
sed -i '/Menu Configuration/c\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
else
sed -i '/User Prefs/a\Menu Configuration=$OPERA_HOME/menu/uu-menu.ini' $PREFS
fi
### ICONS
# unzip skin
unzip -q $SKIN -d $TEMP
if test -d $TEMP/icons-uu-menu/ && grep "; ubuntuusers Menu START:" $TEMP/skin.ini > /dev/null; then
echo "Icons sind bereits installiert"
else
echo "Installiere Icons..."
# copy icons
mv -f ./icons-uu-menu/ $TEMP
# edit skin config file
echo -e "\n\n; ubuntuusers Menu START:\n[Images]" >> $TEMP/skin.ini
cat ./icons.ini >> $TEMP/skin.ini
echo -e "\n; ubuntuusers Menu END" >> $TEMP/skin.ini
# rezip the edited skin
rezip
fi
cd $MAIN
echo "Räume auf..."
rm "icons.ini" "uu-menu4opera.zip"
rm -r $TEMP
}
# schon installiert?
if [ -f $MENU ]; then
INSTALLED=$(grep "^Version=" $MENU | cut -d = -f2) # installierte Version
CURRENT=$(wget "http://launchpad.net/ubuntuusers-menu/opera/opera-downloads/+download/current.txt" &> /dev/null && more current.txt && rm current.txt)
echo -e "Installierte Version von ubuntuusers Menu: $INSTALLED\n"
# Update notwendig?
if [[ $(echo $INSTALLED | tr -d .) -lt $(echo $CURRENT | tr -d .) ]]; then
echo "Aktualisiere ubuntuusers Menu auf Version $CURRENT"
remove
install
else
echo "Sie haben bereits die neueste Version von ubuntuusers Menu."
fi
else
install
fi
|
Launchpad ist imho zum Hosten der Dateien nicht ganz geeignet, da diese zu leicht gefunden werden können (und ich bei Launchpad nicht ganz durchblicke).
Bei dem Pythonscript, welches die Dateien für Opera erstellt, ist noch eine Ergänzung notwendig.
python opera.py uu-menu.xml uu-menu.ini icons.ini
In der Datei uu-menu.ini muss vor dem [Browser ubuntuusers Menu] -Teil noch folgendes dazu:
Opera Preferences version 2.1
; Do not edit this file while Opera is running
; This file is stored in UTF-8 encoding
; Do not change the version!
[Version]
File Version=2
[Info]
Description=Navigationsmenü für die Portale ubuntuusers.de, ubuntu-de.org und ubuntuforums.org
Author=JaiBee
Version=0.0.1
NAME=ubuntuusers Menu
[Browser Menu Bar]
Submenu, MI_IDM_HELP_PRINT_PARENT, Browser File Menu
Submenu, MI_IDM_HELP_COPY_PARENT, Browser Edit Menu
Submenu, M_BOOKM_ITEM_POPUP_MENU_OPEN_VIEW, Browser View Menu
Submenu, M_BROWSER_MENU_BAR_BOOKMARKS, Browser Bookmarks Menu
Submenu, M_WIDGET_MENU, Browser Widgets Menu
Feature Feeds, Submenu, M_MENU_BAR_FEEDS_SUBMENU, Browser Feeds Menu
Feature Mail, Submenu, M_BROWSER_MENU_BAR_MAIL, Browser Mail Menu
Feature Chat, Submenu, M_BROWSER_MENU_BAR_CHAT, Browser Chat Menu
Submenu, M_TOOLS, Browser Tools Menu
Platform Mac, Submenu, M_BROWSER_MENU_BAR_WINDOW, Browser Window Menu
Platform Windows-Unix-QNX, Feature MDI, Submenu, M_BROWSER_MENU_BAR_WINDOW, Browser Window Menu
Submenu, M_BROWSER_MENU_BAR_HELP, Browser Help Menu
Submenu, ubuntuusers, Browser ubuntuusers Menu
[Document Popup Menu]
Item, MI_IDM_Prev_PM,=Back
Item, MI_IDM_Next_PM,=Forward
Item, M_REWIND,=Rewind
Item, M_FAST_FORWARD,=Fast Forward
--------------------1
Item, MI_IDM_Reload_PM,=Reload
Submenu, MI_IDM_AUTORELOAD_TOGGLE_PARENT, Reload Menu
--------------------2
Item, M_DOCUMENT_POPUP_MENU_BOOKMARK_PAGE=Add to bookmarks, 1
Item, MI_IDM_POPUP_ADDRESS=Copy document address
Item, MI_IDM_SEND_URL_EMAIL=Send document address in mail
--------------------3
Item, MI_IDM_Print=Print document
Item, MI_IDM_Kilde=View document source
Item, M_DOCUMENT_POPUP_MENU_VALIDATE=Validate frame source
Submenu, M_OPEN_WITH, Open in menu
--------------------5
Include, Internal Frame
Include, Internal Document Background
--------------------7
Item, M_BLOCK_CONTENT=Content block mode on | Content block mode off
Item, M_EDIT_SITE_PREFERENCES=Edit site preferences
--------------------8
Item, MI_IDM_FULLSCREENTOGGLE=Enter fullscreen | Leave fullscreen
Submenu, ubuntuusers, Browser ubuntuusers Menu
Wenn du dir Version aus der uu-menu.xml auslesen könntest wäre das ganz geschickt (wenn's zu kompliziert ist, kannst du es auch lassen):
<easy-menu>
<extension short-name="ubuntuusers-menu" version="1.2.1"> .
Wenn möglich sollten die verwendeten Icons aus dem Ordner ./icons in den Ordner ./icons-uu-menu (jeweils relativ zum Pythonskript opera.py ) kopiert werden. Das Sahnehäubchen wäre: den Ordner ./icons-uu-menu, sowie die erstellten Dateien uu-menu.ini und icons.ini in ein zip-Archiv namens uu-menu4opera.zip packen und anschließend den Ursprungsordner ./icon-uu-menu und die 2 ini-Dateien löschen.
Wenn das zu schwierig ist oder du keine Zeit/Lust hast, wäre das auch kein Weltuntergang, da ich das zur Not auch manuell machen kann. Schon mal vielen Dank! Gruß JaiBee
|
Stumml
Anmeldungsdatum: 15. Juni 2006
Beiträge: 166
Wohnort: Berlin
|
Moin, JaiBee schrieb: Das Bash-Skript kann ubuntuusers Menu nun auch aktualisieren:
Den Quelltext habe ich erst einmal sichergestellt ☺
Launchpad ist imho zum Hosten der Dateien nicht ganz geeignet, da diese zu leicht gefunden werden können (und ich bei Launchpad nicht ganz durchblicke).
Wenn das Skript eine Erleichterung sein soll, warum soll es nicht auch einfach gefunden werden können? Davon mal abgesehen kenne ich mich mit Lanchpad nicht aus.
Bei dem Pythonscript, welches die Dateien für Opera erstellt, ist noch eine Ergänzung notwendig.
Wenn du dir Version aus der uu-menu.xml auslesen könntest wäre das ganz geschickt (wenn's zu kompliziert ist, kannst du es auch lassen).
Hab das mal eingearbeitet: http://paste.pocoo.org/show/132008/
Wenn möglich sollten die verwendeten Icons aus dem Ordner ./icons in den Ordner ./icons-uu-menu (jeweils relativ zum Pythonskript opera.py ) kopiert werden.
Diese Icons, sind die eigentlich in dem zip-Archiv was man sich da herunterlädt?
Das Sahnehäubchen wäre: den Ordner ./icons-uu-menu, sowie die erstellten Dateien uu-menu.ini und icons.ini in ein zip-Archiv namens uu-menu4opera.zip packen und anschließend den Ursprungsordner ./icon-uu-menu und die 2 ini-Dateien löschen.
Na das sollte ja eigentlich kein Problem darstellen. mfg Stumml
|
JaiBee
(Themenstarter)
Anmeldungsdatum: 8. Juni 2007
Beiträge: 1469
|
Stumml schrieb: Launchpad ist imho zum Hosten der Dateien nicht ganz geeignet, da diese zu leicht gefunden werden können (und ich bei Launchpad nicht ganz durchblicke).
Wenn das Skript eine Erleichterung sein soll, warum soll es nicht auch einfach gefunden werden können? Davon mal abgesehen kenne ich mich mit Lanchpad nicht aus.
Hab mir schon fast gedacht, dass das missverstanden wird. Das Skript soll natürlich gefunden werden, aber nicht das Zip-Archiv und die Datei current.txt, welche von dem Installations-Skript heruntergeladen werden. Ich werde mal das Wiki-Team kontaktieren. Vielleicht können sie mir eine Seite zur Verfügung stellen.
Bei dem Pythonscript, welches die Dateien für Opera erstellt, ist noch eine Ergänzung notwendig.
Wenn du dir Version aus der uu-menu.xml auslesen könntest wäre das ganz geschickt (wenn's zu kompliziert ist, kannst du es auch lassen).
Hab das mal eingearbeitet: http://paste.pocoo.org/show/132008/
Danke, das funktioniert. Ein kleiner Teil hat gefehlt, aber das konnte ich selbst ergänzen: http://paste.pocoo.org/show/132037/ Wenn möglich sollten die verwendeten Icons aus dem Ordner ./icons in den Ordner ./icons-uu-menu (jeweils relativ zum Pythonskript opera.py ) kopiert werden.
Diese Icons, sind die eigentlich in dem zip-Archiv was man sich da herunterlädt?
Ja, da kommen sie dann rein. Aber das zip-Archiv soll von dem Python-Skript erst einmal erstellt werden. Hast du verstanden, wie ich das mit den Icons gemeint habe?
Das Sahnehäubchen wäre: den Ordner ./icons-uu-menu, sowie die erstellten Dateien uu-menu.ini und icons.ini in ein zip-Archiv namens uu-menu4opera.zip packen und anschließend den Ursprungsordner ./icon-uu-menu und die 2 ini-Dateien löschen.
Na das sollte ja eigentlich kein Problem darstellen.
Habe nicht an deinen Fähigkeiten gezweifelt 😉. Gruß JaiBee
|