]> source.dussan.org Git - tigervnc.git/log
tigervnc.git
5 months agoAdd basic DRI3 support
Pierre Ossman [Wed, 21 Feb 2024 16:07:36 +0000 (17:07 +0100)]
Add basic DRI3 support

This provides buffer sync with the primary render node of the system (if
available). By doing so, OpenGL and Vulkan can use the render node for
acceleration.

This first implementation is extremely pessimistic and synchronises
buffers whenever there's even a slight chance they will be used.

5 months agoFix includes for Xorg dri3 module
Pierre Ossman [Thu, 6 Jun 2024 11:29:29 +0000 (13:29 +0200)]
Fix includes for Xorg dri3 module

It was incorrectly designed to only build properly if built as part of
the "Xorg" server and could fail to build when just "Xvnc" was built.

Backport of upstream commits 0ce93e5 and acc581c.

5 months agoAvoid VNC updates for offscreen windows
Pierre Ossman [Tue, 18 Jun 2024 14:01:55 +0000 (16:01 +0200)]
Avoid VNC updates for offscreen windows

Windows aren't always directly shown, e.g. when the desktop is
composited. We should not be sending screen updates for these as the
framebuffer didn't actually change.

In the case of CopyWindow, we're even sending the wrong screen data,
which is how this bug was discovered.

5 months agoRemove old Xorg configure arguments 1770/head
Pierre Ossman [Fri, 22 Mar 2024 12:07:26 +0000 (13:07 +0100)]
Remove old Xorg configure arguments

These are no longer used in the versions of Xorg currently in use.

5 months agoRaise Xorg requirement to 1.20+
Pierre Ossman [Thu, 21 Mar 2024 15:18:46 +0000 (16:18 +0100)]
Raise Xorg requirement to 1.20+

No current distribution uses anything older, so let's make things easier
for us to maintain.

5 months agoRemove Ubuntu 18.04 packaging
Pierre Ossman [Fri, 22 Mar 2024 08:37:43 +0000 (09:37 +0100)]
Remove Ubuntu 18.04 packaging

Ubuntu 18.04 has been EOL for almost a year, so remove those packages so
we can ease our maintenance burden.

5 months agoAvoid patching miinitext.c for Xvnc
Pierre Ossman [Tue, 20 Feb 2024 16:23:56 +0000 (17:23 +0100)]
Avoid patching miinitext.c for Xvnc

Things do not need to be this complicated. We can make sure the VNC
extension is always included in a much cleaner way, at least since Xorg
1.16.

5 months agoStop explicitly including fbcmap_mi.c
Pierre Ossman [Tue, 20 Feb 2024 16:03:07 +0000 (17:03 +0100)]
Stop explicitly including fbcmap_mi.c

This hasn't been needed since Xorg 1.16.

5 months agoStop linking to libX11
Pierre Ossman [Tue, 20 Feb 2024 16:00:20 +0000 (17:00 +0100)]
Stop linking to libX11

Unclear why this was ever needed. libX11 is for X11 clients, and we're
building a server.

5 months agoClean up CPPFLAGS handling in xserver
Pierre Ossman [Tue, 20 Feb 2024 16:00:05 +0000 (17:00 +0100)]
Clean up CPPFLAGS handling in xserver

Make things a bit easier to maintain. This style is also more in line
with what is being done for other DDX.

5 months agoRemove unused NO_MODULE_EXTS define
Pierre Ossman [Tue, 20 Feb 2024 12:09:08 +0000 (13:09 +0100)]
Remove unused NO_MODULE_EXTS define

This has never actually been used, as far as I can tell.

5 months agoActually use config.h in Xvnc/libvnc.so
Pierre Ossman [Tue, 20 Feb 2024 12:03:55 +0000 (13:03 +0100)]
Actually use config.h in Xvnc/libvnc.so

Rather than disabling this, make sure the build can find the relevant
file.

5 months agoSimplify Xorg version handling
Pierre Ossman [Tue, 20 Feb 2024 11:59:25 +0000 (12:59 +0100)]
Simplify Xorg version handling

