# Konfiguracja sway dla kiosku dwuekranowego # Plik docelowy: /home/kiosk/.config/sway/config # # Nazwy wyjść wideo wykryj BEZ uruchomionego sway (działa zawsze jako root): # for p in /sys/class/drm/card*-*; do echo "$(basename $p | sed 's/card[0-9]*-//'): $(cat $p/status)"; done # # lub gdy sway/kiosk JUŻ działa: # WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/kiosk wlr-randr # # Wpisz właściwe nazwy poniżej: set $OUTPUT_LEFT DP-1 set $OUTPUT_RIGHT HDMI-1 # --- Wyjścia wideo --- output * bg #000000 solid_color # Opcjonalnie: rotacja per-wyjście (odkomentuj jeśli wymagana) # output $OUTPUT_LEFT transform 270 # output $OUTPUT_RIGHT transform 270 # Przypisanie workspace do ekranów workspace 1 output $OUTPUT_LEFT workspace 2 output $OUTPUT_RIGHT # --- Przypisanie aplikacji do workspaces --- # Chromium (prawy ekran — workspace 2) # --app=URL generuje app_id: "chrome--Default" — używamy regex assign [app_id="~^chrome"] workspace 2 for_window [app_id="~^chrome"] move to workspace 2, fullscreen enable # Prezentacja LibreOffice Impress (lewy ekran — workspace 1) # LO zawsze otwiera się na workspace 1 — assign to potwierdza assign [app_id="soffice"] workspace 1 assign [class="libreoffice-impress"] workspace 1 for_window [app_id="soffice"] fullscreen enable for_window [class="libreoffice-impress"] fullscreen enable # Jeśli powyższe nie działają, sprawdź rzeczywistą klasę: # WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/kiosk swaymsg -t get_tree | grep -E 'app_id|class' # --- Wygląd --- default_border none default_floating_border none hide_edge_borders both # Ukryj kursor — niewidoczny motyw XCursor (1×1 px, całkowicie przezroczysty) # Działa niezależnie od pozycji kursora i bez dodatkowych pakietów. # Plik binarny XCursor tworzony przez printf przy każdym starcie sway. # Jeśli motyw nie zdąży załadować się przed pierwszym rysowaniem → hide_cursor 1 jako fallback. seat * hide_cursor 1 seat * xcursor_theme blank 1 exec_always bash -c ' D=/home/kiosk/.icons/blank/cursors mkdir -p "$D" # 68-bajtowy XCursor: 1×1 px, hotspot 0,0, ARGB 0x00000000 for n in left_ptr default pointer crosshair text watch wait move size_all fleur; do printf "\x58\x63\x75\x72\x10\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x02\x00\xfd\xff\x01\x00\x00\x00\x1c\x00\x00\x00\x24\x00\x00\x00\x02\x00\xfd\xff\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00" > "$D/$n" done printf "[Icon Theme]\nName=blank\n" > /home/kiosk/.icons/blank/index.theme' # Wygaszanie ekranów przy uśpieniu (bez -w: ignoruje inhibitory Chromium) exec swayidle before-sleep "wlopm --off '*'" # Uruchom skrypt kiosku exec /home/kiosk/kiosk-manager.sh