[PATCH weston] window: allow changing cursor theme and size

Kristian Høgsberg krh at bitplanet.net
Mon May 14 11:39:39 PDT 2012


On Mon, May 14, 2012 at 9:59 AM, Kristian Høgsberg <hoegsberg at gmail.com> wrote:
> On Mon, May 14, 2012 at 02:01:50PM +0300, Pekka Paalanen wrote:
>> Toytoolkit clients will now use two new environment variables:
>>
>> TOYTOOLKIT_CURSOR_THEME=theme
>> TOYTOOLKTI_CURSOR_SIZE=size
>>
>> where 'theme' can be e.g. whiteglass if you have the basic X.Org cursor
>> themes installed. 'size' is a cursor size hint 4-64, by default 32.
>
> Should we make it a weston.ini option instead?

On second thought, can you just put this in
/usr/share/icons/default/index.theme:

[Icon Theme]
Inherits=whiteglass

and have that work?

Kristian


> Kristian
>
>> See the Xcursor man page for how cursors are found for a theme.
>>
>> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
>> ---
>>  clients/window.c |   23 ++++++++++++++++++++---
>>  1 files changed, 20 insertions(+), 3 deletions(-)
>>
>> diff --git a/clients/window.c b/clients/window.c
>> index e14edb0..63e57f7 100644
>> --- a/clients/window.c
>> +++ b/clients/window.c
>> @@ -702,16 +702,33 @@ create_cursors(struct display *display)
>>       size_t pool_size = 0;
>>       struct cursor *cursor;
>>       XcursorImages **images;
>> +     const char *theme;
>> +     const char *tmpstr;
>> +     int cursor_size = 32;
>> +
>> +     theme = getenv("TOYTOOLKIT_CURSOR_THEME");
>> +
>> +     tmpstr = getenv("TOYTOOLKIT_CURSOR_SIZE");
>> +     if (tmpstr) {
>> +             char *end;
>> +             long size;
>> +
>> +             size = strtol(tmpstr, &end, 0);
>> +             if (end != tmpstr && *end == 0 && size > 3 && size < 65)
>> +                     cursor_size = size;
>> +     }
>>
>>       count = ARRAY_LENGTH(cursors);
>>       display->cursors = malloc(count * sizeof *display->cursors);
>>       images = malloc(count * sizeof images[0]);
>>
>>       for (i = 0; i < count; i++) {
>> -             images[i] = XcursorLibraryLoadImages(cursors[i], NULL, 32);
>> +             images[i] = XcursorLibraryLoadImages(cursors[i], theme,
>> +                                                  cursor_size);
>>               if (!images[i]) {
>> -                     fprintf(stderr, "Error loading cursor: %s\n",
>> -                             cursors[i]);
>> +                     fprintf(stderr, "Error loading cursor '%s' "
>> +                             "from theme '%s'\n", cursors[i],
>> +                             theme ? theme : "default");
>>                       continue;
>>               }
>>               pool_size += data_length_for_cursor_images(images[i]);
>> --
>> 1.7.3.4
>>


More information about the wayland-devel mailing list