aboutsummaryrefslogtreecommitdiffstats
path: root/vncviewer
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix corner case in monitor index calculationPierre Ossman2021-09-091-4/+6
| | | | | | Fix a bug in the comparison function that could result in the wrong index being assigned to a monitor. Change the logic to more directly map to the description.
* Handle mirrored monitors on X11Pierre Ossman2021-09-093-17/+63
| | | | | | | | macOS and Windows present mirrored monitors as a single virtual monitor, but X11 exposes this scenario as two distinct monitors with identical coordinates. This messes up our logic, and is likely confusing for the user. So instead we'll ignore any monitors that have identical coordinates to any already seen monitors.
* Clean up some error stringsPierre Ossman2021-09-085-24/+18
| | | | | Try to reuse and split things so that it makes things easier for the translators.
* Consistently use exceptions for parameter errorsPierre Ossman2021-09-082-184/+227
| | | | | Clean up the structure around storing and loading parameters and server history so that failures will always be reported by using exceptions.
* Use classic FILE I/O for storing server historyPierre Ossman2021-09-081-28/+50
| | | | Error handling is more straight forward in the C file interface.
* Clean up global event handler structurePierre Ossman2021-09-062-37/+49
| | | | | Let's separate the standard global event handling from the hacky workarounds, for clarity.
* Restore FLTK event dispatcher on exitPierre Ossman2021-09-061-0/+2
|
* Merge branch 'fullscreens-added-removed' of https://github.com/x11clone/x11clonePierre Ossman2021-09-022-0/+40
|\
| * Recreate fullscreen window if screens are removed or addedPeter Åstrand (astrand)2018-05-072-0/+40
| |
* | Tolerate carriage return in config filesPierre Ossman2021-09-021-0/+4
| | | | | | | | | | | | If the file has been transferred from a Windows system then it might have \r\n line endings instead of \n. Make sure this doesn't leak in to the parameter values.
* | Fix inconsistent line endings in vncviewer configuration fileMeng Dong2021-09-021-2/+2
| |
* | Include translations in macOS and Windows buildsPierre Ossman2021-08-271-1/+62
| |
* | Expose reconnect setting in options dialogPierre Ossman2021-07-233-0/+10
| |
* | Retry connection in case of an errorJohannes2021-07-239-61/+141
| |
* | Simply screen refresh handlerPierre Ossman2021-07-201-9/+4
| | | | | | | | | | We only need to check the event type once, and preferably early, and avoid doing more work than necessary.
* | Only log error when setting FullScreenSelectedMonitorsPierre Ossman2021-07-192-12/+18
| | | | | | | | | | We don't want the log to spam every time this parameter is used so only complain from the parses when the value is changed.
* | Don't reference specific variable in classPierre Ossman2021-07-191-3/+3
| | | | | | | | | | This class is generic and should not reference a specific instance of it.
* | Avoiding final period in log messagesPierre Ossman2021-07-193-10/+10
| | | | | | | | Try to be consistent with existing log messages.
* | Clean up style in recent monitor codePierre Ossman2021-07-196-89/+89
| | | | | | | | | | | | | | Fix some indentation issues and make sure everything* uses CamelCase. * MonitorArrangement is left as snake_case in order to pretend it is an independent FLTK widget class.
* | Refresh MonitorArrangement on configuration changeHugo Lundin2021-07-162-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MonitorArrangement (in the options dialog) never changes when the system monitor configuration changes. Therefore, the user can get into a state where the reality doesn't match what is shown (when a monitor is added/removed, resolution or position changed etc). All these changes triggers an event in FLTK (FL_SCREEN_CONFIGURATION_CHANGED). This commit adds an event handler in MonitorArrangement and refreshes the widget whenever that event occurs. Because Fl_Handler does not have a void*-argument (and we must be able to access the widget from our handler callback) a static set of instances have been added, which all will receive the events.
* | Add monitor description to tooltipHugo Lundin2021-07-165-0/+226
| | | | | | | | | | | | | | It might be useful to have more information about a monitor when configuring its settings in the Options menu. Therefore, this commit adds support for showing additional information about a monitor (resolution and platform-specific name).
* | Explicitly choose current monitorHugo Lundin2021-07-161-3/+4
| | | | | | | | | | | | | | There are no guarantees from the WM that calling `fullscreen_screens` with all monitor indices set to `-1` results in the window's current monitor being used. Because FullScreenMode uses the word "current" we want to explicitly ask the WM to use that monitor.
* | Add fullscreen mode for selected monitorsHugo Lundin2021-07-1611-11/+753
| | | | | | | | | | | | | | | | | | | | | | | | | | The user might not always want to use all monitors when in fullscreen mode, but instead only a few. This commit adds support for configuring selected monitors from command line, in the config file and graphically in the options menu. Because it might be hard to guarantee the consistency of monitor identifiers coming from third-parties (for example FLTK), it has been decided to use our own numerical identifier. This identifier is based on the monitor's positions. The mapping between this identifier and the indices used by FLTK is done by MonitorIndicesParameter.
* | Add fullscreen mode parameterHugo Lundin2021-07-167-69/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, `FullScreen` and `FullScreenAllMonitors` could be used to configure whether to use the current monitor in fullscreen, or all monitors in fullscreen. This commit deprecates `FullScreenAllMonitors` in favour of `FullScreenMode` (which can either be `current` or `all`). This allows for additional modes to be added, without the risk of having invalid states (for example two activate two different fullscreen modes at the same time). A new concept has been added; read-only parameters. They are parameters that will be read, but never written back. This allows for migration paths to be constructed, where a parameter can be taken to consideration but then for example be discarded, logged or changed into something else. This has been used for `FullScreenAllMonitors` to provide a migration path. On startup of vncviewer, if `FullScreenAllMonitors` is enabled, `FullScreenMode=all` will be automatically enabled instead. The next time the configuration file is written to disk, `FullScreenAllMonitors` will then be removed.
* | Calculate overlay position from window sizeHugo Lundin2021-07-161-2/+27
| | | | | | | | | | | | | | | | | | | | | | Previously, it was assumed that all monitors (and especially the primary monitor, index 0) was inside the window when we calculate the position of the overlay. That might not always be the case, for example when using fullscreen mode over a narrower set of monitors. This commit does so the overlay is positioned correctly based on the actual window size, instead of what we expect it to be.
* | Release displays not enclosed by the windowHugo Lundin2021-07-162-19/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | cocoa_capture_displays it captures all displays enclosed by the window_rect. If a set of displays were captured, but the configuration of what monitors to use changed, a second call would only add to the set of captured displays. Therefore, if the user enabled FullScreenAllMonitors (all displays captured) and then disabled it (only one display captured) they would get into a state were monitors not used for the VNC session still were captured (which on macOS for example, results in displays being unusable for other things). This has now been fixed, resulting in monitors outside the window_rect not being unnecessarily captured.
* | Capture all displays inside the viewport (macOS)Hugo Lundin2021-07-163-20/+27
| | | | | | | | | | | | | | | | | | | | | | | | It was only possible to capture either the current, or all displays previously. This could become an issue if you want to show a vnc session over only a selected set of displays, because then we only want to capture those displays. The solution in the commit was chosen because it handles all cases - by looking at what monitors are enclosed by the viewport the implementation is independent on any configuration, but instead captures the monitors actually being used.
* | Merge branch 'smooth-edge-scrolling' of https://github.com/ToyKeeper/tigervncPierre Ossman2021-06-161-20/+34
|\ \
| * | made full-screen edge scrolling smoother and fasterSelene ToyKeeper2021-04-301-20/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old method used a very slow frame rate with small steps, which made it obnoxious during use. The new method has a few improvements: - Calculates "edge" region width automatically, as a ratio of the viewport size. Default is 1/16th. - Uses a different edge width for x and y, which works better on very wide or very tall screens. - Increased default frame rate from 10 fps to 60 fps. - Replaced hardcoded frame rate with a #define. - Reduced maximum movement per frame slightly, because the frame rate is so much faster. The overall result is still much faster, but also easier to do small adjustments with. - Fixed off-by-one error in scroll rate calculation formula. Left/up scrolls were faster than down/right, but this is fixed. This makes it more comfortable to use TigerVNC on a small screen to work on a larger screen for hours at a time.
* | | Clean up default value for X509 parametersPierre Ossman2021-06-132-6/+2
|/ / | | | | | | | | Let's avoid making this too complex and force every user to know about magical functions.
* | Support the VMware Cursor Position extension on vncviewerlhchavez2021-03-114-0/+42
| | | | | | | | | | | | | | | | This change makes it possible for re-synchronizing the remote cursor on the vncviewer when in fullscreen mode. This is done by locally moving the cursor position to what the server thinks it should be. Now SDL games should work!
* | Merge branch 'autoclip' of https://github.com/CendioOssman/tigervncPierre Ossman2021-02-031-5/+7
|\ \
| * | Improve clipboard debug logging in viewerPierre Ossman2021-01-041-5/+7
| | |
* | | Update copyright year to 2021Pierre Ossman2021-01-252-2/+2
| | |
* | | Heavily reduce window for bandwidth estimatePierre Ossman2021-01-191-5/+9
| | | | | | | | | | | | | | | It took way too long to converge on a sane value, so reduce the window by a factor of ten. This seems to work smoothly.
* | | Merge branch 'noblock' of https://github.com/CendioOssman/tigervncPierre Ossman2021-01-196-63/+110
|\ \ \
| * | | Better error messages when terminatingPierre Ossman2020-05-214-23/+49
| | | | | | | | | | | | | | | | | | | | Include something more user friendly when we need to fail fatally and not just the technical error.
| * | | Change streams to be asynchronousPierre Ossman2020-05-212-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Major restructuring of how streams work. Neither input nor output streams are now blocking. This avoids stalling the rest of the client or server when a peer is slow or unresponsive. Note that this puts an extra burden on users of streams to make sure they are allowed to do their work once the underlying transports are ready (e.g. monitoring fds).
| * | | Improved bandwidth monitoringPierre Ossman2020-05-212-17/+34
| | | | | | | | | | | | | | | | | | | | | | | | Now measures over an entire update, which should hopefully give us more stable values. They are still small values for fast networks though so increase precision in the values we keep.
| * | | Make sure TLS is allowed to terminate gracefullyPierre Ossman2020-05-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Some systems (like TLS) need to send some final data before closing a connection. Make sure this is properly handled by cleaning up the security object before closing the underlying network socket.
* | | | Merge branch 'master' of https://github.com/johahauf/tigervncPierre Ossman2021-01-124-13/+197
|\ \ \ \ | |_|/ / |/| | |
| * | | Have a history of used vnc servers to select from in the vncviewerJohannes2021-01-114-13/+197
| | | |
* | | | Map macOS Eisu key to XK_Eisu_togglePierre Ossman2020-12-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | It's a better match for what the key symbolises, even though it is not as common on Unix systems. But we want to avoid getting in to tailoring things for any one specific input method implementation.
| | | |
| \ \ \
*-. \ \ \ Merge branches 'japanese_layout' and 'win_japanese_keyboard' of ↵Pierre Ossman2020-12-093-9/+82
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | https://github.com/gsittyz/tigervnc
| | * | | | Fake key release events for some Japanese keysPierre Ossman2020-11-201-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Windows either completely omits WM_KEYUP for these, or only sends it just before the next WM_KEYDOWN for the key.
| | * | | | Handle Korean keys on WindowsPierre Ossman2020-11-201-0/+14
| | | | | |
| | * | | | Add some more Japanese keysPierre Ossman2020-11-201-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | This covers some Alt+key presses as well.
| | * | | | Only handle Japanese keys when Japanese layoutPierre Ossman2020-11-201-9/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the virtual key codes for Japanese keys are used for other things on other layouts, so we need to make sure we only use this look up table when the layout is indeed set to Japanese.
| | * | | | Windows JIS Keyboard Supportgsittyz2020-11-011-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | Added vkey mappings for Japanese keyboards because the special keys for Japanese input do not work on TigerVNC currently.
| * | | | | OS X Japanese Keyboard Supportgsittyz2020-10-251-0/+3
| |/ / / / | | | | | | | | | | | | | | | Added OS X JIS Keyboard keys (kVK_JIS_Eisu, kvK_JIS_Kana). The Kana and Eisu keys are used to alter IME behavior, but currently the Kana key produces an unwanted space character and the Eisu key does not work.