X200 Ultrabase - Skript für den Monitor

Der_Haase

New member
Themenstarter
Registriert
25 Nov. 2011
Beiträge
506
Guten Abend,

Ich versuche gerade verzweifelt ein skript zu erstellen, um mein x200 dazu zu bewegen dass es wenn es gedockt (oder un-gedockt) wird, automatisch via xrandr vom internen Monitor auf den externen Springt und vice versa.

Die Forums-suche habe ich natürlich bemüht, und bin dabei auf folgendes Posting gestoßen, welches ich einfach mal versucht habe eins zu eins Nachzumachen, was aber gescheitert ist...
http://thinkpad-forum.de/threads/90332-Eure-Thinkpad-Tweaks?p=924404&viewfull=1#post924404

Leider sind meine Linux kenntnisse immernoch nicht so ausgewachsen dass ich das alleine hinbekomme.
Hat da vielleicht jemand ein laufendes Skript ? bzw kann mir sagen was ich beachten muss wenn ich das Skript aus dem Posting unter openSUSE verwenden will (es stammt ja von Ubuntu)?

mfg

Der_Haase
 
Hallo,

ich habe mir das verlinkte Script jetzt nicht im Detail angesehen, das muss ich voraus schicken. Aber die Frage die sich mir stellt ist, wie verhält es sich denn grad bei Dir?

Hier ein paar grundsätzliche Dinge, weil ich von der Ferne aus nicht weiß, was Du schon gemacht hast:

Ausführungsrechte ändern:

Code:
# chmod u+x /Ort/Deines/Scriptes

Aufruf:

Code:
/Ordner/Deines/Scripts$ ./Scriptname

...und ein Befehl zum Fehler suchen:

Code:
/Ordner/Deines/Sciptes$ bash -x ./Scriptname

Der letzte Befehl liefert Dir auf der Standardausgabe eine zeilenweise Ausgabe, was Dein Script macht. Das hilft Dir dann, wenn Dein Script nicht das gewünschte Ergebnis bringt.

Grüße
 
Hallo und danke für die schnelle Antwort,

habe gerade einfach nocheinmal alles neu gemacht, kann das aber erst in ein paar stunden testen wenn ich wieder zuhause an der Dock bin.
Potentielle Fehler könnten tatsächlich das mit dem user-rechten sein, habe jetzt einfach mal als besitzer meinen user gesetzt, und allen lese & schreibrecht gegeben.

Im moment stolpere ich darüber das ich nicht mehr weis wie das suse gegenstück zur rc.local heißt (obwohl ich da letzte woche noch was reingeschrieben habe ...) .

Melde mich dann nochmal wenn ich zuhause bin und das getestet habe.
 
Potentielle Fehler könnten tatsächlich das mit dem user-rechten sein, habe jetzt einfach mal als besitzer meinen user gesetzt, und allen lese & schreibrecht gegeben.

Bei einem Script braucht derjenige, der es ausführen soll zusätzlich Ausführungsrechte. Also das oben erwähnte "+x".
 
ok, bin zuhause.
Ausführbar ist es laut ausgabe von la:
Code:
-rwxrwxrwx   1 hazel users   191 28. Mär 2012  dock.sh
-rwxrwxrwx   1 hazel users  1738 28. Mär 19:26 events.sh

