[WESTON,1/1] compositor: Add idle timeout option to weston.ini

Submitted by Frederic Plourde on Oct. 27, 2014, 3:17 p.m.

Details

Message ID 1414423068-20171-1-git-send-email-frederic.plourde@collabora.co.uk
State Superseded
Headers show

Not browsing as part of any series.

Commit Message

Frederic Plourde Oct. 27, 2014, 3:17 p.m.
Weston's idle timeout can already be set via the '-i' command-line
option, but this patch lets users specify it also via weston.ini.
Note that the command-line option takes precedence over the .ini,
should the option be set by both.

This patch also Updates weston.ini man page with idle-timeout bits

https://bugs.freedesktop.org/show_bug.cgi?id=83921
Signed-off-by: Frederic Plourde <frederic.plourde@collabora.co.uk>
---
 man/weston.ini.man | 19 +++++++++++++++++--
 src/compositor.c   |  6 +++++-
 2 files changed, 22 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/man/weston.ini.man b/man/weston.ini.man
index c05a221..a5566b0 100644
--- a/man/weston.ini.man
+++ b/man/weston.ini.man
@@ -62,21 +62,21 @@  Comment lines are ignored:
 .RS 4
 .nf
 .IR "#comment"
 .fi
 .RE
 .PP
 The section headers are:
 .PP
 .RS 4
 .nf
-.BR "core           " "The core modules"
+.BR "core           " "The core modules and options"
 .BR "libinput       " "Input device configuration"
 .BR "shell          " "Desktop customization"
 .BR "launcher       " "Add launcher to the panel"
 .BR "screensaver    " "Screensaver selection"
 .BR "output         " "Output configuration"
 .BR "input-method   " "Onscreen keyboard input"
 .BR "keyboard       " "Keyboard layouts"
 .BR "terminal       " "Terminal application options"
 .BR "xwayland       " "XWayland options"
 .BR "screen-share   " "Screen sharing options"
@@ -85,21 +85,21 @@  The section headers are:
 .PP
 Possible value types are string, signed and unsigned 32-bit
 integer, and boolean. Strings must not be quoted, do not support any
 escape sequences, and run till the end of the line. Integers can
 be given in decimal (e.g. 123), octal (e.g. 0173), and hexadecimal
 (e.g. 0x7b) form. Boolean values can be only 'true' or 'false'.
 .RE
 .SH "CORE SECTION"
 The
 .B core
-section is used to select the startup compositor modules.
+section is used to select the startup compositor modules and general options.
 .TP 7
 .BI "shell=" desktop-shell.so
 specifies a shell to load (string). This can be used to load your own
 implemented shell or one with Weston as default. Available shells
 in the
 .IR "__weston_modules_dir__"
 directory are:
 .PP
 .RS 10
 .nf
@@ -139,20 +139,35 @@  directory are:
 .fi
 .RE
 .BI "gbm-format="format
 sets the GBM format used for the framebuffer for the GBM backend. Can be
 .B xrgb8888,
 .B xrgb2101010,
 .B rgb565.
 By default, xrgb8888 is used.
 .RS
 .PP
+.RE
+.TP 7
+.BI "idle-time="seconds
+sets Weston's idle timeout in seconds. This idle timeout is the time
+after which Weston will enter an inactive mode, fading the screen to
+black and possibly starting screensavers (if opt-in), etc.
+
+.IR Important
+: This option may also be set via Weston's '-i' command
+line option and will take precedence over the current .ini option. This
+means that if both weston.ini and command line define this idle-timeout
+time, the one specified in the command-line will be used. On the other
+hand, if none of these sets the value, default idle timeout will be
+set to 300 seconds.
+.RS
 
 .SH "LIBINPUT SECTION"
 The
 .B libinput
 section is used to configure input devices when using the libinput input device
 backend.
 .PP
 Available configuration are:
 .TP 7
 .BI "enable_tap=" true
