diff --git a/Firefox.zip b/Firefox.zip deleted file mode 100644 index c4020ce..0000000 Binary files a/Firefox.zip and /dev/null differ diff --git a/desktop/README.md b/desktop/README.md new file mode 100644 index 0000000..384d819 --- /dev/null +++ b/desktop/README.md @@ -0,0 +1,8 @@ +# 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 new file mode 100755 index 0000000..76abbc8 --- /dev/null +++ b/desktop/config.toml @@ -0,0 +1,20 @@ +[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 new file mode 100755 index 0000000..3a703e2 --- /dev/null +++ b/desktop/firefox.sh @@ -0,0 +1,2 @@ +#!/bin/bash +killall firefox && firefox --kiosk mahn.ke/kiosk diff --git a/desktop/kiosk-setting/sway/config b/desktop/kiosk-setting/sway/config new file mode 100755 index 0000000..780f59f --- /dev/null +++ b/desktop/kiosk-setting/sway/config @@ -0,0 +1,163 @@ +# 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 new file mode 100755 index 0000000..ab04a90 --- /dev/null +++ b/desktop/kiosk-setting/sway/config.d/50-systemd-user.conf @@ -0,0 +1,9 @@ +# 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 new file mode 100755 index 0000000..419919c --- /dev/null +++ b/desktop/kiosk-setting/sway/loop.sh @@ -0,0 +1,5 @@ +#!/bin/bash +while true; do + ./firefox.sh + sleep 1 +done diff --git a/desktop/setup.sh b/desktop/setup.sh new file mode 100755 index 0000000..7d2250f --- /dev/null +++ b/desktop/setup.sh @@ -0,0 +1,6 @@ +#!/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 new file mode 100755 index 0000000..8a0e427 Binary files /dev/null and b/desktop/sway/.config.swp differ diff --git a/desktop/sway/config b/desktop/sway/config new file mode 100755 index 0000000..c33050a --- /dev/null +++ b/desktop/sway/config @@ -0,0 +1,104 @@ +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 new file mode 100755 index 0000000..ab04a90 --- /dev/null +++ b/desktop/sway/config.d/50-systemd-user.conf @@ -0,0 +1,9 @@ +# 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 new file mode 100755 index 0000000..a46b0fd --- /dev/null +++ b/desktop/sway/ffrun.sh @@ -0,0 +1,11 @@ +#!/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 new file mode 160000 index 0000000..84281c0 --- /dev/null +++ b/desktop/sway/preseed @@ -0,0 +1 @@ +Subproject commit 84281c058648cd18ee702d772766cf1a170670e8 diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 032fb8b..0000000 --- a/flake.lock +++ /dev/null @@ -1,61 +0,0 @@ -{ - "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index b991131..0000000 --- a/flake.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - description = "Kiosk NixOS ISO with Firefox in kiosk mode"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; - flake-utils.url = "github:numtide/flake-utils"; - }; - - outputs = { self, nixpkgs, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: { - # Build a bootable ISO image using the built-in NixOS iso module - packages.iso = ( - (nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./nixos/kiosk.nix - (import "${nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix") - ]; - }).config.system.build.isoImage - ); - - # Expose the NixOS configuration for direct use if desired - nixosConfigurations.kiosk = (nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ ./nixos/kiosk.nix ]; - }); - }); -} diff --git a/nixos/kiosk.nix b/nixos/kiosk.nix deleted file mode 100644 index e2688f7..0000000 --- a/nixos/kiosk.nix +++ /dev/null @@ -1,151 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - ############################################ - # Base system - ############################################ - nixpkgs.hostPlatform = "x86_64-linux"; - system.stateVersion = "24.11"; - - # Simple console-based kiosk using cage (Wayland single-app compositor) - services.xserver.enable = false; # Not using an X11 display manager - - # Autologin to TTY1 as kiosk user - services.getty.autologinUser = "kiosk"; - - # Kiosk user - users.users.kiosk = { - isNormalUser = true; - description = "Kiosk User"; - home = "/home/kiosk"; - extraGroups = [ "wheel" ]; - initialPassword = "kiosk"; - }; - - # Packages required (aligning with the Debian preseed intent) - environment.systemPackages = with pkgs; [ - firefox - cage - curl - unzip - # chromium # available if you want it in addition to Firefox - ]; - - ############################################ - # Firefox policies (preconfigured profile settings) - ############################################ - programs.firefox = { - enable = true; - policies = { - DisableDeveloperTools = true; - BlockAboutAddons = true; - BlockAboutConfig = true; - BlockAboutProfiles = 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; }; - - # Use a Linux path for downloads in kiosk - DownloadDirectory = { - Path = "/home/kiosk/Downloads"; - Locked = true; - }; - - PromptForDownloadLocation = false; - StartDownloadsInTempDirectory = false; - DisableAppUpdate = true; - - Permissions = { - Camera = "deny"; - Microphone = "deny"; - Location = "deny"; - Notifications = "deny"; - }; - - ShowHomeButton = false; - DisplayMenuBar = false; - DisplayBookmarksToolbar = false; - - # Extension & user messaging controls (per your Debian policy JSON) - UserMessaging = { - ExtensionRecommendations = false; - FeatureRecommendations = false; - UrlbarInterventions = false; - SkipOnboarding = false; - MoreFromMozilla = false; - FirefoxLabs = false; - Locked = false; - }; - - # Install Tampermonkey automatically (Firefox will fetch at runtime). - # Note: AMO URL may change; this is the typical latest channel. - Extensions = { - Install = [ - "https://addons.mozilla.org/firefox/downloads/latest/tampermonkey/latest.xpi" - ]; - }; - }; - - # Helpful preferences to keep Firefox minimal - preferences = { - "browser.fullscreen.autohide" = true; - "browser.shell.checkDefaultBrowser" = false; - "browser.startup.page" = 1; # Start with homepage - }; - }; - - ############################################ - # Kiosk launch behavior (replicates your bash_profile approach) - ############################################ - # Create a bash_profile for the kiosk user that launches cage + firefox - system.activationScripts.kioskBashProfile = lib.stringAfter ["users"] '' - mkdir -p /home/kiosk - chown kiosk:kiosk /home/kiosk - sudo -u kiosk mkdir -p /home/kiosk/.config - cat > /home/kiosk/.bash_profile <<'EOF' -if [ -z "$WAYLAND_DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then - exec ${pkgs.cage}/bin/cage ${pkgs.firefox}/bin/firefox --kiosk https://c3nav.de -fi -EOF - chown kiosk:kiosk /home/kiosk/.bash_profile - ''; - - # Unpack preconfigured Firefox profile from the repository into kiosk's home - system.activationScripts.kioskFirefoxProfile = lib.stringAfter ["users"] '' - mkdir -p /home/kiosk/.mozilla/firefox - # Only unzip if directory is empty (first activation) - if [ -z "$(ls -A /home/kiosk/.mozilla/firefox 2>/dev/null)" ]; then - ${pkgs.unzip}/bin/unzip -o ${../Firefox.zip} -d /home/kiosk/.mozilla/firefox - chown -R kiosk:kiosk /home/kiosk/.mozilla/firefox - fi - ''; - - ############################################ - # Include your userscripts in the image for easy import - ############################################ - environment.etc."kiosk/tampermonkey".source = ./../tampermonkey; - - ############################################ - # Networking & basic services - ############################################ - networking.hostName = "kiosk"; - time.timeZone = "UTC"; - services.openssh.enable = true; # optional, mirrors preseed tasksel ssh-server - - - # Keep system simple, disable unneeded DM - services.displayManager.enable = false; -} diff --git a/post_install.sh b/profile/post_install.sh old mode 100644 new mode 100755 similarity index 84% rename from post_install.sh rename to profile/post_install.sh index a847cc0..6b4889a --- a/post_install.sh +++ b/profile/post_install.sh @@ -1,4 +1,6 @@ +#!/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' { @@ -6,7 +8,7 @@ tee /usr/lib/firefox-esr/distribution/policies.json > /dev/null <<'EOF' "DisableDeveloperTools": true, "BlockAboutAddons": true, "BlockAboutConfig": true, - "BlockAboutProfiles": true, + "BlockAboutProf#!/usr/bin/env basshiles": true, "BlockAboutSupport": true, "DisableFirefoxAccounts": true, "DisablePrivateBrowsing": true, @@ -57,12 +59,6 @@ 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 https://c3nav.de + exec cage firefox --kiosk mahn.ke/kiosk fi EOF - -mkdir -p /home/kiosk/.mozilla/firefox -curl -fsSL -o /tmp/Firefox.zip "https://git.hamburg.ccc.de/Firefox.zip" -unzip -o /tmp/Firefox.zip -d /home/kiosk/.mozilla/firefox -chown -R kiosk:kiosk /home/kiosk/.mozilla/firefox -rm -f /tmp/Firefox.zip \ No newline at end of file diff --git a/preseed.cfg b/profile/preseed.cfg similarity index 97% rename from preseed.cfg rename to profile/preseed.cfg index 527a83b..b934651 100644 --- a/preseed.cfg +++ b/profile/preseed.cfg @@ -53,7 +53,6 @@ d-i pkgsel/include string \ sudo \ cage \ firefox-esr \ - unzip \ curl d-i pkgsel/exclude string gnome-software @@ -65,4 +64,4 @@ d-i finish-install/reboot_in_progress note d-i preseed/late_command string \ in-target curl -o /tmp/post_install.sh https://git.hamburg.ccc.de/ViMaSter/preseed/raw/branch/main/post_install.sh; \ in-target chmod +x /tmp/post_install.sh; \ - in-target /tmp/post_install.sh; \ No newline at end of file + in-target /tmp/post_install.sh diff --git a/tampermonkey/backtohome.js b/profile/tampermonkey/backtohome.js similarity index 64% rename from tampermonkey/backtohome.js rename to profile/tampermonkey/backtohome.js index a7a0935..5dbb51e 100644 --- a/tampermonkey/backtohome.js +++ b/profile/tampermonkey/backtohome.js @@ -9,31 +9,22 @@ // @grant GM_addStyle // ==/UserScript== -const target = "https://kiosk.39c3.by.vincent.mahn.ke/"; (function() { 'use strict'; - // if the user is on target already or subdomain, do nothing - if (window.location.href === target || window.location.href.startsWith(target + '/')) { - return; - } - 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 = target; + window.location.href = 'http://127.0.0.1:8080'; }); (document.body || document.documentElement).appendChild(btn); - const IDLE_LIMIT_MS = 60_000; + const IDLE_LIMIT_MS = 30_000; // 30 seconds let idleTimer = null; let promptVisible = false; - const PROMPT_LIMIT_MS = 30_000; - let promptInterval = null; - let promptTimeout = null; const modal = document.createElement('div'); modal.id = 'idle-modal'; @@ -55,7 +46,6 @@ const target = "https://kiosk.39c3.by.vincent.mahn.ke/";

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

-

Auto return in 30s

`; document.body.appendChild(modal); @@ -86,57 +76,21 @@ const target = "https://kiosk.39c3.by.vincent.mahn.ke/"; promptVisible = true; modal.hidden = false; backdrop.hidden = false; - - // Clear any previous prompt timers - if (promptInterval) { clearInterval(promptInterval); promptInterval = null; } - if (promptTimeout) { clearTimeout(promptTimeout); promptTimeout = null; } - - // Wire button actions (once to avoid duplicates) - const stayBtn = document.querySelector("#idle-stay"); - const goBtn = document.querySelector("#idle-go"); - - if (stayBtn) { - stayBtn.addEventListener("click", () => { + debugger; + // Move focus to the primary action for accessibility + document.querySelector("#idle-stay").addEventListener("click", () => { hidePrompt(); resetIdleTimer(); - }, { once: true }); - } - - if (goBtn) { - goBtn.addEventListener("click", () => { - window.location.href = target; - }, { once: true }); - } - - // 30s countdown visible to the user - let remaining = PROMPT_LIMIT_MS / 1000; // seconds - const countdownEl = document.querySelector("#idle-countdown"); - if (countdownEl) countdownEl.textContent = String(remaining); - - promptInterval = setInterval(() => { - remaining -= 1; - if (remaining >= 0 && countdownEl) { - countdownEl.textContent = String(remaining); - } - }, 1000); - - // Auto-go when expired - promptTimeout = setTimeout(() => { - const go = document.querySelector("#idle-go"); - if (go) { - go.click(); - } else { - window.location.href = target; - } - }, PROMPT_LIMIT_MS); + }); + document.querySelector("#idle-go").addEventListener("click", () => { + window.location.href = 'https://www.google.com'; + }); } function hidePrompt() { promptVisible = false; modal.hidden = true; backdrop.hidden = true; - if (promptInterval) { clearInterval(promptInterval); promptInterval = null; } - if (promptTimeout) { clearTimeout(promptTimeout); promptTimeout = null; } } function onIdle() { diff --git a/tampermonkey/hvv.js b/profile/tampermonkey/hvv.js similarity index 100% rename from tampermonkey/hvv.js rename to profile/tampermonkey/hvv.js diff --git a/tampermonkey/mastodon.js b/profile/tampermonkey/mastodon.js similarity index 100% rename from tampermonkey/mastodon.js rename to profile/tampermonkey/mastodon.js diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..50213a9 --- /dev/null +++ b/setup.sh @@ -0,0 +1,6 @@ +#!/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