Summary of changes
- Remove info bar at top of screen
- Make bottom bar adjust to window size
- Add main menu giving access to newly added file open, shortcut and
about dialogs
- Use vertical menu for playback speed
- Move empty state indicators closer to designs
- Allow for a narrow and wide layouts
- Add menu for language and subtitle selection
- Add visualization for audio only streams.
- Autohide panels and pointer when there's a pointing device
Detailed changes
livi (0.0.6) experimental; urgency=medium
.
* ci: Make vars match the image.
We use trixie since some time
* window: Hide center overlay on play.
This makes sure we hide it when the new overlay was started
by a new video (e.g. via a remote instance)
* css: Only make main window transparent
* main: Simplify keyboard shortcuts.
Avoid the need for a variable for each shortcut group
* window: Remove info bar.
Use the headerbar instead. This moves us closer to the designs.
* window: Only show icon when accel is off.
This follows the "don't irritate the user when all is fine" pattern
* window: Use adw-toolbar for bottom bar.
This allows us to avoid a `GtkRevealer` and makes sure top and bottom
bar have consistent animations.
* window: Drop margin around controls.
This makes them align to the window edges getting us closer to the
designs.
* Add a shortcuts window.
Not very useful on mobile but on desktop.
* Add an about dialog.
Regular apps ought to have one.
* window: Add menu button.
This for now allows to show the keyboard shortcuts and about window.
* window: Use a vertical menu for playback speed.
Moves us closer to designs
* window: Reindent.
No functional change. Do this in a separate commit to ease rebasing.
* window: Improve control icons.
Instead of specifying padding in css just make sure the button is
squared via width-requests and let them expand. This ensures the
whole area stays touchable.
While at that use the gear icon for settings and deemphasize mute and
settings a bit by using a smaller icon.
* window: Add a single method to play an URL
* window: Add initial file open dialog.
We want to improve the mime types/file patterns and sync it up
automatically with what we have in the desktop file but let's give users
a UI way to open files. This helps cases where livi isn't the default
video player and launched via e.g. nautilus.
* window: Strip blanks to save space in resources
* build: gitignore packaging files
* main: Use AdwApplication.
No need to init adwaita separately then.
* Add LiviApplication.
This allows us to carry application state
* application: Move startup handler.
We can handle them via a vfunc in LiviApplication.
* application: Move activate handler.
We can handle them via a vfunc in LiviApplication.
* application: Move command-line handler.
We can handle them via a vfunc in LiviApplication. This allows us to
drop the context and properly dispose the url-processor object.
* application: Avoid g_object_{get,set}
We have a proper object to keep the state now
* window: Move empty state closer to designs.
Add a Open… button and use the camera icon
* window: Move error state closer to designs.
Add a "Try Again" button and use the warning icon
* window: Reindent.
No functional change. Do this in a separate commit to ease rebasing.
* window: Use a parameter on the action for seeking.
We use millisecons resolution as we're limited to int32 ('i') as int64
('x') doesnt work.
* window: Split out controls.
If we want to make the controls look differently depending
on width it's nicer to not clutter the window class even
further.
We move the controls over 1:1 (not even reindenting ui) and wire these
up with a minimal amount of setters.
* controls: Reindent.
No functional change. Do this in a separate commit to ease rebasing.
* controls: Add Stack.
What we have at the moment matches the wide layot
* Add skip forward/backward icons.
Taken from phosh 0.34.0
* controls: Add initial narrow layout
* controls: Add narrow property.
If set we use the narrow layout. We need to switch over
the popover as it can only have one parent
* window: Toggle narrow and wide layout
* controls: Clamp and float the wide layout
* controls: Add skip forward/backwards buttons to wide controls
* window: Make sure we don't skip < 0
* window: Avoid icon if we seek to the same position
* resources: Sort icons alphabetically
* icons: Add region-symbolic.
Taken from GNOME Settings 45
* window: Move stream related bits to struct.
This allows us to reset in one place
* Handle multiple audio stream languages.
We ignore different bitrates, etc for now.
* window: Add subtitle streams
* controls: Add style classes to playback speed menu.
This makes the title style consistent with the new lang menu
* controls: Reindent.
No functional change. Do this in a separate commit to ease rebasing.
* window: Avoid multiple seeks.
If a seek is ongoing and we didn't set a new position yet, reject it.
This avoids the overlay fading out too quickly.
* Add utils.
There' some macros we want to share between modules
* build: Specify gstreamer version in one place.
Bump to a halfway recent version while at that.
* window: Use win.ff action for forward/backward skipping.
We only kept win.rev for the keyboard shortcuts but can also
handle this by giving the action detail.
* window: Make player state a property
* window: Track stream title.
Without a title try to make some sense of the URI.
* Export mpris interface.
This exports the interfaces and wires up raise. No actual functionality.
Phosh doesn't pick it up yet as we don't set a proper player status yet.
* ci: Remove unused remote
* window: Enable visualization for audio only streams.
We just use waveform for now and fall back to the next best one if that's missing.
* window: Handle subtitle selection
* window: Autohide the panel.
Show on pointer motion, keep open when pointer is over ui elements
Follow-up commits refine this.
* window: Hide cursor on inactivity
* window: Only change icon on fullscreen.
Let autohide handle the controls / bars
* window: Unfullscreen when file choser opens.
Otherwise the portal's dialog can't set this window as proper
parent.
* window: Only hide controls during play
* window: Only hide controls when there's pointer.
Things are hard to use on touch otherwise. We still auto-hide
controls on state mode changes to play.
* application: Use GTK's window.close action.
No need to have our own.
* main: Add short-option for --yt-dlp.
I'm using it often and keep mistyping it
* window: Use stateful actions for subtitles and audio tracks.
This makes them automatically render correctly as radio buttons in the
popover.
* controls: Hide the wide layout in narrow mode.
Otherwise widgets in the wide layout can prevent the window from
shrinking further.
* controls: Use a bit less horizontal space.
Othrwise we overflow when the lang menu is open
* controls: Use win.ff everywhere.
Fixes: 19aeb15 ("controls: Use a bit less horizontal space")