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.


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.
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.
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.
Nice idea. I may try this out next time I’m tweaking my NixOS configs.
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 🤞
I took an initial pass at implementing a “couch mode” for remote/gamepad navigation of the GUI while using Plasma Bigscreen, then made another release if you want to try it out:
https://github.com/TisVlay/TisVlay/pull/248#issuecomment-6717483735
Everything is now more reachable, but it still took a lot of extra slint code, so I may raise that with upstream with folks at SixtyFPS to ask about simpler patterns for special navigation. Also asked the KDE devs if they have any more recommendations on human interface guidelines:
https://discuss.kde.org/t/app-design-and-interface-guidelines-targeting-plasma-bigscreen/51666?u=ruffsl