Commit Graph

1028 Commits

Author SHA1 Message Date
Frediano Ziglio
2f0d080179 iso-dialog: Fix leak and quoting
Do not leak memory in case of task cancelled.
Quote "msg" in case it contains some no-xml character that could
came from translated strings.

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2020-07-10 09:11:52 +01:00
Frediano Ziglio
8297a178c4 Minor updates to accel_key_to_keys
Make "modifiers" static, potentially avoids a copy to stack.
Use G_N_ELEMENTS also to allocate keys, as in the next loop
allowing to easily change "modifiers" size.

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2020-07-10 09:11:52 +01:00
Frediano Ziglio
ff11d5937e iso-dialog: Give less scary error if there are no ISOs
Instead of a fail simply reply that there are no ISO files.

Message text was suggested by Radek Duda who reported the issue.

Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
2020-07-10 09:11:19 +01:00
Eduardo Lima (Etrunko)
53dcc7fe52 foreign-menu: Avoid leaking 'name' variable in error path
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-07-01 11:14:38 -03:00
Daniel P. Berrangé
3e1d619529 src: remove trailing whitespace
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26 15:50:50 +01:00
Daniel P. Berrangé
e587274b76 src: remove tab characters from indent
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-06-26 15:50:50 +01:00
Eduardo Lima (Etrunko)
bb3d020cb9 ovirt-foreign-menu: Take into account StorageDomains of type DATA
Now that we support both ISO and DATA storage domain types, we need to
make sure that the files are listed correctly. In this case we give the
domains of ISO type the precedence over DATA ones.

This change extends previous commit bbda3aa which made it possible for
storage domains of type DATA to be considered valid.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-06-25 23:02:03 -03:00
Eduardo Lima (Etrunko)
42f408902e ovirt-foreign-menu: Use proper function in the case of DATA StorageDomains
Unlike the StorageDomain objects of ISO type, the DATA ones require a
specific API recently added to libgovirt to support them. This commit
makes use of those new functions under #ifdef guards and adds proper a
check to configure.ac.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1847223

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-06-25 23:02:01 -03:00
Julien Ropé
c6afc28cc9 Rather than adding a default extension to screenshots, display an error message to make the user add it.
This prevents the silent overwriting of the file, and still makes sure the user knows why we don't proceed.

Fix BZ#1752514

Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-06-09 15:50:02 +02:00
Stephen Thom
fedaa5f89a Added -K --keymap commandline option that allows user to block certain keypresses or to remap keypresses being sent to the underlying spice or vnc widget
Signed-off-by: Stephen Thom <sthom@williamhill.co.uk>
2020-06-05 14:12:19 +00:00
Daniel P. Berrangé
c12131ef30 fix handling of enter/leave events in full screen revealer
The current code is using a single event handler for leave/enter and
looking at the mouse coordinates to decide whether it entered or left
the widget. This logic is completely broken when the window is
mimimized, because the mouse coordinates of the leave event are still
within the window boundary.

Switch to just have a separate handler for enter/leave events and stop
looking at mouse coordinates entirely.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-05-19 17:48:28 +01:00
Eduardo Lima (Etrunko)
bbda3aa71a ovirt: Do not filter out DATA storage domains
Since ovirt 4.2 it is acceptable to have ISO images in storage domains
of DATA type, while the usage of ISO type is about to be deprecated. The
code now allow both types of storage domains when looking up for ISO
images.

https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.2/html/release_notes/deprecated_features_rhv
https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.4-beta/html/release_notes/deprecated_features_rhv

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1835640

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2020-05-19 10:30:21 -03:00
James Le Cuirot
ee173fc254
Add minimize button to toolbar
Signed-off-by: James Le Cuirot <chewi@gentoo.org>
2020-05-07 09:21:04 +01:00
Daniel P. Berrangé
beeff760ac docs: update to point users to gitlab.com project
The project primary git repo has moved from pagure.io to
gitlab.com/virt-viewer/virt-viewer.  We want users to submit
code contributions, bug reports and support questions to the
gitlab project, not the mailing list, nor bugzilla, nor the
virt-manager.org site.

We're still using virt-manager.org for hosting downloads of
source and pagure.io for MSIs, but we'll aim to change that
too.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-04-03 14:08:10 +01:00
Julien Ropé
d84149a92c Fix potential file descriptor leaks found by Coverity.
The error code returned by virt_viewer_session_open_fd() and
virt_viewer_session_channel_open_fd() were not checked. The file
descriptor passed to them could then be left opened even if the function
failed, causing a leak of resources.

This was reported by a Coverity scan, logged under
https://bugzilla.redhat.com/show_bug.cgi?id=1655792

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-04-03 14:08:00 +01:00
Julien ROPE
e4bacb8fde remote-viewer: add a default extension to screenshot filenames
When doing a screenshot, if the user provides a filename without a file
extension, an error occurs because the image format could not be determined.
This patch adds a .png extension to such filenames, so that there is a default
file format for screenshots.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1752514

Reviewed-by: Victor Toso <victortoso@redhat.com>
Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-02-19 09:47:21 +01:00
Julien Ropé
e279712281 Remember monitor mapping on close.
When the application is stopped, if the windows are in fullscreen, their
position on the client will be remembered.

This change uses the existing option 'monitor-mapping' in the settings
file to save the position and reuse it on next launch.

This implements part of the requirement from
https://bugzilla.redhat.com/show_bug.cgi?id=1179070

NOTE: this feature is effective only with GTK >= 3.22

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Julien Ropé <jrope@redhat.com>
2020-02-07 13:57:56 +00:00
Francesco Giudici
a724dff8a3 remote-viewer: add handler for SIGINT signal
When remote-viewer is started from terminal, CTRL-C sends a SIGINT
signal to the program causing immediate termination. On linux clients
usb redirected devices are left without any kernel driver attached,
causing them to appear as no more available to the host.
Add a SIGINT handler to allow a clean exit, in particular to allow
the kernel to attach back the host driver.
The issue is present on linux only.

To perform usb device redirection, virt-viewer leverages spice-gtk
library, which in turn relies on usbredir library, which uses libusb.
In order to take control of the usb device the auto-loaded kernel
driver must be detached. This is achieved (in the very end) with
libusb_detach_kernel_driver(). Then the device interfaces can be claimed
with libusb_claim_interface() and get in control to the application.
During normal application termination, the usb channel is teared down,
performing a reset of the usb device and giving back the control of the
device to the kernel (libusb_attach_kernel_driver()).
If the application quits without doing this, the device interfaces will
end up with no driver attached, making them not usable in the host
system.

Note that enabling libusb_set_auto_detach_kernel_driver() does not solve
the issue, as this is just a convenient API from libusb: libusb will
take care of detaching/attaching the driver to the interfaces of the usb
device each time a call to libusb_release_interface() and
libusb_claim_interface() is performed. An unexpected quit of the
application will skip the libusb_release_interface() call too, leaving
the interfaces without any driver attached.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1713311

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
2020-01-17 16:37:52 +00:00
Eduardo Lima (Etrunko)
b63e90f1f9 remote-viewer: Prefer ca-cert from display instead of proxy
Since oVirt engine version 4.3.2.1, the API returns certificate data for
display connection in the VM XML, so users do not need to specify it
from the command line anymore. The certificate obtained from the XML
gets precedence over the one from the command line, which is still kept
to keep compatibility of older versions of oVirt.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1402909

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-11 10:55:00 -03:00
Victor Toso
a13173ae64 remote-viewer: fix free on dangling pointer
On remote_viewer_session_connected() we are passing a dup of URI of
connection and freeing it afterwards. Problem is, we don't disconnect
from listening "session-connected" and on an eventual second emission
of this signal, remote-viewer crashes as seen in the backtrace below.

This can happen over switch-host migration message from
SpiceMainChannel.

A fix trying to use VirtViewerApp URI avoid the crash but introduces
regression while running remote-viewer with ovirt so, keeping the
changes to a minimum to avoid it, just use g_intern_string() for now.

Found it while improving migrate.py from spice/tests (server):
 | Invalid free() / delete / delete[] / realloc()
 |    at 0x4839A0C: free (vg_replace_malloc.c:540)
 |    by 0x56EBD8C: g_free (in /usr/lib64/libglib-2.0.so.0.6000.6)
 |    by 0x11DED0: remote_viewer_session_connected (remote-viewer.c:658)
 |    by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566AF68: g_signal_emit_by_name (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x135E5D: virt_viewer_session_spice_main_channel_event (virt-viewer-session-spice.c:699)
 |    by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x53149E3: emit_main_context (gio-coroutine.c:198)
 |  Address 0x18f1ecc0 is 0 bytes inside a block of size 23 free'd
 |    at 0x4839A0C: free (vg_replace_malloc.c:540)
 |    by 0x56EBD8C: g_free (in /usr/lib64/libglib-2.0.so.0.6000.6)
 |    by 0x11DED0: remote_viewer_session_connected (remote-viewer.c:658)
 |    by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566AF68: g_signal_emit_by_name (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x135E5D: virt_viewer_session_spice_main_channel_event (virt-viewer-session-spice.c:699)
 |    by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x56614F3: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x53149E3: emit_main_context (gio-coroutine.c:198)
 |  Block was alloc'd at
 |    at 0x483880B: malloc (vg_replace_malloc.c:309)
 |    by 0x56EBC98: g_malloc (in /usr/lib64/libglib-2.0.so.0.6000.6)
 |    by 0x5705C43: g_strdup (in /usr/lib64/libglib-2.0.so.0.6000.6)
 |    by 0x11EB80: remote_viewer_initial_connect (remote-viewer.c:696)
 |    by 0x11EB80: remote_viewer_start (remote-viewer.c:790)
 |    by 0x1250D3: virt_viewer_app_start (virt-viewer-app.c:1727)
 |    by 0x127108: virt_viewer_app_on_application_startup (virt-viewer-app.c:1870)
 |    by 0x564D741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x5661638: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A34D: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x566A972: g_signal_emit (in /usr/lib64/libgobject-2.0.so.0.6000.6)
 |    by 0x553ECA1: g_application_register (in /usr/lib64/libgio-2.0.so.0.6000.6)
 |    by 0x553F41D: g_application_run (in /usr/lib64/libgio-2.0.so.0.6000.6)

Signed-off-by: Victor Toso <victortoso@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-10-04 10:02:42 +02:00
Eduardo Lima (Etrunko)
c1998594b1 ovirt-foreign-menu: Plug memory leak
Error caught by valgrind, the OvirtCollection object created in function
ovirt_foreign_menu_fetch_vm_async() was never freed.

433 (40 direct, 393 indirect) bytes in 1 blocks are definitely lost in loss record 16,708 of 17,677
   at 0x5868FDF: g_type_create_instance (in /usr/lib64/libgobject-2.0.so.0.6000.6)
   by 0x584B42C: ??? (in /usr/lib64/libgobject-2.0.so.0.6000.6)
   by 0x584D347: g_object_new_valist (in /usr/lib64/libgobject-2.0.so.0.6000.6)
   by 0x584D69C: g_object_new (in /usr/lib64/libgobject-2.0.so.0.6000.6)
   by 0x558E823: ovirt_collection_new (ovirt-collection.c:304)
   by 0x558E98C: ovirt_sub_collection_new_from_resource_search (ovirt-collection.c:375)
   by 0x42D510: ovirt_foreign_menu_fetch_vm_async (ovirt-foreign-menu.c:994)
   by 0x42D510: ovirt_foreign_menu_next_async_step (ovirt-foreign-menu.c:316)
   by 0x42D70D: api_fetched_cb (ovirt-foreign-menu.c:1025)
   by 0x570BC19: ??? (in /usr/lib64/libgio-2.0.so.0.6000.6)
   by 0x570C7EC: ??? (in /usr/lib64/libgio-2.0.so.0.6000.6)
   by 0x559005D: call_async_cb (ovirt-proxy.c:279)
   by 0x55B5A07: ??? (in /usr/lib64/librest-0.7.so.0.0.0)

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-30 11:05:42 -03:00
Eduardo Lima (Etrunko)
22bd91cba0 ovirt-foreign-menu: Factor out code to set file collection
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-26 10:18:52 -03:00
Eduardo Lima (Etrunko)
ff0bfe3494 ovirt-foreign-menu: Only set domain_valid once
In the case of having a valid storage domain without any ISO files, this
variable can be reset to FALSE again in the next iteration of the loop,
resulting in a misleading error message presented to the user.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-21 10:37:47 -03:00
Fabiano Fidêncio
b79bb39420 ovirt-foreign-menu: Fix warnings on Rawhide
gmaovirt-foreign-menu.c: In function 'storage_domains_fetched_cb':
ovirt-foreign-menu.c:721:9: error: format not a string literal and no format arguments [-Werror=format-security]
  721 |         g_debug(msg);
      |         ^~~~~~~
ovirt-foreign-menu.c:722:9: error: format not a string literal and no format arguments [-Werror=format-security]
  722 |         g_task_return_new_error(task, OVIRT_ERROR, OVIRT_ERROR_FAILED, msg);
      |         ^~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
gmake[3]: *** [Makefile:963: libvirt_viewer_la-ovirt-foreign-menu.lo] Error 1
gmake[2]: *** [Makefile:647: all] Error 2
gmake[1]: *** [Makefile:482: all-recursive] Error 1
make: *** [Makefile:410: all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.f14Lmj (%build)

Errors have been caught by https://ci.centos.org/job/virt-viewer-rpm/systems=libvirt-fedora-rawhide/589/

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-08-15 22:26:26 +02:00
Eduardo Lima (Etrunko)
1c9a9c1205 ovirt-foreign-menu: Fix endpoint for storage domains query
Instead of fetching toplevel REST API query, we use the one relative
from the data center, which returns more detailed information,
especially the status of the storage domain.

This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1427467

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-12 10:55:54 -03:00
Kevin Pouget
a2a372ac2d virt-viewer-file-transfer-dialog: improve error message
This patch improves the error shown to the user when a file transfer
fails.

The previous behavior was to create a simple message dialog box, with
the error description and the full list of the files that failed to be
transferred. When the list of files was long, the dialog box would
grow bigger than the screen.

Now, the file list is inserted inside a scrollable widget, whose
height is limited to 170px.

NB: these two calls would be more adapted, but they require GTK >=
3.22:

> gtk_scrolled_window_set_max_content_height(GTK_SCROLLED_WINDOW(scrolled_window), 170);
> gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolled_window), TRUE);

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1496356

Signed-off-by: Kevin Pouget <kpouget@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-08-08 15:54:46 +02:00
Pavel Moseev
3627da2432 virt-viewer add translatable string
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-05-28 11:08:02 -03:00
Jonathon Jongsma
c2dabf0730 Fix a regression when initial connection fails
Due to changes in commit 65ef66e4, when the initial connection fails,
virt-viewer just sat quietly and didn't indicate what was wrong. It also
did not exit as it did before.  This is because we were using
virt_viewer_session_spice_channel_destroy() incorrectly. This function
was intended to be a callback that is called to clean up the VV session
when the SpiceSession tells us that a channel has been destroyed. It
does not actually destroy the channel, it only cleans up references to
that channel within virt-viewer. After calling this function, the
channel is not affected in any way. If the channel object was valid
before calling the function, it will be valid and unchanged after
calling the function as well.

The problem is that before commit 65ef66e4, this function
(_channel_destroy()) also had a side-effect of emitting a signal that
made us think that the SpiceSession was disconnected when it was not.
The application responded to this signal by exiting even though the
session was not properly disconnected and cleaned up.

We now no longer exit the application until the SpiceSession is properly
disconnected and cleaned up. So we need to make sure that this happens
when our initial connection fails. Therefore, when the main channel
receives an error channel-event, we should not call
virt_viewer_session_spice_channel_destroy(). This function should only
be called when a channel has actually been destroyed, and the channel is
not destroyed at this point.  We should instead explicitly disconnect
the session, which will result in the channels being destroyed properly.
After the session destroys all of the channels, the 'channel-destroy' signal
will be emitted by SpiceSession, so the _channel_destroy() function will
eventually get called by the signal handler.

To make the proper use of the function more obvious, I also changed the
function name from _channel_destroy() to _channel_destroyed() and added
a comment.

Fixes: rhbz#1666869
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2019-04-16 15:19:51 -05:00
Christophe Fergeau
da336ab4b3 Mark PrintScreen as translatable
It's for example ImprÉcran on French keyboards.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>

https://bugzilla.redhat.com/show_bug.cgi?id=1510411
Fabiano Fidêncio <fidencio@redhat.com>
2019-03-15 14:38:53 +00:00
Aleksei Nikiforov
ceb21d7894 remote-viewer: Allow toggling shared clipboard
Signed-off-by: Aleksei Nikiforov <darktemplar@basealt.ru>
Message-Id: <20190304143712.27989-1-darktemplar@basealt.ru>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2019-03-07 19:52:00 +01:00
Eduardo Lima (Etrunko)
099d86286b iso-dialog: Move type definitions from header to source file
There is no reason for this object to define a private structure, so it
is fine to make everything private to the dialog itself.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-02-22 09:19:27 -03:00
Eduardo Lima (Etrunko)
ed4768d589 Update usage of GObject private structures
New functions and macros have been added in glib 2.38 to better handle
this case.

c8de2b11bb/NEWS

The old method is being deprecated as of version 2.58.

https://gitlab.gnome.org/GNOME/glib/merge_requests/7/commits

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-02-22 09:19:27 -03:00
Daniel P. Berrangé
5daeea567c Declare VirtViewerFile variable at start of method
virt_viewer_session_vnc_auth_credential uses gotos which jump over the
declaration of 'file', meaning its contents are uninitialized in the
jump target.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-19 14:52:59 +00:00
Daniel P. Berrangé
9e4cc377a5 Fix prototype of function with no arguments
Modern C standard requires the function to be "void"

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-19 14:52:59 +00:00
Daniel P. Berrangé
9e16ee09cf Fix signed/unsigned mixup in format args
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-19 14:51:29 +00:00
Eduardo Lima (Etrunko)
673e993158 window: Use proper define from glib for ignoring deprecated warning
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-13 11:58:17 -02:00
Daniel P. Berrangé
455c9a2f36 Disable deprecation warnings for gtk_window_fullscreen_on_monitor
We use GLIB_VERSION_MAX_ALLOWED to prevent use of functions from
GTK >= 3.12. When we do conditional compilation based on a GTK
version check, we must thus suppress the warning:

  CC       libvirt_viewer_la-virt-viewer-window.lo
../../src/virt-viewer-window.c: In function 'virt_viewer_window_enter_fullscreen':
../../src/virt-viewer-window.c:608:9: error: 'gtk_window_fullscreen_on_monitor' is deprecated: Not available before 3.18 [-Werror=deprecated-declarations]
         gtk_window_fullscreen_on_monitor(GTK_WINDOW(priv->window),
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtkdialog.h:32,
                 from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                 from /usr/include/gtk-3.0/gtk/gtk.h:31,
                 from ../../src/virt-viewer-window.c:28:
/usr/include/gtk-3.0/gtk/gtkwindow.h:391:10: note: declared here
 void     gtk_window_fullscreen_on_monitor(GtkWindow *window,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-12 13:56:07 +00:00
Marc-André Lureau
8d451999be build-sys: lower spice-gtk requirement to 0.35 again
Compile out QMP channel support if spice-gtk version < 0.36.

(note: I didn't bother adding configure switch to enable it
explicitly, this could be added later if necessary)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-02-04 11:42:11 +01:00
Paul Donohue
54b9d05b04 Report gtk_accel_map_change_entry() failures
Signed-off-by: Paul Donohue <virt-tools@PaulSD.com>
Message-Id: <1533340753-24176-2-git-send-email-virt-tools@PaulSD.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2019-02-01 11:21:33 +01:00
Marc-André Lureau
31cb5592a0 spice: hook into QMP port
If the "org.qemu.monitor.qmp.0" port is available:
- enable the VM UI
- get and follow the VM state
- send the requested VM actions

This requires spice-gtk version 0.36 with SpiceQmpPort helper.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-02-01 11:21:29 +01:00
Marc-André Lureau
951f364dc3 spice: hook into port channel to create VTE terminals
QEMU defines a few Spice port channel names in
docs/spice-port-fqdn.txt that can be interacted with a terminal.

Create VirtViewerDisplayVte display for all known terminal channel,
and redirect read/write signals.

Note that if VTE support is disabled, or if the VTE console isn't
shown, spice-gtk will still process those port channels (discarding
the read if VTE is disabled).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-02-01 11:21:26 +01:00
Marc-André Lureau
ffa9c81a09 session: do not take VTE display into account for geometry changes
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-02-01 11:21:12 +01:00
Jonathon Jongsma
3bc3b15284 Fix regression when showing disconnect error
Commit 65ef66e42 introduced a regression due to lack of type-safety on
signals. We mistakenly passed a GError rather than a string error
message to the signal.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-01-28 11:32:04 -06:00
Eduardo Lima (Etrunko)
b3017371ce Add missing G_MODULE_EXPORT to signal handler
Fixes the Windows case where the dialog fails to show with the following
message:

warning: "Could not find signal handler 'virt_viewer_window_menu_change_cd_activate'"

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2019-01-18 17:48:46 -02:00
Marc-André Lureau
e7b134c270 app: add "vm-running" property
Add "vm-running" property and modify "menu-vm-pause" check button
state when the running state changes.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-12-21 18:16:41 +04:00
Marc-André Lureau
2d8d923fd0 app: add "machine" UI
Add a new "Machine" menu, which allows to Pause/Reset/Power Down a VM.

The menu is only visible if "vm-ui" app property is set.

When the application quits, it will also send a quit action to the VM.

This is a similar behaviour/UI as qemu -display gtk.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-12-21 18:16:39 +04:00
Marc-André Lureau
a0a2d99fbd app: create a window for VTE displays
virt_viewer_app_display_added() now handles VTE displays. They should
be skipped for monitor configuration, and they don't emit "show-hint".

(a VTE display has a monitor nth == -1, which is now a valid value)

The associated window will be hidden when virt-viewer is started.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-12-21 18:16:03 +04:00
Marc-André Lureau
be5ff83dfc spice: add unix-path in .vv file support
This will allow to connect to a Spice server using a unix socket path,
for example:

[virt-viewer]
type=spice
unix-path=/var/run/user/1000/qemu/test/spice.sock

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Christophe Fergeau <cfergeau@redhat.com>
2018-12-21 16:53:35 +04:00
Marc-André Lureau
f06a882b11 display: allow display without associated monitor number
The VTE display will have monitor id -1.

Eventually, having a base "console" class without monitor id could
avoid this allowance.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-12-21 15:14:37 +04:00
Marc-André Lureau
fd25645c11 app: append VTE consoles to display submenu
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2018-12-21 15:14:34 +04:00