Rolen aus bookworm übernommen

This commit is contained in:
Frank Schiebel 2025-08-06 12:21:06 +02:00
parent b74032925f
commit 420d9ea7b0
34 changed files with 1239 additions and 23 deletions

View file

@ -0,0 +1,3 @@
SUBSYSTEMS=="usb",KERNEL=="ttyACM*",ATTRS{idVendor}=="16c0",ATTRS{idProduct}=="0483",GROUP="dialout",MODE="0666"
SUBSYSTEMS=="usb",KERNEL=="ttyACM*",ATTRS{idVendor}=="2341",ATTRS{idProduct}=="0043",GROUP="dialout",MODE="0666"
SUBSYSTEMS=="usb",KERNEL=="ttyUSB*",ATTRS{idVendor}=="1a86",ATTRS{idProduct}=="7523",GROUP="dialout",MODE="0666"

View file

@ -0,0 +1,2 @@
# enable wol
ACTION=="add", SUBSYSTEM=="net", NAME=="*", RUN+="/usr/sbin/ethtool -s $name wol g"

View file

@ -0,0 +1,67 @@
#!/bin/bash
# Get connected monitors and their native resolutions
monitor_info=$(xrandr --query)
# Extract primary monitor name
primary_monitor_name=$(echo "$monitor_info" | grep " primary" | cut -d" " -f1)
# Extract secondary monitor name and native resolution
secondary_monitor_line=$(echo "$monitor_info" | grep -m1 -n -P " connected(?! primary)")
secondary_monitor_line_number=$(echo "$secondary_monitor_line" | cut -d":" -f1)
secondary_monitor_name=$(echo "$secondary_monitor_line" | cut -d":" -f2 | cut -d" " -f1)
if [ ! -z "$secondary_monitor_line_number" ]; then
secondary_resolution=$(echo "$monitor_info" | sed -e "1,${secondary_monitor_line_number}d" | grep -m1 "+" | awk '{ print $1 }')
fi
if [ -z "$secondary_monitor_name" ] || [ -z "$secondary_resolution" ] || [ -z "$primary_monitor_name" ]; then
zenity --error --text="Es konnten keine passenden Bildschirme gefunden werden. Sind Sie sich sicher, dass der Beamer eingeschaltet und verbunden ist?"
exit 1
fi
# Find out which resolutions we want to recommend
if [ "$secondary_resolution" = "1920x1080" ]; then
recommend_high_res="Ja"
recommend_low_res="Nein"
default_xga="FALSE"
default_hd="TRUE"
else
recommend_high_res="Nein"
recommend_low_res="Ja"
default_xga="TRUE"
default_hd="FALSE"
fi
# Generate GUI to let the user select a resolution
mode=$(zenity --list --radiolist --title="Beamer Setup" --text="Beamer mit der Auflösung $secondary_resolution gefunden." \
--print-column=3 --width 500 --height 250 \
--column= --column="Name" --column="Auflösung" --column="Format" --column="Empfohlen" \
FALSE "Full HD" "1920x1080" "16:9" "$recommend_high_res" \
"$default_hd" "HD" "1280x720" "16:9" "Ja" \
"$default_xga" "XGA" "1024x768" "4:3" "$recommend_low_res")
# Use xrandr to configure both displays
if [ ! -z "$mode" ]; then
xrandr --output $primary_monitor_name --mode $mode
xrandr --output $secondary_monitor_name --mode $mode --same-as $primary_monitor_name
fi
# Use pactl to set audio output to hdmi
profile="output:hdmi-stereo+input:analog-stereo"
sink_line=$(pactl list short sinks | grep -m1 alsa_output.pci-)
sink_nr=$(echo $sink_line | awk '{ print $1 }')
sink_name_hdmi=$(echo $sink_line | awk '{ print $2 }' | grep hdmi)
if [ ! -z "$sink_nr" ] && [ -z "$sink_name_hdmi" ]; then
card_name=$(pactl list cards short | grep -m1 alsa_card.pci- | awk '{ print $2 }')
pactl set-card-profile $card_name $profile
fi
if [ ! -z "$sink_nr" ]; then
pactl set-default-sink $(pactl list short sinks | grep -m1 alsa_output.pci- | awk '{ print $1 }')
fi
# if there is no hdmi sink search for a card profile to change
if [ -z "$sink_nr" ]; then
card_name=$(pactl list cards short | head -n 1 | awk '{ print $2 }')
pactl set-card-profile $card_name $profile
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

@ -0,0 +1,104 @@
[Desktop Entry]
Name=Firefox ESR
Name[bg]=Firefox ESR
Name[ca]=Firefox ESR
Name[cs]=Firefox ESR
Name[el]=Firefox ESR
Name[es]=Firefox ESR
Name[fa]=Firefox ESR
Name[fi]=Firefox ESR
Name[fr]=Firefox ESR
Name[hu]=Firefox ESR
Name[it]=Firefox ESR
Name[ja]=Firefox ESR
Name[ko]=Firefox ESR
Name[nb]=Firefox ESR
Name[nl]=Firefox ESR
Name[nn]=Firefox ESR
Name[no]=Firefox ESR
Name[pl]=Firefox ESR
Name[pt]=Firefox ESR
Name[pt_BR]=Firefox ESR
Name[ru]=Firefox ESR
Name[sk]=Firefox ESR
Name[sv]=Firefox ESR
Comment=Browse the World Wide Web
Comment[bg]=Сърфиране в Мрежата
Comment[ca]=Navegueu per el web
Comment[cs]=Prohlížení stránek World Wide Webu
Comment[de]=Im Internet surfen
Comment[el]=Περιηγηθείτε στον παγκόσμιο ιστό
Comment[es]=Navegue por la web
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
Comment[fi]=Selaa Internetin WWW-sivuja
Comment[fr]=Navigue sur Internet
Comment[hu]=A világháló böngészése
Comment[it]=Esplora il web
Comment[ja]=
Comment[ko]=
Comment[nb]=Surf på nettet
Comment[nl]=Verken het internet
Comment[nn]=Surf på nettet
Comment[no]=Surf på nettet
Comment[pl]=Przeglądanie stron WWW
Comment[pt]=Navegue na Internet
Comment[pt_BR]=Navegue na Internet
Comment[ru]=Обозреватель Всемирной Паутины
Comment[sk]=Prehliadanie internetu
Comment[sv]=Surfa på webben
GenericName=Web Browser
GenericName[bg]=Интернет браузър
GenericName[ca]=Navegador web
GenericName[cs]=Webový prohlížeč
GenericName[de]=Webbrowser
GenericName[el]=Περιηγητής ιστού
GenericName[es]=Navegador web
GenericName[fa]=مرورگر اینترنتی
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=
GenericName[ko]=
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
GenericName[no]=Nettleser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
GenericName[ru]=Интернет-браузер
GenericName[sk]=Internetový prehliadač
GenericName[sv]=Webbläsare
X-GNOME-FullName=Firefox ESR Web Browser
X-GNOME-FullName[bg]=Интернет браузър (Firefox ESR)
X-GNOME-FullName[ca]=Navegador web Firefox ESR
X-GNOME-FullName[cs]=Firefox ESR Webový prohlížeč
X-GNOME-FullName[el]=Περιηγήτης Ιστού Firefox ESR
X-GNOME-FullName[es]=Navegador web Firefox ESR
X-GNOME-FullName[fa]=مرورگر اینترنتی Firefox ESR
X-GNOME-FullName[fi]=Firefox ESR-selain
X-GNOME-FullName[fr]=Navigateur Web Firefox ESR
X-GNOME-FullName[hu]=Firefox ESR webböngésző
X-GNOME-FullName[it]=Firefox ESR Browser Web
X-GNOME-FullName[ja]=Firefox ESR
X-GNOME-FullName[ko]=Firefox ESR
X-GNOME-FullName[nb]=Firefox ESR Nettleser
X-GNOME-FullName[nl]=Firefox ESR webbrowser
X-GNOME-FullName[nn]=Firefox ESR Nettlesar
X-GNOME-FullName[no]=Firefox ESR Nettleser
X-GNOME-FullName[pl]=Przeglądarka WWW Firefox ESR
X-GNOME-FullName[pt]=Firefox ESR Navegador Web
X-GNOME-FullName[pt_BR]=Navegador Web Firefox ESR
X-GNOME-FullName[ru]=Интернет-браузер Firefox ESR
X-GNOME-FullName[sk]=Internetový prehliadač Firefox ESR
X-GNOME-FullName[sv]=Webbläsaren Firefox ESR
Exec=/usr/lib/firefox-esr/firefox-esr %u --allow-downgrade
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=firefox-esr
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=Firefox-esr
StartupNotify=true

View file

@ -0,0 +1,70 @@
{
"policies": {
"Proxy": {
"Mode": "system"
},
"OverrideFirstRunPage": "https://www.qg-moessingen.de",
"Homepage": {
"URL": "https://www.debian.org",
"Locked": false,
"StartPage": "previous-session"
},
"DisplayBookmarksToolbar": true,
"ManagedBookmarks": [
{
"toplevel_name": "QG Mössingen"
},
{
"url": "https://server.qgm.lan",
"name": "Passwort ändern"
},
{
"url": "https://wolke.qg-moessingen.de",
"name": "QG-Wolke"
},
{
"url": "https://moodle.qg-moessingen.de",
"name": "QG-Moodle"
},
{
"name": "Debian",
"children": [
{
"url": "https://www.debian.org",
"name": "Debian Homepage"
},
{
"url": "https://wiki.debian.org",
"name": "Debian Wiki"
},
{
"name": "Debian LAN/Live",
"children": [
{
"url": "https://salsa.debian.org/andi/debian-lan-ansible",
"name": "Debian LAN Ansible"
},
{
"url": "https://wiki.debian.org/DebianLive",
"name": "Debian Live"
}
]
}
]
}
],
"SearchEngines": {
"Add": [
{
"Name": "Startpage",
"URLTemplate": "https://www.startpage.com/sp/search?query={searchTerms}",
"Method": "GET",
"IconURL": "https://www.startpage.com/sp/cdn/favicons/favicon--default.ico",
"Alias": "sp",
"Description": "Startpage Search Engine"
}
],
"Default": "Startpage"
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,13 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=qdbus6 org.kde.Shutdown /Shutdown org.kde.Shutdown.logout
Name[de_DE]=Abmelden
Name=Abmelden
Icon=/usr/share/icons/logout.png
Hidden=false
Comment=
Path=
StartupNotify=false

View file

@ -0,0 +1,15 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=BeamerSetup.sh
Name[de_DE]=QG-Beamersetup
Name=QG-Beamersetup
Icon=/usr/share/icons/beamer.png
Hidden=false
Comment=
Path=
StartupNotify=false

View file

@ -0,0 +1,29 @@
[[ "${UID}" -lt 10000 ]] && return
# Desktop Verzeichnis?
DESKDIR=$(xdg-user-dir DESKTOP)
echo $DESKDIR >> /tmp/login.log
# Wallpaper
chmod u+x "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc"
kwriteconfig5 --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" --group 'Containments' --group '1' --group 'Wallpaper' --group 'org.kde.image' --group 'General' --key 'Image' "/usr/local/share/qgm/qgm_background_wallpaper.jpg" || return
# DiscoverButton löschen funzt noch nicht
kwriteconfig5 --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" --group 'Containments' --group '2' --group 'Applets' --group '5' --group 'Configuration' --group 'General' --key 'launchers' "applications:systemsettings.desktop,preferred://filemanager,preferred://browser" || return
# Beamer-Icon
rm -f $DESKDIR/qgm-beamersetup.desktop
if [[ $(hostname -s) = lt-* || $(hostname -s) = r109-dell16 ]]; then
cp /usr/share/applications/qgm-beamersetup.desktop $DESKDIR/qgm-beamersetup.desktop
chmod 755 $DESKDIR/qgm-beamersetup.desktop
fi
# Abmelden Knopf
echo "cp /usr/share/applications/qgm-abmelden.desktop $DESKDIR/qgm-abmelden.desktop" >> /tmp/login.log
cp /usr/share/applications/qgm-abmelden.desktop $DESKDIR/qgm-abmelden.desktop
chmod 755 $DESKDIR/qgm-abmelden.desktop
# user-places löschen, wegen Schuljahreswechsel...
echo "rm $HOME/.local/share/user-places.xbel" >> /tmp/login.log
rm $HOME/.local/share/user-places.xbel
echo "Done" >> /tmp/login.log

View file

@ -0,0 +1,273 @@
---
#########
# Management: Ansible User benötigt auf den Clients kein
# Passwort für sudo
- name: Enable passwordless sudo access for user ansible
lineinfile:
path: /etc/sudoers
state: present
regexp: '^ansible ALL='
line: 'ansible ALL=(ALL) NOPASSWD: ALL'
validate: '/usr/sbin/visudo -cf %s'
#########
# Paketvorkonfigurationen
- name: Preseed ttf-mscorefonts-installer
ansible.builtin.debconf:
name: ttf-mscorefonts-installer
question: msttcorefonts/dlurl
value: "{{ mirror_msfonts }}"
vtype: string
when: mirror_msfonts is defined and mirror_msfonts | length > 0
- name: Preseed libdvd-pkg
ansible.builtin.debconf:
name: libdvd-pkg
question: libdvd-pkg/build
value: "true"
vtype: boolean
ansible.builtin.debconf:
name: libdvd-pkg
question: libdvd-pkg/post-invoke_hook-install
value: "true"
vtype: boolean
ansible.builtin.debconf:
name: libdvd-pkg
question: libdvd-pkg/post-invoke_hook-remove
value: "false"
vtype: boolean
#########
# Softwareauswahl
- name: Install desktop EDU packages and some more
apt:
name:
- curl
- git
- gitg
- gitk
- lshw
- libnotify-bin ## needed for pwroff script
- neovim
- net-tools
- ethtool
- netcat-openbsd
- nmap
- tmux
- hexyl
- meld
- tree
- hashcat
- ttf-mscorefonts-installer
- libdvd-pkg
- handbrake
- firmware-intel-sound
- cura
- filius
- wine
- kdenlive
- terminator
- geany
autoremove: true
state: latest
environment:
http_proxy: '' # this is needed to avoid ttf-mscorefonts-installer picking up aptcacher
#########
# libdvdcss muss gebaut werden
# Optimierungspotential: Einmal bauen und über netboot
# die Pakete verteilen geht wahrscheinlich schneller
- name: Build libdvdcss
ansible.builtin.shell:
cmd: dpkg-reconfigure -f noninteractive libdvd-pkg
#########
# Den cups-browsed will ich gar nicht haben, nicht
# nur disablen.
- name: Remove cups-browsed
ansible.builtin.apt:
name: cups-browsed
state: absent
#########
# Das Skript, das beim Userlogin ausgeführt wird
# Setzt derzeit nur den Hintergrund zurück - nicht bei der
# allerersten Anmeldung eines Nutzers, weil es da die KDE Config noch
# nicht gibt.
- name: Copy qgm-login.sh for misc login Tasks
copy:
src: files/qgm-login.sh
dest: /etc/profile.d/qgm-login.sh
mode: '0664'
owner: root
group: root
#########
# Anpassungen an KDE
# - Doppelklick zum öffnen von Dateien
# - Style aug breeze fetstackern
# - Kein Benutzerwechsel
# - Kein Lockscreen
# - Keine neue Session
# - Login Session immer leer starten, nicht die laufenden Anwendungen merken
- name: Set mandatory KDE settings
ansible.builtin.copy:
dest: /etc/xdg/kdeglobals
content: |
[KDE][$i]
SingleClick=false
widgetStyle=breeze
[KDE Action Restrictions][$i]
action/switch_user=false
action/lock_screen=false
action/start_new_session=false
[General][$i]
loginMode=emptySession
#########
# Screen Locking abschalten, Mittelstufenschüler...
- name: Disable screen locking
ansible.builtin.copy:
dest: /etc/xdg/kscreenlockerrc
content: |
[Daemon][$i]
Autolock=false
LockOnResume=false
[Greeter][Wallpaper][org.kde.image][General]
Image=file:///usr/local/share/qgm/qgm_background.jpg
########
# Logout beschleunigen
- name: Wartezeit nach KDE nach Logout/Shutdown verkürzen
ansible.builtin.replace:
path: /usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/logout/Logout.qml
regexp: '^(\s+)property real timeout:.*$'
replace: '\1property real timeout: 4'
########
# Wayland abschalten, Standardsession X11
# SDDM hat (noch) keine Option, die Standardsession vorzugeben
# Bei einem "normalen" System, merkt er sich die letzte Sitzung, die
# der Nutzer wählt für künftige Anmeldungen, das klappt im Netz nicht.
# Die Session Liste baut er alphabetisch zusammen aus den desktop-Dateien
# in den Verzeichnissen /usr/share/wayland-sessions und /usr/share/xsessions/
# der erste Eintrag ist Standard - und das ist leider eben immer die Sitzung in
# wayland-sessions. Darum: Weg damit ;)
- name: Disable wayland session systemwide
ansible.builtin.file:
path: /usr/share/wayland-sessions/plasmawayland.desktop
state: absent
#########
# plasma-discover ist der grafische Paketmamanger
# der stürzt nur ab und die Bejutzer können eh
# nichts selbst installieren
- name: Remove plasma-discover
ansible.builtin.apt:
name: plasma-discover
state: absent
#########
# Anpassungen für Arduino
# - modemmanager dinstallieren, soll die Probleme mit wechselnden
# Device Namen lössen (ungetestet)
# - Udev-Rule, so dass die Devices mit 0666 angelegt werden, wie
# Warnung des Debian Pakets "arduino" wegen der dialout Gruppe
# bleiben leider.
- name: Remove modemmanager to fix arduino problems
ansible.builtin.apt:
name: modemmanager
state: absent
- name: Copy arduino udev rule
copy:
src: files/52-arduino.rules
dest: /etc/udev/rules.d/52-arduino.rules
mode: '0644'
owner: root
group: root
- name: reload udev rules
ansible.builtin.command: udevadm control --reload-rules
- name: trigger udev update
ansible.builtin.command: udevadm trigger
#########
# Firefox ESR Anpassungen
# Lesezeichen und Startseite müssen in der
# Datei firefox_policies.json für die eigene Schule
# angepasst werden.
- name: Create firefox policies directory
ansible.builtin.file:
path: /etc/firefox-esr/policies
state: directory
mode: '0755'
- name: Create a symbolic link firefox to firefox-esr
ansible.builtin.file:
src: /etc/firefox-esr
dest: /etc/firefox
state: link
- name: Copy firefox policy
ansible.builtin.copy:
src: firefox_policies.json
dest: /etc/firefox-esr/policies/policies.json
- name: Remove wrongly copied policies file
ansible.builtin.file:
path: /etc/firefox-esr/policies/firefox_policies.json
state: absent
##########
# Enable WOL
#
- name: Enable WOL
ansible.builtin.command: ethtool -s {{ ansible_default_ipv4.interface }} wol g
- name: Copy 81-wol.rules to target
copy:
src: 81-wol.rules
dest: /etc/udev/rules.d/81-wol.rules
mode: '0644'
owner: root
group: root
- name: Copy qgm-abmelden.desktop
copy:
src: qgm-abmelden.desktop
dest: /usr/share/applications/qgm-abmelden.desktop
mode: '0755'
owner: root
group: root
- name: Copy modified Forefox Starter
copy:
src: firefox-esr.desktop
dest: /usr/share/applications/firefox-esr.desktop
mode: '0644'
owner: root
group: root
- name: Copy logout icon
copy:
src: logout.png
dest: /usr/share/icons/logout.png
mode: '0644'
owner: root
group: root

View file

@ -0,0 +1,41 @@
##########
# Laptop Skripte
#
# Copy Beamer
- name: Copy BeamerSetup.sh
copy:
src: files/BeamerSetup.sh
dest: /usr/local/bin/BeamerSetup.sh
mode: '0755'
owner: root
group: root
- name: Copy qgm-beamersetup.desktop
copy:
src: files/qgm-beamersetup.desktop
dest: /usr/share/applications/qgm-beamersetup.desktop
mode: '0644'
owner: root
group: root
- name: Copy icon
copy:
src: files/beamer.png
dest: /usr/share/icons/beamer.png
mode: '0644'
owner: root
group: root
# Remove old scripts
- name: Remove qgm-soudfix.sh
file:
path: /usr/local/bin/qgm-soundfix.sh
state: absent
- name: Delete qgm-soudfix.desktop
file:
path: /usr/share/applications/qgm-soundfix.desktop
state: absent

View file

@ -0,0 +1,14 @@
---
- name: Base configuration for all hosts
import_tasks:
file: base.yml
- name: Fix sound on lt- hosts
import_tasks:
file: soundfix.yml
when: "'lt-' in inventory_hostname"
- name: Copy Beamerscript to lt- hosts
import_tasks:
file: beamerscript.yml
when: "'lt-' in inventory_hostname"

View file

@ -0,0 +1,11 @@
---
# Probleme mit akgehackten Ton über HDMI an
# den Laptops in den Klassenzimmern
# ACHTUNG: Beddingung hostname muss mit lt- beginnen.
- name: Fix stuttering sound on HDMI
lineinfile:
dest: /etc/default/grub
regexp: '^(GRUB_CMDLINE_LINUX=).*'
line: '\g<1>"intel_iommu=on,igfx_off"'
backrefs: yes
notify: Run update-grub