VENDOR_RELEASE has been available as a #define since Xorg 1.7, so let's
use that and remove all of our custom magic.

5 months agoSlow down fake clock when no clients 1769/head
Pierre Ossman [Mon, 19 Feb 2024 14:28:12 +0000 (15:28 +0100)]
Slow down fake clock when no clients

Run the frame clock at a slow 1 Hz if there are no clients connected.
This is similar to what a normal X server does when the screen is
blanked, and should keep applications waiting for the frame tick happy.

Note that we still only keep the frame clock running if there is any
application that are interested in it. Otherwise we still stop it
completely.

5 months agoKeep frame clock running if waiting for frame tick
Pierre Ossman [Wed, 28 Feb 2024 13:20:54 +0000 (14:20 +0100)]
Keep frame clock running if waiting for frame tick

If there is something interested in synchronizing to a frame tick, then
keep the frame clock running, even if there are no updates.

This is need mainly when something starts rendering, but also when
something renders much slower than the frame clock (so it is essentially
constantly "starting"). Such an application will not draw anything until
it gets a new frame tick, which it won't get as the frame clock is
waiting for something to start drawing.

5 months agoRestart the frame timer immediately
Pierre Ossman [Thu, 29 Feb 2024 16:33:43 +0000 (17:33 +0100)]
Restart the frame timer immediately

This marks the timer as started again, before we call out to various
external places that might be confused by the frame timer reporting that
it is stopped.

5 months agoAdd support for X Present extension
Pierre Ossman [Fri, 16 Feb 2024 13:31:54 +0000 (14:31 +0100)]
Add support for X Present extension

This makes it possible for applications to synchronize their updates to
the updates sent out to clients. This avoids tearing, and could in the
future also help with rate limiting applications to what the client can
actually show.

5 months agoAdd missing ErrorF() newlines
Pierre Ossman [Fri, 16 Feb 2024 13:31:29 +0000 (14:31 +0100)]
Add missing ErrorF() newlines

5 months agoMake SDesktop::start()/stop() optional
Pierre Ossman [Wed, 28 Feb 2024 13:02:20 +0000 (14:02 +0100)]
Make SDesktop::start()/stop() optional

Let's avoid requring these as a desktop implementation can now set up
everything in the init() method.

5 months agoMaintain a constant VNCServer/SDesktop connection
Pierre Ossman [Wed, 28 Feb 2024 12:54:23 +0000 (13:54 +0100)]
Maintain a constant VNCServer/SDesktop connection

The desktop isn't completely paused just because there are no clients,
so it might still need some support from the server object.

This is primarily an issue for headless servers, where they need to
continue emulating things even without clients. A scraping server can
generally go completely passive if there are no clients.

5 months agoMake it easier to change timer interval
Pierre Ossman [Thu, 29 Feb 2024 15:01:48 +0000 (16:01 +0100)]
Make it easier to change timer interval

5 months agoExplicitly request timer repetition
Pierre Ossman [Fri, 18 Nov 2022 15:31:41 +0000 (16:31 +0100)]
Explicitly request timer repetition

One-shot timers are more common, so let's change the API a bit to make
that use case simpler. This API also makes it more clear what is
happening.

5 months agoFix up Timer comments
Pierre Ossman [Fri, 18 Nov 2022 10:20:57 +0000 (11:20 +0100)]
Fix up Timer comments

They were badly formatted, way longer than the normal 72 columns.

5 months agoAdd safety check to getNextTimeout()
Pierre Ossman [Tue, 3 Jan 2023 08:27:46 +0000 (09:27 +0100)]
Add safety check to getNextTimeout()

It currently won't ever be called with an empty list of timers, but it
is a public function so that might happen in the future. Make sure this
case is handled without crashes.

5 months agoStop treating "0" as "no timeouts"
Pierre Ossman [Tue, 3 Jan 2023 08:24:51 +0000 (09:24 +0100)]
Stop treating "0" as "no timeouts"

It is much more sane to treat "0" as "a timer is ready NOW", so let's
change to using -1 as the invalid timeout value.

5 months agoRemove unneeded iteration
Pierre Ossman [Tue, 3 Jan 2023 08:20:45 +0000 (09:20 +0100)]
Remove unneeded iteration

This should have been done in a4308c9.

5 months agoDetect conflicting timer rescheduling
Pierre Ossman [Thu, 29 Feb 2024 08:23:01 +0000 (09:23 +0100)]
Detect conflicting timer rescheduling

Repeating a timer can be done in two ways:

 * Returning true from the handler
 * Calling start() again in the handler

The latter is useful if you want to change the timer interval.

If both are used, then it becomes ambiguous when the timer should fire
again.

Detect this case and warn about it. Current implementation will respect
the new interval given to start(), rather than the interval set before
running the handler.

8 months agoDon't link gcrypt for static GnuTLS
Pierre Ossman [Fri, 15 Mar 2024 11:47:34 +0000 (12:47 +0100)]
Don't link gcrypt for static GnuTLS

GnuTLS seems to have dropped grypt support ages ago, so let's not
confuse things by assuming it might be needed when linking GnuTLS
statically.

8 months agoProperly propagate CursorWarpedTo()
Pierre Ossman [Sat, 24 Feb 2024 13:09:14 +0000 (14:09 +0100)]
Properly propagate CursorWarpedTo()

Although unlikely, there might be other parts of the X server that are
also interested in this call. Make sure we propagate things on properly.

9 months agoClarify AcceptPointerEvents setting
Pierre Ossman [Tue, 6 Feb 2024 15:53:36 +0000 (16:53 +0100)]
Clarify AcceptPointerEvents setting

It doesn't just control button events, but all types of pointer events,
including movement.

9 months agoFix shared memory leak 1722/head
Adam Halim [Mon, 12 Jun 2023 08:44:43 +0000 (10:44 +0200)]
Fix shared memory leak

The MIT-SHM documentation:
  https://www.x.org/releases/X11R7.7/doc/xextproto/shm.html
says to run XShmDetach() first, and then to destroy the segment.

(cherry picked from commit 585ee24d4cd81759ca7206d5d5181a491c2e8898)

9 months agoIncrease time required to override pointerClient
Samuel Mannehed [Fri, 26 Jan 2024 12:49:04 +0000 (13:49 +0100)]
Increase time required to override pointerClient

Mouse events in shared connections are locked to one viewer at a time.
If the a mouse drag is happening in the first viewer, the second viewer
can't interfere unless the first viewer has been inactive for a set
amount of time. This timeout was put in place in
71c83b479335337b25dc331d3fb4a6e29382ceb5 to handle the case where the
first viewer disconnects while the mouse drag is happening. Prior to the
timeout, this resulted in all input being blocked.

This commit increases this timeout from 3 seconds to 10 seconds. This is
to minimize the risk of this happening during "normal" use. With this
change, the first viewer has to be inactive for 10 seconds before the
second viewer can take control again.

In the case where the first viewer disconnects, a waiting time of 10
seconds for the second viewer seems very reasonable.

9 months agoBreak long lines in new pointerEvent logic
Samuel Mannehed [Fri, 26 Jan 2024 12:19:31 +0000 (13:19 +0100)]
Break long lines in new pointerEvent logic

9 months agoFix bad variable reference in file logger
Pierre Ossman [Thu, 25 Jan 2024 15:18:43 +0000 (16:18 +0100)]
Fix bad variable reference in file logger

9 months agoMerge pull request #1718 from MikeLooijmans/server-mousebuttonowner-timeout
linma (ThinLinc team) [Thu, 25 Jan 2024 13:29:00 +0000 (14:29 +0100)]
Merge pull request #1718 from MikeLooijmans/server-mousebuttonowner-timeout

VNCServerST: Add a timeout to pointer button ownership

10 months agoSet all HAVE_ macros on the top level
Pierre Ossman [Wed, 24 Jan 2024 10:10:58 +0000 (11:10 +0100)]
Set all HAVE_ macros on the top level

This keep everything consistent.

10 months agoRemove superfluous X11_FOUND check
Pierre Ossman [Wed, 24 Jan 2024 10:10:07 +0000 (11:10 +0100)]
Remove superfluous X11_FOUND check

It is REQUIRED in this context, so we can assume X11 has been found.

10 months agoMerge branch 'systemd' of https://github.com/CendioOssman/tigervnc
Pierre Ossman [Wed, 24 Jan 2024 09:27:50 +0000 (10:27 +0100)]
Merge branch 'systemd' of https://github.com/CendioOssman/tigervnc

10 months agoDocument optional libsystemd requirement
Pierre Ossman [Wed, 24 Jan 2024 09:21:18 +0000 (10:21 +0100)]
Document optional libsystemd requirement

10 months agoAllow combining socket activation and extra ports
Pierre Ossman [Wed, 24 Jan 2024 08:43:02 +0000 (09:43 +0100)]
Allow combining socket activation and extra ports

The common use case is probably to only listem to the systemd provided
socket when using socket activation, but it might not be the only use
case. Make sure things can be combined if explicitly requested.

10 months agoLog when sd_listen_fds() fails
Pierre Ossman [Wed, 24 Jan 2024 08:41:32 +0000 (09:41 +0100)]
Log when sd_listen_fds() fails

10 months agoUse SD_LISTEN_FDS_START constant
Pierre Ossman [Wed, 24 Jan 2024 08:25:35 +0000 (09:25 +0100)]
Use SD_LISTEN_FDS_START constant

Avoid magical numbers as it makes it hard to understand the code.

10 months agoMake systemd detection more robust
Pierre Ossman [Wed, 24 Jan 2024 08:07:57 +0000 (09:07 +0100)]
Make systemd detection more robust

We don't need to look for this on Windows or macOS, and we need to be
able to gracefully handle systems without pkg-config.

10 months agoVNCServerST: Add a timeout to pointer button ownership 1718/head
Mike Looijmans [Tue, 16 Jan 2024 15:27:43 +0000 (16:27 +0100)]
VNCServerST: Add a timeout to pointer button ownership

When one clients holds down a button on the pointer device (probably
dragging something), other clients' attempts at pointer operations
are denied. This yields a sane user experience, but with limits.

When one clients starts dragging, and then his network connection fails,
other clients are denied access to the pointer until the VNC server
finally discovers that the connection is dead and closes it. This can
take about 15 minutes.

Add a timeout to this policy: If we don't hear from the client for 3
seconds, other clients are allowed to control the pointer once more.

This solves the problem that one failing network could make the server
completely deaf to other clients for a long time.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
10 months agoVNCSConnectionST: Release mouse button(s) on close 1717/head
Mike Looijmans [Thu, 11 Jan 2024 10:16:27 +0000 (11:16 +0100)]
VNCSConnectionST: Release mouse button(s) on close

When the connection is severed, release all mouse buttons.

This fixes an issue with x0vncserver where the local display
would stop responding to mouse events if the connection closes
while the remote user was holding down a mouse button.

To reproduce, start a VNC client, press and hold a mouse button
and then kill the connection (e.g. close client, kill server,
yank network cable). This caused the local screen to no longer
respond to any mouse-down events until a VNC client reconnects
and clicks anywhere.

This may inject a "mouse release" event while closing, however,
if you click on your screen and then yank the mouse cable, a mouse
release event also would not come unexpectedly, so the cure's
side effects aren't as bad as the disease.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
10 months agox0vncserver: Add support for systemd socket activation 1716/head
Mike Looijmans [Fri, 12 Jan 2024 08:24:48 +0000 (09:24 +0100)]
x0vncserver: Add support for systemd socket activation

systemd can pass in sockets as file descriptors 3 and beyond. Allows
the server to use socket activation.

When triggered by systemd, no other listening sockets (e.g. rfbport) will
be activated.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
10 months agoSet Pixmap depths after creating visuals
Pierre Ossman [Wed, 10 Jan 2024 15:47:56 +0000 (16:47 +0100)]
Set Pixmap depths after creating visuals

This affects the ordering of visuals, which breaks some buggy
applications that assume the first visual is the root window visual.

10 months agoUpdate copyright year to 2024
Samuel Mannehed [Tue, 9 Jan 2024 13:27:51 +0000 (14:27 +0100)]
Update copyright year to 2024

10 months agoXvnc: do not use dup2() to create a file descriptor for -inetd option 1714/head
Jan Grulich [Mon, 8 Jan 2024 12:19:01 +0000 (13:19 +0100)]
Xvnc: do not use dup2() to create a file descriptor for -inetd option

Use dup() instead to get an available file descriptor to avoid hijacking
already existing descriptor.

Fixes #1709

10 months agoMerge branch 'master' of https://github.com/zmudc/tigervnc
Pierre Ossman [Thu, 28 Dec 2023 16:02:07 +0000 (17:02 +0100)]
Merge branch 'master' of https://github.com/zmudc/tigervnc

10 months agoMerge branch 'master' of https://github.com/LMattsson/tigervnc
Pierre Ossman [Thu, 28 Dec 2023 15:56:04 +0000 (16:56 +0100)]
Merge branch 'master' of https://github.com/LMattsson/tigervnc

10 months agoPrevent incorrect cmake usage
Pierre Ossman [Thu, 28 Dec 2023 08:39:08 +0000 (09:39 +0100)]
Prevent incorrect cmake usage

It's a reoccurring issue that users try to build individual components
by pointing cmake at a specific subdirectory, e.g. 'cmake vncviewer'.
CMake, unfortunately, has insufficient protection against this so we'll
need to add a manual check.

This commit only adds it to the most likely places for misuse so we
don't have to pollute every CMakeLists.txt.

11 months agoUpdate server configure example to RHEL 9 1704/head
Linn Mattsson [Mon, 11 Dec 2023 13:12:18 +0000 (14:12 +0100)]
Update server configure example to RHEL 9

Some of the flags have been removed and we don't need to consider 32-bit
libraries anymore.

11 months agoRemove unnecessary step from building the server
Linn Mattsson [Mon, 11 Dec 2023 13:09:17 +0000 (14:09 +0100)]
Remove unnecessary step from building the server

It seems this folder is created when building the vncviewer, which has
to be built before the server.

11 months agoClarify details about requirements in BUILDING.txt
Linn Mattsson [Mon, 11 Dec 2023 13:07:54 +0000 (14:07 +0100)]
Clarify details about requirements in BUILDING.txt

11 months agoAdd missing requirements to BUILDING.txt
Linn Mattsson [Mon, 11 Dec 2023 13:06:49 +0000 (14:06 +0100)]
Add missing requirements to BUILDING.txt

11 months agoMerge branch 'keysym' of github.com:CendioOssman/tigervnc
Pierre Ossman [Wed, 13 Dec 2023 11:37:16 +0000 (12:37 +0100)]
Merge branch 'keysym' of github.com:CendioOssman/tigervnc

11 months agoAutomatically generate keyucsmap.h 1705/head
Pierre Ossman [Tue, 12 Dec 2023 15:56:32 +0000 (16:56 +0100)]
Automatically generate keyucsmap.h

All the information we need is now available in keysymdef.h, so let's
get everything updated and in sync.

11 months agoMove Keysym/Unicode mapping table to separate file
Pierre Ossman [Tue, 12 Dec 2023 15:51:03 +0000 (16:51 +0100)]
Move Keysym/Unicode mapping table to separate file

Make it easier to see what's code and what's just a lot of data.

11 months agoMove dead/combining keys to separate table
Pierre Ossman [Tue, 12 Dec 2023 16:13:12 +0000 (17:13 +0100)]
Move dead/combining keys to separate table

This is a manually set up table specific for TigerVNC. For clarity,
separate it out from the general keysym/Unicode table.

11 months agoFix logging when no working VeNCrypt types
Pierre Ossman [Tue, 12 Dec 2023 14:57:05 +0000 (15:57 +0100)]
Fix logging when no working VeNCrypt types

Otherwise it will log that we chose the (invalid) type 0.

