GithubHelp home page GithubHelp logo

bk138 / multivnc Goto Github PK

View Code? Open in Web Editor NEW
424.0 26.0 65.0 7.8 MB

MultiVNC is a cross-platform Multicast-enabled VNC viewer based on LibVNCClient. The desktop version runs on Unix, Mac OS X and Windows. There also is an Android version.

License: GNU General Public License v3.0

Java 30.94% C++ 39.40% C 21.76% HTML 0.36% NSIS 0.44% CMake 2.48% Shell 0.05% Kotlin 4.57%
vnc vnc-client vnc-viewer remote-desktop multicast android wxwidgets viewer zeroconf cross-platform linux macos windows

multivnc's Introduction

MultiVNC

CI Help making this possible Become a patron Donate Gitter

MultiVNC is a cross-platform Multicast-enabled VNC viewer based on LibVNCClient. The desktop version uses wxWidgets and runs on Unix, Mac OS X and Windows. There also is an Android version.

The roadmap for future developments regarding the project can be found here.

MultiVNC for Android

Features

  • Support for most VNC encodings including Tight.
  • TLS support, i.e. AnonTLS and VeNCrypt.
  • Support for SSH-Tunnelling with password- and privkey-based authentication.
  • UltraVNC Repeater support.
  • Discovery of VNC servers advertising themselves via ZeroConf.
  • Bookmarking of connections.
  • Import and export of saved connections.
  • Virtual mouse button controls with haptic feedback.
  • Two-finger swipe gesture recognition.
  • A super fast touchpad mode for local use.
  • Hardware-accelerated OpenGL drawing and zooming.
  • Supports server framebuffer resize.
  • Copy&paste to and from Android.

How to get it

Get it on F-Droid Get it on Google Play

How to build

See the Android version's README.

MultiVNC for Desktop

Features

  • Support for most encodings including Tight.
  • TLS support, i.e. AnonTLS and VeNCrypt.
  • Discovery of VNC servers advertising themselves via ZeroConf.
  • Bookmarking of connections.
  • Supports server framebuffer resize.
  • Several connections with one viewer using tabs.
  • Listen mode (Reverse VNC). Via tabs it's possible to listen for and serve multiple incoming connections.
  • Record and replay of user input macros.
  • Under X11, seamless control of the remote side by moving pointer over the (default upper) screen edge. Borrows heavily from x2vnc by Fredrik Hübinette [email protected], which in turn was based on ideas from x2x and code from vncviewer.
  • Simple, loggable statistics.
  • MulticastVNC ;-)

How to get it

To get bleeding-edge packages built from the master development branch, navigate to the list of CI runs, select the last successful one and download the wanted artifact.

How to build

The prerequisites:

  • the usual c-compiler with headers and stuff
  • wxWidgets dev package version >= 3.0
  • zlib dev package
  • libjpeg dev package

After cloning the repo, do

   git submodule init
   git submodule update

To build:

   mkdir build
   cd build
   cmake ..
   cmake --build .
   cpack

Depending on which OS you are on, you end up with a .deb, .dmg or .exe you can install.

MulticastVNC notes

You can get a modified libvncserver/libvncclient at https://github.com/LibVNC/libvncserver/tree/multicastvnc - this is the same library that MultiVNC uses internally.

multivnc's People

Contributors

bk138 avatar chenzhang22 avatar chunlinyao avatar danielgindi avatar devlearner avatar eson57 avatar ferrumcccp avatar frischid avatar gch1p avatar gujjwal00 avatar kpansky avatar myan-o avatar sestowner avatar susobaco avatar theg4sh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multivnc's Issues

crash in importexport

 at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1513)
  at java.net.Inet6AddressImpl.lookupHostByName (Inet6AddressImpl.java:117)
  at java.net.Inet6AddressImpl.lookupAllHostAddr (Inet6AddressImpl.java:105)
  at java.net.InetAddress.getAllByName (InetAddress.java:1154)
  at com.android.okhttp.Dns$1.lookup (Dns.java:39)
  at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress (RouteSelector.java:198)
  at com.android.okhttp.internal.http.RouteSelector.nextProxy (RouteSelector.java:146)
  at com.android.okhttp.internal.http.RouteSelector.next (RouteSelector.java:88)
  at com.android.okhttp.internal.http.StreamAllocation.findConnection (StreamAllocation.java:190)
  at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection (StreamAllocation.java:142)
  at com.android.okhttp.internal.http.StreamAllocation.newStream (StreamAllocation.java:104)
  at com.android.okhttp.internal.http.HttpEngine.connect (HttpEngine.java:392)
  at com.android.okhttp.internal.http.HttpEngine.sendRequest (HttpEngine.java:325)
  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:470)
  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect (HttpURLConnectionImpl.java:127)
  at com.coboltforge.dontmind.multivnc.ImportExportActivity$2.onClick (ImportExportActivity.java:121)

Android: Code cleanup

There are some issues (related to style & formatting) that I can fix. I would like your feedback/suggestions before I start.

Issues

  • Code formatting: Currently there are different styles of formatting (eg. tab vs space) used. We can follow a consistent style.
  • Missing license: Some files are missing license headers. We should fix it.

Why fix it

  • Increased readability
  • Reduced maintenance efforts
  • Easy on-boarding for new contributors

Function key on Gemini PDA Android device broken, can't enter dashes, underscores and more

When using multivnc on the Gemini PDA Android phone (which has a hardware keyboard where some different key characters are accessed via shift, but some others also via an additional function key) the function key doesn't work inside the vnc session, making it impossible to enter dashes, underscores and many other vital keys. It works fine in all other apps including e.g. termux

frequent timeouts on service scan

:::  this is MultiVNC  :::

Copyright (C) 2009-2012 Christian Beier <[email protected]>.
MultiVNC is free software, licensed unter the GPL.

11:23:09: Debug: 
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: about to query '_rfb._tcp.local.'
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: Using IPv4
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 0 seconds
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: got answer:
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    key:  Sanss iMac._rfb._tcp.local.
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    ttl:  1565949647
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    time: 306
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    name: Sanss iMac._rfb._tcp.local.
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    ip:   0.0.0.0
11:23:09: Debug: wxServDisc 0x5616fee6c1b0:    port: 0
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: answer end
11:23:09: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 2 seconds
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 2 seconds
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: got answer:
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    key:  Sanss iMac._rfb._tcp.local.
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    ttl:  1565949648
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    time: 1629
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    name: Sanss iMac._rfb._tcp.local.
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    ip:   0.0.0.0
11:23:10: Debug: wxServDisc 0x5616fee6c1b0:    port: 0
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: answer end
11:23:10: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 2 seconds
11:23:10: Debug: 
11:23:10: Debug: wxServDisc 0x7ffed5baa310: about to query 'Sanss iMac._rfb._tcp.local.'
11:23:10: Debug: wxServDisc 0x7ffed5baa310: Using IPv4
11:23:13: Debug: wxServDisc 0x7ffed5baa310: before scanthread delete
11:23:13: Debug: wxServDisc 0x7ffed5baa310: scanthread deleted, wxServDisc destroyed, query was 'Sanss iMac._rfb._tcp.local.', lifetime was 3018
11:23:13: Debug: 
11:23:13: Debug: 
11:23:13: Debug: wxServDisc 0x7ffed5baa2d0: about to query 'Sanss iMac._rfb._tcp.local.'
11:23:13: Debug: wxServDisc 0x7ffed5baa2d0: Using IPv4
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: before scanthread delete
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread deleted, wxServDisc destroyed, query was 'Sanss iMac._rfb._tcp.local.', lifetime was 301
11:23:14: Debug: 
11:23:14: Debug: 
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: about to query 'Sanss-iMac.local.'
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: Using IPv4
11:23:17: Debug: wxServDisc 0x7ffed5baa2d0: before scanthread delete
11:23:17: Debug: wxServDisc 0x7ffed5baa2d0: scanthread deleted, wxServDisc destroyed, query was 'Sanss-iMac.local.', lifetime was 3018
11:23:17: Debug: 
11:23:17: Debug: VNCConn 0x5616feca6860: Setup()
11:23:17: Debug: VNCConn 0x5616feca6860: Init()
16/08/2019 11:23:17 About to connect to '', port 5900
16/08/2019 11:23:17 ConnectClientToTcpAddr6: getaddrinfo (Zu diesem Hostnamen gehört keine Adresse)
16/08/2019 11:23:17 ConnectToTcpAddr: connect
16/08/2019 11:23:17 Unable to connect to VNC server
11:23:17: Debug: VNCConn 0x5616feca6860: Init() failed. Cleanup by library.
11:23:17: Debug: VNCConn 0x5616feca6860: Shutdown()
11:23:17: Debug: VNCConn 0x5616feca6860: Shutdown()
11:23:17: Debug: VNCConn 0x5616feca6860: Cleanup()
11:23:17: Debug: VNCConn 0x5616feca6860: I'm dead!
11:23:10: Debug: wxServDisc 0x7ffed5baa310: scanthread waiting for data, timeout 0 seconds
11:23:11: Debug: wxServDisc 0x7ffed5baa310: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:11: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:11: Debug: wxServDisc 0x7ffed5baa310: scanthread waiting for data, timeout 1 seconds
11:23:11: Debug: wxServDisc 0x7ffed5baa310: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:11: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:11: Debug: wxServDisc 0x7ffed5baa310: scanthread waiting for data, timeout 1 seconds
11:23:12: Debug: wxServDisc 0x7ffed5baa310: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:12: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:12: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 3 seconds
11:23:12: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:12: Debug: wxServDisc 0x7ffed5baa310: scanthread waiting for data, timeout 2 seconds
11:23:12: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 3 seconds
11:23:12: Debug: wxServDisc 0x7ffed5baa310: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:12: Debug: wxServDisc 0x7ffed5baa310: scanthread waiting for data, timeout 2 seconds
11:23:13: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 0 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: got answer:
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    key:  Sanss iMac._rfb._tcp.local.
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    ttl:  1565947462
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    time: 290
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    name: Sanss-iMac.local.
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    ip:   0.0.0.0
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0:    port: 5900
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: answer end
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 0 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 1 seconds
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:14: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 1 seconds
11:23:15: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:15: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(0), timeout(1), error(0), deletion(0)
11:23:15: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 0 seconds
11:23:15: Debug: wxServDisc 0x5616fee6c1b0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:15: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 2 seconds
11:23:15: Debug: wxServDisc 0x5616fee6c1b0: scanthread waiting for data, timeout 2245 seconds
11:23:15: Debug: wxServDisc 0x7ffed5baa2d0: scanthread woke up, reason: incoming data(1), timeout(0), error(0), deletion(0)
11:23:15: Debug: wxServDisc 0x7ffed5baa2d0: scanthread waiting for data, timeout 2 seconds
11:23:20: Debug: wxServDisc 0x5616fee6c1b0: before scanthread delete
11:23:20: Debug: wxServDisc 0x5616fee6c1b0: scanthread deleted, wxServDisc destroyed, query was '_rfb._tcp.local.', lifetime was 11740
11:23:20: Debug: 
11:23:20: Debug: 4 threads were not terminated by the application.

crash on adding bookmark

Thread 1 "multivnc" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff2c93d40 (LWP 9714)]
0x00007ffff7c8f94a in wxItemContainer::AssignNewItemClientData(unsigned int, void**, unsigned int, wxClientDataType) () from /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
(gdb) bt
#0  0x00007ffff7c8f94a in wxItemContainer::AssignNewItemClientData(unsigned int, void**, unsigned int, wxClientDataType) () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#1  0x00007ffff7c8fad1 in wxItemContainer::DoInsertItemsInLoop(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) ()
    at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#2  0x00007ffff7c3106e in wxListBox::DoInsertItems(wxArrayStringsAdapter const&, unsigned int, void**, wxClientDataType) () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#3  0x00005555555b45c1 in wxItemContainer::AppendItems(wxArrayStringsAdapter const&, void**, wxClientDataType) ()
#4  0x00005555555b4692 in wxItemContainer::AppendItems(wxArrayStringsAdapter const&, void**) ()
#5  0x00005555555b470c in wxItemContainer::Append(wxArrayString const&, void**) ()
#6  0x00005555555b4779 in wxItemContainer::Set(wxArrayString const&, void**) ()
#7  0x00005555555a83dd in MyFrameMain::loadbookmarks() ()
#8  0x00005555555adbbd in MyFrameMain::bookmarks_add(wxCommandEvent&) ()
#9  0x00007ffff78607ae in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#10 0x00007ffff78608b3 in wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#11 0x00007ffff7860bec in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#12 0x00007ffff7860c73 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#13 0x00007ffff7860d11 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#14 0x00007ffff7d843cb in wxWindowBase::TryAfter(wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#15 0x00007ffff7860ab7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#16 0x00007ffff7d3b9f5 in wxMenuBase::SendEvent(int, int) () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#17 0x00007ffff7c3aabb in  () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#18 0x00007ffff72a3c8d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007ffff72b7365 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007ffff72c02be in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007ffff72c097f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007ffff6c22a4a in gtk_widget_activate () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#23 0x00007ffff6b1f4bd in gtk_menu_shell_activate_item () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#24 0x00007ffff6b1f78e in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#25 0x00007ffff6b0d1eb in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#26 0x00007ffff72a3c8d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#27 0x00007ffff72b6bbd in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#28 0x00007ffff72bf9ab in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#29 0x00007ffff72c097f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#30 0x00007ffff6c23cac in  () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#31 0x00007ffff6b0b48c in gtk_propagate_event () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#32 0x00007ffff6b0b87b in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#33 0x00007ffff6e7ebac in  () at /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0
#34 0x00007ffff7337f2e in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007ffff73381c8 in  () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007ffff73384c2 in g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007ffff6b0a8e7 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#38 0x00007ffff7bbc845 in wxGUIEventLoop::DoRun() () at /usr/lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0
#39 0x00007ffff773648d in wxEventLoopBase::Run() () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#40 0x00007ffff76ff616 in wxAppConsoleBase::MainLoop() () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#41 0x00007ffff7780cf9 in wxEntry(int&, wchar_t**) () at /usr/lib/x86_64-linux-gnu/libwx_baseu-3.0.so.0
#42 0x00005555555872a2 in main ()

Huavei 10 mate lite Capslock state detection problem

Dear specialists, I Am using yours app with Archlinux Aarch 64 which run by using Termux and Android device. Sure, Multivnc run on normal Android phone. I have issues with The Capslock key detection state. Orca screen reader uses XKB protocol to get information about pressed keys. For example. When I turn Capslock on, I can correctly type big letters. But Orca do not detect if Capslock have been pressed and its state. On or off. This problem is independent which Hardware keyboard model will I use. Orca can not also correctly detect if I have pressed left ALT or right ALT key. Orca speak left ALT even I press right ALT. The most annoing issue is The fact, that I can not control Orca navigation system. Because if Orca do not detect CAPSLOCK state, it can not react on key combination CAPSLOCk and some letter such as u, j or l.
Do you think, that there is some chance to find out The ccause of this issue?
The problem is really in VNC client app. May be, that Orca need to get more specific more exact info about keys. The question is, if is itpossible to develop such code inside yours app, which would inform this screen reader about The state of CAPSLOCk key.
Sure. Orca have been developed for A situation, where user uses it iwth standard Linux not controlled by using VNC protocol.
Any help will be very welcomed.
Thank you very much for yours time.

Phone vs tablet behaviour

Hello, I'm a long time user of MultiVNC and I like it a lot. I'm trying to use it now in a tablet with a big eInk screen. There seems to be different behaviors between this device and a phone, and I'm not sure that you are aware of it, since I couldn't find anything about it in the help of the app or here in the repo. Both devices are running MultiVNC 1.8.9, the tablet running Android 9, the phone running LineageOS 16 (Android 9).

From the phone I'm moving the mouse by swapping in the screen. Taps don't work. Mouse clicks are done with the bottom screen buttons. If Toggle Mouse Buttons is disabled, then taps works, where one tap is a left click, and two taps is a right click. In the Tablet, mouse movement by swipe is not working, because swipe seems to be interpreted as a multiple tap, and tap is interpreted as a left click, which I think is fine, since with a big screen is easy to tap where you want to click. I couldn't find a way to do a right click without toggling the mouse buttons.

In my phone I am able to scroll by two finger swap. In the tablet I can't do that. There's also a problem with the zoom. In my phone I long press to show the zoom +, keyboard and zoom - icons at top, but in the tablet long press is like a tap, like a mouse click, so is not showing those buttons.

No menu on Samsung tab A

If you'd like to put out an incentive for fixing this bug, you can do so at https://issuehunt.io/r/bk138/multivnc?tab=idle

Is your bug report about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets) or Mobile (Android): Android 7.1.1

Describe the bug

Samsung galaxy tab a, connects to raspberry pi3, but the hamburger menu does not open. It makes an audible click, but I expect a menu to open with keybd mode, exit, etc.

  • Android version: 7.1.1
  • Installed from Play Store or F-Droid: f-droid

Doesn't work with turbo vnc

Version 1.7.9 f-droid
Show error when connecting Unknown RFB message type 145
Works with other vnc servers.
Also tight vnc client connects just fine

Submit app to F-Droid

