ubuntuusers.de

Anbox per Icon aus und einschalten

Status: Gelöst | Ubuntu-Version: Ubuntu Touch 16.04 (Xenial Xerus)
Antworten |

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

Auf meinem Fairphone2 läuft Anbox, um z.B. Threema auch unter Ubuntu Touch nutzen zu können. Leider zieht Anbox, auch wenn es nicht genutzt wird, relativ viel Strom.

An- und Ausschalten lässt es sich mit

anbox-tool enable|disable 

im Terminal, es braucht Root-Rechte dafür.

In Ubuntu Touch/Erweiterte Konfiguration (Abschnitt „Fenstermodus“) wird eine Möglichkeit vorgestellt, den Fenstermodus zu steuern. In der Art würde ich das für Anbox auch gerne verwenden; brauche aber Hilfe dazu.

Das Skript müsste feststellen, ob Anbox gerade läuft, oder nicht, und entsprechend den Befehl ausführen

also etwas wie

1
2
3
4
5
6
7
8
- Stelle modus fest
if modus=disable
  exec anbox-tool enable
  set Iconcolour Grün 
else
  exec anbox-tool disable 
 set Iconcolour Rot
fi

Ist nur Mockup-Code 😊 , im Original für den Fenstermodus sieht das so aus

mode=$(gsettings get com.canonical.Unity8 usage-mode)
case $mode in
    "'Staged'")
        notify-send "Unity usage mode" "Switching to windowed mode"
        gsettings set com.canonical.Unity8 usage-mode Windowed 
    ;;
    "'Windowed'")
        notify-send "Unity usage mode" "Switching to fullscreen mode"
        gsettings set com.canonical.Unity8 usage-mode Staged 
    ;;
esac

Kann mir bitte jemand weiterhelfen?

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

Der Befehl anbox-tool status gibt

Kernel: OK
System: OK
Enabled: NO
Running: NO

und nach nach etwas Prokeln habe ich jetzt das:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#! /bin/bash
echo `exec anbox-tool status` > state.txt
MODUS=`cat state.txt | cut -d " " -f 6`
##echo $MODUS > modus.txt 
if [ "$MODUS" == "YES" ]; then
         `exec anbox-tool disable`
##         echo "abgeschaltet" > AUS.txt
else
      `exec anbox-tool enable`
##      echo "angeschaltet" > AN.txt
fi
rm state.txt
exit

Schaltet Anbox im Terminal auf dem Fairphone an und aus; was mich irritiert ist die Ausgabe

./anboxtoggle.sh: line 6: Anbox: command not found

wenn Anbox ausgeschaltet wurde bzw.

./anboxtoggle.sh: line 9: Anbox: command not found

wenn es wieder angeschaltet wurde.

Einen Befehl Anbox habe ich doch gar nicht verwendet... 😳

so long
hank

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Wohnort: Germany

Das anbox-tool in Zeile 6 führt wohl Anbox aus, vielleicht sollte es auch anbox ausführen. Was kommt derzeit, wenn du Zeile 6 im Terminal startest?

anbox-tool disable

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

ganz normal, Frage nach dem Passwort, nach Eingabe schaltet Anbox ab. Ich hab das ganze jetzt am Laufen; die Meldung hat keinen Einfluss auf die Funktion, ein Logo von Anbox hab jetzt in der Desktopdatei verlinkt, und wenn Anbox nicht anderweitig abstürzt, geht es jetzt...

Desktop-Datei:

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Name=Anboxtoggle
Type=Application
Terminal=false
Icon=/home/phablet/.local/share/applications/anbox_logo.png
Categories=Utility
Comment=Switch between anbox enabled and disabled
X-Ubuntu-Touch=true
Exec=/home/phablet/.local/share/applications/anboxtoggle.sh 

Etwas nervig ist, dass nach jedem Anbox-enable im AppDrawer ein zusätzliches Icon für jede der Anbox-Apps erscheint... Die liegen an zwei Orten, vielleicht muss ich da mal aufräumen: /home/phablet/.local/share/applications und .../anbox

so long
hank

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

Heinrich_Schwietering schrieb:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#! /bin/bash
echo `exec anbox-tool status` > state.txt
MODUS=`cat state.txt | cut -d " " -f 6`
##echo $MODUS > modus.txt 
if [ "$MODUS" == "YES" ]; then
         `exec anbox-tool disable`
##         echo "abgeschaltet" > AUS.txt
else
      `exec anbox-tool enable`
##      echo "angeschaltet" > AN.txt
fi
rm state.txt
exit

Wozu ist in Zeile 2 "echo exec ..." gut, wieso nicht einfach:

1
anbox-tool status > state.txt

Du liest hier sicher selten mit, sonst hättest Du mitbekommen, dass wir von den veralteten Backticks generell abraten und wieso, also selbst wenn, dann "echo $(exec ...)" an allen Stellen mit Backticks, bitte, aber ich meine das ist eh rückwärts von hinten durchs Knie.

Zeile 3 liest Du ein, was Du gerade erst geschrieben hast:

1
MODUS=`cat state.txt | cut -d " " -f 6`

Man könnte auch, was man gelesen hat, in einem Array zwischenspeichern. State.txt wird ja ohne weiter ausgewertet zu werden von Dir eh danach gelöscht:

1
2
anboxtool=($(anbox-tool status)) 
atenabled=${anboxtool[5]}

Das Ding in Modus umzutaufen leuchtet mir nicht ein.

1
2
3
4
5
6
7
if [ "$MODUS" == "YES" ]; then
         `exec anbox-tool disable`
##         echo "abgeschaltet" > AUS.txt
else
      `exec anbox-tool enable`
##      echo "angeschaltet" > AN.txt
fi

Ich vermute, was Du willst, ist einfach:

1
2
3
4
5
6
7
if [ "$atenabled" == "YES" ]; then
         anbox-tool disable
##       date > AUS.txt
else
      anbox-tool enable
##      date > AN.txt
fi

Was soll das exec bewirken?

help exec
exec: exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]
    Ersetzt die Shell durch das angegebene Kommando.
    
    Führt das angegebene Kommando einschließlich dessen Optionen an
    Stelle der Shell aus. Wenn kein Kommando angegeben ist, wirken
    alle Weiterleitungen für die aktuelle Shell.
    
    Optionen:
      -a Name	Setzt den Namen als nulltes Argument für das Kommando.
      -c	Führt das Kommando in einer leeren Umgebung aus.
      -l	Setzt einen Strich in das nullte Argument für das Kommando.
    
    Wenn das Kommando nicht ausgeführt werden kann, wird eine nicht
    interaktive Shell beendet, außer die Shell-Option »execfail« ist
    gesetzt.
    
    Rückgabewert:
    Gibt »Erfolg« zurück, außer das Kommando wurde nicht gefunden oder
    ein Weiterleitungsfehler trat auf.

Wieso schnappst Du Dir mit Backticks die Ausgabe des Programms? Du machst nichts damit. Außer zu versuchen sie auszuführen - daher kommt die Fehlermeldung.

Du denkst zu kompliziert.

Neues Script:

1
2
3
4
5
6
7
8
9
#!/bin/bash
anboxtool=($(anbox-tool status)) 
atenabled=${anboxtool[5]}

if [ "$MODUS" == "YES" ]; then
      anbox-tool disable
else
      anbox-tool enable
fi

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

user_unknown schrieb: ...

Du denkst zu kompliziert.

Ich versteh schlicht zuwenig davon; ist Versuch-und-Irrtum-Versuch, und als "Universal-Diletant" aka "Pragmatiker" freu' ich mich wenn es irgendwie klappt 🤣

Aber dafür habe ich ja euch ...

Neues Script:

1
2
3
4
5
6
7
8
9
#!/bin/bash
anboxtool=($(anbox-tool status)) 
atenabled=${anboxtool[5]}

if [ "$MODUS" == "YES" ]; then
      anbox-tool disable
else
      anbox-tool enable
fi

Herzlichen Danke, werd' ich gleich mal testen! 👍

so long
hank

EDIT: Hm, schade, tut nix bzw. nur die Hälfte... Im Terminal gestartet sagt es mir nur, dass Anbox schon läuft; sollte doch abgeschaltet werden. Wenn es aus ist schaltet dein Script es wieder ein; aber das ist ja nur die halbe Miete...

Liegt es ggf. daran, dass enable schon anderweitig belegt ist? Wird hier ja auch grün angezeigt, und nicht schwarz.

EDIT zwei: Nein es lag daran, dass du meine $MODUS-Variable genommen hast, statt $atenabled - alles klaro 🐸

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17583

Wohnort: Berlin

Sorry, ein cut-and-paste-Fehler,

1
2
if [ "$MODUS" == "YES" ]; then
      anbox-tool disable

muss

1
2
if [ "$atenabled" == "YES" ]; then
      anbox-tool disable

heißen

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11322

Wohnort: Bremen

Hi!

Jo, Danke, hat Edith schon erledigt - hätte mich bei dir auch gewundert... 😇

so long
hank

Antworten |