LINUX.ORG.RU

История изменений

Исправление 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 — отдельная. Можешь исходничек глянуть, кстати, если интересно:

https://github.com/kazzmir/icewm/blob/master/src/icewmbg.cc

Исходная версия 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 — отдельная. Можешь исходничек глянуть, кстати, если интересно:

https://github.com/kazzmir/icewm/blob/master/src/icewmbg.cc