XMPP mit Adium@Mac OS X: Icon verstecken

adiumUm unter Mac OS X einfach verschlüsselt über das offene XMPP (Jabber) Protokoll zu kommunizieren, bietet sich Adium als Open Source Messenger an. Die grüne Ente spricht neben XMPP auch noch AIM, MSN, ICQ und anderes.

Wer Adium standardmäßig laufen hat, möchte den Messenger vielleicht lieber im Hintergrund ausführen. Dann verschwindet nämlich das (nervige) Adium Icon sowohl aus dem Dock (Taskleiste) als auch aus dem App-Switcher (Alt+Tab). Dafür muss ein plist Eintrag von Adium angepasst werden, was mit folgendem Befehl im Terminal einfach durchzuführen ist:

defaults write /Applications/Adium.app/Contents/Info.plist LSUIElement true

Damit Adium auch nach einem Neustart sofort zur Verfügung steht, fügt man es einfach bei den Anmeldeobjekten unter „Systemeinstellungen->Benutzer & Gruppen: Aktueller Benutzer) hinzu. Wer möchte kann bei „Ausblenden“ noch ein Häkchen setzen, was bei mir aber keinen Unterschied macht.

Um verschlüsselt OTR (off-the-record) zu kommunizieren, kann mit einem Linksklick auf das Adium-Icon unter „Einstellungen->Adium-Einstellungen->Erweitert: Verschlüsselung“ für das eigene Konto ein neuer Schlüssel generiert werden. Den dort angezeigten Fingerprint kann man an seine Kontakte weitergeben, damit diese anschließend verifizieren können, dass sie mit der richtigen Person verschlüsselt kommunizieren.

ThinkPad Yoga 260 – Teil 5: Ubuntu 15.10 – Einfügen mit TrackPoint Mittelklick ausschalten

Ein Standardservice den X mitbringt besteht im „paste-on-middle-click“, dem Einfügen von kopiertem Text durch einen Klick mit der mittleren Maustaste. Da der mittlere Button bei ThinkPads und damit auch beim YOGA 260 gedrückt gehalten werden muss, um mit dem TrackPoint zu scrollen, führt dies immer wieder zu ungewollten Einfügeorgien. Um diesem Verhalten für den internen TrackPoint Button einen Riegel vorzuschieben, reicht ein einfacher Eintrag in „~/.xsessionrc“:

#!/bin/bash

# disable paste-on-middle-click for ThinkPad Yoga 260 TrackPoint
xinput -set-button-map "Elantech PS/2 TrackPoint" 1 0 3 4 5 6 7

Nicht ganz so einfach gestaltet sich die Sachen für ein extern angeschlossenes ThinkPad Keyboard mit TrackPoint. Ein Eintrag in xsessionrc wird ja nur getriggert, wenn das Keyboard bereits beim Anmelden angeschlossen ist. Das bringt also wenig, wenn das Yoga im laufenden Betriebe angedock wird. Daher müssen wir eine udev Regel für das USB-Keyboard erstellen.

Zunächst muss jedoch noch „at“ installiert werden:

sudo apt install at

Jetzt brauchen wir eine udev Regel unter „/etc/udev/rules.d/“, die auf das Anstecken der ThinkPad Tastatur reagiert. Meine heißt „99-thinkpadKeyboard.rules“:

ACTION=="add", KERNEL=="input[0-9]*" SUBSYSTEM=="input", ATTR{name}=="Lenovo ThinkPad Compact USB Keyboard with TrackPoint", RUN+="/VOLLSTAENDIGER_PFAD_ZUM_SKRIPT/thinkpadKeyboard.sh"

Sie ruft das Skript „/VOLLSTAENDIGER_PFAD_ZUM_SKRIPT/thinkpadKeyboard.sh“ auf:

#!/bin/bash

echo /VOLLSTAENDIGER_PFAD_ZUM_SKRIPT/thinkpadKeyboardMap.sh | at now

Wie man sieht, passiert hier gar nicht viel. Wir rufen einfach ein zweites Skript auf, das dann von „at“ sofort abgearbeitet wird. Dieser Schritt ist notwendig, weil udev auf die Abarbeitung des ersten Skripts wartet, bevor es weitermacht (oder das Script abbricht, wenn dies zu lange dauert). Da wir aber ein eingehängtes und laufendes Keyboard benötigen, um mit xinput darauf zugreifen zu können, müssen wir uns mit dem Zwischenskript behelfen. Die eigentliche Arbeit macht dann das zweite Skript „/VOLLSTAENDIGER_PFAD_ZUM_SKRIPT/thinkpadKeyboardMap.sh“:

#!/bin/bash

# wait a second for udev to initialize the keyboard properly
sleep 1

# get correct XAUTHORITY and DISPLAY
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

# disable paste-on-middle-click for ThinkPad Compact USB Keyboard with TrackPoint
keyboardID=$(xinput | grep "with TrackPoint.*pointer" | sed 's/^.*id=//g' | sed 's/[^0-9].*//g')

if [ "$keyboardID" != "" ]
then
        xinput -set-button-map $keyboardID 1 0 3 4 5 6 7 8 9 10 11 12 13
fi

ThinkPad Yoga 260 – Teil 4: Ubuntu 15.10 – Tablet Modus und Notizen mit dem Stylus

Die folgenden Ausführungen beziehen sich auf:

  • Lenovo ThinkPad YOGA 260 mit BIOS Version 1.14
  • Ubuntu 15.10 mit Kernel 4.4.0-040400

1. Tablet Mode

EDIT: Update

Um im Tablet Modus vernünftig mit dem Stift arbeiten zu können, kümmern wir uns zunächst darum, dass Ubuntu den Tablet-Modus überhaupt erkennt. Dafür legen wir zunächst im Verzeichnis „/etc/acpi/events/“ drei neue Dateien an:

1. „tabletModeYoga260“ mit folgendem Inhalt:

event=ibm/hotkey LEN0068:00 00000080 000060f0
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/tabletModeYoga260.sh

2. „openLidYoga260“ mit folgendem Inhalt:

event=button/lid LID open
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh open

3. „closeLidYoga260“ mit folgendem Inhalt:

event=button/lid LID close
action=/VOLLSTAENDIGER_PFAD_ZUM_SCRIPT/thinkpadState.sh close

Im Verzeichnis „/etc/“ legen wir

4. „thinkpad_state“ mit folgendem Inhalt an:

laptopMode

Im Verzeichnis „VOLLSTAENDIGER_PFAD_ZUM_SCRIPT“ kommen jetzt beide Scripte:

5. „thinkpadState.sh“ mit folgendem Inhalt:

#!/bin/bash
if [ $1 = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
elif [ $1 = "close" ]
then
	echo "closing" > /etc/thinkpad_state
fi

6 „tabletModeYoga260.sh“  mit folgendem Inhalt (meine Version, die im TabletModus sowohl Touchpad als auch Trackpoint ausschaltet (den Touchscreen aber an lässt), den Bildschirminhalt um 90 Grad nach links dreht und die Touchscreen-Eingaben entsprechend anpasst. Außerdem wird die Touchtastatur „onboard“ gestartet):

# tabletMode script for ThinkPad Yoga 260
#
# Version 0.7
# by SaGrLand with special thanks to djahma
#
# Best to use with acpi hindge event "ibm/hotkey LEN0068:00 00000080 000060f0"
# Events "button/lid LID close" and "button/lid LID open" must be handled (they trigger hindge event too)
# In tabletMode touchpad and trackpoint are disabled, screen and touchscreen are rotated 90 degrees counterclockwise, and onboard keyboard is started.
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

#!/bin/bash

# get currentState 
read -r currentState < /etc/thinkpad_state

# get correct XAUTHORITY and DISPLAY (acpid started by root)
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

# get touchpad state (maybe use trackpoint state if your touchpad is disabled by default)
touchpad=$(xinput list-props "ETPS/2 Elantech Touchpad" | grep "Device Enabled" | awk -F ":" '{print $2}')

if [ $currentState = "laptopMode" ]
then
	# disable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 0
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 0

	# disable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 0
	
	# rotate screen and touchscreen to the left
	xrandr -o left
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate ccw

	# start onboard keyboard
	sudo -b -u #1000 onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-default.png "TabletMode" "ON"
	echo "tabletMode" > /etc/thinkpad_state

elif [ $currentState = "tabletMode" ]
then
	# enable touchpad and trackpoint
    	xinput --set-prop "Elantech PS/2 TrackPoint" "Device Enabled" 1
    	xinput --set-prop "ETPS/2 Elantech Touchpad" "Device Enabled" 1

	# enable touchscreen
	# xinput --set-prop "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" "Device Enabled" 1

	# rotate screen and touchscreen to the right
	xrandr -o normal
	xsetwacom set "Wacom Co.,Ltd. Pen and multitouch sensor Finger touch" rotate none

	# stop onboard keyboard
	killall onboard

	# show notification
	# notify-send -i /usr/share/icons/gnome/48x48/emblems/emblem-unreadable.png "TabletMode" "OFF"
	echo "laptopMode" > /etc/thinkpad_state
fi

7. Nicht vergessen, die Dateien 5 und 6 mit „chmod +x“ noch ausführbar zu machen.

8. Systemd das Behandeln des LidSwitchEvents abgewöhnen: Dafür die Datei „/etc/systemd/logind.conf“ öffnen, die Zeile „#handleLidSwitch=“ suchen und wie folgt ändern:

#HandleLidSwitch=ignore

9. Den logind-Dienst neu starten:

sudo systemctl restart systemd-logind

10. Dann noch zur Sicherheit systemd mitteilen, das es acpid beim nächsten Neustart starten soll:

sudo systemctl enable acpid

11. Damit die Scripte ohne Neustart funktionieren, starten wir auch acpid einfach nochmal neu:

sudo systemctl restart acpid

12. Update: Direkt nach dem (Neu)Start des Yoga, steht jetzt thinkpad_state immer auf closing oder opening. Wir müssen also beim Anmelden thinkpad_state noch auf laptopMode setzen (außer des Yoga ist angdockt und daher der Displaydeckel geschlossen. Dafür können wir einfach thinkpad_state mit „sudo chown BENUTZERNAME:BENUTZERNAME /etc/thinkpad_state“ für den aktuellen Benutzer beschreibbar machen. In die beim Anmelden ausgführten Datei „/home/BENUTZERNAME/.xsessionrc“ muss dann nur noch der folgende Code eingetragen werden:

#!/bin/bash
lidState=$(cat /proc/acpi/button/lid/LID/state | sed 's/^state: *//g')

if [ $lidState = "open" ]
then
	echo "laptopMode" > /etc/thinkpad_state
fi

Eigentlich müsste man hier auch noch thinkpad_state abfragen, falls man das Yoga im Tabletmodus ausgeschaltete hat…

2. Stylus und Xournal

Kümmern wir uns als nächstes um den Stift. Ich habe mich für Xournal als Schreibprogramm entschieden, weil damit auch problemlos PDFs annotiert werden können. Hier lässt sich unter „Option->Pen und Touch“ nicht nur die Druckstärkeerkennung einschalten, sondern auch „Touchscreen as Hand Tool“. So kann man mit den Fingern über die Nutzung des Touchscreen etwa scrollen und mit dem Stift schreiben/malen (sonst würde standardmäßig auch der Finger auf dem Touchscreen ein Schreib/Malevent auslösen). Damit das funktioniert, muss aber noch das richtige XInput-Device für den Touch ausgewählt werden. Einfach unter „Option->Pen und Touch: Designate as Touchscreen…“ den Eintrag „Wacom … Finger Touch“ auswählen. Vor dem Beenden nicht vergessen, über „Option->Einstellungen speichern“ die Änderungen zu sichern, sonst darf man sich bei jedem neuen Programmaufruf durch die Einstellungen hangeln.

So weit, so gut. Allerdings gibt es in Xournal Version 0.4.8 einen nervigen Bug: ein übereifrige Internationalisierung macht es unmöglich, dass Xournal beim nächsten Start das gespeicherte Touchscreen Device richtig zuordnet. Mit dem Finger wird daher wieder munter gemalt… Bis es einen Patch gibt, hilft es, einfach nach dem Speichern die Config-Datei „~/.xournal/config“ per Hand zu ändern. Einfach ein fälschlicherweise durch einen Punkt ersetztes Komma vor Ltd beim Touchscreen Device wieder einfügen. So sieht die entsprechende Zeile richtig aus:

touchscreen_device_name=Wacom Co.,Ltd. Pen and multitouch sensor Finger touch

Über „Optionen->Belegung Taste 2“ kann die Funktion der oberen Taste in der Mitte des Stiftes eingestellt werden. Es existiert zwar ein Punkt „Optionen->Belegung Taste 3“, dieser hat bei mir allerdings keine Auswirkungen auf die untere Taste in der Stiftmitte (das scheint an Xournal zu liegen, denn bei MyPaint werden beide Button mit unterschiedlichen Funktionen erkannt).