It would be great if this app was available via the F-Droid repository (https://f-droid.org/) in addition to Google Play Store. This is useful for people who don't like to use Google Play Store in general.

Also, F-Droid creates an archive of previous versions, something that Google Play does not do. This can be useful if there is a bug in a new version, allowing the user to revert to an older one.

Build Errors on Linux Mint 19.1

Hi There,

Tried a build on a fresh Mint 19.1 install and it bombed out as below. Any ideas?

Thanks,
Gary

=================================================

netsim@NetSimManager:~/src/multivnc-0.5$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking whether to enable debugging... no
checking wxWidgets version... 3.0.4
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking how to run the C preprocessor... gcc -E
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking whether gcc and cc understand -c and -o together... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking how to run the C++ preprocessor... g++ -E
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking for jpeg_CreateCompress in -ljpeg... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for deflate in -lz... yes
checking for libgcrypt-config... /usr/bin/libgcrypt-config
checking for LIBGCRYPT - version >= 1.4.0... yes (1.8.1)
checking for GNUTLS... no
checking for getaddrinfo... yes
checking for ANSI C header files... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/timeb.h usability... yes
checking sys/timeb.h presence... yes
checking for sys/timeb.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking ws2tcpip.h usability... no
checking ws2tcpip.h presence... no
checking for ws2tcpip.h... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking whether byte ordering is bigendian... no
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for socklen_t... yes
checking for stdint-types....... "(putting them into src/rfb/rfbint.h)"
checking for uintptr_t... yes
checking for uint64_t... yes
... seen our uintptr_t in stdint.h (uint64_t too)
creating src/rfb/rfbint.h : _SRC_RFB_RFBINT_H
checking for int_least32_t... yes
checking for int_fast32_t... yes
..adding include stdint.h
... seen good stdint.h inttypes
... seen good uint64_t
... DONE src/rfb/rfbint.h
checking for in_addr_t... 
checking for working memcmp... yes
checking whether lstat correctly handles trailing slash... yes
checking whether stat accepts an empty string... no
checking for strftime... yes
checking for vprintf... yes
checking for _doprnt... no
checking for pid_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for gethostbyname in -lnsl... yes
checking for socket in -lsocket... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/wxServDisc/Makefile
config.status: creating src/libvncclient/Makefile
config.status: creating src/gui/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing src/rfb/rfbconfig.h commands
config.status: creating src/rfb/rfbconfig.h - prefix LIBVNCSERVER for config.h defines
config.status: src/rfb/rfbconfig.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
netsim@NetSimManager:~/src/multivnc-0.5$ make
make  all-recursive
make[1]: Entering directory '/home/netsim/src/multivnc-0.5'
Making all in src
make[2]: Entering directory '/home/netsim/src/multivnc-0.5/src'
Making all in wxServDisc
make[3]: Entering directory '/home/netsim/src/multivnc-0.5/src/wxServDisc'
gcc -DHAVE_CONFIG_H -I. -I../..  -I/usr/lib/x86_64-linux-gnu/wx/include/base-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL   -O2   -MT libwxservdisc_a-1035.o -MD -MP -MF .deps/libwxservdisc_a-1035.Tpo -c -o libwxservdisc_a-1035.o `test -f '1035.c' || echo './'`1035.c
mv -f .deps/libwxservdisc_a-1035.Tpo .deps/libwxservdisc_a-1035.Po
gcc -DHAVE_CONFIG_H -I. -I../..  -I/usr/lib/x86_64-linux-gnu/wx/include/base-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL   -O2   -MT libwxservdisc_a-mdnsd.o -MD -MP -MF .deps/libwxservdisc_a-mdnsd.Tpo -c -o libwxservdisc_a-mdnsd.o `test -f 'mdnsd.c' || echo './'`mdnsd.c
mdnsd.c: In function ‘mdnsd_out’:
mdnsd.c:469:13: warning: implicit declaration of function ‘htons’ [-Wimplicit-function-declaration]
     *port = htons(5353);
             ^~~~~
mdnsd.c:470:11: warning: implicit declaration of function ‘inet_addr’ [-Wimplicit-function-declaration]
     *ip = inet_addr("224.0.0.251");
           ^~~~~~~~~
mv -f .deps/libwxservdisc_a-mdnsd.Tpo .deps/libwxservdisc_a-mdnsd.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I/usr/lib/x86_64-linux-gnu/wx/include/base-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL   -Wall -O2 -fno-strict-aliasing  -MT libwxservdisc_a-wxServDisc.o -MD -MP -MF .deps/libwxservdisc_a-wxServDisc.Tpo -c -o libwxservdisc_a-wxServDisc.o `test -f 'wxServDisc.cpp' || echo './'`wxServDisc.cpp
wxServDisc.cpp: In member function ‘virtual void* wxServDisc::Entry()’:
wxServDisc.cpp:166:5: error: ‘close’ was not declared in this scope
     close(sock);
     ^~~~~
wxServDisc.cpp:166:5: note: suggested alternative: ‘clone’
     close(sock);
     ^~~~~
     clone
wxServDisc.cpp: In member function ‘SOCKET wxServDisc::msock()’:
wxServDisc.cpp:347:7: error: ‘close’ was not declared in this scope
       close(sock);
       ^~~~~
wxServDisc.cpp:347:7: note: suggested alternative: ‘clone’
       close(sock);
       ^~~~~
       clone
wxServDisc.cpp: In constructor ‘wxServDisc::wxServDisc(void*, const wxString&, int)’:
wxServDisc.cpp:395:14: warning: ‘wxThreadError wxThreadHelper::Create(unsigned int)’ is deprecated [-Wdeprecated-declarations]
   if( Create() != wxTHREAD_NO_ERROR )
              ^
In file included from wxServDisc.cpp:26:0:
/usr/include/wx-3.0/wx/thread.h:760:22: note: declared here
 inline wxThreadError wxThreadHelper::Create(unsigned int stackSize)
                      ^~~~~~~~~~~~~~
wxServDisc.cpp: In member function ‘void wxServDisc::post_notify()’:
wxServDisc.cpp:444:28: error: variable ‘wxCommandEvent event’ has initializer but incomplete type
       wxCommandEvent event(wxServDiscNOTIFY, wxID_ANY);
                            ^~~~~~~~~~~~~~~~
Makefile:347: recipe for target 'libwxservdisc_a-wxServDisc.o' failed
make[3]: *** [libwxservdisc_a-wxServDisc.o] Error 1
make[3]: Leaving directory '/home/netsim/src/multivnc-0.5/src/wxServDisc'
Makefile:409: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/netsim/src/multivnc-0.5/src'
Makefile:419: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/netsim/src/multivnc-0.5'
Makefile:288: recipe for target 'all' failed
make: *** [all] Error 2

NetworkOnMainThreadException, Android 9

Xiaomi MI 9 SE (grus), Android 9

android.os.NetworkOnMainThreadException: 
 
  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1513)
 
  at java.net.SocketOutputStream.socketWrite (SocketOutputStream.java:116)
 
  at java.net.SocketOutputStream.write (SocketOutputStream.java:149)
 
  at com.coboltforge.dontmind.multivnc.RfbProto.writeFramebufferUpdateRequest (RfbProto.java:947)
 
  at com.coboltforge.dontmind.multivnc.LargeBitmapData.syncScroll (LargeBitmapData.java:278)
 
  at com.coboltforge.dontmind.multivnc.LargeBitmapData.scrollChanged (LargeBitmapData.java:149)
 
  at com.coboltforge.dontmind.multivnc.VncCanvas.onScrollChanged (VncCanvas.java:551)
 
  at android.view.View.scrollTo (View.java:16174)
 
  at com.coboltforge.dontmind.multivnc.VncCanvas.scrollToAbsolute (VncCanvas.java:431)
 
  at com.coboltforge.dontmind.multivnc.ZoomScaling.resolveZoom (ZoomScaling.java:56)
 
  at com.coboltforge.dontmind.multivnc.ZoomScaling.setScaleTypeForActivity (ZoomScaling.java:181)
 
  at com.coboltforge.dontmind.multivnc.VncCanvasActivity.setModes (VncCanvasActivity.java:759)
 
  at com.coboltforge.dontmind.multivnc.VncCanvasActivity$1.run (VncCanvasActivity.java:643)
 
  at android.os.Handler.handleCallback (Handler.java:873)
 
  at android.os.Handler.dispatchMessage (Handler.java:99)
 
  at android.os.Looper.loop (Looper.java:201)
 
  at android.app.ActivityThread.main (ActivityThread.java:6815)
 
  at java.lang.reflect.Method.invoke (Native Method)
 
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547)
 
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873)

SQLiteException, Android 9

Huawei HUAWEI Y6 2019 (HWMRD-M1), Android 9

android.database.sqlite.SQLiteException: 
 
  at android.database.sqlite.SQLiteConnection.nativePrepareStatement (Native Method)
 
  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:948)
 
  at android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:559)
 
  at android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:603)
 
  at android.database.sqlite.SQLiteProgram.<init> (SQLiteProgram.java:63)
 
  at android.database.sqlite.SQLiteQuery.<init> (SQLiteQuery.java:37)
 
  at android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:46)
 
  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1493)
 
  at android.database.sqlite.SQLiteDatabase.rawQuery (SQLiteDatabase.java:1427)
 
  at com.coboltforge.dontmind.multivnc.MetaKeyDialog.setMetaKeyList (MetaKeyDialog.java:264)
 
  at com.coboltforge.dontmind.multivnc.MetaKeyDialog.setConnection (MetaKeyDialog.java:329)
 
  at com.coboltforge.dontmind.multivnc.VncCanvasActivity.onPrepareDialog (VncCanvasActivity.java:798)
 
  at android.app.Activity.onPrepareDialog (Activity.java:4215)
 
  at android.app.Activity.showDialog (Activity.java:4278)
 
  at android.app.Activity.showDialog (Activity.java:4229)
 
  at com.coboltforge.dontmind.multivnc.VncCanvasActivity.onOptionsItemSelected (VncCanvasActivity.java:880)
 
  at android.app.Activity.onMenuItemSelected (Activity.java:3742)
 
  at com.android.internal.policy.PhoneWindow.onMenuItemSelected (PhoneWindow.java:1334)
 
  at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected (MenuBuilder.java:776)
 
  at com.android.internal.view.menu.MenuItemImpl.invoke (MenuItemImpl.java:161)
 
  at com.android.internal.view.menu.MenuBuilder.performItemAction (MenuBuilder.java:923)
 
  at com.android.internal.view.menu.ListMenuPresenter.onItemClick (ListMenuPresenter.java:167)
 
  at android.widget.AdapterView.performItemClick (AdapterView.java:321)
 
  at android.widget.AbsListView.performItemClick (AbsListView.java:1234)
 
  at android.widget.AbsListView$PerformClick.run (AbsListView.java:3234)
 
  at android.widget.AbsListView.onTouchUp (AbsListView.java:4224)
 
  at android.widget.AbsListView.onTouchUpEx (AbsListView.java:4143)
 
  at android.widget.HwAbsListView.onTouchUpEx (HwAbsListView.java:554)
 
  at android.widget.AbsListView.onTouchEvent (AbsListView.java:3948)
 
  at android.view.View.dispatchTouchEvent (View.java:12632)
 
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3035)
 
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2714)
 
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3041)
 
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2728)
 
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:514)
 
  at android.view.View.dispatchPointerEvent (View.java:12877)
 
  at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:5771)
 
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:5535)
 
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4983)
 
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5036)
 
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5002)
 
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:5157)
 
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5010)
 
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:5214)
 
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4983)
 
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5036)
 
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5002)
 
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5010)
 
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:4983)
 
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:7803)
 
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:7768)
 
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:7726)
 
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:8007)
 
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:202)
 
  at android.os.MessageQueue.nativePollOnce (Native Method)
 
  at android.os.MessageQueue.next (MessageQueue.java:386)
 
  at android.os.Looper.loop (Looper.java:175)
 
  at android.app.ActivityThread.main (ActivityThread.java:7625)
 
  at java.lang.reflect.Method.invoke (Native Method)
 
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
 
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)

Can't rotate Android app

The orientation is fixed horizontal. It should either rotate when the device is rotated, or else be a setting per connection.

Feature request: Change of default controls for buttonless mode

If you'd like to put out an incentive for implementing this feature, you can do so at https://issuehunt.io/r/bk138/multivnc?tab=idle

Is your feature request about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets) or Mobile (Android): Mobile
  • If Mobile, installed from Play Store or F-Droid: F-Droid

Is your feature request related to a problem? Please describe.

There are a few controls I'd like to be able to configure. I'd like to be able to:

  1. Make a long press gesture send the right click signal (rather than open the zoom controls)
  2. Make a double tap gesture send a double click
  3. Make a double tap and hold gesture (i.e. tap, release, tap and hold on the second tap) send a click and hold signal (i.e. click and drag)

These controls are akin to the controls for the VNC Viewer app on the playstore. I prefer these controls to MultiVNC's default controls. In fact, I only keep that closed source app installed for those controls.

Describe the solution you'd like

Rather than impose my preference on all users of MultiVNC, it would be great if users could configure their preferred controls. Maybe a menu to configure key-value pairs of "gesture:signal"

Describe alternatives you've considered

Additional context

Android: Mixed line terminators

Currently following files uses CRLF line terminators:

  • COLORMODEL.java
  • ColorModel256.java
  • ColorModel64.java
  • ColorModel8.java
  • Utils.java

All other files use LF. We should use same for these files to be consistent.
Also, git (with default config) converts CRLF to LF when committing. Then small changes appears as if the whole file is changed.

I can submit a PR but GitHub also says that every line is changed.

Keyboard doesnt work at all with UserLAnd

Describe the bug
I set up a UserLAnd install on an Android 9 (LineageOS) phone. UserLAnd works fine in combination with MultiVNC. I can connect, move the mouse, use the onscreen mouse buttons. However, if I toggle keyboard the keyboard pops up but I cannot press any key on the keyboard. It's there but it doesnt work. Instead if I press a button those touches go right 'through' the keyboard and are recognized by the underlying 'virtual mouse'.

To Reproduce

  1. Install MultiVNC
  2. Install UserLAnd
  3. Connect to a VNC session
  4. Press the menu button and then toggle keyboard
  5. Keyboard pops up but doesnt respond to any input.

Expected Behavior
The keyboard should respond to the input via touch.

For the Desktop Version (please complete the following information):
OS: Ubuntu@UserLAnd
XORG: The one that comes with UserLAnd

For the Mobile Version (please complete the following information):
Android 9 (LineageOS 16)

Additional information
Why does that seem to be a MultiVNC bug? Tried realVNC with the same setup, the keyboard there works as it should.

-multiptr is *** unrecognized option(s) ***

05/09/2019 16:04:00 passing arg to libvncserver: -multiptr
###############################################################
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@ @#
#@ ** WARNING ** WARNING ** WARNING ** WARNING ** @#
#@ @#
#@ YOU ARE RUNNING X11VNC WITHOUT A PASSWORD!! @#
#@ @#
#@ This means anyone with network access to this computer @#
#@ may be able to view and control your desktop. @#
#@ @#
#@ >>> If you did not mean to do this Press CTRL-C now!! <<< @#
#@ @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@ @#
#@ You can create an x11vnc password file by running: @#
#@ @#
#@ x11vnc -storepasswd password /path/to/passfile @#
#@ or x11vnc -storepasswd /path/to/passfile @#
#@ or x11vnc -storepasswd @#
#@ @#
#@ (the last one will use ~/.vnc/passwd) @#
#@ @#
#@ and then starting x11vnc via: @#
#@ @#
#@ x11vnc -rfbauth /path/to/passfile @#
#@ @#
#@ an existing ~/.vnc/passwd file from another VNC @#
#@ application will work fine too. @#
#@ @#
#@ You can also use the -passwdfile or -passwd options. @#
#@ (note -passwd is unsafe if local users are not trusted) @#
#@ @#
#@ Make sure any -rfbauth and -passwdfile password files @#
#@ cannot be read by untrusted users. @#
#@ @#
#@ Use x11vnc -usepw to automatically use your @#
#@ ~/.vnc/passwd or ~/.vnc/passwdfile password files. @#
#@ (and prompt you to create ~/.vnc/passwd if neither @#
#@ file exists.) Under -usepw, x11vnc will exit if it @#
#@ cannot find a password to use. @#
#@ @#
#@ @#
#@ Even with a password, the subsequent VNC traffic is @#
#@ sent in the clear. Consider tunnelling via ssh(1): @#
#@ @#
#@ http://www.karlrunge.com/x11vnc/#tunnelling @#
#@ @#
#@ Or using the x11vnc SSL options: -ssl and -stunnel @#
#@ @#
#@ Please Read the documention for more info about @#
#@ passwords, security, and encryption. @#
#@ @#
#@ http://www.karlrunge.com/x11vnc/faq.html#faq-passwd @#
#@ @#
#@ To disable this warning use the -nopw option, or put @#
#@ 'nopw' on a line in your ~/.x11vncrc file. @#
#@ @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
###############################################################
05/09/2019 16:04:01 x11vnc version: 0.9.15 lastmod: 2018-02-04 pid: 12962
05/09/2019 16:04:01 Using X display :0
05/09/2019 16:04:01 rootwin: 0x169 reswin: 0x3e00001 dpy: 0xfe543f50
05/09/2019 16:04:01
05/09/2019 16:04:01 ------------------ USEFUL INFORMATION ------------------
05/09/2019 16:04:01 X DAMAGE available on display, using it for polling hints.
05/09/2019 16:04:01 To disable this behavior use: '-noxdamage'
05/09/2019 16:04:01
05/09/2019 16:04:01 Most compositing window managers like 'compiz' or 'beryl'
05/09/2019 16:04:01 cause X DAMAGE to fail, and so you may not see any screen
05/09/2019 16:04:01 updates via VNC. Either disable 'compiz' (recommended) or
05/09/2019 16:04:01 supply the x11vnc '-noxdamage' command line option.
05/09/2019 16:04:01
05/09/2019 16:04:01 Wireframing: -wireframe mode is in effect for window moves.
05/09/2019 16:04:01 If this yields undesired behavior (poor response, painting
05/09/2019 16:04:01 errors, etc) it may be disabled:
05/09/2019 16:04:01 - use '-nowf' to disable wireframing completely.
05/09/2019 16:04:01 - use '-nowcr' to disable the Copy Rectangle after the
05/09/2019 16:04:01 moved window is released in the new position.
05/09/2019 16:04:01 Also see the -help entry for tuning parameters.
05/09/2019 16:04:01 You can press 3 Alt_L's (Left "Alt" key) in a row to
05/09/2019 16:04:01 repaint the screen, also see the -fixscreen option for
05/09/2019 16:04:01 periodic repaints.
05/09/2019 16:04:01
05/09/2019 16:04:01 XFIXES available on display, resetting cursor mode
05/09/2019 16:04:01 to: '-cursor most'.
05/09/2019 16:04:01 to disable this behavior use: '-cursor arrow'
05/09/2019 16:04:01 or '-noxfixes'.
05/09/2019 16:04:01 using XFIXES for cursor drawing.
05/09/2019 16:04:01
05/09/2019 16:04:01 WARNING: XTEST extension not available (either missing from
05/09/2019 16:04:01 display or client library libXtst missing at build time).
05/09/2019 16:04:01 MOST user input (pointer and keyboard) will be DISCARDED.
05/09/2019 16:04:01 If display does have XTEST, be sure to build x11vnc with
05/09/2019 16:04:01 a working libXtst build environment (e.g. libxtst-dev,
05/09/2019 16:04:01 or other packages).
05/09/2019 16:04:01 No XTEST extension, switching to -xwarppointer mode for
05/09/2019 16:04:01 pointer motion input.
05/09/2019 16:04:01 *********************************************************
05/09/2019 16:04:01 * No XTEST or DEC-XTRAP protection from XGrabServer !!! *
05/09/2019 16:04:01 * DEADLOCK if your window manager calls XGrabServer !!! *
05/09/2019 16:04:01 *********************************************************
05/09/2019 16:04:01
05/09/2019 16:04:01 The RECORD X extension was not found on the display.
05/09/2019 16:04:01 If your system has disabled it by default, you can
05/09/2019 16:04:01 enable it to get a nice x11vnc performance speedup
05/09/2019 16:04:01 for scrolling by putting this into the "Module" section
05/09/2019 16:04:01 of /etc/X11/xorg.conf or /etc/X11/XF86Config:
05/09/2019 16:04:01
05/09/2019 16:04:01 Section "Module"
05/09/2019 16:04:01 ...
05/09/2019 16:04:01 Load "record"
05/09/2019 16:04:01 ...
05/09/2019 16:04:01 EndSection
05/09/2019 16:04:01
05/09/2019 16:04:01
05/09/2019 16:04:01 XKEYBOARD: number of keysyms per keycode 7 is greater
05/09/2019 16:04:01 than 4 and 51 keysyms are mapped above 4.
05/09/2019 16:04:01 Automatically switching to -xkb mode.
05/09/2019 16:04:01 If this makes the key mapping worse you can
05/09/2019 16:04:01 disable it with the "-noxkb" option.
05/09/2019 16:04:01 Also, remember "-remap DEAD" for accenting characters.
05/09/2019 16:04:01
05/09/2019 16:04:01 X FBPM extension not supported.
05/09/2019 16:04:01 X display is capable of DPMS.
05/09/2019 16:04:01 --------------------------------------------------------
05/09/2019 16:04:01
05/09/2019 16:04:01 Default visual ID: 0x20
05/09/2019 16:04:01 Read initial data from X display into framebuffer.
05/09/2019 16:04:01 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/7680
05/09/2019 16:04:01 *** unrecognized option(s) ***
05/09/2019 16:04:01 [1] -multiptr
05/09/2019 16:04:01 For a list of options run: x11vnc -opts
05/09/2019 16:04:01 or for the full help: x11vnc -help
05/09/2019 16:04:01
05/09/2019 16:04:01 Here is a list of removed or obsolete options:
05/09/2019 16:04:01
05/09/2019 16:04:01 removed: -hints, -nohints
05/09/2019 16:04:01 removed: -cursorposall
05/09/2019 16:04:01 removed: -nofilexfer, now the default.
05/09/2019 16:04:01
05/09/2019 16:04:01 renamed: -old_copytile, use -onetile
05/09/2019 16:04:01 renamed: -mouse, use -cursor
05/09/2019 16:04:01 renamed: -mouseX, use -cursor X
05/09/2019 16:04:01 renamed: -X, use -cursor X
05/09/2019 16:04:01 renamed: -nomouse, use -nocursor
05/09/2019 16:04:01 renamed: -old_pointer, use -pointer_mode 1
X Error of failed request: BadShmSeg (invalid shared segment parameter)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 2 (X_ShmDetach)
Segment id in failed request: 0x0
Serial number of failed request: 33
Current serial number in output stream: 37

Running on Ubuntu 18.04, I can run x11vnc but not with the option -multiptr. I have also tried x11vnc 0.9.16 and have the same problem.

Readme or wiki file: android activities list

With the growing trend of Termux based Linux environments and scripts emerging from this, it would be great to have an on-hand list of supported activities for your application.

This comes in handy to help initialize, populate or start VNC sessions directly from Termux or any other capable application/activity.

Thank you for your consideration!

"null" after connecting an external keyboard

The problem appears if you connect (or disconnect) external keyboard to a device while MultiVNC is connected to a session. It disconnects from session with error message: "VNC connection failed! null". After reconnecting everything works as expected but if you disconnect keyboard (or just turn off the Bluetooth) — it goes the same way.

  • Mobile MultiVNC 1.8.8 from F-Droid running on Android 7.1.2
  • Connecting to Fedora 30 with X.Org 1.20.6
  • Using Bluetooth Logitech K380 keyboard

Screenshot_20200222-212501

add a PiP mode to the Android app

If you'd like to put out an incentive for implementing this feature, you can do so at https://issuehunt.io/r/bk138/multivnc

Is your feature request about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets)
  • Mobile (Android)

Is your feature request related to a problem? Please describe.

A picture-in-picture mode would allow keeping an eye on the session while doing something else.

Describe the solution you'd like

Feature request: smoother zoom for pinch gesture

If you'd like to put out an incentive for implementing this feature, you can do so at https://issuehunt.io/r/bk138/multivnc?tab=idle

Is your feature request about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets) or Mobile (Android): Mobile
  • If Mobile, installed from Play Store or F-Droid: F-Droid

Is your feature request related to a problem? Please describe.

The currect zoom is a bit "jerky". It sometimes doesn't register and stops zooming in/out in the middle of a pinch, resulting in the user doing many pinches to get the desired zoom. I tested this with different devices to make sure it was a specific device quirk.

Describe the solution you'd like

A smoother zoom that is more like the zoom experienced in the popular web browsing apps (firefox, chrome, etc). It currently feels like the zoom stops when the fingers stop moving. It might be better to stop the zoom when one or both fingers are lifted

Describe alternatives you've considered

Additional context

add ability to save passwords

Idea is to employ https://docs.wxwidgets.org/trunk/classwx_secret_store.html for storing the credentials.

  • a) tied to bookmarks

    • pro: when saving a bookmark (host:port), we know the credentials where right cause the connection is up
    • con: we have to store credentials for the connection in-memory until the user saves a bookmark
  • b) tied to server's host:port

    • pro: can store creds right away, no need to persist them in-memory, key could be host:port
    • con: at the time of get_creds(), we dunno if they were actually ok
      • delete them after conn fail?
  • what about servers hosting multiple accounts?

modern icon

implementation of a more moden multi vnc icon.

multivnc

Feature Request: send right clicks when using a hardware mouse

Is your feature request about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets)
  • [ X ] Mobile (Android)

Is your feature request related to a problem? Please describe.
I sometimes use a USB mouse connected to my phone using an USB OTG cable when I need more clicking precision than the touchscreen offers. Currently the right click button sends the same signal as the Android Back button, and MultiVNC asks me "Are you sure you want to disconnect?". It would be great if MultiVNC could interpret a mouse right right click and then send then right click signal like it does when tapping MultiVNC's on screen/virtual mouse button.

Describe the solution you'd like
If a hardware right click is used in the MultiVNC (and the VNC server OS supports it), then a context menu should open. Ideally it would act just like the on-screen right mouse button that MultiVNC already has.

Describe alternatives you've considered

Additional context
These SO questions might be a good reference:
https://stackoverflow.com/questions/12705117/handle-all-mouse-events-in-android
https://stackoverflow.com/questions/10041295/android-usb-mouse-right-click-correct-behaviour-ics/29311126#29311126

Too much wasted space for key combo toolbar on Android

As a general principle, UI bars waste the least useful space when placed across the smaller dimension of the screen. This toolbar is taking away a lot of the screen. It should be possible to hide, and to put onto the smaller dimension (which should be the default).

change opacity/visibility of upper right hand menu

If you'd like to put out an incentive for implementing this feature, you can do so at https://issuehunt.io/r/bk138/multivnc?tab=idle

Is your feature request about the Desktop Multivnc or the Mobile MultiVNC?

  • Desktop (wxWidgets)
  • [ X ] Mobile (Android)

Is your feature request related to a problem? Please describe.

When using the vnc client to run a full ubuntu desktop via termux chroot, the menu gets in the way of a full immersive experience

Describe the solution you'd like

A solution would be to either add an option to either hide or change opacity/color/region of the menu handle or provide a fully immersive interface that hides all widgets and menues when external hardware input is detected

Describe alternatives you've considered

RealVNC - but they do not offer dex support for full screen, non touch display

Additional context

Too many bookmarks due to automatic bookmarking, launched from UserLAnd

Describe the bug
Using MultiVNC in combination with UserLAnd. Every time I log into a desktop session a new bookmark is created within MultiVNC. Those add up eventually.

Could you make automatic bookmarking optional? Otherwise those get too much eventually. Had to delete 25 or so bookmarks one by one.

Thanks.

To Reproduce

  1. Install MultiVNC
  2. Install UserLAnd
  3. Set up desktop inside UserLAnd
  4. Connect to desktop via UserLAnd app
  5. Bookmark is created in MultiVNC

Expected Behavior
No bookmark is created within MultiVNC

Android: No way to send Super key

Installed from Play Store

Is your feature request related to a problem? Please describe.
Cannot send the Super (Windows) key and combinations. Since I am using a window manager, combination using the super key are essential to me and I can't find a way to send this keystroke.

Describe the solution you'd like
A way to send key combinations with the super key included

Android: VNCConn Refactoring

VNCConn refactoring Proposal (as per #15 ):

Extract progress dialog & fatal error alert

  • Move ProgressDialog and error dialogs to VncCanvasActivity.
  • VNCConn will expose an observer interface which will be implemented by VncCanvasActivity.
  • VNCConn will publish updates through the observer.

This will allow the activity to attach/detach to VNCConn without affecting its operation. It also simplifies VNCConn and makes it UI agnostic.

Move Credential dialog

  • Move credential dialog from VncCanvas to VncCanvasActivity .
  • VNCConn will notify the activity through observer.
  • Activity will display the dialog.

In future when we implement rotation, it will allow the activity to save the credential request in its ViewModel to handle restarts. It will also reduces the direct dependency on VncCanvas.

Extract FrameBuffer

  • Create a new 'FrameBuffer' class.
  • Move bitmap data from VNCConn to FrameBuffer
  • Move pointer position from VncCanvas to FrameBuffor
  • Attach FrameBuffer with VncCanvas and pass a reference to VNCConn

Now we will be able to generate a new FrameBuffer whenever required. It also enables VNCConn to function without any fame buffer (time between activity restarts). See figure below.


After this refactoring we should be able to put VNCConn in a ViewModel which will persist across activity restarts. Now we can implement whichever strategy (Restarts vs No restart) we choose.

For Restarts:
image
We detach from VNCConn inside onStop() and attach again in onStart() of new activity

For No restart
image
We can simply generate a new FrameBuffer for the resized VncCanvas and pass it to VNCConn

Data flow
image


Future/Optional
These are few ideas we can try after refactoring is complete.

  • Now that all dialogs/alerts are handled by VncCanvasActivity, we can unify them into one custom dialog. It will allow us to replace ProgressDialog which is deprecated and it will integrate better with ViewModel.
  • Rename ServerToClientThread to ReceiverThread & ClientToServerThread to SenderThread.

Let me know if you have any suggestion or something is wrong.
Thanks.

building bailed

Hi.
I try to build the project. the output is following text.

$ make
................
VNCConn.cpp:961:7: error: use of undeclared identifier 'Create'
  if( Create() != wxTHREAD_NO_ERROR )
      ^
VNCConn.cpp:1046:7: error: use of undeclared identifier 'Create'
  if( Create() != wxTHREAD_NO_ERROR )
      ^
2 warnings and 2 errors generated.
make[3]: *** [VNCConn.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

error: use of undeclared identifier 'Create'

I can not find Create symbol implement in VNCConn.h or VNCConn.c, how can I compile it correctly?

thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.