ich hab mich in den letzten Tagen ein wenig mit dem Flexmenü auseinandergesetzt.
Download: hier
Die Installation ist im Readme beschrieben. Anschließend befindet sich im Ordner /var/plugins die Datei Shellexec mit einer Größe von 35.9 KB und im Ordner /var/tuxbox/plugins die Dateien shellexec.so (9,19KB) und shellexec.cfg (ca.86Byte), sowie die Datei shellexec.conf im Ordner /var/tuxbox/config (Große kommt hier drauf an, was ihr hier reinschreibt).
Damit sind jetzt erst mal, selbst bei leerer shellexec.conf schon mal ca. 46KB weg. Das ist eine Menge Platz, kann aber zu einem nicht unerheblichen Teil wieder rein geholt werden.
So z.B. wenn man andere Plugins ersetzen kann, die man dann natürlich nicht mehr bzw. nur noch zum Teil installieren muss.
Beispiele:
Das EPG-Reset Plugin:
Leider habe ich das alte Original nicht mehr gefunden, aber es bestand aus 3 Dateien: scrplug1.cfg, scrplug1.so und der shell1. Sinn der .cfg und .so war eigentlich nur, das Skript in der shell1 auszuführen. Das könnte man heute schon leichter machen, indem man das nach den Skript-Regeln ummodeln würde (s. dazu hier mehr). Aber dann hat man immer noch 2 Dateien und einen Eintrag im Menü der blauen Taste, was eh schon mehr als voll genug ist. Da der Inhalt der Shell recht einfach aufgebaut war, kann man es auch komplett in das Flexmenü übernehmen.
Shell1 enthielt diesen Code:
Code: Alles auswählen
#!/bin/sh
killall -9 sectionsd
sleep 2
sectionsd
exit;
Code: Alles auswählen
ACTION=EPG Reset, killall –9 sectionsd ; sleep2 ; sectionsd , EPG gelöscht
Das beinhaltet normalerweise 6 Dateien und setzt 2 Einträge ins Menü der blauen Taste.
Inhalt der shell1:
Code: Alles auswählen
#!/bin/sh
pzapit --ntsc
saa -n
exit;
Code: Alles auswählen
#!/bin/sh
pzapit --pal
saa -p
exit;
Code: Alles auswählen
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa –ntsc
Code: Alles auswählen
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
Beispiel3: Das Reset-Plugin
Leider habe ich dieses auch nicht mehr gefunden, aber im Flexmenü reicht ein einfacher Eintrag:
Code: Alles auswählen
ACTION=Reboot, reboot, Box wird neu gestartet
Code: Alles auswählen
ACTION=&Reboot, killall sectionsd;killall camd2;killall controld;killall timerd;reboot, Box wird neu gestartet
Code: Alles auswählen
# ShellExec Version 1.44, Greez SnowHead
FONT=/share/fonts/micron_bold.ttf
FONTSIZE=20
PAGING=1
MENU=PLUGINS
ACTION=&Reboot, reboot, Box wird neu gestartet
ACTION=&EPG Reset, killall -9 sectionsd ; sleep 3 && sectionsd, EPG neu gestartet
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa --ntsc
MENU=Format
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
ENDMENU
ENDMENU
Weitere Spar- und Aufräummaßnahmen:
Manche Plugins wie das Sysinfo oder auch Tuxwetter können direkt aus dem Flexmenü gestartet werden und damit auf die .cfg und .so Dateien entfallen, in diesem Beispiel genügen dann diese Zeilen:
Code: Alles auswählen
DEPENDON=§Sysinfo,/var/plugins/sysinfo,/var/plugins/sysinfo
DEPENDON=&Tuxwetter,/var/plugins/tuxwet/tuxwetter,/var/plugins/tuxwet/tuxwetter
Die Plugins auf der blauen Taste werden ja nun nicht von jedem verwendet, aber einige davon sind ja fest im Image eingebaut. Um diese dennoch aus dem Menü der blauen Taste verschwinden lassen zu können, muss man folgendermaßen vorgehen:
Man kopiert die entsprechende .cfg-Datei vom Ordner /lib/tuxbox/plugins nach /var/tuxbox/plugins und ändert den Eintrag type=2 in type=0 um. Das Plugin ist damit aus dem Menü der blauen Taste verschwunden.
Will man das Plugin trotzdem noch benutzen können, muss man einen Link auf die .so-Datei in dem Ordner /var/tuxbox/plugins erzeugen. Dies klappt am besten mit Telnet. Dazu öffnet man in Windows NT/2K/XP ein Dos-Fenster per Start – Ausführen – cmd und gibt dort „telnet box-ip“ (z.B. telnet 192.168.0.4) ein. Dann wird der Benutzer abgefragt, in unserem Falle heißt der root und das Passwort ist im JtG-Image dbox2. Nun kann man in dem Telnet Befehle auf der Dbox auslösen. Der Befehl ln –s /lib/tuxbox/plugins/lcdcirc.so /var/tuxbox/plugins/lcdcirc.so verknüpft z.B. die lcdcirc.so in den Plugin-Ordner. Sollte es in der .cfg-Datei definierte Abhängigkeiten geben (bei der lcdcirc.cfg ist die Zeile „depend=libfx2.so“ enthalten, was eine Abhängigkeit von dieser Datei definiert) ist es erforderlich auch diese Datei dorthin zu verlinken, im Beispiel also „ln –s /lib/libfx2.so /var/tuxbox/plugins/libfx2.so“. Um das Plugin zu starten kann man wget nutzen, im Beispiel sieht diese Zeile dann so aus:
Code: Alles auswählen
ACTION=LCD-Circ,wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=lcdcirc.cfg
Um Dateien zu wechseln, gibt es ja auch Plugins, z.B. das Avia-Wechsel-Plugin und das VNC für mehrere Rechner Plugin. Dies kann man mit dem Flexmenü aber auch direkt umsetzen. Dazu werden die Ausgangsdateien umbenannt und ein Link erzeugt, der dann vom jeweiligen Programm genutzt werden kann.
Bsp:
Code: Alles auswählen
MENU=Avia tauschen
ACTION=&Avia600vb022 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.022 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ACTION=&Avia600vb028 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.028 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ENDMENU
MENU=VNC für mehrere Rechner
ACTION=VNC für Rechner 1 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc1 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ACTION=VNC für Rechner 2 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc2 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ENDMENU
Beim Tausch der VNC-Konfigurationen wird vorausgesetzt, das diese in den Dateien vnc1 und vnc2 vorhanden sind und im Ordner /var/plugins/vnc liegen.
Eine weitere Möglichkeit Platz in /var zu erhalten, ist natürlich Dateien in ein gemountetes Verzeichnis auszulagern. Im Beispiel nehme ich dazu fbshot, was allein durch seine Größe sonst nur in /tmp eingesetzt werden kann. Das Plugin fbshot erzeugt Snapshots des Framebuffers, die dann als .png-Datei nach /mnt/custom geschrieben werden. Ein Delay von ca. 10sek. Eingebaut, damit man das entsprechende Menü erst mal aufgerufen werden kann. Durch ändern des Wertes nach Sleep lässt sich das natürlich auch individuell anpassen. Der Snapshot wird mit einem Timestamp im Dateinamen gesichert und dadurch kann man mehrere Snapshots machen und hat diese dann schon zur weiteren Verwendung auf dem Rechner.
Code: Alles auswählen
DEPENDON=Fbshot in 10 sec, chmod 755 /mnt/custom/fbshot ; sleep 10 && /mnt/custom/fbshot /mnt/custom/`date +%Y%m%d%H%M%S`.png ,/mnt/custom/fbshot
Das funktioniert auch mit anderen Dateien, Sysinfo z.B. könnte man so auch auslagern. Selbst ein Flashen oder Sichern des Images wäre so problemlos möglich. Auch alle .sh-Skripte könnte man so auslagern. Diese lassen sich übrigens direkt aus dem Flexmenü starten.
Die Beispiel shellexec.conf sieht dann jetzt so aus:
Code: Alles auswählen
# ShellExec Version 1.44, Greez SnowHead
FONT=/share/fonts/micron_bold.ttf
FONTSIZE=20
PAGING=1
MENU=PLUGINS
ACTION=&Reboot, reboot, Box wird neu gestartet
ACTION=&EPG Reset, killall -9 sectionsd ; sleep 3 && sectionsd, EPG neu gestartet
ACTION=&PAL, saa --pal
ACTION=&NTSC, saa --ntsc
MENU=Format
ACTION=&16:9 Anamorph, saa --wss 7
ACTION=&16:9 Zoom, saa --wss 3
ACTION=&14:9 Zoom, saa --wss 1
ACTION=&4:3 Standardformat, saa --wss 0
ACTION=&Automatikformat, saa --wss 8
ENDMENU
DEPENDON=§Sysinfo,/var/plugins/sysinfo,/var/plugins/sysinfo
DEPENDON=&Tuxwetter,/var/plugins/tuxwet/tuxwetter,/var/plugins/tuxwet/tuxwetter
ACTION=LCD-Circ,wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=lcdcirc.cfg
MENU=Avia tauschen
ACTION=&Avia600vb022 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.022 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ACTION=&Avia600vb028 aktivieren,rm /var/tuxbox/ucodes/avia600.ux ; ln -s /var/tuxbox/ucodes/avia600.028 /var/tuxbox/ucodes/avia600.ux, Avia gewechselt.
ENDMENU
MENU=VNC für mehrere Rechner
ACTION=VNC für Rechner 1 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc1 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ACTION=VNC für Rechner 2 starten, rm /var/tuxbox/config/vnc.conf;ln -s /var/plugins/vnc/vnc2 /var/tuxbox/config/vnc.conf; wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=vnc.cfg
ENDMENU
DEPENDON=Fbshot in 10 sec, chmod 755 /mnt/custom/fbshot ; sleep 10 && /mnt/custom/fbshot /mnt/custom/`date +%Y%m%d%H%M%S`.png ,/mnt/custom/fbshot
ENDMENU
Ich hänge sie gezippt auch noch mal an. Sie ist mittlererweile 1,6KB groß, aber für die vielen Funktionen meiner Meinung nach durchaus eine vertretbare Größe, die durch den Ersatz der enthaltenen PlugIns locker ausgeglichen werden sollten. Ich benutze als Editor den Crimson Editor, der sehr Problemlos funktioniert und Änderungen per FTP direkt machen kann, ohne das man zusätzlich die Datei ständig noch per FTP zwischen Rechner und Box hin- und herschieben muss.
Ich hoffe, dieses kleine Howto bringt Euch das Flexmenü etwas näher und macht euch Lust dazu dafür auch mal etwas eigenes zu basteln.
cu
Jens