Logitech Performance Mouse MX Daumen und Zoom Button in KDE Plasma 5

Ich hab schon länger eine Logitech Performance Mouse MX und hab weder den Daumen-Button noch die Zoom Funktion genutzt. Um ehrlich zu sein, hab ich sogar vergessen, dass es einen Button für den Daumen gibt… Ich mag diese Logitech Reihe vor allem wegen Ihrer Größe und das freilaufende Scrollrad ist einfach die beste Innovation, die Mäuse in den letzten Jahren erfahren haben.

Wie dem auch sei, irgendwo haben ich kürzlich von dem Daumen-Button gelesen und dachte mir „Oh so ein Button auf der Daumenablage ist doch eigentlich recht Praktisch…“

Ich hab schnell festgestellt, dass dank xf86-input-libinput, sowohl Daumen als auch Zoom button schon funktionieren, aber leider keine Funktion zugeordnet haben. Leider bietet Plasma 5 immer noch keine Möglichkeit, Short Cuts mit Maus-Buttons anzulegen. Einzig in den Desktop Settings können wir „Mouse Actions“ anlegen. Da ich aber so gut wie nie auf den Desktop klicke, halte ich das für mich nicht besonders Sinnvoll.

Zoom- und Daumentaste mit xbindkeys & xautomation

Da wir für die Gesichte KDE Plasma 5 Effekte benutzen wollen, müssen wir diese auch unter Settings -> Desktop Behaivor -> Desktop Effects aktivieren.

In Windows zeigt der Daumen-Button alle offenen Fenster – dieser Effekt heißt in Plasma5 Present Windows

Der Zoom Effekt heißt (wer hätte das gedacht) – Zoom (in den Settings muss hier der Zoom Faktor größer als 1.00 sein)

 

Nun installieren wir uns die beiden Programme

pacman -Syu xbindkeys xautomation

jetzt könnten wir uns eine .xbindkeysrc anlegen, mehr dazu HIER

Leider ist .xbindkeysrc aber nicht intelligent genug, um 2 Maus-Buttons gleichzeitig zu verarbeiten und ich möchte ja den Zoom-Button halten und mit dem Scrollrad Rein- und Rauszoomen

Dafür legen wir uns eine .xbindkeysrc.scm mit folgendem Inhalt an. (Das folgende Script ist eine angepasste version aus diesem Beitrag)

;;   This configuration is guile based.
;;   http://www.gnu.org/software/guile/guile.html
;;   This config script is supposed to live in the homedirectory and be named .xbindkeysrc.scm
;;   Based on the script by Zero Angel posted at
;;   http://www.linuxquestions.org/questions/linux-desktop-74/%5Bxbindkeys%5D-advanced-mouse-binds-4175428297/
;;   And adapted by Camilo Rada
;;
;;   It is intended to work with the Logitech Performance MX Mouse
;;   It allows to zoom with the wheel while the zoom button is pressed
;;   It also allows to assing an action to a single press-and-release of the zoom button
;;   The action assigned to that action is Super+z but is can be modified


(define actionperformed 0)

(define (first-binding)
"First binding"
;; Logitech Zoom Button
(xbindkey-function '("b:13") b13-second-binding)
;; Logitech Thumb Button
(xbindkey '("b:10") "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut 'Expose'")
)


(define (reset-first-binding)
"reset first binding"
(ungrab-all-keys)
(remove-all-keys)
;; Set Action Performed state back to 0
(set! actionperformed 0)
;; Forcefully release all modifier keys!
(run-command "/usr/bin/xte 'keyup Control_L' 'keyup Alt_L' 'keyup Shift_L' 'keyup Super_L' &")

(first-binding)
(grab-all-keys))


(define (b13-second-binding)
"Zoom Button Extra Functions"
(ungrab-all-keys)
(remove-all-keys)

;; Scroll Up
(xbindkey-function '("b:4")
                (lambda ()
;; Emulate Ctrl+plus (Zoom in)
                (run-command "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut view_zoom_in &")
        (set! actionperformed 1)
))

;; Scroll Down
(xbindkey-function '("b:5")
                (lambda ()
;; Emulate Ctrl+Alt+minus (Workspace Down)
                (run-command "qdbus org.kde.kglobalaccel /component/kwin invokeShortcut view_zoom_out &")
        (set! actionperformed 1)
))

(xbindkey-function '(release "b:13") (lambda ()
;; Perform Action if Button 8 is pressed and released by itself
(if (= actionperformed 0) (run-command "/usr/bin/xte 'keydown Super_L' 'key z' 'keyup Super_L' &"))
(reset-first-binding)))
(grab-all-keys))

;; (debug)
(first-binding)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; End of xbindkeys configuration ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Jetzt speichern wir uns einfach das Script und können es direkt mit folgenden Befehl testen

xbindkeys -n -v

xbindkeys automatisch mit Systemd starten

Um xbindkeys als Systemd service zu starten müssen wir uns zuerst eine service-file erstellen

dazu erstellt die Datei .config/systemd/user/xbindkeys.service (sollte es die Ordner noch nicht geben, dann erstellt einfach)

[Unit]
Description=xbindkeys
After=xorg.service

[Service]
ExecStart=/usr/bin/xbindkeys -n
StandardOutput=null

[Install]
WantedBy=wm.target

Dannach können wir die Service auch direkt aktivieren und starten

systemctl --user enable xbindkeys 
systemctl --user start xbindkeys

Damit sorgen wir dafür, dass alle Mausfunktionen funktionieren, sobald der user sich einloggt.

Andere Mäuse und andere Funktionen

Auch wenn die configuration speziell für die Logitech Performance Mouse MX ist, sollte sie sich doch recht einfach für andere Mäuse adaptieren lassen.

Archlinux / AMD / Catalyst / Radeon / Tearing / DRI3 / Gallium Nine / wine

Immer wieder kommen auf Reddit und im IRC Fragen, zu Problemen mit dem AMD Catalyst Treiber. Zum einen funktioniert der Treiber nach jedem X.Org-update nicht mehr und zwing Nutzer dazu immer eine alte X.Org-Version zu benutzen. Dann starten viele Games mit dem Treiber gar nicht erst, die 2D-Beschleunigung auf dem Desktop ist eine Katastrophe und Tearing bekommt man quasi gar nicht in den Griff….

catalyst oder xf86-video-ati

Wie schon angesprochen gibt es bei catalyst jede menge Probleme und ständig geht der Treiber kaputt wenn mal wieder ein X.Org update kommt. Der Treiber catalyst ist bei den meisten spielen schneller als der xf86-video-ati, aber der Vorteil wird mit jedem update von dem mesa Treiber etwas kleiner.

Meiner Meinung nach lohnt sich das ganze rumgefrickel mit dem catalyst Treiber nicht, da xf86-video-ati inzwischen auch gut performt und vor allem eine sehr gute 2D-Beschleunigung für den Desktop bietet.

xf86-video-ati, DRI3 und Tearing

Tearing ist sicher eins der größten Probleme auf dem Linux Desktop. Wayland wird das Problem in Zukunft lösen, aber leider wird es noch ein bisschen dauern bis Wayland X.Org ersetzen wird.

Die beste Möglichkeit die uns X.Org bietet, um das Tearing-Problem zu lösen, ist zur Zeit sicher DRI3. Als default wird beim xf86-video-ati Treiber zur Zeit noch DRI2 benutzt, aber wir können DRI3 in der Xorg.conf aktivieren.

um DRI3 zu aktivieren müssen wir folgendes in die „/etc/X11/xorg.conf.d/20-radeon.conf“ eintragen:

Section "Device"
    Identifier "Radeon"
    Driver "radeon"
    Option "DRI" "3"
    Option "AccelMethod" "glamor"
    Option "TearFree" "on"
EndSection

Detaillierte Informationen zu den einzelnen Zeilen und noch weitere Tweaks findet ihr auf https://wiki.archlinux.org/index.php/ATI#Performance_tuning

Nach einem Neustart sollte DRI3 aktiviert sein und der Desktop endlich Tearingfrei. Im Xorg.log könnt Ihr überprüfen ob DRI3 funktioniert führt dafür folgenden befehl aus:

cat /var/log/Xorg.0.log | grep -i DRI3

Wenn DRI3 aktiviert ist sollte hier auch eine Entsprechende Ausgabe bekommen

$ cat /var/log/Xorg.0.log | grep -i DRI3       
[     7.306] (**) RADEON(0): DRI3 enabled

Wine, Gallium Nine und wine-gaming-nine

Gerade wenn ihr wine benutzt werden der xf86-video-ati Treiber und DRI3 sehr interessant. Denn mit dem Gallium Direct3D state tracker (gallium nine) könnt ihr mit wine natives Direct3D 9 benutzen. Das heißt alle Games/Programme die DirectX 9 benutzen, laufen in wine so schnell wie unter Windows, manchmal sogar etwas schneller, weil wine einen extra CPU Prozess für die GPU benutzt.

Hyper Light Drifter – libcurl.so.4: version ‚CURL_OPENSSL_3‘ not found

web_banner

Wer sich das kürzlich erschiene Hyper Light Drifter von gog.com gekauft hat, rennt evtl in Folgenden Fehler:

krizz@technikfreak /Hyper Light Drifter % ./start.sh 
Running Hyper Light Drifter
./HyperLightDrifter.x86: /usr/lib32/libcurl.so.4: version 'CURL_OPENSSL_3' not found (required by ./HyperLightDrifter.x86)

Das Spiel erwartet eine ältere Version von libcurl, welche noch ‚CURL_OPENSSL_3‘ unterstützt.

Bei der Steam-Version des spiels, soltle das keine Rolle spielen, da der Steam client für Linux seine eigenen libs mitbringt und diese lädt. Und genau das müssen wir auch tun, um die gog.com-Version zu starten, ohne unsere libcurl version zu downgraden.

Wenn Ihr z.B. Steam installiert habt, könnt ihr natürlich auch libcurl von Steam benutzen, für alle anderen habe ich hier eine Version zum downlaoden libcurl.so.tar

Entpackt die Version nach „/Hyper Light Drifter/game/“ und ändert die start.sh wie folgt

#!/bin/bash
# GOG.com (www.gog.com)
# HyperLightDrifter

# Initialization
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "${CURRENT_DIR}"
source support/gog_com.shlib

# Game info
GAME_NAME="$(get_gameinfo 1)"
VERSION="$(get_gameinfo 2)"
VERSION_DEV="$(get_gameinfo 3)"

# Actions
run_game() {
 echo "Running ${GAME_NAME}"
 cd game
 LD_PRELOAD=./libcurl.so ./"HyperLightDrifter.x86"
}

default() {
  run_game
}

# Options
define_option "-s" "--start" "start ${GAME_NAME}" "run_game" "$@"

# Defaults
standard_options "$@"

Mit LD_PRELOAD=./libcurl.so ./“HyperLightDrifter.x86″ sorgen wir dafür, dass unsere libcurl Version benutzt wird, wenn ./“HyperLightDrifter.x86″ ausgeführt wird. Und das Spiel sollte Problemlos starten.

xf86-video-ati 7.6.1, xorg-server 1.8.0, xf86-input-libinput 0.15.0

Xorg updates bringt das Wochenende für archlinux 😀

Das der opensource Treiber inzwischen sehr gut performt, ist inzwischen wohl kein Geheimnis mehr. Für viele Linux User ist er sicher die erste Wahl, da catalyst zu bauen, meistens auch sehr viel schmerzen bedeutet…

Seit heute is xf86-video-ati 7.6.1 Archlinux [core] verfügbar. Mit dem Neuen Grafiktreiber, kann jetzt endlich auch auf X.Org Server 1.18 upgedatet werden und der neue Xorg-server bietet jetzt die Möglichkeit auf xf86-input-libinput umzusteigen.

xf86-input-libinput

Der neue Input Treiber für Linux, der größter vorteil ist, das wir jetzt einen Treiber haben, der mit Xorg, Wayland und Mir funktioniert. Win Win für alle 🙂

xf86-video-ati 7.6.1

Für mich die zur zeit interessantest Neuerung an dem Treiber ist die Unterstützung für DRI3. Einen ausführlichen Artikel über die Performance von DRI2 vs DRI3 bei phoronix.com

Auch für Wine Nutzer ist DRI3 sehr interessant, da es ähnlicher zur D3D9 ist als DRI2, was gerade bei wine mit dem Gallium Nine patches noch mal einen guten schub sorgt und dafür sorgt, dass D3D9 Spiele mit wine schneller laufen als unter Windows 😀

Firefox dropt NPAPI support -> Gnome Extension site says that it cannot detect a running copy of Gnome on the system

Nachdem Chrome, in der Version 32, schon den Support für NPAPI entfernt hat, zieht Firefox in der Neusten Version nach. Was für alle Nutzer der Gnomeshell bedeutet, dass man seine Erweiterungen jetzt weder im Chromium noch im Firefox verwalten kann.
Ich bin gespannt, ob man beim Gnome jetzt endlich mal was unternimmt und das ganze System mit den Erweiterungen überarbeitet. Meiner Meiner nach war es von Anfang „kaputt“,
Das größte Problem ist allerdings, dass es keiner für nötig hält neue Erweiterungen doer Updates freizuschalten, so vergehen nach jedem Gnome update Wochen, bis man wieder alle seine Plugin, wie gewohnt, nutzen kann.
Ich vermute, die meisten Arch-Nutzer greifen schon lange auf Gnome Plugins aus dem AUR zurück, bzw clonen direkt das GIT des jeweiligen plugins.

Vielleicht wäre eine GIT-integration ja schon ein guter Ansatz. Ich bin jedenfalls gespannt, ob sich etwas tun wird oder ob nur so etwas kommt wie „…nutzt halt Epiphany, damit geht es weiterhin…“