Compare commits
2 Commits
master
...
own_2024-0
Author | SHA1 | Date |
---|---|---|
Jonas Letzbor | de74040b39 | |
Jonas Letzbor | 0ca285a3e0 |
10
FAQ.md
10
FAQ.md
|
@ -19,16 +19,6 @@ bindsym $mod+Pause mode passthrough
|
||||||
This makes it so that when you press $mod+Pause, all keybindings, except the one
|
This makes it so that when you press $mod+Pause, all keybindings, except the one
|
||||||
to switch back, are disabled.
|
to switch back, are disabled.
|
||||||
|
|
||||||
Disable `floating_modifier` during the mode if it's set up in your config file
|
|
||||||
and you wish to be able to use the same functionality in the nested desktop:
|
|
||||||
```
|
|
||||||
mode passthrough {
|
|
||||||
bindsym $mod+Pause mode default; floating_modifier $mod normal
|
|
||||||
}
|
|
||||||
bindsym $mod+Pause mode passthrough; floating_modifier none
|
|
||||||
```
|
|
||||||
Replace `$mod normal` with different arguments if applicable.
|
|
||||||
|
|
||||||
**Q: Not all symbols show up when I'm typing. What can I do to fix this?**
|
**Q: Not all symbols show up when I'm typing. What can I do to fix this?**
|
||||||
|
|
||||||
A: Try setting the keyboard layout in wayvnc to the one that most closely
|
A: Try setting the keyboard layout in wayvnc to the one that most closely
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
github: any1
|
|
||||||
patreon: andriyngvason
|
patreon: andriyngvason
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# wayvnc
|
# wayvnc
|
||||||
|
|
||||||
[![Build and Unit Test](https://github.com/any1/wayvnc/actions/workflows/build.yml/badge.svg)](https://github.com/any1/wayvnc/actions/workflows/build.yml)
|
[![Build and Unit Test](https://github.com/any1/wayvnc/actions/workflows/build.yml/badge.svg)](https://github.com/any1/wayvnc/actions/workflows/build.yml)
|
||||||
[![builds.sr.ht status](https://builds.sr.ht/~andri/wayvnc/pulls/1.svg)](https://builds.sr.ht/~andri/wayvnc/pulls/1?)
|
[![builds.sr.ht status](https://builds.sr.ht/~andri/wayvnc/commits/master.svg)](https://builds.sr.ht/~andri/wayvnc/commits/master?)
|
||||||
[![Packaging status](https://repology.org/badge/tiny-repos/wayvnc.svg)](https://repology.org/project/wayvnc/versions)
|
[![Packaging status](https://repology.org/badge/tiny-repos/wayvnc.svg)](https://repology.org/project/wayvnc/versions)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
|
@ -19,13 +19,11 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <xkbcommon/xkbcommon.h>
|
#include <xkbcommon/xkbcommon.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <neatvnc.h>
|
|
||||||
|
|
||||||
#include "intset.h"
|
#include "intset.h"
|
||||||
|
|
||||||
struct zwp_virtual_keyboard_v1;
|
struct zwp_virtual_keyboard_v1;
|
||||||
struct table_entry;
|
struct table_entry;
|
||||||
struct nvnc;
|
|
||||||
|
|
||||||
struct keyboard {
|
struct keyboard {
|
||||||
struct zwp_virtual_keyboard_v1* virtual_keyboard;
|
struct zwp_virtual_keyboard_v1* virtual_keyboard;
|
||||||
|
@ -46,4 +44,3 @@ void keyboard_destroy(struct keyboard* self);
|
||||||
void keyboard_feed(struct keyboard* self, xkb_keysym_t symbol, bool is_pressed);
|
void keyboard_feed(struct keyboard* self, xkb_keysym_t symbol, bool is_pressed);
|
||||||
void keyboard_feed_code(struct keyboard* self, xkb_keycode_t code,
|
void keyboard_feed_code(struct keyboard* self, xkb_keycode_t code,
|
||||||
bool is_pressed);
|
bool is_pressed);
|
||||||
enum nvnc_keyboard_led_state keyboard_get_led_state(const struct keyboard*);
|
|
||||||
|
|
|
@ -25,8 +25,8 @@ c_args = [
|
||||||
version = '"@0@"'.format(meson.project_version())
|
version = '"@0@"'.format(meson.project_version())
|
||||||
git = find_program('git', native: true, required: false)
|
git = find_program('git', native: true, required: false)
|
||||||
if git.found()
|
if git.found()
|
||||||
git_commit = run_command([git, 'rev-parse', '--short', 'HEAD'], check: false)
|
git_commit = run_command([git, 'rev-parse', '--short', 'HEAD'])
|
||||||
git_branch = run_command([git, 'rev-parse', '--abbrev-ref', 'HEAD'], check: false)
|
git_branch = run_command([git, 'rev-parse', '--abbrev-ref', 'HEAD'])
|
||||||
if git_commit.returncode() == 0 and git_branch.returncode() == 0
|
if git_commit.returncode() == 0 and git_branch.returncode() == 0
|
||||||
version = '"v@0@-@1@ (@2@)"'.format(
|
version = '"v@0@-@1@ (@2@)"'.format(
|
||||||
meson.project_version(),
|
meson.project_version(),
|
||||||
|
@ -157,10 +157,6 @@ if host_system == 'linux' and get_option('systemtap') and cc.has_header('sys/sdt
|
||||||
config.set('HAVE_USDT', true)
|
config.set('HAVE_USDT', true)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if cc.has_header('linux/dma-heap.h') and cc.has_header('linux/dma-buf.h')
|
|
||||||
config.set('HAVE_LINUX_DMA_HEAP', true)
|
|
||||||
endif
|
|
||||||
|
|
||||||
if cc.has_function('memfd_create')
|
if cc.has_function('memfd_create')
|
||||||
config.set('HAVE_MEMFD', true)
|
config.set('HAVE_MEMFD', true)
|
||||||
config.set('HAVE_MEMFD_CREATE', true)
|
config.set('HAVE_MEMFD_CREATE', true)
|
||||||
|
|
14
src/buffer.c
14
src/buffer.c
|
@ -37,14 +37,11 @@
|
||||||
#include <gbm.h>
|
#include <gbm.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
// #ifdef HAVE_LINUX_DMA_HEAP
|
|
||||||
#include <linux/dma-buf.h>
|
#include <linux/dma-buf.h>
|
||||||
#include <linux/dma-heap.h>
|
#include <linux/dma-heap.h>
|
||||||
|
|
||||||
#define LINUX_CMA_PATH "/dev/dma_heap/linux,cma"
|
#define LINUX_CMA_PATH "/dev/dma_heap/linux,cma"
|
||||||
//#endif // HAVE_LINUX_DMA_HEAP
|
#endif
|
||||||
#endif // ENABLE_SCREENCOPY_DMABUF
|
|
||||||
|
|
||||||
extern struct wl_shm* wl_shm;
|
extern struct wl_shm* wl_shm;
|
||||||
extern struct zwp_linux_dmabuf_v1* zwp_linux_dmabuf;
|
extern struct zwp_linux_dmabuf_v1* zwp_linux_dmabuf;
|
||||||
|
@ -128,7 +125,6 @@ failure:
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_SCREENCOPY_DMABUF
|
#ifdef ENABLE_SCREENCOPY_DMABUF
|
||||||
#ifdef HAVE_LINUX_DMA_HEAP
|
|
||||||
static bool have_linux_cma(void)
|
static bool have_linux_cma(void)
|
||||||
{
|
{
|
||||||
return access(LINUX_CMA_PATH, R_OK | W_OK) == 0;
|
return access(LINUX_CMA_PATH, R_OK | W_OK) == 0;
|
||||||
|
@ -201,7 +197,6 @@ static struct gbm_bo* create_cma_gbm_bo(int width, int height, uint32_t fourcc)
|
||||||
|
|
||||||
return bo;
|
return bo;
|
||||||
}
|
}
|
||||||
#endif // HAVE_LINUX_DMA_HEAP
|
|
||||||
|
|
||||||
static struct wv_buffer* wv_buffer_create_dmabuf(int width, int height,
|
static struct wv_buffer* wv_buffer_create_dmabuf(int width, int height,
|
||||||
uint32_t fourcc)
|
uint32_t fourcc)
|
||||||
|
@ -218,17 +213,10 @@ static struct wv_buffer* wv_buffer_create_dmabuf(int width, int height,
|
||||||
self->height = height;
|
self->height = height;
|
||||||
self->format = fourcc;
|
self->format = fourcc;
|
||||||
|
|
||||||
// Checks not needed anymore. Fixed with SCANOUT and within neatvnc for most GPUs.
|
|
||||||
// But this could still fail!
|
|
||||||
//#ifdef HAVE_LINUX_DMA_HEAP
|
|
||||||
self->bo = have_linux_cma() ?
|
self->bo = have_linux_cma() ?
|
||||||
create_cma_gbm_bo(width, height, fourcc) :
|
create_cma_gbm_bo(width, height, fourcc) :
|
||||||
gbm_bo_create(gbm_device, width, height, fourcc,
|
gbm_bo_create(gbm_device, width, height, fourcc,
|
||||||
GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT);
|
GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT);
|
||||||
//#endif
|
|
||||||
// self->bo = gbm_bo_create(gbm_device, width, height, fourcc,
|
|
||||||
// GBM_BO_USE_RENDERING);
|
|
||||||
|
|
||||||
if (!self->bo)
|
if (!self->bo)
|
||||||
goto bo_failure;
|
goto bo_failure;
|
||||||
|
|
||||||
|
|
|
@ -436,18 +436,3 @@ void keyboard_feed_code(struct keyboard* self, xkb_keycode_t code,
|
||||||
send_key(self, code, is_pressed);
|
send_key(self, code, is_pressed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum nvnc_keyboard_led_state keyboard_get_led_state(
|
|
||||||
const struct keyboard* self)
|
|
||||||
{
|
|
||||||
enum nvnc_keyboard_led_state led_state = 0;
|
|
||||||
|
|
||||||
if (xkb_state_led_name_is_active(self->state, XKB_LED_NAME_SCROLL))
|
|
||||||
led_state |= NVNC_KEYBOARD_LED_SCROLL_LOCK;
|
|
||||||
if (xkb_state_led_name_is_active(self->state, XKB_LED_NAME_NUM))
|
|
||||||
led_state |= NVNC_KEYBOARD_LED_NUM_LOCK;
|
|
||||||
if (xkb_state_led_name_is_active(self->state, XKB_LED_NAME_CAPS))
|
|
||||||
led_state |= NVNC_KEYBOARD_LED_CAPS_LOCK;
|
|
||||||
|
|
||||||
return led_state;
|
|
||||||
}
|
|
||||||
|
|
21
src/main.c
21
src/main.c
|
@ -649,9 +649,9 @@ static void compose_client_info(const struct wayvnc_client* client,
|
||||||
struct ctl_server_client_info* info)
|
struct ctl_server_client_info* info)
|
||||||
{
|
{
|
||||||
info->id = client->id;
|
info->id = client->id;
|
||||||
socklen_t addrlen = sizeof(info->address_storage);
|
socklen_t addrlen = sizeof(info->address);
|
||||||
nvnc_client_get_address(client->nvnc_client,
|
nvnc_client_get_address(client->nvnc_client,
|
||||||
(struct sockaddr*)&info->address_storage, &addrlen);
|
(struct sockaddr*)&info->address, &addrlen);
|
||||||
info->username = nvnc_client_get_auth_username(client->nvnc_client);
|
info->username = nvnc_client_get_auth_username(client->nvnc_client);
|
||||||
info->seat = client->seat ? client->seat->name : NULL;
|
info->seat = client->seat ? client->seat->name : NULL;
|
||||||
}
|
}
|
||||||
|
@ -883,9 +883,6 @@ static void on_key_event(struct nvnc_client* client, uint32_t symbol,
|
||||||
}
|
}
|
||||||
|
|
||||||
keyboard_feed(&wv_client->keyboard, symbol, is_pressed);
|
keyboard_feed(&wv_client->keyboard, symbol, is_pressed);
|
||||||
|
|
||||||
nvnc_client_set_led_state(wv_client->nvnc_client,
|
|
||||||
keyboard_get_led_state(&wv_client->keyboard));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void on_key_code_event(struct nvnc_client* client, uint32_t code,
|
static void on_key_code_event(struct nvnc_client* client, uint32_t code,
|
||||||
|
@ -897,9 +894,6 @@ static void on_key_code_event(struct nvnc_client* client, uint32_t code,
|
||||||
}
|
}
|
||||||
|
|
||||||
keyboard_feed_code(&wv_client->keyboard, code + 8, is_pressed);
|
keyboard_feed_code(&wv_client->keyboard, code + 8, is_pressed);
|
||||||
|
|
||||||
nvnc_client_set_led_state(wv_client->nvnc_client,
|
|
||||||
keyboard_get_led_state(&wv_client->keyboard));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void on_client_cut_text(struct nvnc_client* nvnc_client,
|
static void on_client_cut_text(struct nvnc_client* nvnc_client,
|
||||||
|
@ -2052,6 +2046,9 @@ int main(int argc, char* argv[])
|
||||||
else if (use_websocket)
|
else if (use_websocket)
|
||||||
socket_type = SOCKET_TYPE_WEBSOCKET;
|
socket_type = SOCKET_TYPE_WEBSOCKET;
|
||||||
|
|
||||||
|
if (init_nvnc(&self, address, port, socket_type) < 0)
|
||||||
|
goto nvnc_failure;
|
||||||
|
|
||||||
if (!start_detached) {
|
if (!start_detached) {
|
||||||
if (self.screencopy.manager)
|
if (self.screencopy.manager)
|
||||||
screencopy_init(&self.screencopy);
|
screencopy_init(&self.screencopy);
|
||||||
|
@ -2084,9 +2081,6 @@ int main(int argc, char* argv[])
|
||||||
if (!self.ctl)
|
if (!self.ctl)
|
||||||
goto ctl_server_failure;
|
goto ctl_server_failure;
|
||||||
|
|
||||||
if (init_nvnc(&self, address, port, socket_type) < 0)
|
|
||||||
goto nvnc_failure;
|
|
||||||
|
|
||||||
if (self.display)
|
if (self.display)
|
||||||
wl_display_dispatch_pending(self.display);
|
wl_display_dispatch_pending(self.display);
|
||||||
|
|
||||||
|
@ -2120,10 +2114,11 @@ int main(int argc, char* argv[])
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
nvnc_failure:
|
|
||||||
ctl_server_destroy(self.ctl);
|
|
||||||
ctl_server_failure:
|
ctl_server_failure:
|
||||||
capture_failure:
|
capture_failure:
|
||||||
|
nvnc_display_unref(self.nvnc_display);
|
||||||
|
nvnc_close(self.nvnc);
|
||||||
|
nvnc_failure:
|
||||||
wayland_failure:
|
wayland_failure:
|
||||||
aml_unref(aml);
|
aml_unref(aml);
|
||||||
failure:
|
failure:
|
||||||
|
|
|
@ -377,4 +377,4 @@ multioutput_test() {
|
||||||
}
|
}
|
||||||
|
|
||||||
smoke_test
|
smoke_test
|
||||||
#multioutput_test
|
multioutput_test
|
||||||
|
|
Loading…
Reference in New Issue