I am not able to go full screen with /f nor toggle full screen with Crtl+Alt+Enter.
Tested on local build off commit b228deb998aa4751bf14f571a1843f9e00cb1321 on master
Hitting ctl+alt+enter gives this log message
[17:17:50:584] [6796:6797] [INFO][com.freerdp.client.x11] - Property 322 does not exist
Window manager is i3 (but hasn't change, i.e. fullscreen keyboard shortcut was working before).
I'll try to do some more digging on the weekend to get more details.
@andreesteve could you post the output of /buildconfig and try with our nightly builds as a reference?
I'll try the nightly build tonight.
Is there a specific build config that enables full screen?
Maybe me and my distro package maintainer just forgot to include that one?
This is FreeRDP version 2.0.0-dev3 (b228deb99)
Build configuration: BUILD_TESTING=OFF BUILTIN_CHANNELS=ON HAVE_AIO_H=1 HAVE_EXECINFO_H=1 HAVE_FCNTL_H=1 HAVE_INTTYPES_H=1 HAVE_JOURNALD_H=TRUE HAVE_MATH_C99_LONG_DOUBLE=1 HAVE_POLL_H=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK=ON HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL= HAVE_SYSLOG_H=1 HAVE_SYS_EVENTFD_H=1 HAVE_SYS_FILIO_H= HAVE_SYS_MODEM_H= HAVE_SYS_SELECT_H=1 HAVE_SYS_SOCKIO_H= HAVE_SYS_STRTIO_H= HAVE_SYS_TIMERFD_H=1 HAVE_TM_GMTOFF=1 HAVE_UNISTD_H=1 HAVE_XI_TOUCH_CLASS=1 WITH_ALSA=ON WITH_CCACHE=ON WITH_CHANNELS=ON WITH_CLIENT=ON WITH_CLIENT_AVAILABLE=1 WITH_CLIENT_CHANNELS=ON WITH_CLIENT_CHANNELS_AVAILABLE=1 WITH_CLIENT_COMMON=ON WITH_CLIENT_INTERFACE=OFF WITH_CUPS=OFF WITH_DEBUG_ALL=OFF WITH_DEBUG_CAPABILITIES=OFF WITH_DEBUG_CERTIFICATE=OFF WITH_DEBUG_CHANNELS=OFF WITH_DEBUG_CLIPRDR=OFF WITH_DEBUG_DVC=OFF WITH_DEBUG_KBD=OFF WITH_DEBUG_LICENSE=OFF WITH_DEBUG_MUTEX=OFF WITH_DEBUG_NEGO=OFF WITH_DEBUG_NLA=OFF WITH_DEBUG_NTLM=OFF WITH_DEBUG_RAIL=OFF WITH_DEBUG_RDP=OFF WITH_DEBUG_RDPDR=OFF WITH_DEBUG_RDPEI=OFF WITH_DEBUG_REDIR=OFF WITH_DEBUG_RFX=OFF WITH_DEBUG_RINGBUFFER=OFF WITH_DEBUG_SCARD=OFF WITH_DEBUG_SND=OFF WITH_DEBUG_SVC=OFF WITH_DEBUG_SYMBOLS=OFF WITH_DEBUG_THREADS=OFF WITH_DEBUG_TIMEZONE=OFF WITH_DEBUG_TRANSPORT=OFF WITH_DEBUG_TSG=OFF WITH_DEBUG_TSMF=OFF WITH_DEBUG_WND=OFF WITH_DEBUG_X11=OFF WITH_DEBUG_X11_CLIPRDR=OFF WITH_DEBUG_X11_LOCAL_MOVESIZE=OFF WITH_DEBUG_XV=OFF WITH_DIRECTFB=OFF WITH_EVENTFD_READ_WRITE=1 WITH_FFMPEG=ON WITH_GFX_H264=ON WITH_GPROF=OFF WITH_GSM=OFF WITH_GSSAPI=OFF WITH_GSTREAMER_0_10=OFF WITH_GSTREAMER_1_0=ON WITH_ICU=OFF WITH_IPP=OFF WITH_JPEG=OFF WITH_LIBRARY_VERSIONING=ON WITH_LIBSYSTEMD=ON WITH_MACAUDIO=OFF WITH_MACAUDIO=OFF WITH_MACAUDIO_AVAILABLE=0 WITH_MANPAGES=ON WITH_MBEDTLS=OFF WITH_OPENH264=OFF WITH_OPENSLES=OFF WITH_OPENSSL=ON WITH_OSS=ON WITH_PCSC=OFF WITH_PROFILER=OFF WITH_PULSE=OFF WITH_SAMPLE=OFF WITH_SANITIZE_ADDRESS=OFF WITH_SANITIZE_ADDRESS_AVAILABLE=1 WITH_SANITIZE_LEAK=OFF WITH_SANITIZE_MEMORY=OFF WITH_SANITIZE_MEMORY_AVAILABLE=1 WITH_SANITIZE_THREAD=OFF WITH_SANITIZE_THREAD_AVAILABLE=1 WITH_SERVER=OFF WITH_SERVER_INTERFACE=ON WITH_SMARTCARD_INSPECT=OFF WITH_SSE2=ON WITH_THIRD_PARTY=OFF WITH_VALGRIND_MEMCHECK=OFF WITH_VALGRIND_MEMCHECK_AVAILABLE=1 WITH_WAYLAND=ON WITH_X11=ON WITH_X264=OFF WITH_XCURSOR=ON WITH_XEXT=ON WITH_XFIXES=ON WITH_XI=ON WITH_XINERAMA=ON WITH_XKBFILE=ON WITH_XRANDR=ON WITH_XRENDER=ON WITH_XSHM=ON WITH_XV=ON WITH_ZLIB=ON
Build type: Debug
CFLAGS: -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g
Compiler: GNU, 7.3.1
Target architecture: x64
EDIT: here's the buildoptions for the nightly build I tried:
This is FreeRDP version 2.0.0-rc2 (n/a)
Build configuration: BUILD_TESTING=OFF BUILTIN_CHANNELS=ON HAVE_AIO_H=1 HAVE_EXECINFO_H=1 HAVE_FCNTL_H=1 HAVE_INTTYPES_H=1 HAVE_JOURNALD_H=TRUE HAVE_MATH_C99_LONG_DOUBLE=1 HAVE_POLL_H=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK=ON HAVE_PTHREAD_MUTEX_TIMEDLOCK_LIB=1 HAVE_PTHREAD_MUTEX_TIMEDLOCK_SYMBOL= HAVE_SYSLOG_H=1 HAVE_SYS_EVENTFD_H=1 HAVE_SYS_FILIO_H= HAVE_SYS_MODEM_H= HAVE_SYS_SELECT_H=1 HAVE_SYS_SOCKIO_H= HAVE_SYS_STRTIO_H= HAVE_SYS_TIMERFD_H=1 HAVE_TM_GMTOFF=1 HAVE_UNISTD_H=1 HAVE_XI_TOUCH_CLASS=1 WITH_ALSA=ON WITH_CCACHE=ON WITH_CHANNELS=ON WITH_CLIENT=ON WITH_CLIENT_AVAILABLE=1 WITH_CLIENT_CHANNELS=ON WITH_CLIENT_CHANNELS_AVAILABLE=1 WITH_CLIENT_COMMON=ON WITH_CLIENT_INTERFACE=OFF WITH_CUPS=ON WITH_DEBUG_ALL=OFF WITH_DEBUG_CAPABILITIES=OFF WITH_DEBUG_CERTIFICATE=OFF WITH_DEBUG_CHANNELS=OFF WITH_DEBUG_CLIPRDR=OFF WITH_DEBUG_DVC=OFF WITH_DEBUG_KBD=OFF WITH_DEBUG_LICENSE=OFF WITH_DEBUG_MUTEX=OFF WITH_DEBUG_NEGO=OFF WITH_DEBUG_NLA=OFF WITH_DEBUG_NTLM=OFF WITH_DEBUG_RAIL=OFF WITH_DEBUG_RDP=OFF WITH_DEBUG_RDPDR=OFF WITH_DEBUG_RDPEI=OFF WITH_DEBUG_REDIR=OFF WITH_DEBUG_RFX=OFF WITH_DEBUG_RINGBUFFER=OFF WITH_DEBUG_SCARD=OFF WITH_DEBUG_SND=OFF WITH_DEBUG_SVC=OFF WITH_DEBUG_SYMBOLS=OFF WITH_DEBUG_THREADS=OFF WITH_DEBUG_TIMEZONE=OFF WITH_DEBUG_TRANSPORT=OFF WITH_DEBUG_TSG=OFF WITH_DEBUG_TSMF=OFF WITH_DEBUG_WND=OFF WITH_DEBUG_X11=OFF WITH_DEBUG_X11_CLIPRDR=OFF WITH_DEBUG_X11_LOCAL_MOVESIZE=OFF WITH_DEBUG_XV=OFF WITH_DIRECTFB=OFF WITH_EVENTFD_READ_WRITE=1 WITH_FFMPEG=ON WITH_GFX_H264=ON WITH_GPROF=OFF WITH_GSM=OFF WITH_GSSAPI=OFF WITH_GSTREAMER_0_10=OFF WITH_GSTREAMER_1_0=ON WITH_ICU=OFF WITH_IPP=OFF WITH_JPEG=OFF WITH_LIBRARY_VERSIONING=ON WITH_LIBSYSTEMD=ON WITH_MACAUDIO=OFF WITH_MACAUDIO=OFF WITH_MACAUDIO_AVAILABLE=0 WITH_MANPAGES=ON WITH_MBEDTLS=OFF WITH_OPENH264=OFF WITH_OPENSLES=OFF WITH_OPENSSL=ON WITH_OSS=ON WITH_PCSC=OFF WITH_PROFILER=OFF WITH_PULSE=ON WITH_SAMPLE=OFF WITH_SANITIZE_ADDRESS=OFF WITH_SANITIZE_ADDRESS_AVAILABLE=1 WITH_SANITIZE_MEMORY=OFF WITH_SANITIZE_MEMORY_AVAILABLE=1 WITH_SANITIZE_THREAD=OFF WITH_SANITIZE_THREAD_AVAILABLE=1 WITH_SERVER=OFF WITH_SERVER_CHANNELS=ON WITH_SERVER_INTERFACE=ON WITH_SMARTCARD_INSPECT=OFF WITH_SSE2=ON WITH_THIRD_PARTY=OFF WITH_VALGRIND_MEMCHECK=OFF WITH_VALGRIND_MEMCHECK_AVAILABLE=1 WITH_WAYLAND=ON WITH_X11=ON WITH_X264=OFF WITH_XCURSOR=ON WITH_XEXT=ON WITH_XFIXES=ON WITH_XI=ON WITH_XINERAMA=ON WITH_XKBFILE=ON WITH_XRANDR=OFF WITH_XRENDER=ON WITH_XSHM=ON WITH_XV=ON WITH_ZLIB=ON
Build type: Release
CFLAGS: -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls
Compiler: GNU, 7.3.1
Target architecture: x64
And here's the nightly build I tried: https://ci.freerdp.com/job/freerdp-nightly-rpm-build/lastStableBuild/architecture=x86_64,distribution=sl42.3,label=pkg-rpm-build/
Same behavior (i.e. no fullscreen) as the locally built version. Here's the diff between mine and nightly options:
< HAVE_JOURNALD_H=TRUE
70,71c69,70
< WITH_FFMPEG=ON
< WITH_GFX_H264=ON
---
> WITH_FFMPEG=OFF
> WITH_GFX_H264=OFF
73,75c72,74
< WITH_GSM=OFF
< WITH_GSSAPI=OFF
< WITH_GSTREAMER_0_10=OFF
---
> WITH_GSM=ON
> WITH_GSSAPI=ON
> WITH_GSTREAMER_0_10=ON
79c78
< WITH_JPEG=OFF
---
> WITH_JPEG=ON
81c80
< WITH_LIBSYSTEMD=ON
---
> WITH_LIBSYSTEMD=OFF
91c90,91
< WITH_PCSC=OFF
---
> WITH_PAM=ON
> WITH_PCSC=ON
101c101
< WITH_SERVER=OFF
---
> WITH_SERVER=ON
109c109
< WITH_WAYLAND=ON
---
> WITH_WAYLAND=OFF
112a113
> WITH_XDAMAGE=ON
118c119
< WITH_XRANDR=OFF
---
> WITH_XRANDR=ON
120a122
> WITH_XTEST=ON
I guess I will try to find what version I had before I upgrade my system and see if compiling that version gets full screen working and then move from there. Or do you think there is an easier path for me to find out why it is not working for me?
If you feel comfortable, in xf_SetWindowFullscreen there are 2 paths setting fullscreen, maybe your wm is doing something different and the detection fails. (great, another one, X11 is really annoying in regard to that)
I really don't know much about X. I don't know how much of this problem is due to my window manager (i3). What I see:
When I tried debugging and had a breakpoint on the toggle full screen function, I lost all keyboard input everywhere, has anyone else experienced that? I think the xfreedrp process captures all input and cannot release it because I have the debugger attached and the process on hold. I guess my WM is not brute enough to just steal it back.
I guess I will have to find a GUI for gdb and see if I can debug purely with the mouse or figure out how to recover keyboard input when debugging. Any tips are really welcomed!
EDIT: I've installed Gnome and full screen toggling works there. Although it always maximizes onto the leftmost monitor (I have 3).
It seems that I lost full screen support in xfreerdp when I updated it to 2.0.0_rc2-1 (from 2.0.0-rc1), given the window manager hasn't been updated in a while I am leaning to a change in the client that caused this.
Given that I am having trouble debugging, I will try to bisect between the two versions to see if I can find the commit from which it stops working.
With bisect I found the commit that caused the unintended change. Looks like the problem has to do with having multi-monitors. If I can figure out my keyboard input issue while debugging, I will try to debug it.
1628045f6702bb922b73e53b8de72dde4c5cbedc is the first bad commit
commit 1628045f6702bb922b73e53b8de72dde4c5cbedc
Author: Armin Novak <[email protected]>
Date: Wed Dec 20 12:02:23 2017 +0100
Fullscreen without _NET_WM_FULLSCREEN_MONITORS
Some window managers do not support _NET_WM_FULLSCREEN_MONITORS.
In that case multimonitor fullscreen does not properly work, so
add a path resizing the window over all screens instead.
Based on @erbth pull request, adding proper X11 atom checks.
:040000 040000 0110d2d17f1aaf2299dfeb815a1af0555738a075 4d7e897d33cbc07b70acd5fda7ddef96d3b41e83 M client
EDIT: this is ==most likely incorrect==, but restores original behavior:
```
diff --git a/client/X11/xf_window.c b/client/X11/xf_window.c
index d28a34d93..6b2ba9cfb 100644
--- a/client/X11/xf_window.c
+++ b/client/X11/xf_window.c
@@ -194,7 +194,7 @@ void xf_SetWindowFullscreen(xfContext* xfc, xfWindow* window, BOOL fullscreen)
startY += xfc->context.settings->MonitorLocalShiftY;
}
i3 does not support an application spamming multiple monitors it seems (or at least has some limitations) bynot implementing _NET_WM_FULLSCREEN_MONITORS which seems not to be mandatory.
I think technically the right thing should be taking the else condition on the if that I have the diff for above. But whatever that else is doing is not working and I couldn't pinpoint what.
I think what I am doing is a bunch of guess work, so perhaps I need to wait on someone that knows X to point me in the right direction.
I have the same issue with dwm window manager.
I also see this with the "matchbox" window manager. It is a strange bird because it forces all top-level windows to be maximized. This did work properly in the past though. I am using a single monitor configuration though.
@nikkez , @geiseri would you guys be able to help testing my proposed fix ?
@andreesteve I will test it. I am not sure I follow the logic, but will this also work for multiple monitors?
@andreesteve I just tested the proposed fix and it works on the dwm window manager.
@nikkez , thank you!
@geiseri I am not sure we will have to test. I would expect your WM to not have support for _NET_WM_FULLSCREEN_MONITORS but still allow a window spamming two monitors (this is assuming it worked for you before). i3 doesn't do either it seems and gnome supports the former. So the code path that I believe would run for your WM is the one I didn't have a way to test (also I did not change anything there, so the prospect is grim :( ). If you can share any screenshots of problems you run into, let me know I can try to have a look.
FYI there is a workaround: use xfreerdp -grab-keyboard ... and then use i3's way of toggling the fullscreen mode for a window ($mod+f).
@andreesteve it tested out fine in matchbox. It shouldn't impact "normal" window managers with dual screen, right?
@geiseri I've tested this extensively in gnome (fair to assume that if there is a WM that implements the heck out of X extensions, it would be it :) and it works fine on my 3 monitor-setup (i.e. I couldn't find any regressions).
When building WITH_XRANDR=ON, there is a bug when using multi monitor fullscreen when selecting a subset of monitors (e.g. full screen on monitor 0 and 1 but not 2). It fails to correctly order the screens. But that is the case with or without my changes (i.e. my change is not fixing that).
I am having similar issues on my notebook (one screen only) running Linux Mint 19 with Cinnamon 3.8.8 with both, the nightly Build and a self generated build from the PR #4600. I do start freerdp with xfreerdp -u user@domain -f host, trying to get out of the full screen mode by pressing CTRL+ALT+ENTER vanishes the freerdp window, but it seems to still grab all inputs as I am not able to do anything in linux, what i am seeing, anymore.
Same problem as @mmattes described earlier except I'm using cinnamon 3.8.9. Debug log shows nothing interesting, just drawing messages.
$ xfreerdp /version
This is FreeRDP version 2.0.0-dev (git n/a)
$ apt-cache policy freerdp2-x11
freerdp2-x11:
Installed: 2.0.0~git20170725.1.1648deb+dfsg1-7
I'm using minimal connect options, I have 2 monitors on rdp server and 1 on client.
Most helpful comment
FYI there is a workaround: use
xfreerdp -grab-keyboard ...and then use i3's way of toggling the fullscreen mode for a window ($mod+f).