Commit Graph

401 Commits (10a8dbe167419d9b838792ce764fd52ad8ce7c68)

Author SHA1 Message Date
Jim Ramsay dd19da6143 Add command and event details to help output
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-08 12:42:38 -05:00
Jim Ramsay d1e1f62d1e Refactor option-parser table printing code for reuse
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-08 12:42:38 -05:00
Jim Ramsay aec9304885 Add help text for wayvncctl-only events
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-08 12:42:38 -05:00
Jim Ramsay fbd373143c Remove 'help' command and clean up help output
The redundant "help" command is now hidden from the wayvncctl UI.

This also moves event description help text to:
  wayvncctl event-receive --show=<event-name>

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-08 12:42:38 -05:00
Jim Ramsay d475e0e52f Fix segfault for wayvncctl help --command=bad-name
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-02 20:18:14 -05:00
Jim Ramsay 522b1deb28 Convert wayvncctl subcommands to use option-parser
Also cleans up access to unparsed options.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2023-01-02 16:38:46 -05:00
Andri Yngvason 474ce23d42 Implement custom option parser 2023-01-01 09:12:29 +00:00
Jim Ramsay 86652c8a42 Fixup buffer.c compiler warning
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-29 05:50:44 -05:00
Jim Ramsay 92e79bb971 Add more error logs for wayland init failures
This should help with troubleshooting issues like #206 more quickly.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-29 01:25:00 -05:00
Jim Ramsay 2f2f6f410b Force a wayland round-trip after an output appears
This way outputs are always fully initialized.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-25 21:31:49 -05:00
Jim Ramsay 5cf9ad6eab Increase client receive buffer size
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-21 09:18:46 -05:00
Jim Ramsay 5d443bfa60 Improve error message for client receive buffer overflow
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-21 09:18:46 -05:00
Jim Ramsay 3e5d6ea8eb Fix segfault after hot-plugging outputs
When new outputs appear, either because they were just created or
because they have been disabled/reenabled, ensure we always set up the
right xdg_output and wlr_output_power listeners.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-19 16:20:56 -05:00
Jim Ramsay 2a9e3dac58 Fix trace logging assert crash
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-09 02:43:03 -05:00
Jim Ramsay 00539935ba Add output power state to get_outputs ipc command
I forgot to plumb this through when I did the initial state on the
output power state.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-07 19:56:37 -05:00
Jim Ramsay cb116cc980 Handle all wayvncctl help commands locally
This means that wayvncctl can now provide full descriptions of all
commands and events without wayvnc running.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-07 19:56:06 -05:00
Jim Ramsay d75ca4bf51 Refactor comand and event name parsing
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-07 19:56:06 -05:00
Jim Ramsay 4def8f3cb8 Switch wayvncctl to use option_parser
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-07 19:56:06 -05:00
Andri Yngvason e3238cf71d output: The name the "unknown" power state is "UNKNOWN" 2022-12-01 21:30:06 +00:00
Andri Yngvason 03d7f1dc6d output: Abort on invalid power state 2022-12-01 21:27:55 +00:00
Jim Ramsay 5bb8cbfa92 Blank the capture screen when output power turns off
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-01 19:11:32 +00:00
Jim Ramsay 6b44a6648e Turn output power on when starting capture
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-01 19:11:32 +00:00
Jim Ramsay 3cba374172 Don't attempt capture if an output is powered off
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-01 19:11:32 +00:00
Jim Ramsay 308308b63a Add power management state to the output object
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-12-01 19:11:32 +00:00
Andri Yngvason 312ddd8960 Move control command schemas into own files
This allows them to be used by ctl-client as well.
2022-11-27 10:48:03 +00:00
Andri Yngvason 052160cbd4 ctl: Fix sign compare warnings 2022-11-27 10:33:09 +00:00
Andri Yngvason c3c3e97794 main: Use stronger error checking for client ids 2022-11-27 10:33:09 +00:00
Jim Ramsay 89bd6da3bb Add a brief timeout between a capture failure and the retry
Ensures we don't spin eating CPU if capture is continually failing due
to DPMS (for example) by only trying to restart screen capture every
100ms.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-27 10:29:24 +00:00
Jim Ramsay e958b06e44 Add wayvncctl wayvnc-exit command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Jim Ramsay 467cfa1889 Add wayvncctl capture-changed event
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Jim Ramsay 19862aace8 Cleanup magic strings in event sending code
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Jim Ramsay 5c8014d19b Add wayvncctl disconnect-client command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Jim Ramsay 3e9aa0e3ae Ensure cmd parsing never mis-sets the type
Why leave the cmd.type to chance? Force it to the right value.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Jim Ramsay 80fd6b074e Add wayvncctl get-outputs command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 19:57:53 +00:00
Andri Yngvason ac5e207321 ctl-server: Fix sign compare warning 2022-11-26 18:17:30 +00:00
Andri Yngvason 8a70c54928 buffer: Add braces to side-step bogus fallthrough warning 2022-11-26 18:16:14 +00:00
Jim Ramsay 80efc9d487 Start capture on output switch iff clients are connected
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-26 14:12:59 +00:00
Jim Ramsay 19e3d78d78 Add wayvncctl get-clients command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-23 09:41:46 +00:00
Jim Ramsay 72238686c4 Make better client IDs for wayvncctl
We were using a stringified pointer, but that wasnt great to leak, and
may end up being reused while wayvnc is running.

Using an unsigned int will make the IDs more generic and more unique.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-23 09:41:46 +00:00
Jim Ramsay 349693ed87 Fix segfault if running wayvncctl with no args
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-22 22:40:09 +00:00
Andri Yngvason ef2e68af70 Fixup previous commit 2022-11-21 10:09:24 +00:00
Andri Yngvason 1604b12f78 Create separate data-control for each client 2022-11-20 23:00:03 +00:00
Andri Yngvason b99120ddfc Create separate input for each client
This should clean up state for virtual input devices.

This is also a step towards multi-seat support.
2022-11-20 12:20:23 +00:00
Andri Yngvason b79ab71dca main: Add per-client state 2022-11-20 11:32:52 +00:00
Jim Ramsay fe10e46e29 Introduce wayvncctl startup amd shutdown events
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-19 11:58:07 +00:00
Jim Ramsay 325b45ef49 Clean up wayvncctl logging
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-18 09:24:31 +00:00
Jim Ramsay 1d25535e7a Add wayvncctl --reconnect option
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-18 09:24:31 +00:00
Jim Ramsay 6e13974b27 Add wayvncctl --wait option
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-18 09:24:31 +00:00
Jim Ramsay 372b530d3a Fix wayvncctl usage and manpage typos
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-18 09:24:31 +00:00
Jim Ramsay c86e2a756e Cleanup stale unix socket, iff inactive
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-13 23:06:43 +00:00
Andri Yngvason 13aa584075 ctl-server: Fix sign-compare warning 2022-11-13 15:57:27 +00:00
Andri Yngvason 125121613e Create option parser interface
This is an interface that combines option parsing with help text formatting.
2022-11-13 15:43:50 +00:00
Jim Ramsay 3ee620b8b6 Add example event-watcher script
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay d8239109e5 Introduce an event loop mode in wayvncctl
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay debd8a67cb Added event help text
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay c75b64eae8 Add server event infrastructure
Includes "client-connect" and "client-disconnect" events as
proof-of-concept.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay 8d32dfaead Add jsonipc event message constructor
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay c859c50463 Ensure fatal errors are sent first
Once we start enqueueing asynchronous events, it's more important to
send fatal errors (which then disconnect) imediately by prepending them
to the send queue. Everything else is still processed FIFO.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-12 20:11:00 +00:00
Jim Ramsay 231a08ce19 Clarify the various wayvncctl 'help' modes
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 01bd225247 Add wayvncctl human-readable output
Also adds the '--json' option to produce machine-readable output.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 1275609aee Allow 'wayvncctl foo --help' syntax
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 15735b3256 Add wayvncctl version command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 73fd2e386f Add wayvnctl help command
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 01851dc339 Add initial wayvncctl executable
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay be42c8b7bf Add ctl-client code
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 5043f8e149 Refactor some common utilities out of main
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 1a0e8aae97 Add ctl control socket and initial command infrastructure
This implements the first wayvncctl command: set-output

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay 19e1e14eab Add json-ipc message plumbing
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-10 18:02:59 +00:00
Jim Ramsay cb95ce931e Switch to previous output if current output disappears
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-06 14:55:38 +00:00
Jim Ramsay 7a159570ef Add functions to switch outputs on the fly
One to switch to an arbitrary outout, and then two helpers to switch
to the next/previous in the output list.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-06 14:55:38 +00:00
Jim Ramsay 4018c698c2 Add output_cycle to get next/prev outputs
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-06 14:55:38 +00:00
Jim Ramsay a1aa69625c Refactor output selection code
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-06 14:55:38 +00:00
Jim Ramsay 49ecbe14fa Refactor pointer initialization code
Additionally, make the pointer setup reentrant, destroying the previous
setup if needed.

Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-11-06 14:55:38 +00:00
Andri Yngvason 8bf505749c Normal exiting conditions should not yield warning 2022-10-29 15:11:28 +00:00
Andri Yngvason e9ee4e644c Adapt to aml api change 2022-10-29 11:56:54 +00:00
Andri Yngvason 6c8ad1db1e main: Suggest to enable debug logging when address binding fails 2022-10-24 21:13:45 +00:00
Andri Yngvason ec4c90b0b9 main: Refer users to man page when screencopy is missing 2022-10-24 21:13:10 +00:00
Jim Ramsay d04da7edb7 Log output selection and list of outputs
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-10-10 08:28:09 +00:00
Jim Ramsay a2d9afc90f Log signal handler
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-10-10 08:28:09 +00:00
Jim Ramsay c74c0e67d9 Log removal of seats and outputs
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-10-10 08:28:09 +00:00
Jim Ramsay 7c03f0d6e7 Log the listening address and port
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>
2022-10-10 08:28:09 +00:00
Andri Yngvason 9e85093a6d keyboard: Prefer lower keycodes
Xwayland can't handle keycodes above 255, so in order to play nice with X11,
we try to use the lowest possible keycode that's applicable for the given
shift level.

Fixes #148
2022-09-14 21:34:22 +00:00
Consolatis 34e95378e1 main: Prevent capture restart if idle
This prevents restarting the capture on dimension change when idle.
Previously the capture was running after the dimensions had changed
which caused starting the capture once a client connects to fail.

Fixes #152
2022-08-23 16:49:45 +00:00
Consolatis f3247ad933 Prevent capture and performance counter when idle
Fixes #80
2022-08-21 16:29:08 +00:00
Andri Yngvason 069d2de873 pointer: Add horizontal scrolling 2022-07-28 20:14:50 +00:00
Andri Yngvason fbf2dee187 main: Fix typo in help text 2022-07-28 20:14:27 +00:00
Andri Yngvason 28963df226 Make enabling of screencopy-dmabuf a runtime option 2022-07-09 17:34:40 +00:00
shironeko 4209a4deb2 main: check data_control exist before using it
fixes #141
2022-07-02 15:19:15 +00:00
Andri Yngvason 5e3c53b8db screencopy: Add pts to dtrace probes 2022-06-26 13:54:59 +00:00
Andri Yngvason 7c75c8919c Use neatvnc logging facilities 2022-06-25 16:14:18 +00:00
Andri Yngvason 43164f799d main: Add options to change log level 2022-06-25 16:03:11 +00:00
Andri Yngvason 099bdb8e17 main: Disallow setting seat name and disabling input 2022-05-30 18:35:04 +00:00
Andri Yngvason d1057f481f main: Extract input related object binding into function
Nesting those in an if-clause exceeded the 80 character limit and looked
bad on my screen.
2022-05-30 18:28:31 +00:00
shironeko c07f4483b2 Disable seat completely when using disable-input 2022-05-30 18:20:18 +00:00
Andri Yngvason 57f31be52e main: Add a placeholder buffer
In theory, this should allow clients to connect when the output is turned off.
2022-04-23 12:06:33 +00:00
Andri Yngvason dfc34bbe9d screencopy: Attach pts to nvnc fbs 2022-04-14 17:08:21 +00:00
Joel Jensen 5ed57b90b4 When remote input is disabled, also disable clipboard management 2022-04-03 21:04:54 +00:00
Andri Yngvason ce183e82e5 Clean up input managers and input backends separately
When inputs are disabled, managers may exist while backends don't.
2022-01-30 13:11:07 +00:00
Consolatis e9e7c1a33f Function without virtual keyboard, mouse protocol
Some compositors have a working screencopy protocol implementation but
are missing virtual keyboard and/or virtual mouse protocols. On those
compositors, don't just outright fail but instead provide a new option
to disable all remote input: --disable-input.

This is useful for using a different system (like a tablet) as
additional screen without the system providing any kind of input.
2022-01-30 13:07:04 +00:00
Andri Yngvason 3b26a43b97 pixels: Remove unused function 2022-01-27 23:16:44 +00:00