ubuntuusers.de

Würfel per Bash drehen

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

chri9u

Anmeldungsdatum:
17. September 2007

Beiträge: 16

Wohnort: Lucerne, Switzerland

Hallo zusammen,

es tönt vielleicht etwas doof, aber ist es irgendwie möglich, den Würfel (hab ich bereits und funktioniert super) per Befehl zu drehen?
Der erzielte Effekt wäre folgender: wenn ich beispielsweise irgendwo an eine Sitzung komme und mehrere Programme öffnen muss (Firefox, LAMPP starten, htdocs-Folder öffnen..., da reisender Webmaster \^^), wärs interessant, wenn ich nur ein Script starten müsste. Dieses sollte dann die diversen Programme auf den verschiedenen Desktop "animiert" starten (so wie wenn ichs von Hand machen würde, nur automatisch halt \^^).
Ist dies irgendwie möglich?

MfG;
chri9u

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

Du brauchst das Programm

wmctrl


aus den Quellen.

Mit

wmctrl -d

werden dir die verfügbaren Desktops angezeigt.

Mit

wmctrl -s [0, 1, 2, 3, usw..]

kannst du auf den jeweiligen Desktop wechseln (Angefangen zu zählen wird bei "0")

Gruß Martin

chri9u

(Themenstarter)

Anmeldungsdatum:
17. September 2007

Beiträge: 16

Wohnort: Lucerne, Switzerland

Hab das Programm installiert, aber der Befehl macht nichts. Weder Fehlermeldung noch sonst was. Mit dem Befehl wmctrl -l listet er jedoch die Fenster und Bars auf. Was läuft falsch?

MfG,
chri9u

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

chri9u hat geschrieben:

Hab das Programm installiert, aber der Befehl macht nichts. Weder Fehlermeldung noch sonst was. Mit dem Befehl wmctrl -l listet er jedoch die Fenster und Bars auf. Was läuft falsch?

Zeig einfach mal die Ausgabe von wmctrl -l

wmctrl -d sollte aber auch was anzeigen. Nämlich die Liste aller virtuellen Desktops.

chri9u

(Themenstarter)

Anmeldungsdatum:
17. September 2007

Beiträge: 16

Wohnort: Lucerne, Switzerland

Hier also die Ausgabe der beiden Befehle:

chrigu@chrigu-laptop:~$ wmctrl -l
0x0100003b -1 chrigu-laptop Desktop
0x00c00003 -1 chrigu-laptop Oberes Kanten-Panel, ausgedehnt
0x00c00029 -1 chrigu-laptop Unteres Kanten-Panel, ausgedehnt
0x03a00179  0 chrigu-laptop Würfel per Bash drehen - Thema anzeigen - ubuntuusers - Mozilla Firefox
0x0380007d  0 chrigu-laptop Eingang (162 insgesamt) - Evolution
0x02c0007d  0 chrigu-laptop Buddy-Liste
0x04200020  0 chrigu-laptop ubuntu - chrigu@chrigu-laptop: ~
chrigu@chrigu-laptop:~$ wmctrl -d
0  * DG: 5120x800  VP: 3840,0  WA: 0,24 1280x752  N/A
chrigu@chrigu-laptop:~$ 


Die Auflistung der Fenster ist richtig, beim Desktop ists komisch... es sind 4 Desktops mit der Auflösung von 1280x800, somit kann 5120x800 erklärt werden. Sollten da jetzt einzelne Desktops aufgelistet werden? Der Fensterumschalter im Panel zeigt aber 4 Desktops an..
MfG,
chri9u

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

chri9u hat geschrieben:

die Ausgabe der beiden Befehle:

chrigu@chrigu-laptop:~$ wmctrl -l
0x0100003b -1 chrigu-laptop Desktop
0x00c00003 -1 chrigu-laptop Oberes Kanten-Panel, ausgedehnt
0x00c00029 -1 chrigu-laptop Unteres Kanten-Panel, ausgedehnt
0x03a00179  0 chrigu-laptop Würfel per Bash drehen - Thema anzeigen - ubuntuusers - Mozilla Firefox
0x0380007d  0 chrigu-laptop Eingang (162 insgesamt) - Evolution
0x02c0007d  0 chrigu-laptop Buddy-Liste
0x04200020  0 chrigu-laptop ubuntu - chrigu@chrigu-laptop: ~

