История изменений
Исправление Zubok, (текущая версия) :
Собственно, правильно ли я всё делаю? Скажем, какая-нибудь сторонняя программа для установки обоев не может ли засрать мне _XROOTPMAP_ID, а я потом не смогу освободить её ресурсы? Или, скажем, эта программа убъёт мне оконный менеджер через kill-client?
Не-не-не, погоди. Эта функция — XKillClient — сбивает с толку своим названием. Она не убивает клиента как программу. Она и не должна этого делать и не смогла бы в случае удаленных клиентов. Эта функция убивает соединение клиента с сервером и удаляет все ресурсы, с ним связанные, а не kill программе делает.
http://tronche.com/gui/x/xlib/window-and-session-manager/killing-clients.html
Чтобы твое основное соединение не сломалось, то разумно, наверное, для системы установки обоев просто открыть новое соединение (xlib:open-display...), если ты так боишься пересбросов при помощи XKillClient, выставить обои и закрыть соединение. Только желательно, наверное, чтобы оба клиента не шарили свои ресурсы между собой. Тут надо подумать. Ну и проверить потом, что получается при смене обоев с xli этим. А ты уже проверил: xli успешно прибивает stumpwm при смене обоины?
В случае Common Lisp делать отдельного клиента вряд ли разумно. Вот, например, в icewm программа установки обоев — icewmbg — отдельная. Можешь исходничек глянуть, кстати, если интересно:
Исходная версия Zubok, :
Собственно, правильно ли я всё делаю? Скажем, какая-нибудь сторонняя программа для установки обоев не может ли засрать мне _XROOTPMAP_ID, а я потом не смогу освободить её ресурсы? Или, скажем, эта программа убъёт мне оконный менеджер через kill-client?
Не-не-не, погоди. Эта функция — XKillClient — сбивает с толку своим названием. Она не убивает клиента как программу. Она и не должна этого делать и не смогла бы в случае удаленных клиентов. Эта функция убивает соединение клиента с сервером и удаляет все ресурсы, с ним связанные, а не kill программе делает.
http://tronche.com/gui/x/xlib/window-and-session-manager/killing-clients.html
Чтобы твое основное соединение не сломалось, то разумно, наверное, для системы установки обоев просто открыть новое соединение (xlib:open-display...), если ты так боишься пересбросов при помощи XKillClient, выставить обои и закрыть соединение. Ну и проверить потом, что получается при смене обоев с xli этим. А ты уже проверил: xli успешно прибивает stumpwm при смене обоины?
В случае Common Lisp делать отдельного клиента вряд ли разумно. Вот, например, в icewm программа установки обоев — icewmbg — отдельная. Можешь исходничек глянуть, кстати, если интересно: