Emerald часто вылетает

Emerald часто вылетает

Я установил Lubuntu 14.10, затем Compiz как менеджер окон и композитов, затем Emerald из ppa:nilarimogard/webupd8 как декоратор окон. Работает хорошо, но Emerald очень часто вылетает. Границы окон просто исчезают, и больше ничего не происходит. Поэтому я запустил emerald --replaceв терминале.

При первой аварии я получил

Segmentation fault (Core dumped).

Вторая авария:

(emerald:15385): GLib-GObject-WARNING **: invalid uninstantiatable type '(null)' in cast to 'GdkDrawable'

(emerald:15385): Gdk-CRITICAL **: IA__gdk_cairo_create: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Segmentation fault (core dumped)

Третья авария:

Segmentation fault (core dumped)

Я думал написать скрипт или программу, которая перезапускала бы Emerald, если бы он остановился, но, должно быть, есть способ получше...

решение1

Поскольку Emerald больше не входит в официальные поддерживаемые репозитории, его ошибки сегментации не являются предметом обсуждения на этом форуме.

Я «решил» эту проблему с помощью этого не очень элегантного обходного пути.

file: emerald-restarter.c

#include <unistd.h>
#include <stdio.h>

int main() {

        int pid;

        while (1)
        {
                pid = fork();
                switch ( pid )
                {
                        case 0:
                        printf("Child process starting emerald.\n");
                        execlp("emerald","--replace",NULL);
                        break;

                        case -1:
                        fprintf(stderr,"Fork failed.\n");
                        return -1;
                        break;

                        default:
                        printf("Main process waiting for PID %i to finish.\n",pid);
                        wait();
                        break;
                }
        }
return 0;
}

Скомпилируйте его и позвольте Compiz запустить его вместо emerald. Он будет перезапускать emerald каждый раз, когда он падает.

Связанный контент