Hier mein Versuch mit der Ausführung:
Code:
hazel@linux-1z03:/etc/tools> ./events.sh 
bash: ./events.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden
hazel@linux-1z03:/etc/tools> bash -x ./events.sh 
./events.sh: Zeile 2: Syntaxfehler beim unerwarteten Wort `$'{\r''
'/events.sh: Zeile 2: `docked() {


Das script sieht bei mir im Moment so aus, da ich keine HDD zum unmounten brauche (ich benötige nur den xrandr teil):
Code:
#!/bin/bash
docked() {
        DOCKED=$(cat /sys/devices/platform/dock.0/docked)
        return $(($DOCKED==0))
}


# enable or disable external display
# $1: "enable" or "disable"
display() {
                if [[ -z "$DISPLAY" ]]; then
                        export DISPLAY=:0.0
                fi

                case "$1" in
                        enable)
                        if docked; then
                                # wait for X-server to start
                                for ((i=1;i<=10;i++)); do
                                        if [[ -n `pgrep "X"` ]]; then
                                                # switch to external display
                                                xrandr --output LVDS1 --off --output HDMI2 --auto --output VGA1 --auto --left of HDMI2
                                                break
                                        fi
                                        sleep 1
                                done
                        fi
                        ;;

                        disable)
                        for ((i=1;i<=10;i++)); do
                                if [[ ! -z `pgrep "X"` ]]; then
                                        # disable external display if present
                                        if docked; then xrandr --output LVDS1 --primary --auto --output HDMI1 --off
                                        else xrandr --output LVDS1 --primary --auto; fi
                                        break
                                fi
                                sleep 1
                        done
                        ;;
                        
                esac
}
 
bei meinem t400s geht die umschaltung unter gnome zuverlässig automatisch. ich stelle die kombination mit externem monitor wie gewünscht ein und definiere es als standardconfig. ist das gerät ungedockt, wird der interne monitor genommen, ist der externe da, schaltet das tp wieder auf die standardconfig um. ganz ohne script-bastelein
 
hm.. wenn ich bei mir unter KDE die externen als standart nehme, bleiben sie das, selbst wenn ich undocke, der interne bleibt dann dauerhaft aus (auch beim reboot >> sehr ärgerlich)
 
Hallo,

speichere dein Skript bitte mit Linux-Lineendings, dann sollte es sich zumindest erstmal starten lassen.
 
Hallo,

speichere dein Skript bitte mit Linux-Lineendings, dann sollte es sich zumindest erstmal starten lassen.

Danke, jetzt bekomme ich beim ausführen immerhin schonmal keine fehlermeldung. Allerdings gibt es auch keine Reaktion :confused:
 
Liegt vielleicht daran, dass die docked-Funktion nicht das tut, was sie soll. Bei mir ist das File zumindest nicht vorhanden. Ich hatte mir auch mal so eine Lösung geschrieben, kann sie aber leider nicht mehr finden. Im Prinzip hatte ich aber nur die Ausgabe von xrandr ausgewertet und dann den entsprechenden Ausgang geschaltet.

Code:
#! /bin/bash

INT_PORT='LVDS1'
EXT_PORT='HDMI2'

if [[ -n "$(xrandr | grep $EXT_PORT | grep disconnected)" ]]; then
  xrandr --output $INT_PORT --auto
  xrandr --output $EXT_PORT --off
else
  xrandr --output $EXT_PORT --auto
  xrandr --output $INT_PORT --off
fi

So oder so ähnlich sollte es funktionieren. HDMI2 ist bei mir der Displayport-Anschluss an der Dockingstation. Sollte aber prinzipiell auch so mit einem direkt am Gerät angeschlossenen Monitor funktionieren.
 
Zuletzt bearbeitet:
hmm... und was mach ich dann ...
währe schon sehr praktisch wenn sich so etwas automatisieren lässt... ich habe eigentlich keine lust jedesmal wenn ich das haus verlasse und in die uni gehe, die bildschirme manuel umzuschalten, bzw. manuel ein skript auszuführen
 
Ah du hast das Skript gefunden.

Hast du das nur einfach so "manuel" ausgeführt, oder auch irgendwie mit der Dock verbunden, dass es automatisch ausgeführt wird wenn das TP undockt ?

EDITH sagt: bei mir ist auch noch der VGA Port belegt, wie würde ich den den hinzufügen ?
 
Ich weiß ja daß Du openSUSE benutzt, aber ich erwähne es trotzdem. Bei Ubuntu 12.04 (Unity) geht das einfach so "out of the box":
  • Beim Andocken wird der externe Monitor als Hauptbildschirm hinzugefügt (muss man in "Displays" einmal so einstellen). Den internen schaltet man durch Zuklappen ab.
  • Nach Aufklappen und Abdocken ist man wieder automatisch beim internen Monitor.
Ich bin begeistert, dass das Gefummel endlich eine Ende hat :D.
 
Ich weiß ja daß Du openSUSE benutzt, aber ich erwähne es trotzdem. Bei Ubuntu 12.04 (Unity) geht das einfach so "out of the box":
  • Beim Andocken wird der externe Monitor als Hauptbildschirm hinzugefügt (muss man in "Displays" einmal so einstellen). Den internen schaltet man durch Zuklappen ab.
  • Nach Aufklappen und Abdocken ist man wieder automatisch beim internen Monitor.
Ich bin begeistert, dass das Gefummel endlich eine Ende hat :D.

Nur bei Ubuntu (mit Gnome) oder auch Kubuntu ? Weil dann würde ich mir einen wechsel evntl. ernsthaft überlegen. Aber eben nur ne Distro mit KDE
 
Das ist nicht das Skript von "damals", die Funktion ist aber im Wesentlichen die gleiche. Das Umschalten der Bildschirme wird bei mir automatisch gemacht, wobei ich das Gerät nicht im laufenden Betrieb abdocke. Der Hintergrund ist bei mir ein anderer gewesen, Gnome3 hatte über VGA den Monitor nicht richtig angesteuert. Das hatte ich, aber immer manuell von Hand korrigiert. Im Prinzip kannst du es aber auf die gleiche Art ausführen lassen, wie dein anderes Skript zum Wechseln des Bildschirms. Für jeden weiteren Bildschirm fügst du einfach eine neue xrandr-Zeile für beide Fälle ein.
 
Kubuntu hab ich nicht getestet. Ich könnte das demnächst mal auf meinem T60 probieren, weiß aber natürlich nicht ob das Ergebnis aufs X200 übertragbar wäre.
 
Das ist nicht das Skript von "damals", die Funktion ist aber im Wesentlichen die gleiche. Das Umschalten der Bildschirme wird bei mir automatisch gemacht, wobei ich das Gerät nicht im laufenden Betrieb abdocke. Der Hintergrund ist bei mir ein anderer gewesen, Gnome3 hatte über VGA den Monitor nicht richtig angesteuert. Das hatte ich, aber immer manuell von Hand korrigiert. Im Prinzip kannst du es aber auf die gleiche Art ausführen lassen, wie dein anderes Skript zum Wechseln des Bildschirms. Für jeden weiteren Bildschirm fügst du einfach eine neue xrandr-Zeile für beide Fälle ein.
hmm werde ich mal testen ob das bei mir funktioniert, danke schonmal.

Kubuntu hab ich nicht getestet. Ich könnte das demnächst mal auf meinem T60 probieren, weiß aber natürlich nicht ob das Ergebnis aufs X200 übertragbar wäre.
Dann schmeiß ich mal nen Kubuntu live usb stick rein und schau mal :)
 
Nur bei Ubuntu (mit Gnome) oder auch Kubuntu ? Weil dann würde ich mir einen wechsel evntl. ernsthaft überlegen. Aber eben nur ne Distro mit KDE
Zumindest mit KDE unter Ubuntu (!= Kubuntu) habe ich das gleiche Problem - mit Gnome 3 funktionierts aber :pinch:
 
Zumindest mit KDE unter Ubuntu (!= Kubuntu) habe ich das gleiche Problem - mit Gnome 3 funktionierts aber :pinch:

:( also ein wechsel von openSUSE auf Kubuntu geht ja noch, aber ich will einfach bei KDE bleiben... hmm da muss es doch eine lösung für geben.
 
:( also ein wechsel von openSUSE auf Kubuntu geht ja noch, aber ich will einfach bei KDE bleiben... hmm da muss es doch eine lösung für geben.
"(!= Kubuntu)", sollte der Hinweis sein, dass ich es nur unter Ubuntu mit nachinstalliertem KDE bestätigen kann. Das muss aber nicht bedeuten, dass es sich unter Kubuntu auch so verhält, da Kubuntu ja extra auf die "Bedürfnisse" von KDE zurecht geschneidert wird. Entschuldige bitte, falls ich mich hier mißverständlich ausgedrückt habe.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben