Wenn unter VMware eine Kubuntu-Maschine installiert wird, dann erfolgt die Installation in der Default-Auflösung 800x600.
Auch nach dem Reboot bleibt Kubuntu bei der Meinung, dass eine höhere Auflösung nicht möglich sei:
Hier wird erklärt, dass der Hintergrunddienst KSreen2 dafür zuständig ist. Wenn man diesen Dienst abschaltet lässt sich die Auflösung auf 1920x1080 umschalten.

ffmpeg -i IMAG2476.AVI -c:v libx264 -c:a aac output.mp4
Zuschneiden des Videos dann mit Shotcut
Tags: Linux-Scripte Wildkamera Video ShotcutIn einer meiner VMware-Maschinen (Kubuntu 18.04.2 LTS) lief das Programm unattended-upgr Amok mit einer Prozessorauslastung von 100%. Auch ein Neustart half da nichts. Hier steht beschrieben, wie dem Problem abgeholfen werden kann.
sudo dpkg-reconfigure -plow unattended-upgrades
Nach einem reboot war dann alles wieder gut.
Dieses Shell-Script löst die gleiche Aufgabe in der Konsole:
#!/bin/bash
sudo apt update && sudo apt dist-upgrade
sudo apt-get autoremove --purge
sudo apt-get autoclean
Tags: Linux-Scripte
Literatur
import mailbox
from email.header import decode_header, make_header
import os
from glob import glob
def isDeleted(msg):
flags = msg['X-Mozilla-Status']
try:
flags = int(flags, 16)
if (flags & 8) != 0:
return True
else:
return False
except:
return False
def getSubject(aSubject):
return (make_header(decode_header(aSubject)))
def isUnread(msg):
flags = msg['X-Mozilla-Status']
try:
flags = int(flags, 16)
if (flags & 1) == 0:
return True
else:
return False
except:
return False
def listMails(aMailbox, i):
for message in mailbox.mbox(aMailbox):
subject = message['subject'] # Could possibly be None.
if subject:
if not isDeleted(message):
if isUnread(message):
i += 1
print(i, ' ', getSubject(subject))
return i
def allInboxes(aPath):
i = 0
aInboxes = [y for x in os.walk(aPath) for y in glob(os.path.join(x[0], '*/Inbox'))]
for aInbox in aInboxes:
i = listMails(aInbox, i)
if __name__ == '__main__':
aPfad = os.path.join(os.path.expanduser('~'), '.thunderbird')
allInboxes(aPfad)
Tags:
Gesucht wird ein Programm das im Systray läuft und periodisch nach neuen E-Mails schaut und bei neuen E-Mails das Icon im Systray ändert.
Dieses Programm lässt das Icon im Sekundentakt blinken.
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import sys
from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5.QtGui import QIcon
# das sind Standard-Icon-Bezeichnungen
ICON_MAIL_NEW = 'face-cool'
ICON_MAIL_EMTPY = 'mail-mark-read'
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.canExit = False
self.initUI()
app.setWindowIcon(QIcon.fromTheme(ICON_MAIL_EMTPY))
self.isNewMail = True
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.checkNewMail)
self.timer.start(1000)
def initUI(self):
self.bbCheckMail = QtWidgets.QAction(QIcon.fromTheme(ICON_MAIL_NEW), 'Check for Mail')
self.bbCheckMail.setCheckable(True)
self.bbCheckMail.triggered[bool].connect(self.displayNewMail)
self.toolbar = self.addToolBar('tb')
self.toolbar.addAction(self.bbCheckMail)
layout = QtWidgets.QGridLayout()
plain = QtWidgets.QPlainTextEdit()
layout.addWidget(plain, 0, 0)
centralWidget = QtWidgets.QWidget()
centralWidget.setLayout(layout)
self.setCentralWidget(centralWidget)
# SystemTrayIcon ersstellen
self.icon = QtWidgets.QSystemTrayIcon(QIcon.fromTheme(ICON_MAIL_NEW))
self.icon.show()
menu = QtWidgets.QMenu(parent=None)
menu.aboutToShow.connect(self.sysTrayAction)
self.icon.setContextMenu(menu)
self.setGeometry(300, 300, 300, 300)
# kein Show(), da dass Programm im Hintergrund laufen soll.
# self.show()
def closeEvent(self, event):
# do stuff
if self.canExit:
event.accept() # let the window close
else:
# Das Programm wird erst beim zweiten closeEvent geschlossen.
self.canExit = True
self.hide()
event.ignore()
def displayNewMail(self, active):
if active:
aIcon = QIcon.fromTheme(ICON_MAIL_NEW)
else:
aIcon = QIcon.fromTheme(ICON_MAIL_EMTPY)
self.bbCheckMail.setIcon(aIcon)
app.setWindowIcon(aIcon)
self.icon.setIcon(aIcon)
def checkNewMail(self):
self.isNewMail = not self.isNewMail
self.displayNewMail(self.isNewMail)
def sysTrayAction(self):
self.show()
print('System tray icon clicked.')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MWindow = MainWindow()
sys.exit(app.exec_())
Das Schwierigste an der Entwicklung von KDE-Anwendungen ist bei der Recherche herauszubekommen, ob die in den Weiten des Internets gefundenen Beispiele auch noch für die aktuelle KDE-Version gültig sind.
Ich arbeite zur Zeit mit:
Literatur