Commit Graph

1836 Commits

Author SHA1 Message Date
Daniel P. Berrangé
47c22dc23b src: enable remote desktop resize with VNC
GTK-VNC has native support for remote desktop resize, provided that we
always give the widget the full available allocation. This requires that
we turn off VirtViewerDisplay's code for keeping aspect ratio, and
instead enable GTK-VNC's equivalent.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:08:07 +01:00
Daniel P. Berrangé
20f5b18b6a src: add prop to control forced aspect ratio
When the VirtViewerDisplay class resizes the child display widget, it
attempts to preserve the remote desktop aspect ratio. This is useful in
general, if the display widget can't do this itself. The implication,
however, is that VirtViewerDisplay also has to take ownership of the
remote framebuffer resize functionality.

It is thus useful to disable VirtViewerDisplay's aspect ratio
preservation when the display widget can do this natively, as it can
then also do desktop resizes natively.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:08:07 +01:00
Daniel P. Berrangé
e9e2ebb796 src: add --auto-resize <always|never> CLI arg
This is used to control whether resizing of the remote framebuffer
is permitted.

Fixes: https://gitlab.com/virt-viewer/virt-viewer/-/issues/20
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:08:06 +01:00
Daniel P. Berrangé
707f74b9c4 src: add menu to control whether framebuffer resize is attempted
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:07:08 +01:00
Daniel P. Berrangé
512efe70c6 src: initialize actions during instance init
Currently the GActionMap is registered during the application
startup. This takes place after the command line args are processed,
so prevents the CLI processing from using actions.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:07:08 +01:00
Daniel P. Berrangé
83db5b3c64 src: remove unused property constant
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:07:08 +01:00
Daniel P. Berrangé
3125e8f507 src: fix version check for power control
The next gtk-vnc will be 1.2.0, not 2.0.0

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 15:07:08 +01:00
Daniel P. Berrangé
15fbaa3fb4 src: introduce "--cursor auto|local" command line
Normally we will honour the server requested behaviour for cursor,
either letting the server render it directly, or locally rendering
a cursor that the server provided us.

There are times, however, where the server does the wrong thing. For
example it might tell us to render an empty cursor, leaving the user
with no visible cursor at all. In this case it can be helpful to ignore
what the server requests, and always display the default local cursor.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-04-08 12:52:59 +00:00
Jan Kuparinen
1589f90601 Added translation using Weblate (Finnish)
Signed-off-by: Jan Kuparinen <copper_fin@hotmail.com>
2021-04-06 19:17:35 +02:00
simmon
330418f69c Translated using Weblate (Korean)
Currently translated at 100.0% (179 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/ko/

Signed-off-by: simmon <simmon@nplob.com>

Translated using Weblate (Korean)

Currently translated at 33.5% (60 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/ko/

Signed-off-by: simmon <simmon@nplob.com>
2021-03-24 11:00:41 +01:00
Daniel P. Berrangé
ada810c088 src: support power control actions with VNC
VNC can support graceful shutdown, hard reset and hard power off.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 17:59:29 +00:00
Daniel P. Berrangé
f42a1a7eaa src: conditionally enable VM action UIs
We only want to enable VM actions that are supported by
the session.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 17:59:29 +00:00
Daniel P. Berrangé
897543880c src: wire up reporting of whether VM actions are supported in SPICE
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 17:59:29 +00:00
Daniel P. Berrangé
27aa853981 src: add method to test whether a VM action is supported
SPICE provides a number of VM actions, but they are only supported if
the QMP tunnel is available. VNC doesn't currently support any, but
in future it will support some.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 17:59:29 +00:00
Daniel P. Berrangé
a511365d78 rpm: disable spice for RHEL-9
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 15:22:19 +00:00
Daniel P. Berrangé
2b9c9c51f8 rpm: disable govirt for RHEL-9
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-23 15:21:59 +00:00
Daniel P. Berrangé
6db5b71419 src: hide password/username auth widgets if not required
When a password is sufficiently, we should not even show the username
field, and vica-verca.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
1d11dd55da src: cancel auth dialog when closing session
This ensures that the application exits when the user presses Ctrl-C
while an auth dialog is open.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
247d91d889 src: switch auth dialog to use a GTK UI template
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
d59f550d21 src: improve spacing between password box and buttons in auth dialog
The standard layout uses 6 pixels spacing between controls.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
abbd076fdb src: use embedded eye icon in password entry box
This improves the UI for the password auth box by using an inline icon
for showing/hiding the password text. This is the UI pattern uses by
GNOME shell and other GTK applications.

The two svg files added here are copied from the GTK4 codebase which
is under the LGPLv2+.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
c6f429627c src: remove SIGINT handler after first firing
If you press Ctrl-C while the auth dialog is active it gets ignored
because calling g_application_quit() won't break out of the model
g_dialog_run() call.

By removing the SIGINT handler after first firing, we can at least let
the user press Ctrl-C a second time to force quit.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
Daniel P. Berrangé
5b44064b35 src: use the same application ID for remote-viewer and virt-viewer
Gtk uses the application ID to lookup resource entries compiled into the
application. The application ID must match the path in the gresource.xml
file for this to work correctly.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-18 11:26:37 +00:00
simmon
23a6ee68d8 Translated using Weblate (Korean)
Currently translated at 30.7% (55 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/ko/

Signed-off-by: simmon <simmon@nplob.com>
2021-03-08 20:01:47 +01:00
Victor Toso
81129f8eb1 build: fix build without gtk-vnc
Without gtk-vnc we get implicit function declaration for
VIRT_VIEWER_IS_SESSION_VNC. Introduced at 8bc91ac "session: remove
"session-error" signal" in 2021-02-18

As we are already using #ifdef here, I've also changed the ternary to
an if for clarity.

Signed-off-by: Victor Toso <victortoso@redhat.com>
2021-03-08 17:05:42 +01:00
Daniel P. Berrangé
04c2c4a035 build-aux: set MANUFACTURER env when building MSI
This needs to be set via an env variable so that it can be overridden by
vendors building their own MSIs downstream.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-08 12:53:55 +00:00
Daniel P. Berrangé
df4f0a8d4f data: fix URLs in wxs file
The download site is on virt-manager.org, not virt-tools.org, so lets
use that site, with TLS too.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-08 12:53:55 +00:00
Daniel P. Berrangé
7040dded11 icons: remove obsolete usb icon
We are now using a standard symbolic icon so don't need the custom USB
icon.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-08 12:33:06 +00:00
Hela Basa
d71c56dacd Added translation using Weblate (Sinhala)
Signed-off-by: Hela Basa <r45xveza@pm.me>
2021-03-03 22:00:42 +01:00
Daniel P. Berrangé
0c94c1f844 man: document the default cursor ungrab sequence in man pages
While the window titlebar already displays the ungrab sequence when a
grab is active, it doesn't hurt to also document it upfront for people.

Fixes https://gitlab.com/virt-viewer/virt-viewer/-/issues/10
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-03 14:45:03 +00:00
Daniel P. Berrangé
044534899b rpm: include buildid components in MSI filename
The MSI file can contain different content with each change in build ID,
but the filename never changes. This creates confusion as to whether the
MSI is actually up to date or not. It requires the looking inside the
MSI to see the encoded version.

The RPM uses 2 components from the %release field as input for the build
ID value. Use these as two parts of the filename, separated from the
version with a "-" similar to how RPM version/release are separated.

IOW, an RPM

   mingw32-virt-viewer-msi-9.0-1.fc33.noarch.rpm

will result in

   virt-viewer-x64-9.0-1.0.msi

while

   mingw32-virt-viewer-msi-9.0-1.fc33.1.noarch.rpm

will result in

   virt-viewer-x64-9.0-1.1.msi

Essentially we've just stripped the %dist part (".fc33") out of
the release, and default the second component to "0" if omitted.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-03-01 22:25:54 +00:00
Geert Warrink
c34984c41e Translated using Weblate (Dutch)
Currently translated at 100.0% (179 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/nl/

Signed-off-by: Geert Warrink <geert.warrink@onsnet.nu>
2021-03-01 23:07:34 +01:00
Daniel P. Berrangé
febf72fe26 src: switch to preferring gtk dark theme
This enables the app to use the dark theme when running in environments
where a dark theme is available.

This is not done in Windows because the dark theme looks quite odd when
run on older versions of Windows where GTK can't replace the titlebars
by default.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
0f1c12dc38 src: add help window showing keyboard shortcuts
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
49a67971af src: make use of header bar subtitle for ungrab hint
The header bar includes space for both a title and subtitle. By using
the latter for the ungrab hint, we avoid having such a long title.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
c43eb057bd src: convert full screen toolbar to GtkHeaderBar
The user interface for the fullscreen toolbar is now identical to that
seen when non-fullscreen. All that differs is that the toolbar autohides
in fullscreen mode and doesn't expand to fill the window width.

There is a complication with the timed revealer and menus. With
traditional GtkMenus, it appears a grab is held as long as the menu is
open, so the revealer won't hide the toolbar. With modern GtkPopover
based menus, however, the revealer hides the toolbar despite the menu
being open, and thus in turn hides the menu.

This hacks around the problem by setting the header buttons to force use
of a traditional GtkMenu instead of a GtkPopover. It is not quite as
visually pretty, but at least it works.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
bb9664de38 src: switch main window to use GtkHeaderBar
This removes the main menu bar in favour of using the GtkHeaderBar with
integrated bars. This reduces the amount of vertical screen real estate
consumed by the application, leaving more for the guest display. The new
buttons are laid out to make the more common actions available with a
single click.

The buttons are grouped into two sets. On the left hand side of the
header are buttons that are interacting with the server

 - Send key
 - USB device selection
 - Monitor selection and VM pause/shutdown

whle on the right hand side are buttons interacting with the local user
interface

 - Fullscreen
 - Preferences / About / Guest detail / zoom level

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
2f11e0a407 src: convert accelerator handling over to actions
This better decouples the accelerator handling from the current user
interface design.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
407836ecee src: convert displays menu to use actions
This better decouples the user interface from the implementation.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
4ae25cdf46 src: switch most menu and toolbar buttons to use actions
This decouples the user interface from the functional implementation
more cleanly.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
1ffee18864 src: convert smartcard and machine menus to use actions
This better decouples the user interface from the implementation.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
d35ca0b099 src: introduce more window level actions
All the menu / toolbar callbacks are given equivalent action
implementations.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
71a583bae6 src: introduce some application level actions
The machine pause/reset/powerdown and smartcard insert/remove operations
can implemented directly by the application class as they require no UI.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
5a0bf52d73 src: introduce public helpers for changing cd and screenshot dialogs
This decouples the functional implementation from the UI controls that
trigger it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
049f93d90a src: introduce public helpers for about and guest details dialogs
This decouples the functional implementation from the UI controls that
trigger it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
825975d2e7 src: introduce public helpers for changing zoom levels
This decouples the functional implementation from the UI controls that
trigger it.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
29d0c7cecd src: decouple accelerators array from actions array
We will be adding many more actions shortly, so cannot keep the two
arrays' sizes in sync.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Daniel P. Berrangé
ef6485c63e src: remove conditional test when setting USB reset accelerator
The first time this method is called we know that
usb_device_reset_accel_valid will be FALSE.

The other times this method is called all pass override=TRUE.

Thus the conditional test in virt_viewer_set_usb_device_reset_accel
always evaluates to TRUE and thus can be removed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2021-02-19 12:36:07 +00:00
Eduard Lucena
bb51ddb72f Translated using Weblate (Spanish)
Currently translated at 83.7% (150 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/es/

Signed-off-by: Eduard Lucena <eduardlucena@gmail.com>
2021-02-19 00:06:53 +01:00
Igor Gorbounov
8199a74091 Translated using Weblate (Russian)
Currently translated at 100.0% (179 of 179 strings)

Translation: virt-viewer/virt-viewer
Translate-URL: https://translate.fedoraproject.org/projects/virt-viewer/virt-viewer/ru/

Signed-off-by: Igor Gorbounov <igor.gorbounov@gmail.com>
2021-02-19 00:06:53 +01:00