Hey folks, for about 10 months or so been working on a hobby project just to get more practice in Linux application packaging, the Rust ecosystem/utilities, and software development on Nix and NixOS (as well as solve some personal pain points in using a HDMI TVs and projectors with PCs). Disclosure: this project includes AI assisted development, documentation and research, and has been a great help given my physical disabilities in typing.

While I enjoy using large, affordable OLED TVs as a PC display, they do lack in ways compared to regular desktop monitors, such as native power synchronization, programmatic volume and backlight control, etc. Thankfully there are a plethora of PC software projects to replicate these features, with LGTVCompanion for Windows and WebOS hardware being a prominent example. However, having migrated to Linux, and wanting something that would work just as well with projectors as with TVs, I began work on a display vendor/interface agnostic project, named TisVlay.

Over the past year it has grown from a simple CLI into a full system daemon with a GUI, a system tray, and webOS and HDMI-CEC support, plus the desktop integration and profile automation you’d expect from such a tool, like login and idle detection and remote-streaming awareness. That last one matters to me: my desktop pulls triple duty as a workstation, a media PC, and a game-streaming host for my office, living room, and tablet via Sunshine/Moonlight.

The app itself follows more of a distributed pub/sub architecture (my background is in robotics and cyber-physical system design, not desktop software), so converging on IPC and middle-ware libraries I’ve been meaning to experiment while keeping the installable setup self contained was a balance.

While still beta (pre v1.0), it’s already daily drivable and fully documented. Being largely feature-complete, my current focus has shifted towards distro packaging. If you’d like to give it a try, the installation guide and docs are linked below. Or if not and you’re already use something else, I’d like to give a shout-out to netflector, especially for privacy-conscious home-automation users, given how common spyware is in smart TVs and projectors these days. The docs cover using it to keep displays on an isolated network.

  • ruffsl@programming.devOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    6 days ago

    I just tried Plasma Bigscreen via KDE Neon in a VM. Everything related to PC->TV automation worked as expected, aside from two fixed bugs related to missing greeter service setup and an old systemd bug still biting folks from ubuntu 24.04 based distros.

    I’ll note that the TisVlay UI isn’t yet friendly for gamepad input navigation that Plasma Bigscreen encourages, so that’s room for improvement in the Slint interface. Thanks for the leads.

    But having things like power and volume control on my phone would be really nice QoL improvements.

    I know on KDE Connect, there is a “Run Command” button in the android app UI. You could use that to run the TisVlay CLI to automate TV related macros (chaining power/input/volume commands), or just use the system/user profiles to drive the TV based on standard events like moving mouse/keyboard or other HID that would wake wayland’s idle timeout.

    I currently need to use my TV remote for power and input selection and my speaker remote for volume (though at least Jellyfin has its own volume control too).

    TisVlay can switch inputs on power for backends with input capability bits (like LG WebOS), and for as for HDMI-CEC backend - the TV firmware normally switch to the port that sent the CEC power to the TV already. But for speaker bars/stereos, that’s another idea to add to the HDMI-CEC backend. Perhaps I should extend TisVlay to control/monitor other device classes on the TV’s same CEC bus… That’d be cool for a next release.

    • tatterdemalion@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      6 days ago

      You could use that to run the TisVlay CLI to automate TV related macros

      Nice idea. I may try this out next time I’m tweaking my NixOS configs.

      But for speaker bars/stereos, that’s another idea to add to the HDMI-CEC backend.

      Yea that definitely sounds interesting. My speakers are connected over optical digital audio cables. I can’t even control them with my TV remote. I’m not sure I will be able to make this work. But I am planning on getting a new TV soon so 🤞