xpra icon
Bug tracker and wiki

Opened 5 years ago

Closed 4 years ago

#539 closed task (wontfix)

tabbed client

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: minor Milestone: future
Component: client Version:
Keywords: Cc:

Description (last modified by Antoine Martin)

Instead of displaying all the client windows as individual windows, we could use a tabbed viewer which shows each client window as a separate tab.

Problems:

  • Application Quircks: applications like google chrome that don't use the correct window type hints will just be impossible to handle correctly
  • refactoring needed for:
    • client window base vs client widget base common code
    • clicks, mouse, keyboard handling, focus, etc
    • painting spinners
    • opengl backing integration (potentially big, could go with a simple pixmap backing to begin with: lots of memory copying, but client usually has CPU to spare anyway)
  • pass icons and title to tab parent window
  • missing code for: xid
  • decide how to handle: applications that request a resize or move
  • potentially very big: smooth scrolling (allow the server side window to be much bigger than what we display and use scrollbars to navigate it) - could be extended later so that the remote app cooperates in scrolling (so we can have a virtual window size much bigger than the server-side window area)
  • handle maximize, fullscreen
  • slow down the refresh for the tabs that aren't shown (but still update our back buffer so we can show them instantly when switching tabs)
  • handling size hints, etc: we need to add the offset of our top bar (should be possible by modifying the base-size attribute on the fly?)

I will attach a stub client that uses virtual "tab" windows (work in progress)

Attachments (1)

tabbed-client.patch (7.1 KB) - added by Antoine Martin 5 years ago.
stub for a tabbed client

Download all attachments as: .zip

Change History (5)

Changed 5 years ago by Antoine Martin

Attachment: tabbed-client.patch added

stub for a tabbed client

comment:1 Changed 5 years ago by Antoine Martin

Description: modified (diff)
Owner: changed from Antoine Martin to Antoine Martin
Status: newassigned

comment:2 Changed 5 years ago by Antoine Martin

Milestone: 0.130.14

re-scheduling.

comment:3 Changed 5 years ago by Antoine Martin

Milestone: 0.14future

Re-scheduling: too much work, best to have the application use a control channel to tune the encoding (example code: webkit_scrolling_window.py), or write a dedicated client application.

comment:4 Changed 4 years ago by Antoine Martin

Resolution: wontfix
Status: assignedclosed

Too hard to get right generically.

Note: See TracTickets for help on using tickets.