mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
xwayland: support xinitrc scripts to configure server on launch (#1963)
This commit is contained in:
parent
e4afa10fe4
commit
14d9bbab90
6 changed files with 48 additions and 5 deletions
|
|
@ -5,6 +5,7 @@ Config layout for ~/.config/labwc/
|
|||
- rc.xml
|
||||
- shutdown
|
||||
- themerc-override
|
||||
- xinitrc
|
||||
|
||||
See `man labwc-config and `man labwc-theme` for further details.
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ labwc - configuration files
|
|||
|
||||
Labwc uses openbox-3.6 specification for configuration and theming, but does not
|
||||
support all options. The following files form the basis of the labwc
|
||||
configuration: rc.xml, menu.xml, autostart, shutdown and environment.
|
||||
configuration: rc.xml, menu.xml, autostart, shutdown, environment and xinitrc.
|
||||
|
||||
No configuration files are needed to start and run labwc.
|
||||
|
||||
|
|
@ -78,6 +78,10 @@ in labwc-theme(5).
|
|||
*rc.xml* is the main configuration file and all its options are described in
|
||||
detail below.
|
||||
|
||||
The *xinitrc* file is executed as a shell script whenever labwc launches the
|
||||
Xwayland X11 server. This may happen multiple times throughout the session if
|
||||
Xwayland is not configured to persist when no X11 clients are connected.
|
||||
|
||||
# CONFIGURATION
|
||||
|
||||
This section describes *rc.xml* configuration options.
|
||||
|
|
|
|||
28
docs/xinitrc
Normal file
28
docs/xinitrc
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/sh
|
||||
|
||||
## This file is run every time labwc launches Xwayland.
|
||||
##
|
||||
## In the default configuration, Xwayland will be launched lazily, and will
|
||||
## terminate after several seconds when no X11 clients are connected. Thus,
|
||||
## this script may run repeatedly throughout a single labwc session.
|
||||
|
||||
# Configure the X resource database if a file is provided
|
||||
#
|
||||
# NOTE: when Xwayland is launched lazily, an X11 client that triggers its
|
||||
# launch may attempt to read the resource database before this command can be
|
||||
# run. In that case, it is recommended to make a symlink to .Xdefaults:
|
||||
#
|
||||
# ln -s .Xresources "${HOME}/.Xdefaults"
|
||||
#
|
||||
# With this link in place, X11 applications will fall back to reading
|
||||
# the .Xdefaults file directly when no resource database can be read from the
|
||||
# server's root window properties.
|
||||
#
|
||||
# Invoking xrdb is still useful to pre-load the resource database for
|
||||
# subsequent clients, because any additional clients launched while the X
|
||||
# server remains alive will be able to query the database without resorting to
|
||||
# filesystem access.
|
||||
|
||||
if [ -r "${HOME}/.Xresources" ] && command -v xrdb >/dev/null 2>&1; then
|
||||
xrdb -merge "${HOME}/.Xresources"
|
||||
fi
|
||||
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
struct server;
|
||||
|
||||
/**
|
||||
* session_run_script - run a named session script (or, in merge-config mode,
|
||||
* all named session scripts) from the XDG path.
|
||||
*/
|
||||
void session_run_script(const char *script);
|
||||
|
||||
/**
|
||||
* session_environment_init - set environment variables based on <key>=<value>
|
||||
* pairs in `${XDG_CONFIG_DIRS:-/etc/xdg}/labwc/environment` with user override
|
||||
|
|
|
|||
|
|
@ -261,8 +261,8 @@ session_environment_init(void)
|
|||
paths_destroy(&paths);
|
||||
}
|
||||
|
||||
static void
|
||||
run_session_script(const char *script)
|
||||
void
|
||||
session_run_script(const char *script)
|
||||
{
|
||||
struct wl_list paths;
|
||||
paths_config_create(&paths, script);
|
||||
|
|
@ -293,13 +293,13 @@ session_autostart_init(struct server *server)
|
|||
{
|
||||
/* Update dbus and systemd user environment, each may fail gracefully */
|
||||
update_activation_env(server, /* initialize */ true);
|
||||
run_session_script("autostart");
|
||||
session_run_script("autostart");
|
||||
}
|
||||
|
||||
void
|
||||
session_shutdown(struct server *server)
|
||||
{
|
||||
run_session_script("shutdown");
|
||||
session_run_script("shutdown");
|
||||
|
||||
/* Clear the dbus and systemd user environment, each may fail gracefully */
|
||||
update_activation_env(server, /* initialize */ false);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "common/macros.h"
|
||||
#include "common/mem.h"
|
||||
#include "config/rcxml.h"
|
||||
#include "config/session.h"
|
||||
#include "labwc.h"
|
||||
#include "node.h"
|
||||
#include "ssd.h"
|
||||
|
|
@ -1072,6 +1073,9 @@ sync_atoms(xcb_connection_t *xcb_conn)
|
|||
static void
|
||||
handle_server_ready(struct wl_listener *listener, void *data)
|
||||
{
|
||||
/* Fire an Xwayland startup script if one (or many) can be found */
|
||||
session_run_script("xinitrc");
|
||||
|
||||
xcb_connection_t *xcb_conn = xcb_connect(NULL, NULL);
|
||||
if (xcb_connection_has_error(xcb_conn)) {
|
||||
wlr_log(WLR_ERROR, "Failed to create xcb connection");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue