this post was submitted on 14 Jan 2025
138 points (99.3% liked)

Linux

49085 readers
416 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Just wondering since I know a lot of people quietly use a screen-area-select -> tesseract OCR -> clipboard shortcut.

  • I separate subjects of interest into different Firefox windows, in different workspaces -- so I have an extension title them and a startup script parse text to ask the compositor to put them in the correct workspace (lets me restart more conveniently).
  • I have automatically-set different-orientation wallpapers for using my 2-in-1 depending on whether I use it in portrait or landscape (kind of just for looks, but I don't think if anyone else adds a wallpaper change to their screen rotation keybind).
you are viewing a single comment's thread
view the rest of the comments
[–] atzanteol@sh.itjust.works 1 points 5 hours ago

It's really quite simple - but works pretty well. There are 3 components:

Kiosk service

A simple systemd service that starts a kiosk script.

[Unit]
Description=Kiosk
Wants=graphical.target
After=graphical.target

[Service]
Environment=DISPLAY=:0.0
Environment=XAUTHORITY=/home/pi/.Xauthority
Type=simple
ExecStart=/bin/bash /home/pi/kiosk.sh
Restart=on-abort
User=pi
Group=pi

[Install]
WantedBy=graphical.target

Kiosk script

The script in /home/pi/kiosk.sh just starts a web browser in full-screen mode pointed at my home assistant instance:

#!/bin/bash

xset s noblank
xset s off
xset -dpms

export DISPLAY=:0.0 

echo 0 > /sys/class/backlight/rpi_backlight/bl_power

LANDING_PAGE="https://homeassistant.example.com"

unclutter -idle 0.5 -root &

/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk $LANDING_PAGE

Display service

I have a very simple python/flask service that runs and exposes an endpoint that lets you turn on/off the display. It's called by a homeassistant automation for when the motion detector senses or hasn't sensed movement.

Here's the python - I have this started from another "kiosk.service" systemd service as well.

#!/usr/bin/env python3
import subprocess

from flask import Flask
from flask_restful import Api, Resource

def turn_off_display():
    with(open(backlight_dev, 'w')) as dev:
        dev.write("1")


def turn_on_display():
    with(open(backlight_dev, 'w')) as dev:
        dev.write("0")


class DisplayController(Resource):
    def get(self, state):
        if state == 'off':
            turn_off_display()
        elif state == 'on':
            turn_on_display()
        else:
            return {'message': f'Unknown state {state} - should be off/on'}, 500
        return {"message": "Success"}


def init():
    turn_on_display()


if __name__ == "__main__":
    init()
    app = Flask(__name__)
    api = Api(app)
    api.add_resource(DisplayController, '/display/<string:state>')
    app.run(debug=False, host='0.0.0.0', port=3000)

You can then have the HA rest action call this with "http://pidisplay:3000/display/on" or off.