diff --git a/src/compositor.c b/src/compositor.c
index 4540911..015037f 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4603,21 +4603,21 @@  int main(int argc, char *argv[])
 		*(*backend_init)(struct wl_display *display,
 				 int *argc, char *argv[],
 				 struct weston_config *config);
 	int i, fd;
 	char *backend = NULL;
 	char *shell = NULL;
 	char *modules = NULL;
 	char *option_modules = NULL;
 	char *log = NULL;
 	char *server_socket = NULL, *end;
-	int32_t idle_time = 300;
+	int32_t idle_time = -1;
 	int32_t help = 0;
 	char *socket_name = NULL;
 	int32_t version = 0;
 	int32_t noconfig = 0;
 	int32_t numlock_on;
 	struct weston_config *config = NULL;
 	struct weston_config_section *section;
 	struct wl_client *primary_client;
 	struct wl_listener primary_client_destroyed;
 	struct weston_seat *seat;
@@ -4701,20 +4701,24 @@  int main(int argc, char *argv[])
 	ec = backend_init(display, &argc, argv, config);
 	if (ec == NULL) {
 		weston_log("fatal: failed to create compositor\n");
 		ret = EXIT_FAILURE;
 		goto out_signals;
 	}
 
 	catch_signals();
 	segv_compositor = ec;
 
+	if (idle_time < 0)
+		weston_config_section_get_int(section, "idle-time", &idle_time, -1);
+	if (idle_time < 0)
+		idle_time = 300; /* default idle timeout, in seconds */
 	ec->idle_time = idle_time;
 	ec->default_pointer_grab = NULL;
 
 	for (i = 1; i < argc; i++)
 		weston_log("fatal: unhandled option: %s\n", argv[i]);
 	if (argc > 1) {
 		ret = EXIT_FAILURE;
 		goto out;
 	}
 

Comments

On Mon, Oct 27, 2014 at 11:17:48AM -0400, Frederic Plourde wrote:
> Weston's idle timeout can already be set via the '-i' command-line
> option, but this patch lets users specify it also via weston.ini.
> Note that the command-line option takes precedence over the .ini,
> should the option be set by both.
> 
> This patch also Updates weston.ini man page with idle-timeout bits
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=83921
> Signed-off-by: Frederic Plourde <frederic.plourde@collabora.co.uk>

These docs are handy; I'd wondered if --idle-timeout controlled the
screensaver timing but had to just experiment with it to see.  (I wonder
if the option could be more obviously named?)  Improving the man page
will clarify this for others.

Reviewed-by: Bryce Harrington <b.harrington@samsung.com>

> ---
>  man/weston.ini.man | 19 +++++++++++++++++--
>  src/compositor.c   |  6 +++++-
>  2 files changed, 22 insertions(+), 3 deletions(-)
> 
> diff --git a/man/weston.ini.man b/man/weston.ini.man
> index c05a221..a5566b0 100644
> --- a/man/weston.ini.man
> +++ b/man/weston.ini.man
> @@ -62,21 +62,21 @@ Comment lines are ignored:
>  .RS 4
>  .nf
>  .IR "#comment"
>  .fi
>  .RE
>  .PP
>  The section headers are:
>  .PP
>  .RS 4
>  .nf
> -.BR "core           " "The core modules"
> +.BR "core           " "The core modules and options"
>  .BR "libinput       " "Input device configuration"
>  .BR "shell          " "Desktop customization"
>  .BR "launcher       " "Add launcher to the panel"
>  .BR "screensaver    " "Screensaver selection"
>  .BR "output         " "Output configuration"
>  .BR "input-method   " "Onscreen keyboard input"
>  .BR "keyboard       " "Keyboard layouts"
>  .BR "terminal       " "Terminal application options"
>  .BR "xwayland       " "XWayland options"
>  .BR "screen-share   " "Screen sharing options"
> @@ -85,21 +85,21 @@ The section headers are:
>  .PP
>  Possible value types are string, signed and unsigned 32-bit
>  integer, and boolean. Strings must not be quoted, do not support any
>  escape sequences, and run till the end of the line. Integers can
>  be given in decimal (e.g. 123), octal (e.g. 0173), and hexadecimal
>  (e.g. 0x7b) form. Boolean values can be only 'true' or 'false'.
>  .RE
>  .SH "CORE SECTION"
>  The
>  .B core
> -section is used to select the startup compositor modules.
> +section is used to select the startup compositor modules and general options.
>  .TP 7
>  .BI "shell=" desktop-shell.so
>  specifies a shell to load (string). This can be used to load your own
>  implemented shell or one with Weston as default. Available shells
>  in the
>  .IR "__weston_modules_dir__"
>  directory are:
>  .PP
>  .RS 10
>  .nf
> @@ -139,20 +139,35 @@ directory are:
>  .fi
>  .RE
>  .BI "gbm-format="format
>  sets the GBM format used for the framebuffer for the GBM backend. Can be
>  .B xrgb8888,
>  .B xrgb2101010,
>  .B rgb565.
>  By default, xrgb8888 is used.
>  .RS
>  .PP
> +.RE
> +.TP 7
> +.BI "idle-time="seconds
> +sets Weston's idle timeout in seconds. This idle timeout is the time
> +after which Weston will enter an inactive mode, fading the screen to
> +black and possibly starting screensavers (if opt-in), etc.

We're leaving a question to the reader here, "What does 'if opt-in'
mean?"  It might be friendly to point them to further documentation on
hooking up and/or configuring screensavers here.

Btw, do you know if we have anything to inhibit/re-enable the
screensaver at runtime?

> +
> +.IR Important
> +: This option may also be set via Weston's '-i' command
> +line option and will take precedence over the current .ini option. This
> +means that if both weston.ini and command line define this idle-timeout
> +time, the one specified in the command-line will be used. On the other
> +hand, if none of these sets the value, default idle timeout will be
> +set to 300 seconds.
> +.RS
>  
>  .SH "LIBINPUT SECTION"
>  The
>  .B libinput
>  section is used to configure input devices when using the libinput input device
>  backend.
>  .PP
>  Available configuration are:
>  .TP 7
>  .BI "enable_tap=" true
> diff --git a/src/compositor.c b/src/compositor.c
> index 4540911..015037f 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4603,21 +4603,21 @@ int main(int argc, char *argv[])
>  		*(*backend_init)(struct wl_display *display,
>  				 int *argc, char *argv[],
>  				 struct weston_config *config);
>  	int i, fd;
>  	char *backend = NULL;
>  	char *shell = NULL;
>  	char *modules = NULL;
>  	char *option_modules = NULL;
>  	char *log = NULL;
>  	char *server_socket = NULL, *end;
> -	int32_t idle_time = 300;
> +	int32_t idle_time = -1;
>
>  	int32_t help = 0;
>  	char *socket_name = NULL;
>  	int32_t version = 0;
>  	int32_t noconfig = 0;
>  	int32_t numlock_on;
>  	struct weston_config *config = NULL;
>  	struct weston_config_section *section;
>  	struct wl_client *primary_client;
>  	struct wl_listener primary_client_destroyed;
>  	struct weston_seat *seat;
> @@ -4701,20 +4701,24 @@ int main(int argc, char *argv[])
>  	ec = backend_init(display, &argc, argv, config);
>  	if (ec == NULL) {
>  		weston_log("fatal: failed to create compositor\n");
>  		ret = EXIT_FAILURE;
>  		goto out_signals;
>  	}
>  
>  	catch_signals();
>  	segv_compositor = ec;
>  
> +	if (idle_time < 0)
> +		weston_config_section_get_int(section, "idle-time", &idle_time, -1);
> +	if (idle_time < 0)
> +		idle_time = 300; /* default idle timeout, in seconds */
>  	ec->idle_time = idle_time;
>  	ec->default_pointer_grab = NULL;
>  
>  	for (i = 1; i < argc; i++)
>  		weston_log("fatal: unhandled option: %s\n", argv[i]);
>  	if (argc > 1) {
>  		ret = EXIT_FAILURE;
>  		goto out;
>  	}
>  
> -- 
> 1.9.1
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
On 14-10-29 02:57 PM, Bryce Harrington wrote:
> On Mon, Oct 27, 2014 at 11:17:48AM -0400, Frederic Plourde wrote:
>> Weston's idle timeout can already be set via the '-i' command-line
>> option, but this patch lets users specify it also via weston.ini.
>> Note that the command-line option takes precedence over the .ini,
>> should the option be set by both.
>>
>> This patch also Updates weston.ini man page with idle-timeout bits
>>
>> https://bugs.freedesktop.org/show_bug.cgi?id=83921
>> Signed-off-by: Frederic Plourde <frederic.plourde@collabora.co.uk>
> These docs are handy; I'd wondered if --idle-timeout controlled the
> screensaver timing but had to just experiment with it to see.  (I wonder
> if the option could be more obviously named?)  Improving the man page
> will clarify this for others.

You surely mean "--idle-time" instead of "idle-timeout".... right ?
So.... Well, to be honest, for clarity reasons, I would stick to 
"idle-time" in here because it controls the *same* functionality as the 
-i command-line, also referred to as "idle-time" in weston.man.

Now, you're right in that it could be mistaken with a 
screensaver-related feature.... so I will clarify some more in the man 
page change.. good catch :)

>
> Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
>
>> ---
>>   man/weston.ini.man | 19 +++++++++++++++++--
>>   src/compositor.c   |  6 +++++-
>>   2 files changed, 22 insertions(+), 3 deletions(-)
>>
>> diff --git a/man/weston.ini.man b/man/weston.ini.man
>> index c05a221..a5566b0 100644
>> --- a/man/weston.ini.man
>> +++ b/man/weston.ini.man
>> @@ -62,21 +62,21 @@ Comment lines are ignored:
>>   .RS 4
>>   .nf
>>   .IR "#comment"
>>   .fi
>>   .RE
>>   .PP
>>   The section headers are:
>>   .PP
>>   .RS 4
>>   .nf
>> -.BR "core           " "The core modules"
>> +.BR "core           " "The core modules and options"
>>   .BR "libinput       " "Input device configuration"
>>   .BR "shell          " "Desktop customization"
>>   .BR "launcher       " "Add launcher to the panel"
>>   .BR "screensaver    " "Screensaver selection"
>>   .BR "output         " "Output configuration"
>>   .BR "input-method   " "Onscreen keyboard input"
>>   .BR "keyboard       " "Keyboard layouts"
>>   .BR "terminal       " "Terminal application options"
>>   .BR "xwayland       " "XWayland options"
>>   .BR "screen-share   " "Screen sharing options"
>> @@ -85,21 +85,21 @@ The section headers are:
>>   .PP
>>   Possible value types are string, signed and unsigned 32-bit
>>   integer, and boolean. Strings must not be quoted, do not support any
>>   escape sequences, and run till the end of the line. Integers can
>>   be given in decimal (e.g. 123), octal (e.g. 0173), and hexadecimal
>>   (e.g. 0x7b) form. Boolean values can be only 'true' or 'false'.
>>   .RE
>>   .SH "CORE SECTION"
>>   The
>>   .B core
>> -section is used to select the startup compositor modules.
>> +section is used to select the startup compositor modules and general options.
>>   .TP 7
>>   .BI "shell=" desktop-shell.so
>>   specifies a shell to load (string). This can be used to load your own
>>   implemented shell or one with Weston as default. Available shells
>>   in the
>>   .IR "__weston_modules_dir__"
>>   directory are:
>>   .PP
>>   .RS 10
>>   .nf
>> @@ -139,20 +139,35 @@ directory are:
>>   .fi
>>   .RE
>>   .BI "gbm-format="format
>>   sets the GBM format used for the framebuffer for the GBM backend. Can be
>>   .B xrgb8888,
>>   .B xrgb2101010,
>>   .B rgb565.
>>   By default, xrgb8888 is used.
>>   .RS
>>   .PP
>> +.RE
>> +.TP 7
>> +.BI "idle-time="seconds
>> +sets Weston's idle timeout in seconds. This idle timeout is the time
>> +after which Weston will enter an inactive mode, fading the screen to
>> +black and possibly starting screensavers (if opt-in), etc.
> We're leaving a question to the reader here, "What does 'if opt-in'
> mean?"  It might be friendly to point them to further documentation on
> hooking up and/or configuring screensavers here.

