Проблема с убегающими значками рабочего стола не нова. То же самое наблюдалось у меня в Jeans + Pwidget.
Сейчас провел небольшие раскопки в своей почти новой установке Jeans, надеюсь, что это досталось по наследству обсуждаемому дистру и поможет найти решение.
Значки рабочего стола ROX хранятся в файле /root/Choices/ROX-Filer/PuppyPin
При запуске-перезапуске иксов выполняется скрипт /root/.xinitrc, в строчке 96 которого (по крайней мере, в Jeans точно 96) есть комментарий:
#relocates right-side icons to actual right-side of screen...
В следующей строке вызывается /usr/sbin/fixPuppyPin с параметром - полным путем к файлу со значками.
В скрипте fixPuppyPin несколько нарушена логика - правая граница рабочего стола определяется по горизонтальной координате значка Xlock (Блок), но ведь его можно перенести и в середину рабочего стола! Дальше все значки, которые имеют такую же горизонтальную координату, переносятся на 32 пикселя левее правой границы экрана. Если перенести значок Xlock (Блок) в самый левый ряд, то после рестарта иксов весь этот ряд убегает вправо.
Готовое решение не предлагаю, но всё дело в скрипте fixPuppyPin.
Предлагаю алгоритм решения, надеюсь, что он заинтересует уважаемого DdShurick.
В цикле обрабатываем строчки файла PuppyPin, но не все, а только содержащие сигнатуру "<icon".
Строчка разбивается на три части: начало, число-координата икс, всё остальное.
Координата икс сравнивается с максимально допустимой координатой (правый край экрана минус 32) и если она больше, то исправляется.
Строка собирается из трех частей и старая строка заменяется новой.
Вот такой, вроде бы несложный парсинг файла xml.