12 months agoReplace INITARGS with void in function parameter list 1698/head
Florian Weimer [Wed, 22 Nov 2023 11:41:53 +0000 (12:41 +0100)]
Replace INITARGS with void in function parameter list

Most compilers currently accept arbitrary identifiers in this place
and ignore then, but this is going to change and turn into an error.
(It prevents compilers from diagnosing misspelled type names,
and the resulting declaration is not a prototype, so no type
errors will be reported at call sites.)

12 months agoAdd option to run vncsession without forking and detaching 1651/head
Chuck Zmudzinski [Mon, 20 Nov 2023 17:07:27 +0000 (12:07 -0500)]
Add option to run vncsession without forking and detaching

Option is -D, which is what sshd uses for the same option.

Also add description of the new option to the vncsession
man page.

Tested on Void Linux using the new option, also tested on
Fedora without using the new option.

Resolves #1649

12 months agoMerge branch 'zrlee-compression-level' of https://github.com/adamhalim/tigervnc-suite
Pierre Ossman [Mon, 20 Nov 2023 12:20:46 +0000 (13:20 +0100)]
Merge branch 'zrlee-compression-level' of https://github.com/adamhalim/tigervnc-suite

12 months agoUse compressionLevel in ZRLEEncoder 1645/head
Adam Halim [Mon, 10 Jul 2023 09:15:33 +0000 (11:15 +0200)]
Use compressionLevel in ZRLEEncoder

This change makes the ZRLEEncoder respect a client's desired
compressionLevel. The ZlibLevel option is marked deprecated and removed
from the manpages.

12 months agoUpdate keysym header files
Pierre Ossman [Thu, 16 Nov 2023 15:36:15 +0000 (16:36 +0100)]
Update keysym header files

This make sure we have any new defines, in case we want to use them.

12 months agoAdd own keysym to name function
Pierre Ossman [Tue, 7 Dec 2021 19:46:20 +0000 (20:46 +0100)]
Add own keysym to name function

This is mainly a copy of XKeysymToString() from libX11. We've also added
a wrapper that still gives a string, even if there is no name for the
requested keysym.

This grows the binaries a bit, but not with any extreme amount so is
hopefully worth it to get better debug logging.

12 months agofix spelling error
ut004527 [Mon, 6 Nov 2023 09:55:34 +0000 (10:55 +0100)]
fix spelling error

12 months agoMerge pull request #1690 from LMattsson/LMattsson-patch-1 1692/head
linma (ThinLinc team) [Tue, 31 Oct 2023 14:02:55 +0000 (15:02 +0100)]
Merge pull request #1690 from LMattsson/LMattsson-patch-1

Clarify how to build server out-of-tree

12 months agoClarify how to build server out-of-tree 1690/head
linma (ThinLinc team) [Mon, 30 Oct 2023 10:10:05 +0000 (11:10 +0100)]
Clarify how to build server out-of-tree

12 months agoMerge branch 'casantos-rhbz_2233204-b' of https://github.com/casantos/tigervnc
Pierre Ossman [Fri, 27 Oct 2023 12:58:30 +0000 (14:58 +0200)]
Merge branch 'casantos-rhbz_2233204-b' of https://github.com/casantos/tigervnc

13 months agoUpdate Russian translation
Yuri Kozlov [Fri, 20 Oct 2023 15:09:00 +0000 (18:09 +0300)]
Update Russian translation

13 months agoFix description of "%u" in manual pages. 1682/head
Carlos Santos [Wed, 4 Oct 2023 14:40:56 +0000 (11:40 -0300)]
Fix description of "%u" in manual pages.

We user the real, not the effective user ID, to check if the user is
allowed to log in with the "Plain" security types. Otherwise it would be
necessary to log in as root when Xvnc is installed with the set-user-id
bit on.

Signed-off-by: Carlos Santos <casantos@redhat.com>
13 months agoSupport the "%u" username alias in PlainUsers 1671/head
Carlos Santos [Tue, 3 Oct 2023 18:00:02 +0000 (15:00 -0300)]
Support the "%u" username alias in PlainUsers

This permits to enable PAM for the effective user of the Xvnc process by
adding this to ~/.vnc/config or /etc/tigervnc/vncserver-config-defaults:

   SecurityTypes=TLSPlain
   PlainUsers=%u

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2233204
Signed-off-by: Carlos Santos <casantos@redhat.com>
13 months agoEnforce accelerators in translations
Pierre Ossman [Fri, 29 Sep 2023 08:13:04 +0000 (10:13 +0200)]
Enforce accelerators in translations

Make sure we don't overlook missing accelerators in the translations
again.

13 months agoFix missing/wrong menu accelerators
Pierre Ossman [Fri, 29 Sep 2023 08:12:17 +0000 (10:12 +0200)]
Fix missing/wrong menu accelerators

They were unfortunately omitted here and there for some languages.

13 months agoUpdate Turkish translation
Volkan Gezer [Fri, 8 Sep 2023 20:51:00 +0000 (22:51 +0200)]
Update Turkish translation

14 months agoCompletely ignore server clipboard when unfocused
Pierre Ossman [Mon, 11 Sep 2023 11:05:25 +0000 (13:05 +0200)]
Completely ignore server clipboard when unfocused

We can get races with clipboard managers in the server that is very
confusing to the user.

When the clipboard changes locally, we tell the server to drop the old
clipboard (as it is now lost). But we don't send over the new clipboard
until we get focus again, in order to not leak more data than necessary.
This causes some clibpoard managers to take over ownership in order to
avoid an empty clipboard. And this takes precedence over the new client
clipboard as it happened later. Effectively reverting the clipboard the
user sees.

Avoid all of this by simply ignoring the server when we don't have
focus. This is likely what users expect anyway as they expect their
currently focused application to control the clipboard, not vncviewer in
the background.

14 months agoMore graceful handling of disabled listeners
Pierre Ossman [Fri, 8 Sep 2023 12:31:31 +0000 (14:31 +0200)]
More graceful handling of disabled listeners

Don't assume a lack of TCP listeners means the server will be
unreachable. There might be other methods of access, so let the higher
levels do that sanity check instead.

14 months agoOnly set up TCP filter for TCP connections
Pierre Ossman [Fri, 8 Sep 2023 12:57:04 +0000 (14:57 +0200)]
Only set up TCP filter for TCP connections

This will not do the correct thing for Unix sockets.

15 months agoImprove log message when mapping keysyms
Pierre Ossman [Wed, 23 Aug 2023 14:51:19 +0000 (16:51 +0200)]
Improve log message when mapping keysyms

It was a poor choice of words to call these keysyms "unknown" as they
are likely perfectly normal keysyms, they just cannot be found in the
currently loaded keyboard layout. This log message has confused users,
so let's get rid of the "unknown" part.

We already use the verb "add" heavily in the other log messages, so
let's keep that rather than switch to some for of "map".

15 months agoMerge branch 'ryandesign-NSHighResolutionCapable' of https://github.com/ryandesign...
Pierre Ossman [Mon, 21 Aug 2023 15:31:40 +0000 (17:31 +0200)]
Merge branch 'ryandesign-NSHighResolutionCapable' of https://github.com/ryandesign/tigervnc

15 months agoChange accelerator for "Disconnect" entry
Pierre Ossman [Mon, 21 Aug 2023 09:03:10 +0000 (11:03 +0200)]
Change accelerator for "Disconnect" entry

Using "c" is in conflict the the "Ctrl" entry, so we need to pick
something else here.

This was a regression introduced in 44b085a.

15 months agoMove custom FLTK box types to valid range
Pierre Ossman [Thu, 17 Aug 2023 12:46:04 +0000 (14:46 +0200)]
Move custom FLTK box types to valid range

FLTK only allows 256 different box types, but it doesn't actually check
this when registering new ones.

Move our custom types to a valid range, and add an assert for good
measure to make sure we don't overflow FLTK's internal structures.

15 months agoAdd missing accelerator in Hebrew translation
Yaron Shahrabani [Wed, 16 Aug 2023 21:00:00 +0000 (00:00 +0300)]
Add missing accelerator in Hebrew translation

15 months agoAdd missing accelerator to Korean translation
JiYoon Kwon [Tue, 15 Aug 2023 14:51:00 +0000 (23:51 +0900)]
Add missing accelerator to Korean translation

15 months agoAutomatically respect changes in LINGUAS
Pierre Ossman [Tue, 15 Aug 2023 14:47:14 +0000 (16:47 +0200)]
Automatically respect changes in LINGUAS

Since the contents of the LINGUAS file affects which targets are
created, we must tell CMake to reconfigure things if this file changes.

15 months agoUpdate Korean translation
JiYoon Kwon [Tue, 15 Aug 2023 13:54:00 +0000 (22:54 +0900)]
Update Korean translation

15 months agoUpdate French translation
Stéphane Aulery [Tue, 15 Aug 2023 10:33:00 +0000 (12:33 +0200)]
Update French translation

15 months agoAvoid legacy C function definitions
Pierre Ossman [Tue, 15 Aug 2023 09:24:11 +0000 (11:24 +0200)]
Avoid legacy C function definitions

These aren't supported in C2x, and clang will already now complain.

15 months agoRemove stray space in format specifier
Pierre Ossman [Tue, 15 Aug 2023 08:59:26 +0000 (10:59 +0200)]
Remove stray space in format specifier

15 months agoMake NSHighResolutionCapable a Boolean in Info.plist.in 1655/head
Ryan Schmidt [Sat, 12 Aug 2023 02:09:22 +0000 (21:09 -0500)]
Make NSHighResolutionCapable a Boolean in Info.plist.in

16 months agoMerge pull request #1648 from TigerVNC/copyright
Samuel Mannehed [Thu, 20 Jul 2023 10:52:44 +0000 (12:52 +0200)]
Merge pull request #1648 from TigerVNC/copyright

Update copyright year to 2023

16 months agoUpdate copyright year to 2023 1648/head
Samuel Mannehed [Thu, 20 Jul 2023 10:32:58 +0000 (12:32 +0200)]
Update copyright year to 2023

16 months agoMerge branch 'newui-lite' of https://github.com/CendioOssman/tigervnc
Pierre Ossman [Fri, 14 Jul 2023 12:56:03 +0000 (14:56 +0200)]
Merge branch 'newui-lite' of https://github.com/CendioOssman/tigervnc

16 months agoUse modern UI colors 1646/head
Pierre Ossman [Fri, 14 Jan 2022 18:51:47 +0000 (19:51 +0100)]
Use modern UI colors

Follow the colors that modern desktops use when it comes to background,
text and selections.

16 months agoWorkaround for broken fl_arc()/fl_pie()
Pierre Ossman [Fri, 14 Jul 2023 11:10:27 +0000 (13:10 +0200)]
Workaround for broken fl_arc()/fl_pie()

There is something broken with these FLTK draw routines on Windows. They
leave gaps at the start and end of the arc/pie rather than filling the
whole specified span. So we need to nudge the numbers a bit to work
around this.

16 months agoApply custom theme to FLTK
Pierre Ossman [Fri, 14 Jul 2023 08:08:25 +0000 (10:08 +0200)]
Apply custom theme to FLTK

Inspired by modern Windows appearance, and to some extent macOS. They
have flat boxes and use white, or very light, colors for interactive
elements. Unfortunately we can't directly control the colors of
widgets, so instead we just lighten everything that uses this box type.

GNOME uses a different design, both their older and newer style. But UI
look is less consistent on Linux, so hopefully our new look is decent
enough there as well.

16 months agoFix correct background in Fl_Input_Choice
Pierre Ossman [Fri, 14 Jul 2023 08:06:49 +0000 (10:06 +0200)]
Fix correct background in Fl_Input_Choice

Work around a bug in Fl_Input_Choice where it forgets to set the proper
"input background" on some parts.

16 months agoRespect selection color in monitor widget
Pierre Ossman [Fri, 14 Jan 2022 18:49:12 +0000 (19:49 +0100)]
Respect selection color in monitor widget

We should have a consistent color set over all widgets.