Thought it was pretty clear at first, but I can certainly try to add 
more precision about the fact that screensavers are not automatically 
enabled/turned on a timeout time.

So all of the above in patch v2, stay tuned.
> Btw, do you know if we have anything to inhibit/re-enable the
> screensaver at runtime?
>
>> +
>> +.IR Important
>> +: This option may also be set via Weston's '-i' command
>> +line option and will take precedence over the current .ini option. This
>> +means that if both weston.ini and command line define this idle-timeout
>> +time, the one specified in the command-line will be used. On the other
>> +hand, if none of these sets the value, default idle timeout will be
>> +set to 300 seconds.
>> +.RS
>>   
>>   .SH "LIBINPUT SECTION"
>>   The
>>   .B libinput
>>   section is used to configure input devices when using the libinput input device
>>   backend.
>>   .PP
>>   Available configuration are:
>>   .TP 7
>>   .BI "enable_tap=" true
>> diff --git a/src/compositor.c b/src/compositor.c
>> index 4540911..015037f 100644
>> --- a/src/compositor.c
>> +++ b/src/compositor.c
>> @@ -4603,21 +4603,21 @@ int main(int argc, char *argv[])
>>   		*(*backend_init)(struct wl_display *display,
>>   				 int *argc, char *argv[],
>>   				 struct weston_config *config);
>>   	int i, fd;
>>   	char *backend = NULL;
>>   	char *shell = NULL;
>>   	char *modules = NULL;
>>   	char *option_modules = NULL;
>>   	char *log = NULL;
>>   	char *server_socket = NULL, *end;
>> -	int32_t idle_time = 300;
>> +	int32_t idle_time = -1;
>>
>>   	int32_t help = 0;
>>   	char *socket_name = NULL;
>>   	int32_t version = 0;
>>   	int32_t noconfig = 0;
>>   	int32_t numlock_on;
>>   	struct weston_config *config = NULL;
>>   	struct weston_config_section *section;
>>   	struct wl_client *primary_client;
>>   	struct wl_listener primary_client_destroyed;
>>   	struct weston_seat *seat;
>> @@ -4701,20 +4701,24 @@ int main(int argc, char *argv[])
>>   	ec = backend_init(display, &argc, argv, config);
>>   	if (ec == NULL) {
>>   		weston_log("fatal: failed to create compositor\n");
>>   		ret = EXIT_FAILURE;
>>   		goto out_signals;
>>   	}
>>   
>>   	catch_signals();
>>   	segv_compositor = ec;
>>   
>> +	if (idle_time < 0)
>> +		weston_config_section_get_int(section, "idle-time", &idle_time, -1);
>> +	if (idle_time < 0)
>> +		idle_time = 300; /* default idle timeout, in seconds */
>>   	ec->idle_time = idle_time;
>>   	ec->default_pointer_grab = NULL;
>>   
>>   	for (i = 1; i < argc; i++)
>>   		weston_log("fatal: unhandled option: %s\n", argv[i]);
>>   	if (argc > 1) {
>>   		ret = EXIT_FAILURE;
>>   		goto out;
>>   	}
>>   
>> -- 
>> 1.9.1
>>
>> _______________________________________________
>> wayland-devel mailing list
>> wayland-devel@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel