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).
  • atzanteol@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    6 days ago

    I’ve got a RPI running a full-screen ‘kiosk’ view from homeassitant that turns an external display on/off based on a motion sensor.

    So basically it’s showing current temperatures, thermostat control, etc. but I have the display turn off after X minutes of no movement and turn on when there has been movement so it’s only on when you’re in the room.

    • irotsoma@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      1
      ·
      15 hours ago

      I’d love to see your implementation specs, code, pr any other technical details you’d like to share. I’m setting up home assistant and one of the things I want it to do is replace the functions of my thermostat and add some additional details.

      I used to have a Nest Thermostat, but my furnace needed to be replaced a couple of months back and I got a Mitsubishi heat pump, but their thermostat sucks, and it isnt compatible with Nest because it’s all wireless. I installed the WiFi add-on to the furnace so I can use the app, too, but it also sucks pretty bad. Plus I miss the functionality of it turning down the heat when I’m away to save money and turning it back on before I get home.

      So I’m planning to implement my own solution and documenting and open sourcing everything. But it’s going to be several months before I get to doing it due to other more urgent projects. So, I’m looking at everything available. I definitely will be setting up a small display to replace the thermostat and having motion detectors to turn on the display when you approach it to see the temperature and such and to supplement the home/away detection.

      Anyway, I would love to see your implementation to see how you did this piece of it.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        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.