diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index b3debf07..d26fe0a7 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -171,6 +171,7 @@ this is for compatibility with Openbox. 0 no no + yes no yes @@ -209,6 +210,14 @@ this is for compatibility with Openbox. consider setting the environment variable WLR_DRM_NO_ATOMIC=1 when launching labwc. +** [yes|no] + Automatically enable outputs at startup and when new outputs are + connected. Default is yes. + + Caution: Disabling this option will make the labwc session unusable + unless an external tool such as `wlr-randr` or `kanshi` is used to + manage outputs. + ** [yes|no] Try to re-use the existing output mode (resolution / refresh rate). This may prevent unnecessary screenblank delays when starting labwc diff --git a/docs/rc.xml.all b/docs/rc.xml.all index aa24838c..a290e1a4 100644 --- a/docs/rc.xml.all +++ b/docs/rc.xml.all @@ -12,6 +12,7 @@ 0 no no + yes no yes diff --git a/include/config/rcxml.h b/include/config/rcxml.h index dd237fa4..10cdc0d3 100644 --- a/include/config/rcxml.h +++ b/include/config/rcxml.h @@ -68,6 +68,7 @@ struct rcxml { int gap; enum adaptive_sync_mode adaptive_sync; enum tearing_mode allow_tearing; + bool auto_enable_outputs; bool reuse_output_mode; enum view_placement_policy placement_policy; bool xwayland_persistence; diff --git a/src/config/rcxml.c b/src/config/rcxml.c index b87505e5..c87e5a0e 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -1083,6 +1083,8 @@ entry(xmlNode *node, char *nodename, char *content) set_adaptive_sync_mode(content, &rc.adaptive_sync); } else if (!strcasecmp(nodename, "allowTearing.core")) { set_tearing_mode(content, &rc.allow_tearing); + } else if (!strcasecmp(nodename, "autoEnableOutputs.core")) { + set_bool(content, &rc.auto_enable_outputs); } else if (!strcasecmp(nodename, "reuseOutputMode.core")) { set_bool(content, &rc.reuse_output_mode); } else if (!strcmp(nodename, "policy.placement")) { @@ -1465,6 +1467,7 @@ rcxml_init(void) rc.gap = 0; rc.adaptive_sync = LAB_ADAPTIVE_SYNC_DISABLED; rc.allow_tearing = false; + rc.auto_enable_outputs = true; rc.reuse_output_mode = false; #if LAB_WLR_VERSION_OLDER_THAN(0, 18, 2) diff --git a/src/output.c b/src/output.c index 9384e720..b6f3657b 100644 --- a/src/output.c +++ b/src/output.c @@ -499,7 +499,10 @@ new_output_notify(struct wl_listener *listener, void *data) wlr_scene_node_raise_to_top(&server->menu_tree->node); wlr_scene_node_raise_to_top(&output->session_lock_tree->node); - configure_new_output(server, output); + if (rc.auto_enable_outputs) { + configure_new_output(server, output); + } + do_output_layout_change(server); }