Abschalten von unattended-upgr

11.01.2020 - Lesezeit: ~1 Minute

In 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

Python Zugriff auf Thunderbird

23.12.2019 - Lesezeit: ~1 Minute

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:

pyQt: QSystemTrayIcon

19.12.2019 - Lesezeit: 3 Minuten

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:

  • Kubuntu 18.04 LTS
  • KDE-Frameworks 5.44.0
  • Qt 5.9.5

Literatur

Tags: KDE5

Raspi Inbetriebnahme

20.11.2019 - Lesezeit: 2 Minuten

1) Download 2019-07-10-raspbian-buster-lite.zip 2) Entpacken 2019-07-10-raspbian-buster-lite.img 3) Auf SD-Card mit usb-creator-gtk 4) Da später per ssh auf den raspi zugegriffen werden soll, in der root partition eine datei ssh anlegen, dann wird der ssh-server beim hochfahren mit gestartet. 5) SD-Card im Raspi einlegen und lange warten 6) Login über angesteckte Tastatur mit user pi password raspberry (Achtung die Tastatur spricht qwerty) deshalb rasberrz eingeben 7) Passwort ändern passwd pi Password is too simple Deshalb als root ausführen: sudo su passwd pi 7) ssh aktivieren sudo systemctl enable ssh sudo systemctl start ssh 8) 7"-Bildschirm um 180° drehen sudo nano /boot/config.txt lcd_rotate=2 9) Soundkarte aktivieren und On-Board-Sound deaktivieren sudo nano /boot/config.txt dtoverlay=hifiberry-dacplus

Enable audio (loads snd_bcm2835)

dtparam=audio=on

10) mocp für die Soundkarte hifiberry-dacplus einrichten nano .moc/config ALSAStutterDefeat=yes ALSAMixer1=Digital 11) mocp testen mocp -S mocp -a http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3 mocp --play mocp -i 12) Bildschirm dunkel schalten sudo nano /boot/config.txt

wnf display ausschalten

hdmi_blanking=1
oder
sudo sh -c "echo '255' >> /sys/class/backlight/rpi_backlight/brightness"
Bildschirm hell schalten
sudo sh -c "echo '0' >> /sys/class/backlight/rpi_backlight/brightness"

13) WLAN einrichten sudo iwlist wlan0 scan | egrep "(ESSID|IEEE)" ESSID:"FritzBoxFlur" IE: IEEE 802.11i/WPA2 Version 1 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf network={ ssid="FritzBoxFlur" psk="DasWlanPasswort" }

Tags: Raspi

VMware Workstation: bora/lib/string/str.c:284 Buffer too small

23.09.2019 - Lesezeit: ~1 Minute

Ein Schreck in der Morgenstunde:

Wollen Sie die neue Programmversion für VMware Workstation 15.5 installieren? Ja. Ich will. Aber die Installation will nicht: bora/lib/string/str.c:284 Buffer too small

Hier im Heiseforum steht die Lösung.

$ sudo LC_ALL=C ./VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle
Tags: