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 #17202

Open
wants to merge 23 commits into
base: master
Choose a base branch
from
Open

Conversation

ralfbrown
Copy link
Collaborator

@ralfbrown ralfbrown commented Jul 25, 2024

Give the user feedback on the startup process as early as possible so that they aren't left wondering whether darktable is actually starting successfully (opening a large library can take multiple seconds even on SSD, and crawling a large collection for updated sidecars could potentially take over a minute).

Resolves #5782.

@ralfbrown ralfbrown added the scope: UI user interface and interactions label Jul 25, 2024
@MStraeten
Copy link
Collaborator

maybe add an option to disable that via preferences dialog or darktablerc

@pitbuster
Copy link
Contributor

(opening a large library can take multiple seconds even on SSD, and crawling a large collection for updated sidecars could potentially take over a minute

Is there any possibility of start showing the UI while those happen? I think I am not the only one that hates splash screens

@ralfbrown
Copy link
Collaborator Author

@MStraeten done
@pitbuster beyond my pay grade.... Probably requires significant reorganization of the code.

@TurboGit TurboGit added this to the 5.0 milestone Jul 26, 2024
@TurboGit
Copy link
Member

TurboGit commented Aug 6, 2024

Tested, works but I'd like to have a better, bigger splash screen with the dt logo :)

Is there some UI designer reading this?

@pitbuster
Copy link
Contributor

Is there some UI designer reading this?

Maybe we can contact the person from this topic: https://discuss.pixls.us/t/i-am-working-on-a-rebrand-for-darktable/44382

@ralfbrown
Copy link
Collaborator Author

Tested, works but I'd like to have a better, bigger splash screen with the dt logo :)

I wanted to have the logo, but decided not to spend time trying to figure out how to get it to show until I was sure that a splash screen would be accepted.

@TurboGit
Copy link
Member

TurboGit commented Aug 6, 2024

Sure, to me we probably can have more than just a logo. I'm thinking about a whole visual (logo + pictures + lines... + whatever will make a whaou effect :), that's why I think a UI designer could shine in :)

@ralfbrown
Copy link
Collaborator Author

If you want more than an update of a text string as each major step of the initialization completes, it will probably be necessary to fire up a separate job running an event loop, since most of those steps aren't readily interruptible or subdividable. That whole "major reorganization" I mentioned upthread....

@TurboGit
Copy link
Member

TurboGit commented Aug 6, 2024

Well all is possible, we could have a single nice images with logo an an area of updating text. I don't want to put too much pressure as this splash-screen is anyway visible for few seconds only.

@ralfbrown
Copy link
Collaborator Author

Added the darktable logo. I set it to 200px, but we could make it larger to match the width of the title text (though the exact sizing depends on the theming, including font, so it switches once dt loads its CSS).

@ralfbrown
Copy link
Collaborator Author

Other than the issues with attempted progress updates after LUA initialization causing the UI to freeze (permanently, as far as I can tell), I'm happy with the code now. The sidecar crawl shows both percentage complete and estimated remaining time, updated each second, and all styling has been moved into the CSS file, which is now loaded early enough that the styling of the splash screen doesn't change in the middle of startup.

@ralfbrown
Copy link
Collaborator Author

Adding the check for whether the image being updated is the image in darkroom was easy enough, but that disables the ability to paste/compress/reset history on the image you're actively editing.... I tried putting in a check for whether the darkroom image is the same one as when the bulk operation started, but that just makes darktable crash.

I'm about to start my busy semester, so if I can't figure it out this weekend, I'll make a new PR which simply adds the busy cursor to those operations instead of progress meters and background execution.

@TurboGit
Copy link
Member

TurboGit commented Aug 9, 2024

@ralfbrown : Hum comment in wrong PR :) Can you move it at the right place?

@ralfbrown
Copy link
Collaborator Author

How the heck did that happen?
Moving...

@ralfbrown
Copy link
Collaborator Author

Rebased to fix merge conflict, added bugfix, and partially squashed.

@TurboGit
Copy link
Member

On a dual screen config I have on my main screen a shadow of dt main screen (border with full back in center) before it is moved to the secondary display.

image

@ralfbrown
Copy link
Collaborator Author

Given that I'm just starting to learn Gtk and don't have a secondary monitor, I'll need assistance in fixing that glitch.
I'll take care of the merge conflict tonight.

@ralfbrown
Copy link
Collaborator Author

Rebased and merge conflict fixed.

@ralfbrown
Copy link
Collaborator Author

ralfbrown commented Sep 18, 2024

@TurboGit I've managed to fix your ghost screen. There may still be a momentary flash of the default geometry before it disappears again and the rest of the GUI initialization completes before showing the window in its final geometry.

I tried moving the initial gtk_widget_show_all for the main window much later, but that caused a crash from stuff not having been initialized (presumably in callbacks kicked off by the "show" call). To work around that, I'm just hiding the window again immediately after that initial showing until we're finished with the GUI init other than Lua startup (causes a hang if the main window is only revealed afterward). Thus the potential momentary flash, but I haven't seen it on my machine.

Copy link
Member

@TurboGit TurboGit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirm no more ghost screen... But (and I cannot give you a screenshot) I don't have the main darktable visible now :) That is, when the splash screen closes the main UI is invisible. It is there as the DE said that darktable is opened and on the external screen... but just nothing visible!

@wpferguson
Copy link
Member

Just tested, works for me. Ubuntu 22.04, X windows

@ralfbrown
Copy link
Collaborator Author

ralfbrown commented Sep 28, 2024

Rebased, did a bit of squashing, added copyright and "unleash" text.
splash

@TurboGit
Copy link
Member

BTW, I find the logo quite dull !

@ralfbrown
Copy link
Collaborator Author

ralfbrown commented Sep 28, 2024

BTW, I find the logo quite dull !

That's what the SVG which is currently in the pixmaps directory looks like. We could replace it with a version like on your suggested splash screen; I just took a look and it will be a bit of a pain to extract since there isn't an object collecting all of the blades (each with multiple layers).

@TurboGit
Copy link
Member

I can have a look.

@TurboGit
Copy link
Member

Ok, the dull logo is because the splash screen is using data/pixmaps/256x256/darktable.png and not the svg.

@TurboGit
Copy link
Member

BTW, do we really want an exit splash screen? I don't know a single software doing that.

Copy link
Member

@TurboGit TurboGit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know that this is not the final version, but I have some comments on the code.

src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/external/lua-scripts Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
src/gui/splash.c Outdated Show resolved Hide resolved
@ralfbrown
Copy link
Collaborator Author

BTW, do we really want an exit splash screen? I don't know a single software doing that.

There's potentially a lot going on which is time-consuming and prevents a new start until it completes. I'm fine without, I only added it because of the discussion upthread.

@ralfbrown
Copy link
Collaborator Author

Ok, the dull logo is because the splash screen is using data/pixmaps/256x256/darktable.png and not the svg.

Hmm, can we force the SVG by removing the 256x256 PNG? Will have to give it a try.

@TurboGit
Copy link
Member

Hmm, can we force the SVG by removing the 256x256 PNG? Will have to give it a try.

I have a proposed fix, see my PR.

@ralfbrown
Copy link
Collaborator Author

Cherry-picked your hicolor code, fixed pathnames. Also parse the version number to not hard-code number of chars shown, and disabled exit screen.

@TurboGit TurboGit mentioned this pull request Sep 29, 2024
@TurboGit
Copy link
Member

@fabiosirna : We have a version is almost ready, we can of course give you some more time to come with an alternative version. There is no urgency here, so please let us know if you want to pursue this work and propose something different and possibly better for darktable. I would say that the dead-line is end of October to ensure potential issues are fixed before the next release. TIA.

@fabiosirna
Copy link
Contributor

fabiosirna commented Sep 29, 2024

@fabiosirna : We have a version is almost ready, we can of course give you some more time to come with an alternative version. There is no urgency here, so please let us know if you want to pursue this work and propose something different and possibly better for darktable. I would say that the dead-line is end of October to ensure potential issues are fixed before the next release. TIA.

hey @TurboGit reviewed feedback and suggestion. Here the design for the 3 iteration:

  • opening screen, 320x200, human, not too much information;
  • credits screen, 320x480, same as the opening, but with a scrollable textare to show authors and contributors;
  • agree on not having a closing screen, but I'm suggesting something that can be useful for those who have slow disk: if possible it'd be nice to froze the UI, add some blue and display a shutdown message like in the following demo.
darktable-opening-closing-screen-003-iteration.webm

opening-closing-screens-iteration-003

Feel free to drop comments.

Edit: re-uploading the video, as it was cutted before the end.

@ralfbrown
Copy link
Collaborator Author

Note that I will basically be disappearing from Github in a little over a week (until mid-December). I'm fine with whatever reworking of the design is agreed on, but someone else will have to do the actual coding at that time.

@TurboGit Also, from my two still-pending PRs, you should at least cherry-pick commit 897ede6 from PR17368 to suppress spurious white-balance error messages on load failure. And PR16810 has actually already had its documentation merged :).

@TurboGit
Copy link
Member

@ralfbrown : I have cherry-picked the commit. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
scope: UI user interface and interactions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FR] Introduce opening/closing darktable splashscreen
8 participants