mirror of
https://github.com/labwc/labwc.git
synced 2026-04-13 08:21:15 -04:00
Merge branch 'labwc:master' into osd
This commit is contained in:
commit
22da242a32
5 changed files with 31 additions and 3 deletions
|
|
@ -47,7 +47,7 @@ an arbitrary order; any variables that must be set in a particular sequence
|
||||||
should be set within the same file. Unless the --merge-config option is
|
should be set within the same file. Unless the --merge-config option is
|
||||||
specified, labwc will consider a particular XDG Base Directory to have provided
|
specified, labwc will consider a particular XDG Base Directory to have provided
|
||||||
an environment file if that directory contains either the "environment"
|
an environment file if that directory contains either the "environment"
|
||||||
directory or at least one "environment.d/\*.env" file.
|
file or at least one "environment.d/\*.env" file.
|
||||||
|
|
||||||
Note: environment files are treated differently by Openbox, which will simply
|
Note: environment files are treated differently by Openbox, which will simply
|
||||||
source the file as a valid shell script before running the window manager. Files
|
source the file as a valid shell script before running the window manager. Files
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ void cursor_update_focus(struct server *server);
|
||||||
void cursor_update_image(struct seat *seat);
|
void cursor_update_image(struct seat *seat);
|
||||||
|
|
||||||
void cursor_init(struct seat *seat);
|
void cursor_init(struct seat *seat);
|
||||||
|
void cursor_load(struct seat *seat);
|
||||||
void cursor_emulate_move_absolute(struct seat *seat,
|
void cursor_emulate_move_absolute(struct seat *seat,
|
||||||
struct wlr_input_device *device,
|
struct wlr_input_device *device,
|
||||||
double x, double y, uint32_t time_msec);
|
double x, double y, uint32_t time_msec);
|
||||||
|
|
|
||||||
|
|
@ -1253,12 +1253,15 @@ cursor_frame(struct wl_listener *listener, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
cursor_init(struct seat *seat)
|
cursor_load(struct seat *seat)
|
||||||
{
|
{
|
||||||
const char *xcursor_theme = getenv("XCURSOR_THEME");
|
const char *xcursor_theme = getenv("XCURSOR_THEME");
|
||||||
const char *xcursor_size = getenv("XCURSOR_SIZE");
|
const char *xcursor_size = getenv("XCURSOR_SIZE");
|
||||||
uint32_t size = xcursor_size ? atoi(xcursor_size) : 24;
|
uint32_t size = xcursor_size ? atoi(xcursor_size) : 24;
|
||||||
|
|
||||||
|
if (seat->xcursor_manager) {
|
||||||
|
wlr_xcursor_manager_destroy(seat->xcursor_manager);
|
||||||
|
}
|
||||||
seat->xcursor_manager = wlr_xcursor_manager_create(xcursor_theme, size);
|
seat->xcursor_manager = wlr_xcursor_manager_create(xcursor_theme, size);
|
||||||
wlr_xcursor_manager_load(seat->xcursor_manager, 1);
|
wlr_xcursor_manager_load(seat->xcursor_manager, 1);
|
||||||
|
|
||||||
|
|
@ -1293,6 +1296,12 @@ cursor_init(struct seat *seat)
|
||||||
"Cursor theme is missing cursor names, using fallback");
|
"Cursor theme is missing cursor names, using fallback");
|
||||||
cursor_names = cursors_x11;
|
cursor_names = cursors_x11;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cursor_init(struct seat *seat)
|
||||||
|
{
|
||||||
|
cursor_load(seat);
|
||||||
|
|
||||||
/* Set the initial cursor image so the cursor is visible right away */
|
/* Set the initial cursor image so the cursor is visible right away */
|
||||||
cursor_set(seat, LAB_CURSOR_DEFAULT);
|
cursor_set(seat, LAB_CURSOR_DEFAULT);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
#define _POSIX_C_SOURCE 200809L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <wlr/backend/multi.h>
|
#include <wlr/backend/multi.h>
|
||||||
#include <wlr/backend/session.h>
|
#include <wlr/backend/session.h>
|
||||||
#include <wlr/interfaces/wlr_keyboard.h>
|
#include <wlr/interfaces/wlr_keyboard.h>
|
||||||
|
|
@ -628,6 +630,8 @@ reset_window_keyboard_layout_groups(struct server *server)
|
||||||
static void
|
static void
|
||||||
set_layout(struct server *server, struct wlr_keyboard *kb)
|
set_layout(struct server *server, struct wlr_keyboard *kb)
|
||||||
{
|
{
|
||||||
|
static bool fallback_mode;
|
||||||
|
|
||||||
struct xkb_rule_names rules = { 0 };
|
struct xkb_rule_names rules = { 0 };
|
||||||
struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
|
struct xkb_context *context = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
|
||||||
struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
|
struct xkb_keymap *keymap = xkb_map_new_from_names(context, &rules,
|
||||||
|
|
@ -639,7 +643,14 @@ set_layout(struct server *server, struct wlr_keyboard *kb)
|
||||||
}
|
}
|
||||||
xkb_keymap_unref(keymap);
|
xkb_keymap_unref(keymap);
|
||||||
} else {
|
} else {
|
||||||
wlr_log(WLR_ERROR, "Failed to create xkb keymap");
|
wlr_log(WLR_ERROR, "failed to create xkb keymap for layout '%s'",
|
||||||
|
getenv("XKB_DEFAULT_LAYOUT"));
|
||||||
|
if (!fallback_mode) {
|
||||||
|
wlr_log(WLR_ERROR, "entering fallback mode with layout 'us'");
|
||||||
|
fallback_mode = true;
|
||||||
|
setenv("XKB_DEFAULT_LAYOUT", "us", 1);
|
||||||
|
set_layout(server, kb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
xkb_context_unref(context);
|
xkb_context_unref(context);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -296,6 +296,11 @@ new_keyboard(struct seat *seat, struct wlr_input_device *device, bool virtual)
|
||||||
keyboard->wlr_keyboard = kb;
|
keyboard->wlr_keyboard = kb;
|
||||||
keyboard->is_virtual = virtual;
|
keyboard->is_virtual = virtual;
|
||||||
|
|
||||||
|
if (!seat->keyboard_group->keyboard.keymap) {
|
||||||
|
wlr_log(WLR_ERROR, "cannot set keymap");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
wlr_keyboard_set_keymap(kb, seat->keyboard_group->keyboard.keymap);
|
wlr_keyboard_set_keymap(kb, seat->keyboard_group->keyboard.keymap);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -529,6 +534,7 @@ seat_init(struct server *server)
|
||||||
|
|
||||||
seat->input_method_relay = input_method_relay_create(seat);
|
seat->input_method_relay = input_method_relay_create(seat);
|
||||||
|
|
||||||
|
seat->xcursor_manager = NULL;
|
||||||
seat->cursor = wlr_cursor_create();
|
seat->cursor = wlr_cursor_create();
|
||||||
if (!seat->cursor) {
|
if (!seat->cursor) {
|
||||||
wlr_log(WLR_ERROR, "unable to create cursor");
|
wlr_log(WLR_ERROR, "unable to create cursor");
|
||||||
|
|
@ -571,6 +577,7 @@ seat_reconfigure(struct server *server)
|
||||||
{
|
{
|
||||||
struct seat *seat = &server->seat;
|
struct seat *seat = &server->seat;
|
||||||
struct input *input;
|
struct input *input;
|
||||||
|
cursor_load(seat);
|
||||||
wl_list_for_each(input, &seat->inputs, link) {
|
wl_list_for_each(input, &seat->inputs, link) {
|
||||||
switch (input->wlr_input_device->type) {
|
switch (input->wlr_input_device->type) {
|
||||||
case WLR_INPUT_DEVICE_KEYBOARD:
|
case WLR_INPUT_DEVICE_KEYBOARD:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue