Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add splash screen #2540

Closed
totaam opened this issue Jan 4, 2020 · 15 comments
Closed

add splash screen #2540

totaam opened this issue Jan 4, 2020 · 15 comments
Labels

Comments

@totaam
Copy link
Collaborator

totaam commented Jan 4, 2020

Similar to what happens with the html5 client: we can use this to show progress, from initialization, testing opengl, opening the network connection, authenticating, etc..
Then the window can be faded out.

See also #2571

@totaam
Copy link
Collaborator Author

totaam commented Jan 4, 2020

2020-01-04 15:24:17: antoine commented


The opengl probe should still be done in a different subprocess so that we can handle crashes gracefully.

We can keep the splash screen running until we get the "first-ui-event" (ie: first window shown on screen), or just until we are connected.

@totaam
Copy link
Collaborator Author

totaam commented Jun 19, 2020

2020-06-19 17:43:14: antoine commented


Would help with #2813.

It would be nice if we could show all the steps: server starting, client starting, opengl probing, etc...

@totaam
Copy link
Collaborator Author

totaam commented Jun 25, 2020

2020-06-25 16:21:48: antoine commented


Added splash screen in r26803.

Still TODO:

  • test on other platforms
  • with xpra start --attach=yes ssh://host/ - we should wait for the hello packet rather than hiding the splash screen as soon as we have established the ssh connection, as starting the server and connecting to it may still take quite a bit of time to complete

@totaam
Copy link
Collaborator Author

totaam commented Jun 26, 2020

2020-06-26 10:47:26: antoine commented


Updates:

  • r26805 use threads, works on win32
  • r26810 show connection established or authentication as we fade out the splash window
  • r26811 add more steps for remote server starts
  • r26812 ignore pipe errors
  • r26813 fake gradual progress during events

Works well enough.

@totaam totaam closed this as completed Jun 26, 2020
@totaam
Copy link
Collaborator Author

totaam commented Jun 27, 2020

2020-06-27 10:12:33: antoine commented


One problem: on macos, we have a "nodock" app bundle that uses LSUIElement=true to suppress the dock icon when running the audio subprocess, but this does not work for GTK, probably because GTK uses kProcessTransformToForegroundApplication.
It might work if kProcessTransformToUIElementApplication was used instead (hint found here), but this would require patching GTK..

Maybe setActivationPolicy can do this?

Links:

@totaam
Copy link
Collaborator Author

totaam commented Jun 27, 2020

2020-06-27 11:20:50: antoine commented


macos issues fixed:

  • r26814 POPUP window, disable "startup notification"
  • r26817 cosmetic
  • r26818 force focus on macos
  • r26819 hide macos dock (it shows up very briefly)

@totaam
Copy link
Collaborator Author

totaam commented Aug 28, 2020

2020-08-28 13:49:56: antoine commented


Also used when starting servers now: r27332.

@totaam
Copy link
Collaborator Author

totaam commented Oct 1, 2020

2020-10-01 13:54:21: antoine commented


Forgot to update the client launcher: r27570.

@totaam
Copy link
Collaborator Author

totaam commented Oct 20, 2020

2020-10-20 12:05:31: stdedos commented


btw - are you planning to add some UI "magic" to increment the progress bar between stages?

That, and/or a spin-loading cursor might help give the impression to the user that the client is actually waiting doing something, and it is not e.g. frozen.

I understand that this is a "close equivalent" to the terminal output, but UIs are "different kind of logic" and have different things to be expected from them.

@totaam
Copy link
Collaborator Author

totaam commented Oct 20, 2020

2020-10-20 15:23:46: antoine commented


btw - are you planning to add some UI "magic" to increment the progress bar between stages?
We already do that.

That, and/or a spin-loading cursor might help give the impression to the user that the client is actually waiting doing something, and it is not e.g. frozen.
Done in r27720

@totaam
Copy link
Collaborator Author

totaam commented Oct 20, 2020

2020-10-20 18:43:20: stdedos commented


Replying to [comment:11 Antoine Martin]:

btw - are you planning to add some UI "magic" to increment the progress bar between stages?
We already do that.

Again I managed to not explain myself fully :-p.

I mean that, while waiting to go from e.g. 20% to 30% (arbitrary), make it increment 0.5-1-2% per second (as appropriate to what "on average" a state is expected to take), to "fake" progress (but not mask real progress).

Or, more concretely:
[[Image(Plink_2020-10-21_11-17-20.png​)]]

Progress bar in this state does not progress at all.


Or: there are some ways that progress bars "blink" when no progress is made to show interactivity: some light goes through the edges of the progress continuously (or that a small bar itself rolls around the progress bar space, but I think that one is for progress bars that don't depict a percentage).

Ofc, the spinner update beta hasn't landed; maybe it's good enough.

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2020

2020-10-21 09:18:25: stdedos uploaded file Plink_2020-10-21_11-17-20.png (51.1 KiB)

Plink_2020-10-21_11-17-20.png

@totaam
Copy link
Collaborator Author

totaam commented Oct 22, 2020

2020-10-22 16:17:25: antoine commented


I mean that, while waiting to go from e.g. 20% to 30% (arbitrary), make it increment 0.5-1-2% per second (as appropriate to what "on average" a state is expected to take), to "fake" progress (but not mask real progress).
That's exactly what we were doing already, now changed to increase gradually more slowly so we don't reach "29%" too quickly.

Or: there are some ways that progress bars "blink" when no progress is made to show interactivity
The one in GTK isn't useful, hence the new UTF spinners.

Ofc, the spinner update beta hasn't landed; maybe it's good enough.
There is definitely a new build there now.
Prior to that, it might have been just client-only builds - FYI: these are the ones you want if you don't intend to run the xpra server on mswindows: they're smaller.

@totaam
Copy link
Collaborator Author

totaam commented Oct 22, 2020

2020-10-22 16:27:31: stdedos commented


Replying to [comment:13 Antoine Martin]:

I mean that, while waiting to go from e.g. 20% to 30% (arbitrary), make it increment 0.5-1-2% per second (as appropriate to what "on average" a state is expected to take), to "fake" progress (but not mask real progress).
That's exactly what we were doing already, now changed to increase gradually more slowly so we don't reach "29%" too quickly.

I didn't see interactivity on the moment depicted by the image I uploaded, and I waited enough for it. Maybe it was just me or it was intentional (server waiting for the ssh password is arbitrary)

Ofc, the spinner update beta hasn't landed; maybe it's good enough.
There is definitely a new build there now.
Prior to that, it might have been just client-only builds - FYI: these are the ones you want if you don't intend to run the xpra server on mswindows: they're smaller.

These are my kind of builds; however, it looks to me that you haven't been building them much these days.
I really don't want to bitch about having them all the time, when it's your time, effort (and money probably). I am just happy that beta builds keep rolling every ~50 changesets or so.

@totaam
Copy link
Collaborator Author

totaam commented Oct 24, 2020

2020-10-24 16:38:08: antoine commented


The splash screen causes some really strange problems with the server when running daemonized (console warnings, unresponsive, etc), so r27757 turns it off. (it would be interesting to know what causes this - but I don't have the time)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant