TisVlay brings TV Display control for Linux, including: power, volume, backlight, AV mute, input switching plus more, with per-device profile automation via desktop session integration (idle/lock, boot/suspend, remote login/streaming, etc), and in reverse, letting the TV lock, sleep or wake the PC and its remote drive the desktop, while supporting various vendor interface protocols for multi-display setups, mitigating energy usage and OLED panel burn-in or projector bulb burn-out.
✨ Features
- 📺 PC desktop monitor control
- TV power on/off with PC, Screen on/off with lock screen
- Easily adjust backlight, volume, active input, and more
- 🤖 Automation via system/user events
- System boot, reboot, shutdown, suspend, wake, DPMS
- User lock/unlock, idle, stream connect/disconnect
- 🎮 TV console remote control
- PC sleep/wake/lock with TV power state or TV’s remote
- Navigate PC via TV remote keypress (via HDMI CEC)
- 🧰 Flexible profile customization
- System-wide and per-user profiles for per-device behavior
- Unified CLI and SDK for further scripting and integrations
- 🧩 Modular & vendor agnostic
- Supports HDMI CEC, Network IP Control (LG WebOS SSAP)
- Generalized for further interfaces, protocols, and transports
- 🩺 Self-healing connectivity
- Interface status monitoring for automatic reconnect and retry
- Per-NIC kernel carrier detection with route-aware failover
- 📡 Input-aware automation gating
- Suppress automation when TV already in use via another input
- Prevent PC from interrupting movie sessions or console gaming
- 🖱️ Graphical User Interfaces
- GUI app for device pairing, profile editing, and user setting
- System tray for quick access controls and device status
- 🛋️ Couch mode for the big screen
- Drive the GUI from a TV remote or gamepad, no mouse needed
- Scaled-up 10-foot layout, automatic under Plasma Bigscreen
📸 Screenshots
GUI and system tray track user DE themes and accent color settings.
| TVs — devices, status, profiles (dark theme) | Controls — picture, audio, input (light theme) |
|---|---|
| Discovery — local device detection | Pairing — auto populate configuration |
| System profiles — machine lifecycle events | User profiles — session events and idle timers |
| Settings — desktop notification preferences | About — components, their status and versions |
| Tray menu — per-TV quick control settings | Tray tooltip — at a glance or scroll to adjust |
🏛️ Architecture
TisVlay is comprised of a collection of cooperating components:
graph LR
subgraph User
Gui["tisvlay-gui<br/><i>user settings</i>"]
Cli["tisvlay<br/><i>CLI</i>"]
Session["tisvlay-session<br/><i>desktop events</i>"]
Tray["tisvlay-tray<br/><i>system tray</i>"]
end
subgraph System
Daemon["tisvlay-daemon<br/><i>system daemon</i>"]
Greeter["tisvlay-greeter<br/><i>login greeter</i>"]
end
subgraph Devices
TV1["CEC TV"]
TV2["LG TV"]
end
Session -->|socket| Daemon
Tray -->|socket| Daemon
Gui -->|socket| Daemon
Cli -->|socket| Daemon
Daemon -.->|HDMI-CEC| TV1
Daemon -.->|WebSocket / WoL| TV2
| Component | Description |
|---|---|
tisvlay | CLI for direct TisVlay control and configuration |
tisvlay-daemon | System profile actor and device interface driver |
tisvlay-session | User profile actor and session event integration |
tisvlay-tray | System tray for quick access and desktop notifications |
tisvlay-gui | Device management, profile editor, settings panel |
tisvlay-greeter | Login greeter idle detection absent of active session |
Services ship as tisvlay CLI subcommands; tisvlay-gui as separate binary.
📖 Where to go next
- 🧭 New here? Start with Installation, then Quick Start.
- 🎛️ Setting things up? See GUI & Tray and Automation.
- 🛰️ Streaming in remotely? See Streaming.
- 🔎 Discovery not finding your TV? See Firewall & Discovery.
- 🔒 TV discovering too much about you? See TVs on an Isolated Network.
- ⌨️ Scripting? See the Command Line and Configuration Files.
- 🤝 Want to help? See the Contributing Guide.