Das sind die Nummern der virtuellen Desktops. Schonmal komisch, weil du ja von 4 redest. (Oder sind nur auf 2 Desktops Fenster offen?)

Mit

wmctrl -s -1


bzw.

wmctrl -s 0


müsstest du auf die beiden Desktops schalten können.

chri9u hat geschrieben:

chrigu@chrigu-laptop:~$ wmctrl -d
0 * DG: 5120x800 VP: 3840,0 WA: 0,24 1280x752 N/A

Hier ebenfalls die Nummern der Desktops. Allerdings komischerweise nur einer. (Welchen Fenstermanager benutzt du? Compiz aktiviert? Sonstiges?)

chri9u

(Themenstarter)

Anmeldungsdatum:
17. September 2007

Beiträge: 16

Wohnort: Lucerne, Switzerland

Nochmal. Habe jetzt die Lösung gefunden. Das Problem ist, dass Compiz einen "virutellen" Desktop mit vierfacher Breite des einzelnen (deshalb 5120x800) und nicht vier unabhängige. Aber nur so funktioniert halt der Cube. Folgender Code:

#!/bin/bash
#
# compiz-rotate-wmctrl - Rotate the cube using wmctrl
#
# Author: Shang-Feng Yang
# Released under GPLv3

VER="1.0"


function rotate() {
  # The target face number (begins with 0)
  TVPN=$(( $1 % ${NF} ))

  # The X coordinate of the target viewport
  TVPX=$(( ${TVPN} * ${WW} ))

  # Change to the target viewport
  wmctrl -o ${TVPX},0
}

function usage() {
  echo -e "$(basename $0) v${VER}\n"
  echo -e "Usage:\n"
  echo -e "\t$(basename $0) {left|right|#}\n"
  echo -e "\tWhere:\n"
  echo -e "\t\tleft - rotate the cube to the left"
  echo -e "\t\tright - rotate the cube to the right"
  echo -e "\t\t# - rotate to #th face (begins with 0)\n\n"
  echo -e "Author: Shang-Feng Yang <storm dot sfyang at gmail dot com>"
  echo -e "Released under GPLv3"
}

# The action to be performed. $ACT could be 'left' or 'right' to rotate
# left or right, accordingly. $ACT could also be the number of the face
# to rotate into.
ACT=$(echo $1 |tr '[A-Z]' '[a-z]')

[ "x$ACT" == "x" ] && { usage; exit 1; } || {
  case $ACT in
    left|right|[0-9]|[0-9][0-9])
      ;;
    *)
      usage
      exit 1
      ;;
  esac
}


# The informations about the desktop
INFO=$(wmctrl -d)
# The width of the desktop
DW=$(echo "${INFO}"| awk '{sub(/x[0-9]+/, "", $4); print $4}')
# The width of the workarea
WW=$(echo "${INFO}"| awk '{sub(/x[0-9]+/, "", $9); print $9}')
# The number of faces on the cube
NF=$(($DW/$WW))
# The X coordinate of the viewport
CVPX=$(echo "${INFO}" |awk '{sub(/,[0-9]+/, "", $6); print $6}')
# Current number of the face in all faces (begins with 0)
CVPN=$(( ${CVPX} / ${WW} ))

[ "$ACT" == "right" ] && {
  ACT=$(( ${CVPN} + 1 ))
} || {
  [ "$ACT" == "left" ] && {
    ACT=$(( ${CVPN} - 1 ))
  }
}

rotate ${ACT} 

Jetzt kann mit den Befehlen:

compiz-rotate-wmctrl left
compiz-rotate-wmctrl right
compiz-rotate-wmctrl <Desktopnumer>


umgeschaltet werden.

Quelle: http://sfyang-en.blogspot.com/2008/02/rotate-cube-in-compiz-with-wmctrl.html

Vielen Dank,
MfG,
chri9u

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

Ein nützliches Skript. Vielleicht hast du ja Lust es hier einzustellen mit ein paar Erläuterungen. ☺

PS: Markier den thread doch bitte nocha ls gelöst 😉

chri9u

(Themenstarter)

Anmeldungsdatum:
17. September 2007

Beiträge: 16

Wohnort: Lucerne, Switzerland

Danke für den Tipp, werde das in nächster Zeit mal machen.

Antworten |