Um Elektronik-Projekte vernünftig umsetzen zu können, sind Computer und Internet ein zentrale Werkzeuge. Dabei setzt die ElektronIQ soweit wie möglich auf Open Source. Das Betriebssystem der Computer an den Arbeitsplätzen ist Debian-Linux. Bei der Entwicklung von Elektronik kommen Kicad, Geda und Eagle zum Einsatz.
Die Arbeitsplatz-Computer wurden nach dem folgenden Rezept aufgesetzt. Ein zentraler Teil ist dabei die Liste der installierten Debian-Pakete.
Der DHCP-Server des Instituts bedient nur Maschinen mit bekannter MAC-Numer. Die MAC-Nummer ist ablesbar im Output von ip:
ip link
Dazu kann man ein Live-Linux von einem USB-Stick booten. Von Debian gibt es Live-Images, die gleich mit einem Installer kombiniert sind. Man findet sie unter https://www.debian.org/CD/live/ .
Die Liste mit den im Institutsnetz erlaubten MAC-Adressen findet sich in: /afs/iqo.uni-hannover.de/system/dhcpd/input/*
(kann nur von Admins bearbeitet werden.)
Für Debian-Installation spielt bei 64-Bit-Systemen der Unterschied zwischen Intel und AMD keine Rolle. Für beides ist “amd64” richtig. In jedem Fall braucht man ein Iso-Image mit einem Debian-Installer
Anleitung für jigdo: http://www.debian.org/CD/jigdo-cd/index.en.html
jigdo-lite http://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.jigdoalternativ:
jigdo-lite ./debian-testing-amd64-netinst.jigdo
Das so beschaffte Iso-Image wird auf den nicht gemounteten Stick geschrieben1):
sudo cp debian-irgendwas-amd64-netinst.iso /dev/sdg sudo sync
… dann versucht das System wahrscheinlich einen Systemzustand wiederherzustellen, den es nicht gibt. Nach einer halben Minute bricht es dann ab mit dieser Meldung in /var/log/boot.log: “Gave up waiting for suspend/resume device”
Mit einem zusätzlichen Boot-Parameter “noresume” in /etc/default/grub
kann das vermieden werden: GRUB_CMDLINE_LINUX_DEFAULT="quiet noresume"
Danach grub neu initialisieren lassen mit: update-grub
su # zum Super-User mutieren apt install vim # vi für WarmduscherIn
/root/.bashrc
die für root wesentliche Pfade ergänzen:
export PATH=$PATH:/sbin:/usr/sbin:.(Bei der Gelegenheit in .bashrc die aliase entkommentieren und Farben aktivieren.)
In /etc/ssh/sshd_config : :
/etc/ssh/sshd_config
PermitRootLogin yes GSSAPIAuthentication yes GSSAPICleanupCredentials yes #GSSAPIStrictAcceptorCheck yes GSSAPIKeyExchange yes UsePam yes X11Forwarding yes # Allen Usern ssh-Zugang erlauben, die zur Institutsgruppe iqo gehören # (Muss ganz ans Ende der config-Datei) Match group iqo AllowUsers *
systemctl restart sshd winbind
$ vi /etc/apt/sources.list
# /etc/apt/sources.list von XXXXXXX # aufgesetzt am XXXXXXXXX durch XXXXXXXX ### oldstable deb http://ftp.uni-hannover.de/debian/debian/ oldstable main non-free non-free-firmware contrib deb-src http://ftp.uni-hannover.de/debian/debian/ oldstable main non-free non-free-firmware contrib ### stable deb http://ftp.uni-hannover.de/debian/debian/ stable main non-free non-free-firmware contrib deb-src http://ftp.uni-hannover.de/debian/debian/ stable main non-free non-free-firmware contrib ### urgent upgrades for stable deb http://deb.debian.org/debian stable-updates main non-free non-free-firmware deb-src http://deb.debian.org/debian stable-updates main non-free non-free-firmware ### security patches for stable deb http://deb.debian.org/debian-security/ stable-security main non-free non-free-firmware deb-src http://deb.debian.org/debian-security/ stable-security main non-free non-free-firmware ### testing deb http://ftp.uni-hannover.de/debian/debian/ testing main contrib non-free non-free non-free-firmware deb-src http://ftp.uni-hannover.de/debian/debian/ testing main contrib non-free non-free-firmware ### unstable #deb http://ftp.uni-hannover.de/debian/debian/ unstable main contrib non-free non-free-firmware #deb-src http://ftp.uni-hannover.de/debian/debian/ unstable main contrib non-free non-free-firmware ### experimental #deb http://ftp.uni-hannover.de/debian/debian/ experimental main contrib non-free non-free-firmware #deb-src http://ftp.uni-hannover.de/debian/debian/ experimental main contrib non-free non-free-firmware
Anschließend die Datenbank der Pakete erneuern:
$ apt update $ apt upgrade
dpkg-reconfigure locales
im Dialog diese beiden locales auswählen:
de_DE.UTF-8 en_GB.UTF-8Keine der beiden als Default markieren (sonst nimmt lightwm das falsche Tastatur-Layout)
übernommen von http://serverfault.com/questions/362903/how-do-you-set-a-locale-non-interactively-on-debian-ubuntu
# Configure timezone and locale echo "Europe/Berlin" > /etc/timezone && \ /usr/sbin/dpkg-reconfigure -f noninteractive tzdata && \ sed -i -e 's/# en_US.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen && \ sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen && \ echo 'LANG="de_DE.UTF-8"'>/etc/default/locale && \ /usr/sbin/dpkg-reconfigure --frontend=noninteractive locales # update-locale LANG=de_DE.UTF-8 # Zeitzone überprüfen timedatectl
Wenn es Beschwerden über fehlende Firmware gibt, dann kann man sie möglicherweise händisch hinzufügen.
sudo update-initramfs -u -
apt install wget
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/FOO/BAR
sudo cp BAR /lib/firmware/FOO/BAR
sudo update-initramfs -u
Anschließend sollte beim Boot die Firmware nicht mehr als fehlend bemeckert werden
(laut: https://iqwiki.iqo.uni-hannover.de/doku.php?id=it:configuration_stuff:configurekerberos:start)
apt install krb5-user krb5-auth-dialog
/etc/krb5.conf
durch den folgenden Inhalt ersetzen:
[libdefaults] default_realm = IQO.UNI-HANNOVER.DE dns_canonicalize_hostname = false ticket_lifetime = 24h forwardable = true [realms] IQO.UNI-HANNOVER.DE = { kdc = kerberos.iqo.uni-hannover.de:88 admin_server = kerberos.iqo.uni-hannover.de:749 default_domain = iqo.uni-hannover.de } [appdefaults] pam = { debug = false ticket_lifetime = 1d renew_lifetime = 7d forwardable = true krb4_convert = false krb4_convert_524 = false krb4_use_as_req = false null_afs = false } [domain_realm] .iqo.uni-hannover.de = IQO.UNI-HANNOVER.DE
# Anleitung in: https://iqwiki.iqo.uni-hannover.de/doku.php?id=it:configuration_stuff:configurekerberos:start
apt install openafs-client openafs-modules-dkms openafs-krb5 krb5-user
systemctl restart openafs-client
kinit NAME # Ein Kerberos-Ticket anlegen (NAME erstzt durch einen Login-Namen) aklog # Ein AFS-Token beschaffen klist # Token anzeigen ls -l /afs/iqo.uni-hannover.de # sollte ein paar Ordner anzeigen
Nur sinnvoll, wenn sämtliche User-Daten auf dem Server vorgehalten werden sollen. Lokale Daten funktionieren nur mit Usern, die in LDAP /home/NAME
eingetragen haben.
mv /home /home_local
ln -s /afs/iqo.uni-hannover.de/user/ /home
Anleitung im IQwiki
apt install winbind
– fragt nach, ob von DHCP übergebene Zusatz-Info genutzt werden soll → ja
apt install samba
– wird gebraucht, damit winbd nach dem Boot zur richtigen Zeit startet
/afs/iqo.uni-hannover.de/system/sbin/domain_join
– Christians Einrichtescript ausführen
/usr/sbin/pam-auth-update
ausführen. Im Menü die folgenden beiden Punkte abwählen
apt install sasl2-bin testsaslauthd -u kaimartin -p PASSWORT
apt install aptitude ; # aptitude kommt manchmal weiter, wo apt sich verheddert. aptitude update ; apt install sudo ; apt install firmware-linux-free firmware-linux-nonfree; # Texteditoren apt install vim ; # vernünftiger vi apt install pluma ; # fork von gedit apt install mousepad ; # spartanisch apt install bluefish ; # luxus apt install emacs elpa-org ; # nerdy apt install retext; # simpel für Markdown apt install ghostwriter cmark hspell ; # luxus für Markdown apt install libtext-multimarkdown-perl ; # mit GTK3 kompatible Widget-Themes apt install gtk3-engines-xfce ; apt install clearlooks-phenix-theme ; apt install murrine-themes ; # Einige Icon-Themes apt install gnome-colors ; # einige Standard-Themes von Gnome apt install numix-icon-theme ; # flaches Icon-Theme apt install papirus-icon-theme ; # sehr flaches Icon Theme apt install suru-icon-theme ; # Icon-Theme von Ubuntu-Touch apt install lxde-icon-theme ; # Default Icon-Theme von lxde # Alle desktop-icon-themes, die Debian anbietet apt install `apt-cache search --names-only -q icon-theme |awk '{ print $1 }'` ; apt install bibata-cursor-theme ; # Moderner Mauszeiger, der bis zu 96 Pixel groß werden kann # Desktop-Werkzeuge apt install ding ; # offline-Wörterbuch deutsch-englisch apt install zim ; # UI für Notizen apt install gir1.2-gtksource-4 ; # wird vom Source-Plugin von zim gebraucht apt install galculator apcalc wcalc ; # "Taschenrechner" apt install xfce4-clipman xfce4-clipman-plugin # Zugriff auf ältere Selections apt install filelight baobab ; # graphische Anzeige, wo der Speicherplatz verteilt ist apt install ranger w3m-img ; # File-Manager fürs Terminal apt install krusader ; # File-Manager von KDE apt install krename kompare kget ; # wird von krusader benutzt apt install cairo-dock cairo-dock-gnome-integration-plug-in ; # desktop UI similar to apple apt install qt4-qtconfig ; # to make qt applications happy apt install krb5-auth-dialog ; # button for the kerberos tickets apt install zsh zsh-doc fish; # shells for nerds apt install arj rar unace unrar rpm lhasa ; # diverse zusätzliche Pack-Utensilien apt install gnuplot gnuplot-qt feedgnuplot labplot; # graphische Darstellung von Daten apt install git-lfs # große Dateien mit git apt install firefox-esr chromium falkon konqueror; # Diverse WWW-Browser apt install myspell-de-de ; # deutsche Rechtschreibung für firefox apt install gftp ; # FTP-Client apt install okular atril evince qpdfview ; # PDF-Viewer apt install xournal ; # Anmerkungen, Korrekturen und so weiter in PDF apt install pdftk ; # um einzelne Seiten aus einem PDF-Dokument zu extrahieren apt install poster posterazor; # um PDF-Dokumente auf mehrere Seiten zu verteilen apt install pdfgrep ; # um mit der Komandozeile in PDF-Dokumenten suchen zu können apt install poppler-utils; # viele Utilities für PDFs apt install flpsed; # um PDFs mit Anmerkungen versehen zu können apt install libtiff-tools; # Werkzeuge für TIFF-Grafiken apt install texlive texlive-science texlive-generic-extra texlive-latex-recommended texlive-latex-extra ; # LaTeX apt install texlive-fonts-recommended texlive-fonts-extra; # mehr LaTeX apt install preview-latex-style apt install texlive-lang-english texlive-lang-german texlive-lang-french texlive-lang-european ; # Sprach-Pakete für LaTeX apt install texlive-publishers ; # LaTeX-Dokumentstile von diversen großen Verlagen apt install lyx fonts-lyx; # graphisches Frontend für LaTeX apt install biber ; # Latex-Literaturverwaltung apt install korganizer ; # Kalender-APP, die mit dem IQO-Kalender synchronisiert apt install libreoffice ; # Office-Anwendungen apt install libreoffice-l10n-de libreoffice-l10n-en-gb ; # englisches und deutsches Sprachpaket für Libreoffice apt install libreoffice-gtk3 ; # damit Libreoffice sich an die Style-Vorgaben des XFCE-Desktops hält apt install hyphen-de hyphen-en ; # Worttrennungen für Libreoffice apt install mythes-de ; # deutscher Thesaurus für Libreoffice apt install openclipart ; # Bildchen und Icons zum Einbinden in libreoffice apt install pandoc ; # konvertiert unter anderem libreoffice nach latex apt install scribus; # Desktop-Publishing apt install finger epstool coreutils tree ; # nützliche Commandline Tools apt install hardinfo lshw-gtk hwinfo screenfetch; # zeigt erkannte Hardware an apt install gparted ; # Partitionierung und Formatierung von USB-Sticks, SSDs, etc. apt install playonlinux ; # wine-Umgebung mit funktionaler Multiarch-Konfigration apt install winetricks mono-complete ; # unterstützende Pakete für wine apt install glabels printer-driver-dymo ; # um Dymo-Schilder ausdrucken zu können ## Bilder apt install inkscape xfig psutils pstoedit ; # Vektorgrafik apt install gimp imagemagick ; # Pixelgrafik apt install gpick ; # Color-Picker apt install eom ristretto geeqie; # Image-Viewer apt install darktable ; # Fotos nachbearbeiten apt install mtp-tools gvfs-fuse ; # Damit Smartphones und DSLRs über USB komunizieren apt install gphoto2 ; # Bilder von Nikon, Canon oder Sony holen # Elektronik apt install geda geda-gattrib geda-gsymcheck ; # geda apt install pcb ; # Layout-Editor (von geda) apt install gerbv ; # gerber-Viewer apt install texinfo ; # für die Doku von geda-gaf apt install kicad ; # kicad... apt install kicad-libraries ; apt install kicad-footprints kicad-symbols ; apt install kicad-packages3d kicad-templates ; apt install kicad-doc-en kicad-doc-de kicad-demos ; apt install sigrok pulseview ; # Fernabfrage von Multimeter, Spectrumanalyzer und Oszi ## FPGA apt install electronics-fpga-dev ; # zieht die wichtigsten für FPGA gebrauchten Pakete apt install yosys ; apt install arachne-pnr nextpnr-ice40 ; apt install fpga-icestorm ; apt install gtkwave ; apt install ghdl ; apt install freehdl ; apt install iverilog ; apt install verilator ; apt install dfu-util dfu-programmer ; # Um beim Orange-Crab den Bitstream über USB zu schicken ## Mechanik und 3D-Druck apt install freecad freecad-python3 ; # 3D-CAD apt install librecad ; # 2D-CAD-Programm mit DXF als Speicherformat apt install prusa-slicer ; # Slicer für 3D-Druck ## Chemie apt install avogadro ; # malt dreidimensionale Moleküle ## Debian Paket-Verwaltung apt install synaptic apt-xapian-index ; # damit synaptic eine Suche eingebaut hat apt install apt-show-versions ; # zeigt die Version installierter Pakete an. apt install apt-file apt ; # sucht auch in nicht installierten Paketen nach Dateien apt-file update ; # den Index von apt-file erzeugen # Email und Chat apt install claws-mail claws-mail-themes ; apt install claws-mail-plugins claws-mail-extra-plugins ; apt install clawsker claws-mail-tools ; apt install sqlitebrowser ; # grafische Benutzerschnittstelle für Sqlite apt install pgadmin3 ; # grafische Benutzerschnittstelle für Postgresql apt install s-nail ; # verbesserte Alternative zu mail -- für die Auto-Logout-Mechanik apt install kleopatra seahorse ; # Verwaltung von Schlüsseln und Zertifikaten apt install nheko ; # Client für Matrix-Chat apt install gajim gajim-openpgp ; # Client für XMPP-Chat # Sound und Audio apt install audacious smplayer; # Player apt install streamtuner2 ; # Webradio apt install beep ; # Piiep # Screensaver #apt remove xscreensaver ; # den im XFCE enthaltenen Screensaver entfernen (nicht mehr nötig in buster) apt install xautolock zenity mailutils; # für den automatischen Log-out nach Inaktivität # apt remove xtrlock light-locker ; # mehr als ein Lock-Programm kann zu Verwirrungen führen (FIXME: muss das sein?) # Schriften apt install fonts-go; # Schrift für Dymo-Schilder apt install fonts-rufscript fonts-taml-tscu ; # Schreibschriftschriften rufscript, tscu-comic apt install fonts-tomsontalks; # Comic-Smallcaps tomsontalks apt install ttf-mscorefonts-installer ; # andale, arial, comic sans, courier, georgia, trebuchet, verdana, webdings apt install fonts-fork-awsome ; # Icons im Stil von fonts-awsome apt install gwaterfall ; # Viewer für Schriften apt install fonts-powerline ; # für den Prompt auf den Servern web, afs1, afs2, ... ## Programmieren, Entwickeln apt install build-essential autotools-dev cmake ; # Zieht Compiler und Co. apt install ddd devhelp ; # Debugger apt install anjuta anjuta-extras ; # IDE fürs Programmieren apt install codelite codelite-plugins ; # noch ein IDE apt install geany ; # umfangreicher Editor apt install git git-cola git-gui; # Versionskontrolle mit git apt install thunar-vcs-plugin ; # git im File-Manager # Phython apt install python3-numpy ; apt install python3-serial ; apt install python3-scipy ; apt install python3-pandas ; apt install python3-matplotlib ; apt install ipython3 ; apt install python3-pip ; apt install esptool ; apt install jupyter python-notebook-doc ; # Arduino apt install arduino arduino-mk flashrom ; apt install avrdude avrdude-doc ; apt install screen ; # Login apt install sddm ; # sddm statt lightdm apt install kde-config-sddm sddm-theme-elarun # Das Default-Theme von ssdm taugt nicht wirklich gut für 200 User apt remove lightdm ; # Ansible apt install ansible ; apt install sshpass ; # Braille apt install brltty ; apt install brltty-espeak ; apt install brltty-flite ; apt install brltty-x11 ; apt install console-braille ; apt install braillefont ;q apt install orca ; # Diverse Tools apt install sakura ; # Terminal ohne Schnörkel apt install meld ; # GUI für diff apt install gpm ; # Maus für die Textkonsole apt install htop ; # eine funktionalere Alternative zu top apt install progress; # zeigt den Fortschritt von Kopier-Aktionen apt install reptyr ; # einen Prozess in eine andere Textkonsole verpflanzen apt install ldap-utils ; # enthält unter anderem ldapsearch apt install memtest86+ ; # Speichertest — wird in grub eingebunden apt install locate ; # indizierte Suche für Dateinamen über die ganze Festplatte apt install command-not-found ; # macht auf der Kommandozeile Vorschläge, wenn etwas fehlt update-command-not-found ; # den Index von command-not-found erzeugen apt install gvfs-bin ; # Tools für die Default-Anwendungen mit MIME apt install systemsettings qt5ct ; # Einstellungen von KDE-Anwendungen apt install gtk3-nocsd ; # Richtige Fensterrahmen für GTK3-Anwendungen apt install x2goclient x2goserver cups-x2go ; # Auf die Grafik-Session von anderen Linuxrechnern zugreifen (lassen) apt install gvncviewer gino xtightvncviewer; # Auf die Grafiksession von anderen Windows-Rechnern zugreifen apt install syncthing syncthingtray; # Spezielle Ordner mit anderen Rechnern abgleichen
update-alternatives --install /usr/bin/edit editor /usr/bin/vim 100 ; update-alternatives --install /usr/bin/edit editor /usr/bin/pluma 100 ; update-alternatives --set editor /usr/bin/pluma ; update-alternatives --install /usr/bin/gnome-text-editor gnome-text-editor /usr/bin/vim 100 ; update-alternatives --install /usr/bin/gnome-text-editor gnome-text-editor /usr/bin/pluma 100 ; update-alternatives --set gnome-text-editor /usr/bin/pluma ; update-alternatives --set gnome-www-browser /usr/bin/firefox-esr ; update-alternatives --set x-www-browser /usr/bin/firefox-esr ; update-alternatives --install /usr/bin/www-browser www-browser /usr/bin/firefox-esr 100 ; update-alternatives --set www-browser /usr/bin/firefox-esr ;
In /etc/lxdm/lxdm.conf
xfce4 als Default-Session setzen, keine Sprach-Auswahl und keine User-Liste anzeigen:
[base] session=/usr/bin/startxfce4 ... [display] lang=0 ... [userlist] disable=1
/etc/sddm.conf
[Autologin] Relogin=false Session= User= [Users] MaximumUid=65000 MinimumUid=10000 RememberLastUser=false RememberLastSession=false [General] HaltCommand= RebootCommand= EnableHiDPI=true GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192 [Theme] Current=elarun CursorTheme=Adwaita [X11] ServerArguments= # eventuell auch: ServerArguments=-dpi 123 EnableHiDPI=true [Wayland] EnableHiDPI=true
EnableHiDPI=true
ist natürlich nur auf Systemen mit hochauflösendem Bildschirm sinnvoll.
Mit RememberLastUser=false
und RememberLastSession=false
nimmt sddm die alphabetisch erste Session falls man nicht aktiv eine andere Wahl trifft. Das wäre unerwünschterweise plasma statt xfce. Deswegen die desktop-Datei für die xfce-Session auf einen Namen kopieren, der weiter oben im Alphabet steht als Plasma:
sudo cp /usr/share/xsessions/xfce.desktop /usr/share/xsessions/elektroniq.desktop
KDE enthält einen Screenlock-Mechanismus, der nach einer gewissen Zeit der Inaktivität ausgelöst wird. Dann kommt man nur mit dem Passwort des jeweiligen aktiven Users wieder in den grafischen Desktop. Das ist bei den Arbeitzplatzrechnern der ElektronIQ eher unerwünscht. Leider kann der Screen-Locker nicht einzeln entinstalliert werden. Als schmutzige Umgehungstaktik kann dem Lock-Programm das Execute-Bit weggenommen werden: sudo chmod a-x /usr/share/doc/libkscreenlocker5
KDEwallet nervt mit Passwort-Anfragen selbst wenn man es nicht wirklich benutzt. Kann man nicht getrennt entinstallieren, aber wenigstens abschalten mit systemsettings → Account_Details → Wallet_Preferences → Apply Alternativ mit der Kommandozeile:
kwriteconfig5 --file kwalletrc --group 'Wallet' --key 'Enabled' 'false' kwriteconfig5 --file kwalletrc --group 'Wallet' --key 'First Use' 'false'Mehr Vorschläge: bei superuser
Mit dem Befehl tune2fs
kann man beeinflussen, wann fsck das nächste Mal das Dateisystem auf Konsistenz prüft:
tune2fs -c 1 /dev/sda1
tune2fs -c -1 /dev/sda1
Cairo-Dock sollte vor dem Start ein wenig warten: /usr/local/bin/cairo-dock-wrapper.sh :
#!/bin/sh sleep 3s
Die von Debian mitgelieferten Themes statten die Fenster fast alle mit einem sehr schmalen Rand aus. Das macht es etwas schwer, an den Rändern mit der Maus zu ziehen. Bei https://www.xfce-look.org gibt es einige für HiDPI gedachte Themes, die in diesem Aspekt besser sind. Die Themes in /usr/local/share/themes
installieren:
sudo cp /afs/iqo.uni-hannover.de/user/kmk/tmp/themes/ /usr/local/share -r
In /etc/firefox/policies/policies.json
kann man abschalten, dass Firefox sich in den Umgang mit Passwörtern einmischt. Außerdem kann dort der Single-Login mit SPNEGO aktiviert werden:
{ "policies": { "BlockAboutConfig": true, "DisablePasswordReveal": true, "DisableMasterPasswordCreation": true, "OfferToSaveLogins": false, "OfferToSaveLoginsDefault": false, "PasswordManagerEnabled": false, "Authentication": { "SPNEGO": [".iqo.uni-hannover.de"], "Delegated": [".iqo.uni-hannover.de"] } } }
cd /usr/local/src ; sudo mkdir geda ; sudo chgrp iqo geda ; sudo chmod g+w geda ; cd geda ; sudo apt install libgamin-dev ; sudo apt-get build-dep geda-gschem ; git clone git://git.geda-project.org/geda-gaf.git ; cd geda-gaf ; ./autogen.sh ; ./configure ; make -j8 ; sudo make install ; sudo ldconfig ; cd .. ; sudo apt-get build-dep pcb ; git clone git://git.geda-project.org/pcb.git ; cd pcb ; ./autogen.sh ; ./configure ; make -j8 ; sudo make install ; # remove the default footprint libraries: sudo rm -rf /usr/local/share/pcb/newlib /usr/local/share/pcb/pcblib-newlib /usr/local/share/pcb/m4 ; sudo update-alternatives --install /usr/bin/pcb pcb /usr/local/bin/pcb 100 ; sudo update-alternatives --set pcb /usr/local/bin/pcb ;
Eagle ist ganz aus Debian heraus gefallen. Ausweichlösung: Das Archiv von Ubuntu in /etc/apt/source.list
ergänzen:
deb http://archive.ubuntu.com/ubuntu xenial main multiverse sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5Eagle ist nur als i386-Binary verfügbar. Das heißt, man muss Multiarch aktivieren. wenn der Rechner ansonsten als mit Binaries für AMD64 läuft. Dazu:
apt install multiarch-support ; dpkg --add-architecture i386 ; apt update ; apt install eagle ; apt install libjpeg62:i386 ; # wird für eagle-AEI gebrauchtUnsere Lizenz muss für jeden Nutzer einzeln beim ersten Start von eagle angegeben werden.
Für die Dokumentation braucht eagle-AEI die Schriftart luximono. Die ist zwar umsonst, aber nicht frei. Deswegen ist dieser Klimmzug nötig:
cd [[file:///tmp|/tmp]] ; sudo wget http://tug.org/fonts/getnonfreefonts/install-getnonfreefonts ; sudo texlua install-getnonfreefonts ; sudo getnonfreefonts-sys luximono ;Bei der Gelegenheit kann man auch die anderen semifreien Schriften installieren:
sudo getnonfreefonts-sys webomints garamond eurofont dayroman classico lettergothic arial-urw ;
In /usr/local/eagle-AEI
installieren:
cp -r afs/iqo.uni-hannover.de/products/eagle/5.7_eagle-AEI usr/local/eagle-AEI ;
ltspice braucht wine32, Mono und diverse Window-Bindings. Für wine32 muss i386 als weitere Architektur in Gang gebracht werden. Siehe die Einrichtung von eagle.
apt install wine wine32 mono-runtime mono-gac winbind ; cd /usr/local/share ; wget http://ltspice.linear.com/software/LTspiceIV.exe ;
Einmal pro Rechner ausführen (wine64 scheitert, weil das Binary nur für win32 compiliert wurde):
wine /usr/local/share/LTspiceIV.exe ;
Anleitung: https://www.pcsuggest.com/install-ltspice-linux/ Download des Installers von http://www.linear.com/designtools/software/#LTspice :
dpkg --add-architecture i386 apt-get update apt-get install wine mono-runtime mono-vgac libwine-gecko-2.21 wine $PATH-TO-LTSPICE-INSTALLER$/XVIIx64.exe
wine etwas angenehmer nutzbar machen:
winecfg Applications → Windows_Version → Windows 10 Graphics → Screen resolution → 144 dpi
Der Simulator qucs ist nicht in den Debian-Repositories. Man kann aber von Ubuntu ein Paket laden und installieren: :
cd /tmp ; wget https://launchpad.net/~qucs/+archive/qucs/+files/qucs_0.0.18-2_amd64.deb ; dpkg -i qucs_0.0.18-2_amd64.deb ;Das Projekt auf Launchpad: https://launchpad.net/~qucs/+archive/ubuntu/qucs/+packages → Letzter Stand ist v0.0.20-2 von 2020.
xserver-allow-tcp=true
[server] tcp_listen=1
[X11] ServerArguments=(Die Server-Arguments haben als Default ein
-nolisten tcp
. Das verhindert, dass X11-Anwendungen von Remote-Rechnern dargestellt werden.)
In /etc/ssh/ssh_config
X11 für Institutsrechner erlauben und dabei eine Ausnahme für git machen:
Host *.iqo.uni-hannover.de ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes GSSAPIAuthentication yes GSSAPIDelegateCredentials no Host git.iqo.uni-hannover.de ForwardX11 no ForwardX11Trusted no User gitea IdentityFile ~/.ssh/id_rsa
Um beim Aufruf von ssh die Option -X
weglassen zu können, kann auf dem Clienten $HOME/.ssh/config
passend konfiguriert werden:
################### # all hosts in iqo # (for this rule to match, ssh needs to be called with the complete name of the server) ################### Host *.iqo.uni-hannover.de ForwardX11 yes ForwardX11Trusted yes #################### # Specific hosts #################### Match host "bibo,akka,schusch,hoots,orville" ForwardX11 yes ForwardX11Trusted yes
Wenn es haufenweise CSS-Fehler hagelt und Knöpfe und Menüs lieblos ohne Abstand nebeneinander gequetscht sind, dann gibt es ein Problem mit den GTK-Themes. Eventuell hilft es dann, auf dem Server die GTK3-Themes zu entfernen. Dann wird als Fallback GTK2 benutzt:
apt-get remove gtk3-engines-xfceAuf lange Sicht ist das allerdings keine gute Lösung, weil GTK2 allgemein zu Gunsten von GTK3 abgelöst wird.
Damit der Dateimanager von XFCE es mitbekommt, wenn ein USB-Stick eingesteckt wird, muss das Paket thunar-volman installiert sein.
Das normale Verfahren mit USB-Sticks bei XFCE setzt voraus, dass der jeweilge User in /etc/groups zur Gruppe plugdev gehört. Das ist auf den Rechnern mit LDAP-Zugang nicht wirklich darstellbar. Als Folge kann ein User den USB-Stick nicht mounten. Und wenn er von Root gemountet ist, fehlen die passenden Lese- und Schreibrechte.
Um allen Usern die Benutzung von USB-Sticks zu erlauben, gibt es eine erstaunlich große Vielzahl an Werkzeugen. Zwei davon sind usbmount und udisk. Eine passende Konfiguration von usbmount hat lange Zeit in der ElektronIQ funktioniert. Leider ist das Paket etwa ebenso lange ohne Maintainer. Und so ist es irgendwann auf dem Weg von jessie zu stretch soweit zerbrochen, dass User unter XFCE nicht mehr an USB-Sticks heran kamen. Die moderne Alternative ist offenbar udisk2
apt install udisks2
Die Konfig-Datei /etc/polkit-1/localauthority/50-local.d/udisks.pkla
anlegen:
[udisks] Identity=unix-user:* Action=org.freedesktop.udisks* ResultAny=yesNach ausloggen und wieder einloggen sollten USB-Sticks automagisch eingehängt werden.
Der Inhalt der Datei /usr/share/applications/mimeapps.list
bestimmt die Reihenfolge, in der Anwendungen an den Start kommen:
[Default Applications] text/csv=pluma.desktop;libreoffice-calc.desktop;gnumeric.desktop application/pdf=atril.desktop application/x-pcb-layout=pcb.desktop application/x-geda-schematic=geda-gschem.desktop;pluma.desktop application/x-geda-symbol=geda-gschem.desktop;pluma.desktop application/octet-stream=varicad.desktop [Added Associations] application/x-geda-schematic=geda-gschem.desktop;pluma.desktop application/x-geda-symbol=geda-gschem.desktop;pluma.desktop application/octet-stream=varicad.desktop;Eventuell müssen die MIME-Daten neu gelesen werden:
sudo update-mime-database /usr/share/mime sudo update-desktop-database /usr/share/applications/
userdel NAME
NAME = "kmk" echo $NAME " ALL = NOPASSWD:ALL" > /etc/sudoers.d/$NAME chmod 440 /etc/sudoers.d/$NAME
In /etc/default/keyboard
diese Option setzen: XKBOPTIONS=“caps:none”
In /etc/cups/cups-browsed.conf
einen Verweis auf unseren Server einfügen: :
echo " # IQ specific: BrowsePoll printserv.iqo.uni-hannover.de:631 CreateIPPPrinterQueues Yes " >> /etc/cups/cups-browsed.conf ;
apt install cups-pdfCups hat ein Problem damit, ins AFS zu schreiben. Daher in
/etc/cups/cups-pdf.conf
den Output nach /tmp
umlenken:
Out /tmp/PDF-$(USER)
Systemweit: Eine Datei /etc/cups/lpoptions
mit einer Duplex-Zeile anlegen:
Default RICOH_Aficio_MP_301_D323_printserv_iqo_uni_hannover_de Duplex=NoneAlternativ die gleiche Zeile auf User-Ebene in der Datei
~/.cups/lpoptions
Oder mit dem Befehl lpoptions -d RICOH_Aficio_MP_301_D323_printserv_iqo_uni_hannover_de
Von der Kommandozeile aus drucken, geht dann mit: lpr was.pdf
Für Linux gibt es beim LUIS ein Debian-Paket:
wget https://www.luis.uni-hannover.de/fileadmin/arbeitsplatzpc/luh_intern/Rotis-Font/luh-fonts-rotissans_1.100-1_all.deb sudo dpkg -i luh-fonts-rotissans_1.100-1_all.deb sudo apt install libotf-bin gwaterfall sudo fc-cache -f -vEventuell wird zusätzlich wird das Paket libotf-bin gebraucht.
Den Font-Cache erneuern: fc-cache -f -v
Viewer für Schriften: waterfall oder gnome-font-viewer oder gnome-specimen
XFCE und andere Desktopumgebungen legen recht hartnäckig diverse Ordner an, die wir hier nicht wirklich brauchen (Music, Videos, Pictures,…). Das kann man abschalten in /etc/xdg/user-dirs.conf mit der Zeile:
enabled=FalseDoku dazu
Debian ist von Haus aus so konfiguriert, dass die Pakete nach der Installation nicht gelöscht, sondern in /var/cache/apt/archives aufbewahrt werden. Gedacht ist das für den Fall, dass man große Teile des Systems neu installieren muss und nur ein langsames Internet hat. Dabei kommt im Laufe der Zeit einiges zusammen (~40 GB). Um diese Halde wieder loszuwerden, hilft der Befehl: sudo apt-get clean
Eine Datei /etc/apt/apt.conf.d/30do_not_keep_archives
hält apt davon ab, die Halde überhaupt anzulegen:
// After installation, do not keep downloaded packages in /var/cache/apt/archive/ DSelect { Clean "always"; // always|auto|prompt|never }
Das GUI synaptic muss man getrennt überzeugen:
systemd legt recht umfangreiche logs in /var/log/journal
an.
Bei Debian kann das defaultmäßig ohne Begrenzung wachsen, bis die Platte voll ist.
sudo journalctl --disk-usage # Größe des logs ermitteln sudo journalctl --rotate # archivieren, was im Moment aktiv ist sudo journalctl --vacuum-time=2days # alles wegschmeißen, was älter als zwei Tage ist
In /etc/systemd/journald.conf diese Zeile einfügen:
SystemMaxUse=200M
Emailverschicker der Debian-Wahl ist exim4. Exim4 als “smarthost” konfigurieren - entweder bei der konfiguration des Pakets, oder in der Konfig-Datei etc/exim4/update-exim4.conf.conf
: :
dc_eximconfig_configtype='smarthost' dc_other_hostnames='' dc_local_interfaces='' dc_readhost='iqo.uni-hannover.de' dc_relay_domains='' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='smtp.uni-hannover.de::587' CFILEMODE='644' dc_use_split_config='true' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='mail_spool'
Der Befehl /usr/bin/mail aus dem Paket mail-utils kann in Scripten zum Verschicken von Emails genutzt werden.
Debian benutzt etwas andere Dateien zur Konfiguration als in “info mail” suggeriert. Welche das sind, und ob sie erfolgreich gelesen wurden, erfährt man mit :
$ mail --config-verboseIm Moment (Oktober 2023, trixie/testing) sind das /etc/mailutils.conf und $HOME/.mail .
In $HOME/.mail sollte mindestens der Email-Absender gesetzt werden: :
$ cat ~/.mail address { email-addr knaak@iqo.uni-hannover.de; };Mehr Konfigurationsmöglichkeiten erfährt man mit:
mail –config-help
Die Datei /etc/exim4/passwd.client kann ein Account/Passwort-Paar enthalten: :
smtp.uni-hannover.de:knaak@iqo.uni-hannover.de:PASSWORT: Ein Passwort im Klartext ist natürlich keine so prickelnde Idee. Einziger Schutz sind hier die Unix-Rechte…
Die Config einlesen und exim neu starten:
sudo update-exim4.conf sudo systemctl restart exim4Test mit /usr/bin/mail:
mail -s "von mir an mich" knaak@iqo.uni-hannover.de < was.txtWenn die Test-mail nicht ankommt, kann das Log von exim hilfreich sein:
/var/log/exim4/mainlog
Falls die Zeitzone für den Rechner nicht richtig eingestellt ist, kann man das korrigieren mit: sudo dpkg-reconfigure tzdata
Obwohl Dymo es auf ihrer Web-Site verschweigen, lassen sich die LabelManager von Linux aus ansteuern. Sie werden in CUPS als normale USB-Drucker eingebunden. Es gibt seit 2014 sogar ein Treiber-Paket im Debian-Repo (printer-driver-dymo) Mit diesem Paket braucht man den Treiber nicht selber zu kompilieren.
apt install libcups2-dev libcupsimage2-dev
cd /usr/local/src mkdir dymo cd dymo # http://www.dymo-label-printers.co.uk/news/download-dymo-sdk-for-linux.html wget http://www.dymo-label-printers.co.uk/user/dymo-cups-drivers-1.4.0.tar.gz tar -xzf dymo-cups-drivers-1.4.0.tar.gz cd dymo-cups-drivers-1.4.0.5 configure make make install
poppler aktivieren: :
sudo lpadmin -p DYMO_LabelManager_PnP_an_kwak -o pdftops-renderer-default=pdftopsghostscript aktivieren: :
sudo lpadmin -p DYMO_LabelManager_PnP_an_kwak -o pdftops-renderer-default=gsrückgängig mit: :
lpadmin -p DYMO_LabelManager_PnP_an_kwak -R pdftops-renderer-default
Der Drucker sollte beim Einstecken automagisch erkannt werden. Wenn nicht, kann man ihn als root entweder im www-Browser über http://localhost:631 → Printers → Add_Printers
oder mit system-config-printer
anmelden. Ein sudo reicht nicht. In jedem Fall sollte der eine, oder andere Parameter angepasst werden:
Mit diesen Voreinstellungen wird leerer Raum am Ende des Schilds nicht gedruckt. Das heißt, die Länge des Schilds passt sich automatisch an den Inhalt an. Wenn hinter dem letzten Buchstaben noch leerer Platz erwünscht ist, hilft ein einzelnes schwarzes Pixel. Die maximale Länge wird durch die Breite des Templates bestimmt.
Es gibt ein git-Projekt mit Vorlagen für Dymo-Drucker: https://git.iqo.uni-hannover.de/elektroniq/glabels.git
glabels3 sucht Schilder-Vorlagen in folgenden Pfaden:
$HOME/.glabels
$HOME/.config/libglabels/templates/
– Die Dateien sollten die Endung “templates” haben. /usr/share/libglabels-3.0/templates/
– Die Dateien müssen die Endung “templates.xml” haben.Es gibt für den LM-PNP einen Skalierungs-Irrtum, der dazu führt, dass der tatsächliche Ausdruck deutlich kleiner ausfällt als am Bildschirm vorgegeben. Zur Kompensation sollten Höhe und Breite in den Templates um den Faktor 1.7 zu groß gewählt werden.
# Eine Zusammenstellung mit Templates für Dymo-Schilder befindet sich im afs: # /afs/iqo.uni-hannover.de/system/i386_linux26/products/glabels/dymo-D1-templates.xml # Die Default-Templates aus dem Weg schaffen und stattdessen die Dymo-Sammlung des IQ verlinken: sudo rm /usr/share/libglabels-3.0/templates/*templates.xml ; sudo rm /usr/share/libglabels-3.0/templates/paper-sizes.xml ; sudo ln -s /afs/iqo.uni-hannover.de/system/i386_linux26/products/glabels/dymo-D1-templates.xml /usr/share/libglabels-3.0/templates/ ; sudo ln -s /afs/iqo.uni-hannover.de/system/i386_linux26/products/glabels/paper-sizes.xml /usr/share/libglabels-3.0/templates/ ;Diese Ersetzung muss nach Upgrade wie derholt werden.
glabels-3 wird seit ein paar Jahren nicht mehr weiterentwickelt. Stattdessen gibt es vom selben Autor den neu geschriebenen Nachfolger “glabels-qt”. Davon gibt es allerdings noch keinen Release (Frühling 2023) und der Hauptautor Jim Evins ist nicht mehr wirklich aktiv. Seit November 2022 ist Jim Lieb mit einem “weichen” Fork eingesprungen. In seinem github-Repo gibt es einen Branch 'next' mit dem neusten Stand.
Also muss man selbst compilieren: sudo apt install qtbase5-dev libqt5svg5-dev qttools5-dev zlib1g-dev pkgconf libqrencode-dev cd /usr/local/src # git clone https://github.com/jimevins/glabels-qt.git git clone https://github.com/lieb/glabels-qt.git cd glabels-qt git checkout origin/next mkdir build cd build cmake .. make sudo make install
Unsere eigenen Dymo-Vorlagen für glabels-qt befinden sich in einem eigenen git-Projekt.
Die Vorlagen sollten nach /usr/local/share/glabels-qt/templates
kopiert werden.
Ebenso die um label_rolls erweiterte Datei categories.xml
Die Auflösung der Dymoschilder ist ziemlich grob. Deswegen sehen bei kleinen Schriftgrößen nicht alle Schriften gut aus. Einigermaßen gut funktionieren:
lpr -P DYMO_LabelManager_PnP3 -o natural-scaling='72' -o mediatype=12mm -o pagesize=Custom.12x125mm -o dymoprintchainmarksatdocend -o dymo-halftoning=errordiffusion -o page-right=0 M4-pinta.bmp
lpr -P DYMO_LabelMANAGER_PC_II -o natural-scaling='100' -o ppi="180" -o pagesize=Custom.24x125mm -o dymoprintchainmarksatdocend=0 -o DymoContinuousPaper=0 ~/Beschriftung/Testmuster/fraktalplusgrau127.gif
lpr -P DYMO-LabelMANAGER-PnP_orville -o natural-scaling='100' -o ppi="180" -o pagesize=Custom.12x125mm -o dymoprintchainmarksatdocend=0 -o DymoContinuousPaper=0 ~/Beschriftung/Testmuster/fraktalplusgrau63.gif
lpr -P DYMO_LabelMANAGER_PC_II -o natural-scaling='216' -o mediatype=24mm -o pagesize=Custom.24x125mm -o dymoprintchainmarksatdocend -o dymo-halftoning=errordiffusion -o page-right=0 diezeit-label.png
Der Kopf des Labelmanager_PC_II druckt 127 Pixelzeilen
lpr -P DYMO_LabelMANAGER_PC_II -o natural-scaling='100' -o ppi="180" -o pagesize=Custom.24x225mm -o dymoprintchainmarksatdocend=0 -o DymoContinuousPaper=0 Kabel_fuer_Nat_Instr.png
Theoretisch sollten Bitmap-Schriften auf der niedrigen Auflösung der Dymo-Drucker vorteilhaft aussehen.
Grafisches Rohmaterial für Aufkleber
sudo dpkg -i [[file:///afs/iqo.uni-hannover.de/user/kmk/Software/varicad2011-en_1.10_amd64.deb|/afs/iqo.uni-hannover.de/user/kmk/Software/varicad2011-en_1.10_amd64.deb]]
mkdir Projekte mkdir Konstruktion cd Projekte/Konstruktion git clone http://bibo/git/varicad-lib.gitUnsere Lizenz muss für jeden Nutzer einzeln beim ersten Start von Varicad angegeben werden.
: Ist das auch in Buster noch korrekt? Oder haben die Entwickler nach User-Protest eingelenkt?
Seit Version 1.6.5 bietet thunar bei (bash-) Scripten nicht mehr an, sie auszuführen. Das kann man als “hidden setting” wieder aktivieren. (siehe https://bbs.archlinux.org/viewtopic.php?id=194464 )
Befehl, der die Settings dauerhaft setzt:
xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set trueDiese Einstellung landet in
$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
Alternativ kann man die Option im xfce4-settings-editor setzen.
Normalerweise haben bei Debian nur Angehörige der Gruppe “dialout” Zugriff auf die seriellen Schnittstellen. Diese Sicherheitsschwelle stammt noch aus den Zeiten als man sich per Modem ins Internet einwählte. Sie verhindert aber auch, dass ein Arduino von einem “nur” über Kerberos authentifizierten User bedient werden kann. Für die Arbeitsplatzrechner in der ElektronIQ ist das eher hinderlich. Abhilfe schafft diese Regel für udev in /lib/udev/rules.d/10-local.rules
:
# This rule is specific to the desktops in ElektronIQ # It is supposed to allow all users to access the serial port KERNEL=="ACM0", MODE="0777" KERNEL=="ACM1", MODE="0777" KERNEL=="ACM2", MODE="0777" KERNEL=="ACM3", MODE="0777" KERNEL=="ACM4", MODE="0777" KERNEL=="ACM5", MODE="0777" KERNEL=="ACM6", MODE="0777" KERNEL=="ACM7", MODE="0777" KERNEL=="ACM8", MODE="0777" KERNEL=="ACM9", MODE="0777"
:Wird das in Trixie noch gebraucht? Die besonders preiswerten Arduino-Clones haben statt FTDI einen anderen Chip für die USB-Schnittstelle - meist CHP340g. Sie brauchen einen dafür passenden Treiber. Anleitung: http://sparks.gogo.co.nz/ch340.html
In /etc/profile : :
# automatically log out after 200 minutes of inactivity -<)kmk(>- TMOUT=12000 readonly TMOUT export TMOUT
Für die Einrichtung sollte es reichen, zwei symbolische Links zu Scripten auf unserem Server anzulegen:
ln -s /afs/iqo.uni-hannover.de/system/sbin/elektroniq-autologout.desktop /etc/xdg/autostart/elektroniq-autologout.desktop ln -s /afs/iqo.uni-hannover.de/system/sbin/elektroniq-logout-countdown.sh /usr/local/bin/elektroniq-logout-countdown.shDas erste “elektroniq-autologout.desktop” wird automatische nach dem Login aufgerufen. Es startet “xautolock” so, dass es nach 30 Minuten Nichtstun aufwacht und das zweite Script startet. Dieses zweite Script bringt einen Dialog mit einem Countdown auf den Bildschirm. Wenn der Countdown abgelaufen ist, ohne dass sich der User gerührt hat, wird er (oder sie) automatisch ausgeloggt. Außerdem wird eine kurze Email an den User und an mich geschickt.
Damit das alles klappt, müssen diese drei Pakete installiert sein:
apt install xautolock zenity mailutils
The desktop script /etc/xdg/autostart/elektroniq-autologout.desktop
should be a symbolic link to afs/iqo.uni-hannover.de/system/sbin/elektroniq-autologout.desktop
. Contents:
elektroniq-autologout.desktop
# This desktop entry is part of the automatic logout function of the computers in # in the ElektronIQ. Clients link to this file. It starts xautolock in the background. # When necessary, xautolock can be overridden locally. See the man page of xautolock. ###########################################-<)kmk(>-2016 [Desktop Entry] Type=Application Name=ElektronIQ auto log out Comment=automatically log out user after a period of inactivity and a grace time TryExec=xautolock -time 30 -locker "/usr/local/bin/elektroniq-logout-countdown.sh Exec=xautolock -time 30 -locker "/usr/local/bin/elektroniq-logout-countdown.sh Icon=utilities-system-monitor.svg OnlyShowIn=XFCE; Terminal=false Hidden=true
The logout script executed by xautolock: /usr/local/bin/elektroniq-logout-countdown.sh
is a symbolic link to /afs/iqo.uni-hannover.de/system/sbin/elektroniq-logout-countdown.sh
elektroniq-logout-countdown.sh
#!/bin/sh # Logout script for the computers at ElectronIQ # * supposed to be launched by xautolock # * presents a count-down progress bar with zenity # * initiates a logout via the command xfce4-session-logout # * on logout an email is sent to the user and to an admin # * if the user presses "cancel" or closes the dialog the session continues # # This script is supposed to be called by xautolock: # xautolock -time 60 -locker "elektronIQ-logout-countdown.sh" #############################################-<)kmk(>-2016################## GRACE=3600 # grace period in seconds GRACEMINUTES=$(($GRACE / 60)) # grace period in minutes ( SECONDS=$GRACE while [ $SECONDS -ge 0 ] do PERCENT=$((100 * $SECONDS / $GRACE )) if [ $PERCENT -lt 100 ] # do not report "100" because this then # would make the progress bar close echo $PERCENT # immediately. fi echo "# Automatic logout in "$(($SECONDS / 60))" minutes and "$(($SECONDS % 60))" seconds" SECONDS=$(($SECONDS-1)) sleep 1 done ) | # pipe count-down to zenity zenity --width=450 --progress \ --title="Auto-Logout" \ --text="Automatic logout..." \ --percentage=100 \ --auto-close RESULT=$? # timer got to zero --> RESULT = 0 # user pressed "cancel" --> RESULT = 1 # dialog was closed by user --> RESULT = 1 if [ $RESULT = "0" ] then echo "Timer expired --> terminate the XFCE session" DATE=$(date +%F) TIME=$(date +%R) HOST=$(hostname) EMAIL=$(ldapsearch -ZZ uid=$USER mail 2>/dev/null | awk -F ': ' '$1=="mail"{print $2}') ADMIN="knaak@iqo.uni-hannover.de" # Send an email to the user mail -t <<EOF TO: $EMAIL FROM: root@$HOST.iqo.uni-hannover.de Reply-To: $ADMIN SUBJECT: automatic logout from $HOST Hello $USER. On $DATE, $TIME you have been automatically logged out from the computer $HOST at the electronics workshop. Automatic logout is initiated after half an hour of inactivity and $GRACEMINUTES minutes grace period. You can drop $ADMIN an email if you need a longer grace period. Greetings from the faithful logout script. EOF # Send an email to the admin mail -t <<EOF TO: $ADMIN FROM: root@$HOST.iqo.uni-hannover.de SUBJECT: automatic logout of $USER from $HOST On $DATE, $TIME $USER was automatically logged out from $HOST. Greetings from the faithful logout script. EOF # do the actual logout xfce4-session-logout --logout fi exit