Skip to content

Instantly share code, notes, and snippets.

@fabiovila
Created May 20, 2021 21:06
Show Gist options
  • Save fabiovila/672d0341b15202be8caa2641daabe262 to your computer and use it in GitHub Desktop.
Save fabiovila/672d0341b15202be8caa2641daabe262 to your computer and use it in GitHub Desktop.
Systray app to change monitor target of wacom digitalizers. Also tray pyqt5 tray app example and base64 image embbeded
#!/usr/bin/python3
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import os
import base64
icon64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAA6cAAAOnAEHlFPdAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAABHRJREFUWMPtlm1sU1Ucxn/39vZlg62121rasZfigDFUFHQbS9BBQAOaNUIgIcaAmKifjImJaJRPJnwxxJgJGEhIXBAEgUgyfFmWYICYSYOuATJwr93Ya7uOlkLf7r3HD0OjgW1dffkiz8dzz/k/v/M/T8658ED/vOyA8780dAKfAt0mRUo67UbdVWgWQOXfKSpN860E2AP8ajFNGi7x5OrPrrTpB3ZViETbSnFwV4VwFZo7sjaSJOmkEKIL+AAoBt4HVlvMcol1jsFotxopnWdih9cheesL6RpU6Ri0k5RLeNx1BY8LHt38i94zmDDMBKDcb1AI0SdJ0uuyxDu2fEW4CkxUlJp5Y7NLWlttJTACl/vzkXM9NHeWU774aTa9WIMkSZzY28BST5j8uQY5kw4oU4y/PTdXfqvMZWYklJaeWJLPxg0riColfNnupnLZOho2VCNJ9zZQmD1AmPkOE+3Xb1cDF7MKgSJJ7fveXSA2rSsVRUVFora2Vvj9fjGTTh1tFGlfnWj6cJFwF5l6sjK/q8r6J62ip7lanDh+WKxZs0a4XC6xc+dOoWnalAD9gT7RdrhWxNtWiofnW7SZTKY7p2tDwZTwuI3o8T5aWlrYvn07TU1NrF+/HlVV77uopLSM/gknFpOMda4yYw6mnTARTeuRmAbxXgwGA7t376a1tRWbzUZXV9fUCy0LJmGcZoD6rAHCUdV36PQISrqPdDoNQFVVFceOHaOycup7xpi/kGRK5+UXiih2mA5nDaBpbPn6bJiaRTEu+c7P1M0/VLPKi+86NDxjx2KSXVkDAAPDoZRwFykMdF7IGMDlcjN8y4VRkbDlTZ+DGUMSjqpa6GYa4r0ZAwBg8QBQ7jYDbMoeIKKeO3hyDJMWIJlMZu5vW0I8qfOK18l8p3H/7Oj/Kmfdsjwx2lojzv/wzYwX0e8KhYLi7KE6kfbViYoSi551B4DRsXBaOOwKw70/ZUxdUFBIMF6MYpCw5SlTvq4ZPRgTUTU9Mp6CxCxv1rs5WFhmAXg1a4DxiPrdvuMj5IgB4vF4Rt4D/QGudQfRdMGOBicl80wf3W+elFE1sNc8kjd+prGKy+p71K/13jNhaPAGft+3xMY7INFPrghQv9zInBwZXYfKjZdEZ3/ing0rGdlDOHQzLQqsihT0XwK89HR34vd9j3q7BxEP4M67wdoqBWPZ5J5OXNnMmU6NjUubp81BpgCEo2pqYDRpztcu8lXj8xRbx/AuNSPL0DOYIKC8yZHzp9m2ehRdh0Q8gtFoQTFIhKMqsiwBbAM+/3PdjDIAMBFVT31yZJjnlsdQiOF4qpFTFyaXJ1Mwz+1Bl60AhCJphq5+wYH9e3hsSzvLt7aL3sHEVeBo1h0AXjv3c3QrgNGgcefObZS7f3y2PJmDn73Ej/5bfLw3xXhEFdGY2h2L63VAcLqimYYQAI/bovc0r5CGgimazozR2naTsXCacFQTkajWEUuoq4DwbGrOSo6HjMHF5Tl6scOkzbEYWoCcf83sgf43+g2OnBeivQyheQAAAABJRU5ErkJggg=="
def monitor1(e):
os.system('xsetwacom set "Wacom Intuos S Pen stylus" MapToOutput eDP1');
def monitor2(e):
os.system('xsetwacom set "Wacom Intuos S Pen stylus" MapToOutput HDMI1');
app = QApplication([])
app.setQuitOnLastWindowClosed(False)
# Adding an icon
iconbin = base64.b64decode(icon64)
qp = QPixmap()
qp.loadFromData(iconbin)
icon = QIcon(qp)
# Adding item on the menu bar
tray = QSystemTrayIcon()
tray.setIcon(icon)
tray.setVisible(True)
# Creating the options
menu = QMenu()
option1 = QAction("Monitor 1")
option2 = QAction("Monitor 2")
option3 = QAction("[Reserved]")
menu.addAction(option1)
menu.addAction(option2)
menu.addAction(option3)
option1.triggered.connect(monitor1)
option2.triggered.connect(monitor2)
# To quit the app
quit = QAction("Quit")
quit.triggered.connect(app.quit)
menu.addAction(quit)
# Adding options to the System Tray
tray.setContextMenu(menu)
app.exec_()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment