diff --git a/.github/workflows/kiosk-iso.yml b/.github/workflows/kiosk-iso.yml deleted file mode 100644 index 82d2f2d..0000000 --- a/.github/workflows/kiosk-iso.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Build NixOS Kiosk ISO - -on: - push: - branches: [ profile-install ] - workflow_dispatch: - -jobs: - flake-check: - runs-on: ubuntu-latest - env: - NIX_CONFIG: extra-experimental-features = nix-command flakes - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Nix - run: | - curl -L https://nixos.org/nix/install | sh - . /home/runner/.nix-profile/etc/profile.d/nix.sh - nix --version - - name: Flake check - run: nix flake check -L - - build-iso: - runs-on: ubuntu-latest - needs: [ flake-check ] - env: - NIX_CONFIG: extra-experimental-features = nix-command flakes - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Install Nix - run: | - curl -L https://nixos.org/nix/install | sh - . /home/runner/.nix-profile/etc/profile.d/nix.sh - nix --version - - name: Build ISO - run: | - nix --version - nix build .#iso -L --system x86_64-linux - ls -la result - mkdir -p artifacts - cp -v result/iso/*.iso artifacts/ - - name: Upload ISO artifact - uses: actions/upload-artifact@v4 - with: - name: kiosk-iso - path: artifacts/*.iso - if-no-files-found: error diff --git a/desktop/README.md b/desktop/README.md deleted file mode 100644 index 384d819..0000000 --- a/desktop/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Kioskmodus -- Firefox autostart -- Sway -- Restart Firefox via short cut: ALT+Enter -- Close Firefox via short cut: ALT+Q -## Systemd Service für restart -- Inaktiv wegen wayland - diff --git a/desktop/config.toml b/desktop/config.toml deleted file mode 100755 index 76abbc8..0000000 --- a/desktop/config.toml +++ /dev/null @@ -1,20 +0,0 @@ -[terminal] -# The VT to run the greeter on. Can be "next", "current" or a number -# designating the VT. -vt = 1 - -# The default session, also known as the greeter. -[default_session] -# with whatever you want started, such as `sway`. -command = "sway --config /etc/kiosk-setting/sway/config" -# if using wlgreet -#command = "sway --config /etc/greetd/sway-config" -# The user to run the command as. The privileges this user must have depends -# on the greeter. A graphical greeter may for example require the user to be -# in the `video` group. -user = "kiosk" - -[initial_session] -command = "sway'" -user = "kiosk" - diff --git a/desktop/firefox.sh b/desktop/firefox.sh deleted file mode 100755 index 3a703e2..0000000 --- a/desktop/firefox.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -killall firefox && firefox --kiosk mahn.ke/kiosk diff --git a/desktop/kiosk-setting/sway/config b/desktop/kiosk-setting/sway/config deleted file mode 100755 index 780f59f..0000000 --- a/desktop/kiosk-setting/sway/config +++ /dev/null @@ -1,163 +0,0 @@ -# Default config for sway -# -# Copy this to ~/.config/sway/config and edit it to your liking. -# -# Read `man 5 sway` for a complete reference. -#exec firefox kiosk mahn.ke/kiosk -### Variables -# -# Logo key. Use Mod1 for Alt. -set $mod Mod1 -# Home row direction keys, like vim -#set $left h -#set $down j -#set $up k -#set $right l -# Your preferred application launcher -set $menu wmenu-run - -include /etc/sway/config-vars.d/* - -bindsym $mod+Return firefox kiosk mahn.ke/kiosk -bindsym $mod+q kill - - # Start your launcher - # bindsym $mod+d exec $menu - - # floating_modifier $mod normal - - # Reload the configuration file - # bindsym $mod+Shift+c reload - - # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' -# - # Move your focus around - #bindsym $mod+$left focus left - #bindsym $mod+$down focus down - #bindsym $mod+$up focus up - #bindsym $mod+$right focus right - # Or use $mod+[up|down|left|right] - #bindsym $mod+Left focus left - #bindsym $mod+Down focus down - #bindsym $mod+Up focus up - #bindsym $mod+Right focus right - - # Move the focused window with the same, but add Shift - #bindsym $mod+Shift+$left move left - #bindsym $mod+Shift+$down move down - #bindsym $mod+Shift+$up move up - #bindsym $mod+Shift+$right move right - # Ditto, with arrow keys - # bindsym $mod+Shift+Left move left - # bindsym $mod+Shift+Down move down - # bindsym $mod+Shift+Up move up - #bindsym $mod+Shift+Right move right -# -# Workspaces: -# - # Switch to workspace - # bindsym $mod+1 workspace number 1 - # bindsym $mod+2 workspace number 2 - # bindsym $mod+3 workspace number 3 - # bindsym $mod+4 workspace number 4 - # bindsym $mod+5 workspace number 5 - #bindsym $mod+6 workspace number 6 - #bindsym $mod+7 workspace number 7 - #bindsym $mod+8 workspace number 8 - #bindsym $mod+9 workspace number 9 - #bindsym $mod+0 workspace number 10 - # Move focused container to workspace - #bindsym $mod+Shift+1 move container to workspace number 1 - #bindsym $mod+Shift+2 move container to workspace number 2 - #bindsym $mod+Shift+3 move container to workspace number 3 - #bindsym $mod+Shift+4 move container to workspace number 4 - #bindsym $mod+Shift+5 move container to workspace number 5 - #bindsym $mod+Shift+6 move container to workspace number 6 - #bindsym $mod+Shift+7 move container to workspace number 7 - #bindsym $mod+Shift+8 move container to workspace number 8 - #bindsym $mod+Shift+9 move container to workspace number 9 - #bindsym $mod+Shift+0 move container to workspace number 10 - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. -# -# Layout stuff: -# - # You can "split" the current object of your focus with - # $mod+b or $mod+v, for horizontal and vertical splits - # respectively. - #bindsym $mod+b splith - #bindsym $mod+v splitv - - # Switch the current container between different layout styles - #bindsym $mod+s layout stacking - #bindsym $mod+w layout tabbed - #bindsym $mod+e layout toggle split - - # Make the current focus fullscreen - #bindsym $mod+f fullscreen - - # Toggle the current focus between tiling and floating mode - #bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - #bindsym $mod+space focus mode_toggle - - # Move focus to the parent container - #bindsym $mod+a focus parent -# -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - - # Move the currently focused window to the scratchpad - #bindsym $mod+Shift+minus move scratchpad - - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - #bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -#mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - # bindsym $left resize shrink width 10px - # bindsym $down resize grow height 10px - # bindsym $up resize shrink height 10px - # bindsym $right resize grow width 10px - - # Ditto, with arrow keys - # bindsym Left resize shrink width 10px - # bindsym Down resize grow height 10px - # bindsym Up resize shrink height 10px - # bindsym Right resize grow width 10px - - # Return to default mode - # bindsym Return mode "default" - # bindsym Escape mode "default" -#} -#bindsym $mod+r mode "resize" -# -# Utilities: -# - # Special keys to adjust volume via PulseAudio - # bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle - # bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% - # bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% - #bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle - # Special keys to adjust brightness via brightnessctl - # bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- - # bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ - # Special key to take a screenshot with grim - # bindsym Print exec grim - -# -# Status Bar: -# -# Read `man 5 sway-bar` for more information about this section. - -include /etc/sway/config.d/* diff --git a/desktop/kiosk-setting/sway/config.d/50-systemd-user.conf b/desktop/kiosk-setting/sway/config.d/50-systemd-user.conf deleted file mode 100755 index ab04a90..0000000 --- a/desktop/kiosk-setting/sway/config.d/50-systemd-user.conf +++ /dev/null @@ -1,9 +0,0 @@ -# import variables into system-user enviroment -# based on the instructions in the sway wiki -# see also https://github.com/swaywm/sway/issues/5732 -# and https://github.com/systemd/systemd/blob/dfc637d0ff756889e8e5b7cb4ec991eb06069aa1/xorg/50-systemd-user.sh - -exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP - -exec hash dbus-update-activation-environment 2>/dev/null && \ - dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway diff --git a/desktop/kiosk-setting/sway/loop.sh b/desktop/kiosk-setting/sway/loop.sh deleted file mode 100755 index 419919c..0000000 --- a/desktop/kiosk-setting/sway/loop.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -while true; do - ./firefox.sh - sleep 1 -done diff --git a/desktop/setup.sh b/desktop/setup.sh deleted file mode 100755 index 7d2250f..0000000 --- a/desktop/setup.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -sudo apt install greetd sway && \ -sudo cp -r desktop/kiosk-setting/ /etc/ && \ -sudo cp config.toml /etc/greetd/config.toml && \ -sudo reboot - diff --git a/desktop/sway/.config.swp b/desktop/sway/.config.swp deleted file mode 100755 index 8a0e427..0000000 Binary files a/desktop/sway/.config.swp and /dev/null differ diff --git a/desktop/sway/config b/desktop/sway/config deleted file mode 100755 index c33050a..0000000 --- a/desktop/sway/config +++ /dev/null @@ -1,104 +0,0 @@ -set $mod Mod4 -# Home row direction keys, like vim -set $left h -set $down j -set $up k -set $right l -# Your preferred terminal emulator -set $term konsole -# Your preferred application launcher -set $menu wmenu-run - - -default_border none - -include /etc/sway/config-vars.d/* -exec firefox-esr -# Basics: -# - # Start a terminal - bindsym $mod+Space exec firefox-esr - bindsym $mod+Return exec killall firefox-esr && firefox-esr - - # Kill focused window - bindsym $mod+Shift+q kill - - # Start your launcher - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # Reload the configuration file - bindsym $mod+Shift+c reload - - # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # Or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # Move the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # Ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px - - # Ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - - # Return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -# -# Utilities: -# - # Special keys to adjust volume via PulseAudio - bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle - bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% - bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% - bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle - # Special keys to adjust brightness via brightnessctl - bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- - bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ - # Special key to take a screenshot with grim - bindsym Print exec grim - -# -# Status Bar: -# -include /etc/sway/config.d/* diff --git a/desktop/sway/config.d/50-systemd-user.conf b/desktop/sway/config.d/50-systemd-user.conf deleted file mode 100755 index ab04a90..0000000 --- a/desktop/sway/config.d/50-systemd-user.conf +++ /dev/null @@ -1,9 +0,0 @@ -# import variables into system-user enviroment -# based on the instructions in the sway wiki -# see also https://github.com/swaywm/sway/issues/5732 -# and https://github.com/systemd/systemd/blob/dfc637d0ff756889e8e5b7cb4ec991eb06069aa1/xorg/50-systemd-user.sh - -exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP - -exec hash dbus-update-activation-environment 2>/dev/null && \ - dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK XDG_CURRENT_DESKTOP=sway diff --git a/desktop/sway/ffrun.sh b/desktop/sway/ffrun.sh deleted file mode 100755 index a46b0fd..0000000 --- a/desktop/sway/ffrun.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -APP_NAME="firefox-esr" -APP_COMMAND="firefox-esr" - -while true; do - if ! pgrep -x "$APP_NAME" > /dev/null; then - swaymsg exec "$APP_COMMAND" - fi - sleep 1 # Wait a second before checking again -done - diff --git a/desktop/sway/preseed b/desktop/sway/preseed deleted file mode 160000 index 84281c0..0000000 --- a/desktop/sway/preseed +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 84281c058648cd18ee702d772766cf1a170670e8 diff --git a/post_install.sh b/post_install.sh new file mode 100644 index 0000000..5b8c7fc --- /dev/null +++ b/post_install.sh @@ -0,0 +1,182 @@ +printf "[daemon]\nAutomaticLoginEnable=true\nAutomaticLogin=kiosk\n\n[security]\n\n[xdmcp]\n\n[chooser]\n\n[debug]\n" > /etc/gdm3/daemon.conf + + +# Firefox policy +# (I used to put this in /etc/firefox/policies/policies.json instead) +mkdir -p /usr/lib/firefox-esr/distribution +tee /usr/lib/firefox-esr/distribution/policies.json > /dev/null <<'EOF' +{ + "policies": { + "AppAutoUpdate": true, + "BackgroundAppUpdate": true, + "BlockAboutAddons": true, + "BlockAboutConfig": true, + "BlockAboutProfiles": true, + "BlockAboutSupport": true, + "DisableDeveloperTools": true, + "BlockAboutAddons": true, + "BlockAboutConfig": true, + "BlockAboutProfiles": true, + "BlockAboutSupport": true, + "DisableFeedbackCommands": true, + "DisableFirefoxAccounts": true, + "DisableFirefoxScreenshots": true, + "DisableFirefoxStudies": true, + "DisableForgetButton": true, + "DisableFormHistory": true, + "DisablePocket": true, + "DisablePrivateBrowsing": true, + "DisableProfileImport": true, + "DisableProfileRefresh": true, + "DisableSafeMode": true, + "DisablePocket": true, + "DisableFirefoxScreenshots": true, + "DisableSetDesktopBackground": true, + "DisableTelemetry": true, + "DisplayBookmarksToolbar": "never", + "DisplayMenuBar": "never", + "EnableTrackingProtection": { + "Cryptomining": true, + "Fingerprinting": true, + "Value": true + }, + "ExtensionSettings": { + "*": { + "installation_mode": "allowed" + } + }, + "FirefoxHome": { + "Highlights": false, + "Pocket": false, + "Search": false, + "SponsoredPocket": false, + "SponsoredTopSites": false, + "TopSites": false + }, + "Homepage": { + "StartPage": "homepage", + "URL": "https://mahn.ke", + "Locked": true + }, + "ManualAppUpdateOnly": true, + "NewTabPage": { + "Enabled": false + }, + "DownloadDirectory": { + "Path": "C:\\KioskDownloads", + "Locked": true + }, + "PictureInPicture": { + "Enabled": false + }, + "Preferences": { + "extensions.getAddons.showPane": { + "Status": "locked", + "Type": "boolean", + "Value": false + }, + "ui.key.menuAccessKeyFocuses": { + "Status": "locked", + "Type": "boolean", + "Value": false + } + }, + "PromptForDownloadLocation": false, + "StartDownloadsInTempDirectory": false, + "DisableAppUpdate": true, + "Permissions": { + "Camera": "deny", + "Microphone": "deny", + "Location": "deny", + "Notifications": "deny" + }, + "SanitizeOnShutdown": { + "Cache": true, + "Cookies": true, + "Downloads": true, + "FormData": true, + "History": true, + "OfflineApps": true, + "Sessions": true, + "SiteSettings": true + }, + "ShowHomeButton": false, + "UserMessaging": { + "ExtensionRecommendations": false, + "FeatureRecommendations": false, + "MoreFromMozilla": false, + "SkipOnboarding": false, + "UrlbarInterventions": false, + "WhatsNew": false, + "FirefoxLabs": false, + "Locked": false + }, + "DisplayMenuBar": false, + "DisplayBookmarksToolbar": false, + "WebsiteFilter": { + "Block": [ + "" + ], + "Exceptions": [ + "*://*.c3nav.de/*", + "*://*.hvv.de/*", + "*://engel.events.ccc.de/*", + "*://*.chaos.social/*", + "*://*.events.ccc.de/*" + ] + } + } +} +EOF + +# Bash autostart of sway +tee /home/kiosk/.bash_profile > /dev/null <<'EOF' +if [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then + exec sway +fi +EOF + +# Sway config +mkdir -p /home/kiosk/.config/sway/ +tee /home/kiosk/.config/sway/config > /dev/null <<'EOF' +input type:pointer { + events disabled +} + +input type:keyboard { + events disabled +} + +input type:touch { + events enabled +} + +input * xkb_layout de + +## This may not be needed if there is a systemd unit +# exec_always firefox --wayland --kiosk +EOF + + +# Systemd unit +mkdir -p /home/kiosk/.config/systemd/user/ +tee /home/kiosk/.config/systemd/user/firefox-kiosk.service > /dev/null <<'EOF' +service +[Unit] +Description=Firefox im Kiosk-Mode + +[Service] +Type=simple +TimeoutStartSec=0 +ExecStart=/usr/bin/firefox --kiosk +Environment=DISPLAY=:0 +Restart=always + +[Install] +WantedBy=default.target +EOF +mkdir -p /home/kiosk/.config/systemd/user/default.target.wants/ +ln -s /home/kiosk/.config/systemd/user/firefox-kiosk.service /home/kiosk/.config/systemd/user/default.target.wants/firefox-kiosk.service + + +chown -R kiosk:kiosk /home/kiosk/.config \ No newline at end of file diff --git a/profile/preseed.cfg b/preseed.cfg similarity index 99% rename from profile/preseed.cfg rename to preseed.cfg index b934651..9845da0 100644 --- a/profile/preseed.cfg +++ b/preseed.cfg @@ -53,7 +53,8 @@ d-i pkgsel/include string \ sudo \ cage \ firefox-esr \ - curl + curl \ + sway d-i pkgsel/exclude string gnome-software diff --git a/profile/post_install.sh b/profile/post_install.sh deleted file mode 100755 index 6b4889a..0000000 --- a/profile/post_install.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env bash -printf "[daemon]\nAutomaticLoginEnable=true\nAutomaticLogin=kiosk\n\n[security]\n\n[xdmcp]\n\n[chooser]\n\n[debug]\n" > /etc/gdm3/daemon.conf - -mkdir -p /usr/lib/firefox-esr/distribution -tee /usr/lib/firefox-esr/distribution/policies.json > /dev/null <<'EOF' -{ - "policies": { - "DisableDeveloperTools": true, - "BlockAboutAddons": true, - "BlockAboutConfig": true, - "BlockAboutProf#!/usr/bin/env basshiles": true, - "BlockAboutSupport": true, - "DisableFirefoxAccounts": true, - "DisablePrivateBrowsing": true, - "DisableProfileImport": true, - "DisableProfileRefresh": true, - "DisableSafeMode": true, - "DisablePocket": true, - "DisableFirefoxScreenshots": true, - "DisableSetDesktopBackground": true, - "Homepage": { - "URL": "https://mahn.ke", - "Locked": true - }, - "NewTabPage": { - "Enabled": false - }, - "DownloadDirectory": { - "Path": "C:\\KioskDownloads", - "Locked": true - }, - "PromptForDownloadLocation": false, - "StartDownloadsInTempDirectory": false, - "DisableAppUpdate": true, - "Permissions": { - "Camera": "deny", - "Microphone": "deny", - "Location": "deny", - "Notifications": "deny" - }, - "ShowHomeButton": false, - "DisplayMenuBar": false, - "DisplayBookmarksToolbar": false, - "policies": { - "UserMessaging": { - "ExtensionRecommendations": false, - "FeatureRecommendations": false, - "UrlbarInterventions": false, - "SkipOnboarding": false, - "MoreFromMozilla": false, - "FirefoxLabs": false, - "Locked": false - } - } - } -} -EOF -chown -R kiosk:kiosk /home/kiosk/.config - -tee /home/kiosk/.bash_profile > /dev/null <<'EOF' -if [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then - exec cage firefox --kiosk mahn.ke/kiosk -fi -EOF diff --git a/profile/tampermonkey/backtohome.js b/profile/tampermonkey/backtohome.js deleted file mode 100644 index 5dbb51e..0000000 --- a/profile/tampermonkey/backtohome.js +++ /dev/null @@ -1,122 +0,0 @@ -// ==UserScript== -// @name Back to Home (39C3 Kiosk) -// @namespace http://tampermonkey.net/ -// @version 2025-12-18 -// @description Adds buttons to every website to return to home page and prompts on idle -// @author You -// @match *://*/* -// @icon https://www.google.com/s2/favicons?sz=64&domain=google.com -// @grant GM_addStyle -// ==/UserScript== - -(function() { - 'use strict'; - - const btn = document.createElement('button'); - btn.textContent = 'Home'; - btn.style.cssText = ' all: unset; box-sizing: border-box; border: 2px solid #141414; background: #faf5f5; text-align: center; color: #141414; position: fixed; right: 10px; bottom: 10px; width: 60px; height: 60px; z-index: 2147483647; padding-top: 6px; border-radius: 60px;'; - btn.innerHTML = ''; - btn.addEventListener('click', () => { - window.location.href = 'http://127.0.0.1:8080'; - }); - (document.body || document.documentElement).appendChild(btn); - - - const IDLE_LIMIT_MS = 30_000; // 30 seconds - let idleTimer = null; - let promptVisible = false; - - const modal = document.createElement('div'); - modal.id = 'idle-modal'; - modal.hidden = true; - modal.style.cssText = ` - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background-color: #141414 !important; - border-radius: 0.385em; - border: 2px solid #444; - padding: 20px; - z-index: 2147483647; - box-shadow: 0 4px 8px rgba(0,0,0,0.2); - `; - modal.innerHTML = ` -

You seem to be idle

-

Do you want to stay on this page or go back to the home page?

- - - `; - document.body.appendChild(modal); - - const backdrop = document.createElement('div'); - backdrop.id = 'idle-backdrop'; - backdrop.hidden = true; - backdrop.style.cssText = ` - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0,0,0,0.5); - z-index: 2147483646; - `; - document.body.appendChild(backdrop); - - const userEvents = [ - 'mousemove', - 'mousedown', - 'keydown', - 'wheel', - 'touchstart', - 'scroll' - ]; - - function showPrompt() { - promptVisible = true; - modal.hidden = false; - backdrop.hidden = false; - debugger; - // Move focus to the primary action for accessibility - document.querySelector("#idle-stay").addEventListener("click", () => { - hidePrompt(); - resetIdleTimer(); - }); - document.querySelector("#idle-go").addEventListener("click", () => { - window.location.href = 'https://www.google.com'; - }); - } - - function hidePrompt() { - promptVisible = false; - modal.hidden = true; - backdrop.hidden = true; - } - - function onIdle() { - showPrompt(); - } - - function resetIdleTimer() { - if (promptVisible) return; // Don't auto-dismiss while prompt is visible - if (idleTimer) clearTimeout(idleTimer); - idleTimer = setTimeout(onIdle, IDLE_LIMIT_MS); - } - - // Any user activity resets the timer - userEvents.forEach(evt => { - document.addEventListener(evt, resetIdleTimer, { passive: true }); - }); - - // When returning to a visible tab, refresh the timer - document.addEventListener('visibilitychange', () => { - if (document.visibilityState === 'visible') { - resetIdleTimer(); - } - }); - - // Actions - - // Kick things off - resetIdleTimer(); -})(); diff --git a/profile/tampermonkey/hvv.js b/profile/tampermonkey/hvv.js deleted file mode 100644 index 7b59d14..0000000 --- a/profile/tampermonkey/hvv.js +++ /dev/null @@ -1,214 +0,0 @@ -// ==UserScript== -// @name HVV Styling (39C3 Kiosk) -// @namespace http://tampermonkey.net/ -// @version 2025-12-18 -// @description try to take over the world! -// @author You -// @match https://www.hvv.de/de/fahrplaene/abruf-fahrplaninfos/abfahrten-auf-ihrem-monitor/abfahrten-anzeige?show=66c992574d6c4179a65009c84f0f74fc -// @icon https://www.google.com/s2/favicons?sz=64&domain=hvv.de -// @grant GM_addStyle -// ==/UserScript== - -(function() { - 'use strict'; - - GM_addStyle(`:root { - --color-neutral-50: #f2f0f5; - --color-neutral-100: #d1c6e0; - --color-neutral-200: #b2a0cb; - --color-neutral-300: #957eb5; - --color-neutral-400: #7a60a0; - --color-neutral-500: #61468b; - --color-neutral-600: #4b3176; - --color-neutral-700: #371f60; - --color-neutral-800: #26114b; - --color-neutral-900: #180736; - --color-neutral-950: #0c011f; - --color-argon-50: #e1abc9; - --color-argon-100: #da87b5; - --color-argon-200: #d464a1; - --color-argon-300: #cd448f; - --color-argon-400: #c6257d; - --color-argon-500: #b0166f; - --color-argon-600: #9a0a61; - --color-argon-700: #830755; - --color-argon-800: #6d0449; - --color-argon-900: #56023c; - --color-argon-950: #3f012d; - --color-krypton-50: #b2d9ea; - --color-krypton-100: #8cc9e4; - --color-krypton-200: #69bade; - --color-krypton-300: #4badd8; - --color-krypton-400: #2493c2; - --color-krypton-500: #167fac; - --color-krypton-600: #0a6c96; - --color-krypton-700: #075c81; - --color-krypton-800: #044c6b; - --color-krypton-900: #023c55; - --color-krypton-950: #012c3f; - --color-green-50: #c0f49a; - --color-green-100: #a7e57a; - --color-green-200: #8fd75d; - --color-green-300: #7ac843; - --color-green-400: #66b92d; - --color-green-500: #54aa18; - --color-green-600: #47990f; - --color-green-700: #397e0a; - --color-green-800: #2b6206; - --color-green-900: #1f4703; - --color-green-950: #122b01; - --color-red-50: #e6afaf; - --color-red-100: #dd9090; - --color-red-200: #d57272; - --color-red-300: #cc5757; - --color-red-400: #c33d3d; - --color-red-500: #bb2626; - --color-red-600: #b21010; - --color-red-700: #950808; - --color-red-800: #780404; - --color-red-900: #5c0202; - --color-red-950: #3f0101; - --color-yellow-50: #fefce8; - --color-yellow-100: #fef9c2; - --color-yellow-200: #fff085; - --color-yellow-300: #ffdf20; - --color-yellow-400: #fdc700; - --color-yellow-500: #efb100; - --color-yellow-600: #d08700; - --color-yellow-700: #a65f00; - --color-yellow-800: #894b00; - --color-yellow-900: #733e0a; - --color-yellow-950: #432004; - - --color-white: #ffffff; - - --color-dark-foreground: var(--color-neutral-50); - --color-dark-background: var(--color-neutral-950); - --color-dark-shade-1: var(--color-neutral-900); - --color-dark-shade-2: var(--color-neutral-800); - --color-dark-shade-3: var(--color-neutral-700); - --color-dark-shade-4: var(--color-neutral-600); - --color-dark-text-1: rgba(250, 245, 245, 0.8); - --color-dark-text-2: var(--color-neutral-300); - --color-dark-text-3: var(--color-neutral-400); - --color-dark-text-4: var(--color-neutral-500); - --color-dark-primary: var(--color-argon-400); - --color-dark-secondary: #9673ff; - --color-dark-error: var(--color-red-500); - --color-dark-success: var(--color-green-500); - --color-dark-warning: var(--color-yellow-500); - --color-dark-accent-1: #60a5f9; - --color-dark-accent-2: #d381f7; - --color-dark-accent-3: #ff7975; - - --color-light-foreground: var(--color-neutral-950); - --color-light-background: var(--color-neutral-50); - --color-light-shade-1: var(--color-neutral-100); - --color-light-shade-2: var(--color-neutral-200); - --color-light-shade-3: var(--color-neutral-300); - --color-light-shade-4: var(--color-neutral-400); - --color-light-text-1: var(--color-neutral-800); - --color-light-text-2: var(--color-neutral-700); - --color-light-text-3: var(--color-neutral-600); - --color-light-text-4: var(--color-neutral-500); - --color-light-primary: var(--color-argon-600); - --color-light-secondary: var(--color-krypton-500); - --color-light-error: var(--color-red-600); - --color-light-success: var(--color-green-600); - --color-light-warning: var(--color-yellow-600); - --color-light-accent-1: #303ec0; - --color-light-accent-2: #6c366c; - --color-light-accent-3: #932f0a; - - --color-cmyk-primary: var(--color-dark-primary); - --color-cmyk-secondary: var(--color-dark-secondary); - - --line-height-loose: 1.4; - --line-height-relaxed: 1.3; - --line-height-base: 1.2; - --line-height-snug: 1.1; - --line-height-tight: 1; - - --text-xs: 0.75rem; - --text-sm: 0.875rem; - --text-base: 1rem; - --text-lg: 1.125rem; - --text-xl: 1.25rem; - --text-2xl: 1.5rem; - --text-3xl: 1.875rem; - --text-4xl: 2.25rem; - --text-5xl: 3rem; - --text-6xl: 3.75rem; - --text-7xl: 4.5rem; - - --container-3xs: 16rem; - --container-2xs: 18rem; - --container-xs: 20rem; - --container-sm: 24rem; - --container-md: 28rem; - --container-lg: 32rem; - --container-xl: 36rem; - --container-2xl: 42rem; - --container-3xl: 48rem; - --container-4xl: 56rem; - --container-5xl: 64rem; - --container-6xl: 72rem; - --container-7xl: 80rem; -} - -#page-content, .f-body { - margin: 0; - padding: 0 -} - -.o-headline1 { - color: rgb(102, 246, 102); - font-size: 3em -} - -.o-headline2 { - color: var(--color-dark-secondary); - font-size: 3em -} - -.js-span-station-name { - color: var(--color-dark-text-1); - font-size: 1.5em -} - -.o-table table{ - color: var(--color-dark-text-1); - font-size: 2em -} - -.o-transport-icon { - transform: scale(2); - color: var(--color-argon-600); - margin-left: 20px !important; -} - -.c-departures-monitor__delay-time.is-late { - color: #ff3719; -} - -.c-departures-monitor__delay-time.is-on-time { - color: #009900; -} - -.c-departures-monitor__logo { - opacity: 0.7 -} - -body { - background-color: #141414; -} -.js-span-station-name { - margin: 0 !important; -} - -.o-transport-icon--transparent .o-transport-icon__number { -color: #faf5f5 !important; -} - - `); -})(); diff --git a/profile/tampermonkey/mastodon.js b/profile/tampermonkey/mastodon.js deleted file mode 100644 index 7e05e90..0000000 --- a/profile/tampermonkey/mastodon.js +++ /dev/null @@ -1,130 +0,0 @@ -// ==UserScript== -// @name Mastodon Styling (39C3 Kiosk) -// @namespace http://tampermonkey.net/ -// @version 2025-12-18 -// @description Reduces actions not required to serve a Kiosk at 39C3 -// @author You -// @match https://chaos.social/tags/39c3/ -// @icon https://www.google.com/s2/favicons?sz=64&domain=chaos.social -// @grant GM_addStyle -// ==/UserScript== - -(function() { - 'use strict'; - - GM_addStyle(` -.columns-area__panels__pane.columns-area__panels__pane--compositional { - display: none; -} - -.columns-area__panels__pane.columns-area__panels__pane--start.columns-area__panels__pane--navigational { - display: none; -} - -div#tabs-bar__portal { - display: none; -} - -.hashtag-header__header__buttons { - display: none; -} - -span.display-name { - background-color: #9673ff; - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -span.display-name * { - display: inline !important; - font-weight: normal !important; - color: black !important; - text-transform: uppercase; -} - -span.display-name__account::before { - content: '('; -} - -span.display-name__account::after { - content: ')'; -} - -.hashtag-header__header__buttons { - display: none; -} - -span.display-name, .status__relative-time { - background-color: #9673ff; - font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - padding: 5px 5px 2px; -} - -span.display-name *, .status__relative-time { - display: inline !important; - font-weight: normal !important; - color: black !important; - text-transform: uppercase; - height: auto; -} - -span.display-name__account::before { - content: '('; -} - -span.display-name__account::after { - content: ')'; -} - -.status { - border-bottom: 0 !important; -} -.status p { - color: rgba(250, 245, 245, 0.8) !important; -} -.status p a{ - color: rgba(102, 246, 102) !important; -} - -.status__action-bar { - display: none !important; -} - -.column>.scrollable { - border: 0 !important; - background: transparent !important; -} - -article { - background-color: #242424; - border-radius: 0.375rem; - margin-bottom: 40px !important; -} - -.columns-area__panels__main { - max-width: 60vw; -} - -.hashtag-bar a { - --hub-tag-bg: transparent; - --hub-tag-border: 1px solid #9673ff; - --hub-tag-color: #9673ff; - --bs-border-radius: 0.375rem; - background-color: var(--hub-tag-bg); - border-radius: var(--bs-border-radius) 0; - border: var(--hub-tag-border); - color: var(--hub-tag-color); - display: inline-flex; - gap: 5px; - min-width: 0; - overflow: hidden; - padding: 5px 5px 2px; - text-overflow: ellipsis; - text-transform: uppercase; - white-space: nowrap; -} - -.hashtag-header { - display: none; -} - `); -})(); diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 50213a9..0000000 --- a/setup.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -apt install gdm3 greetd sway && \ -cp -r desktop/kiosk-setting/ /etc/ && \ -cp config.toml /etc/greetd/config.toml && \ -systemctl enable gdm3 && \ # greetd if gdm3 is buggy -./profile/post_install.sh