Skip to content

feat: tray tooltip fix, View Logs, connection status, GStreamer PATH fix#27

Open
aayushprsingh wants to merge 4 commits intoleapbtw:mainfrom
aayushprsingh:main
Open

feat: tray tooltip fix, View Logs, connection status, GStreamer PATH fix#27
aayushprsingh wants to merge 4 commits intoleapbtw:mainfrom
aayushprsingh:main

Conversation

@aayushprsingh
Copy link
Copy Markdown

Summary of Changes

Fixes

  • Tray tooltip newline: Removed the literal \n that was rendering as a broken newline in the tray icon tooltip
  • GStreamer DLL PATH: UxPlay was crashing on startup because GStreamer plugins couldn't find their DLL dependencies. Added the uxplay bin directory to PATH before launching.
  • Windows path parsing: Fixed shlex.split() corrupting Windows paths (C:\Users becomes C:Users). Replaced with simple whitespace split + quote stripping.

Features

  • View Logs: New menu item that opens uxplay-windows.log in Notepad for easy debugging
  • Connection Status: Tray tooltip now updates every 5 seconds to show if UxPlay server is Running or Stopped (with exit code if crashed)

Known Limitation

  • Recording (removed): The Record Screen (MP4) feature was removed because it requires UxPlay 1.73+ which has no pre-built Windows binary. The bundled uxplay.exe is UxPlay 1.71.1 which does not support the -mp4 flag. Manual recording can still be enabled via Edit Arguments when a compatible binary is bundled.

Aayush Pratap Singh added 3 commits April 5, 2026 01:44
The pystray icon name contained a literal \n which rendered as a broken
newline in the tooltip. Changed to just APP_NAME for clean display.
… Windows path parsing

- Fix tray tooltip newline (was showing literal \\n)
- Add View Logs menu item (opens uxplay log in Notepad)
- Add connection status monitoring (tooltip shows Running/Stopped every 5s)
- Fix GStreamer DLL PATH resolution on startup
- Fix Windows path parsing (shlex.split was corrupting backslashes in args)
- Remove Record Screen toggle (requires UxPlay 1.73+ which has no pre-built Windows binary)
Tkinter-based log viewer is unreliable when packaged with PyInstaller
due to font/scrollbar rendering issues in the packaged environment.
Reverting to Notepad which works reliably. GUI viewer may be
revisited in a future release using a web-based approach.
@aayushprsingh
Copy link
Copy Markdown
Author

Update (2026-04-05)

GUI Log Viewer reverted to Notepad: The Tkinter-based log viewer had font/scrollbar rendering issues when packaged with PyInstaller on Windows. View Logs now opens the log file in Notepad, which is reliable. A web-based approach may be revisited in a future release.

os.startfile with .log files doesn't work reliably on Windows
when the file association is not set. Using subprocess.Popen
with explicit notepad.exe path ensures it always works.
@aayushprsingh
Copy link
Copy Markdown
Author

Update 2 (2026-04-05)

View Logs now works correctly: Fixed to use subprocess.Popen(['notepad.exe', path]) instead of os.startfile(). The .log file association on Windows was preventing os.startfile from opening Notepad.

@leapbtw
Copy link
Copy Markdown
Owner

leapbtw commented Apr 5, 2026

as i wrote in the README i am working on other branches and i'm rewriting uxplay-windows from scratch. I'll still take a look at your work but merging is unlikely

@aayushprsingh
Copy link
Copy Markdown
Author

Thanks for the update! I understand about the rewrite.

A few questions:

  1. Would you be interested in cherry-picking any of the specific fixes into the new rewrite? The most valuable ones are:

    • The GStreamer PATH fix (setting PATH before launching uxplay.exe)
    • The connection status monitoring
    • The Windows path parsing fix (shlex.split corrupts backslashes)
  2. I'd be happy to contribute to the rewrite if you need help. Happy to work on Python packaging, Tkinter UI, or the tray app layer. Let me know if you'd like a hand.

@leapbtw
Copy link
Copy Markdown
Owner

leapbtw commented Apr 6, 2026

Happy to work on Python packaging, Tkinter UI, or the tray app layer. Let me know if you'd like a hand

I’m currently rewriting the project in C++ in the cpp-rewrite branch.
As part of that work, I turned uxplay into a library (libuxplay) and embed it directly into another window.

The rewrite is working quite well so far. One of my goals is to drop Bonjour as a dependency, since managing its installation on Windows is an hassle and it's old and unreliable software in my experience.

The C++ version already works without Bonjour by using BLE pairing. However, that’s not a complete replacement because some desktop PCs may only have LAN and no wireless/BLE hardware.

Ideally I’d like to use Apple’s mDNSResponder, which is essentially the core component of Bonjour and is open source. The issue is that it’s built with MSVC while this project uses MSYS2, so it’s not straightforward to integrate as-is.

If you have the time and interest, this might be an area where help would be very welcome. There are also some forks of mDNSResponder around, but I’d prefer either using Apple’s upstream code directly or maintaining a minimal fork tailored to what uxplay-windows actually needs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants