Let’s say I want to build a GPS module for my car, which is only a GPS, doesn’t hold anything else. Or a recipe tablet for my kitchen which only hold a recipe app.

Is this kind of purposes common? What would be the best way to do this kind of stuff? How do I choose the hardware? How do I “lockdown” certain aspects I don’t need about software?

These kind of devices could be convenient because, by only holding what’s needed, they would use less resources, they would be completely distraction free and they would be suitable to be used by non tech savy user which would need to use only one or two programs without messing with the system in any way.

I know KDE ha some kind of multi app kiosk settings, GNOME also can achieve something similar tho it’s more confusing… There are some kiosk distros which only give you a browser. But I don’t see anything that can be set up, customized, and locked like that.

But would that be the best way of achieving something like that? I mean to use a GPS I don’t need a terminal, nor video codecs, nor a browser… Maybe I can add the possibility to send Osmand google maps links… Or I can decide to make it hold Spotify too to make it a radio as well… But a full distro would be wasted!

But how do I prevent every other use except the intended ones? Is there an easy way to achieve a “one purpose device” using Linux? Should I simply use whichever distro I like and uninstall everything which is not needed (I see use case for arch)?

I feel like we have the total freedom of Linux distros on one side, and companies using managed devices on the other by setting complicated policies, but I don’t know any options in between!

Maybe the focus here is the desktop environment more than distros! Are there desktop environment purposed to give the user a set of limited apps, or a single app (which isn’t only a browser)?

  • whaleross@lemmy.world
    link
    fedilink
    arrow-up
    11
    ·
    1 day ago

    Sidenote, maybe some of your applications do not need a Linux computer but a microcontroller like an Arduino or a ESP32 is sufficient.

  • Björn Tantau@swg-empire.de
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    19 hours ago

    Small tangent, I didn’t have the energy to read your whole post, so you might have addressed that. But often it’s cheaper to go with an established multi purpose device instead of building something new.

    I used to build and sell Raspberry Pi gaming handhelds that were as cheap as possible and literally just held together by some string. My purpose was to get enough money through the sales to be able to build one for myself. Sure, the building process was fun. But when I crunched the numbers just buying a cheap smartphone and controller was much cheaper and more performant and versatile than the self-built solution.

    Just buying a cheap phone or tablet is often the cheaper solution.

    Heck, even Valve just bought off the shelve tablet displays and turned the image in software for the Steam Deck.

  • Max-P@lemmy.max-p.me
    link
    fedilink
    arrow-up
    16
    ·
    1 day ago

    It’s hard to give concrete advice without knowing the specs or the software you want to run on this, but for tiny Linux systems there’s Buildroot so you can compile just the bare minimum you need and not use a distro at all (unless you could Buildroot as a distro). This is what OpenWRT uses to build all the router firmwares among other things.

    For something that would go in a car that seems pretty ideal to me. Skip initializing things you won’t use, make something that boots to GUI in 3 seconds. When you want to update the software you flash it as a new firmware image, no on-device installing or anything.

    Depending on what you run, ideally you’d skip Xorg/Wayland and use the framebuffer directly. But if you need to run a more standard environment, that’s what things like Cage are designed for. Single app, always full screen. It’s called a kiosk environment.

    • JBeamo@lemm.ee
      link
      fedilink
      English
      arrow-up
      1
      ·
      7 hours ago

      Second buildroot as the way to go. This is what I use to build systems for single application touchscreen HMIs. It’s dead simple too, unless you’re messing with a custom kernel config and/ or using obscure hardware without ready made device tree blobs.

      • Max-P@lemmy.max-p.me
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        1 day ago

        NixOS isn’t a bad option, I’m not sure how much you can trim it down but I’d expect it to be possible to express in Nix to install to a target that’s different from the host. Maybe not NixOS but Nix itself as a package/config manager. I’m sure at minimum it makes for a great development environment for building a buildroot.

  • drhoopoe@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    11
    ·
    1 day ago

    Do some searches on “kiosk” software. That’s the general term of art for machines that are intended to run a single program/interface. As for distros, you’ll want something light and easy to maintain, ideally with automatic updates. Debian’s an obvious pick. Alpine could be great for something like this. Gentoo could be awesome too, but there’s a serious learning curve involved.

  • GustavoM@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    1 day ago

    Dietpi user here. I’ve got a orange pi zero 3 w/ 1GiB of ram serving me nextdns under docker + playing a live stream 24/7 (via yt-dlp/ffplay) and it does its job just nicely.

  • fachpersonal@lemmy.ml
    link
    fedilink
    arrow-up
    8
    ·
    edit-2
    1 day ago

    Debian minimal netinstall should fit you use case. Long support time, small footprint and should support everything you want to do. Just secure it by having a unprivileged account doing all the stuff you want to do.

  • 2001herne@aussie.zone
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    1 day ago

    So, for a single purpose kiosk device, I’ve had some success with not using a DE or WM at all - essentially putting the desired application inside your xinitrc. In that case, you would need to configure the window geometry using xdotool (I think). There’s probably something similar for Wayland. Alternatively, a tiling wm like i3 or Sway could be useful if you remove all the keybinds from the config file.

    ETA: for a device like that, I would say that arch is a potential starting point, but you might also consider an immutable distro. I don’t have any experience with them though.

    ETA2: For the hardware, a Raspberry Pi is not a bad starting point, but Arch on Arm isn’t officially supported. Your mileage may vary

  • eldavi@lemmy.ml
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 day ago

    i’ve done this using android and linux.

    i’ve repurposed my old androids to turn them into wireless cameras for my home made security system based on the motion project as well as created a homemade lojack and dashcam for my car. some phones i was able to root and i picked and chose what software ran on it and the others, i disabled as many services/apps as i could to make them as minimalistic as possible.

    for linux, i created my own home made router and wifi access point; but it’s kind of the opposite of minimalistic as it’s a full blown linux server with virtual machines and desktop environment to help with management.

    i provided both extremes to mirror what others have said: it’s hard to provide advice without knowing what your goal is.