Решать конечно Михаилу, но мне кажется в корне не правильным то что консольный скрипт зависит от иксового пртложения.
Что то я ничего не изобрел. и в инете ничего не нашел.
Если нетрудно, опишите как делать еще один скрипт “обертку”.
PS
Однако за год использования xterm, для запуска консольной утилиты, ни одного бага.
Без инфы о прогрессе выполнения команд xzm2dir и dir2xzm лично у меня через ~15 сек уже начинается паника. Пытаюсь всевозможными способами узнать зависло или работает.
А это еще хуже, чем использование xterm, для запуска консольной утилиты
Если не хватило места на флэшке, то паковка или распаковка может довольно долго зависнуть. И если в это время освободить место, то паковка или распаковка продолжается.
Можно и xterm, но только не в сам dir2xzm, а запускать из пкм меню долфина xterm -e dir2xzm bla-bla…
Можно отслеживать размер модуля в цикле, я так.в уирд для копи2рам сделал. Там и подсмотреть можно. То есть пока модуль растет все норм.
У kdialog есть прогрессбар, можно попробовать его прикрутить.
C паковкой модуля все получилось.
Убрал xterm -e из скриптов
Скоректировал file:///usr/share/kservices5/ServiceMenus/magos-folder.desktop
Но получилось только с mkpfs.
Если запускать xzm2dir то нет вывода прогресса паковки
А с mkpfs прогресс работы есть. А это очень важная инфа. Т к если паковка подвисла то скорее всего нет места на флэшке. И если в это время освободить место, то паковка продолжается.
Добавил
[Desktop Action mkpfs]
Name=Compress into the pfs module
Name[ru]=Свернуть каталог в pfs модуль
Icon=application-x-xzm-compressed-tar
Exec=uxterm -e “mkpfs %f”[Desktop Action dir2nomkpfs]
Name=Pack into the noxzm module
Name[ru]=Свернуть каталог в xzm без сжатия
Icon=application-x-xzm-compressed-tar
Exec=uxterm -e “mkpfs -b %f %f.noxz.xzm”
А xzm2dir убрал за ненадобностью
А есть ли в pfs команда распаковки модуля ?
Конечно есть - pfsextract.
С mkpfs правильнее передавать не имя папки наверное, а имена всего выделенного. Если не ошибаюсь это %F. Это должно работать для папкок, iso, img, xzm в любых сочетаниях. Попробуйте, может получится.
- /usr/share/kservices5/ServiceMenus/ magos-folder.desktop
Получилось. Проверил Магея и Убунту
Desktop Action mkpfs]
Name=Compress into the xzm module
Name[ru]=Свернуть каталог в xzm модуль
Icon=application-x-xzm-compressed-tar
Exec=lxqt-sudo -s uxterm -e mkpfs -l -w %F[Desktop Action dir2nomkpfs]
Name=Pack into the noxzm module
Name[ru]=Свернуть каталог в xzm без сжатия
Icon=application-x-xzm-compressed-tar
Exec=uxterm -e mkpfs -l -w -f %F -o %F.noxz.xzm
Вместо kdesudo применил lxqt-sudo -s
В Убунту нет kdesudo
- /usr/share/kservices5/ServiceMenus/magos-modules.desktop
[Desktop Action xzm2dir]
Name=xzm2dir
Name[ru]=Распаковать модуль
Icon=application-x-xzm-compressed-tar
Exec=lxqt-sudo -s mkdir $(echo %f | awk -F. ‘{print $1}’) && xzmXdir %f $(echo %f | awk -F. ‘{print $1}’)[Desktop Action pfsextract]
Name=pfsextract
Name[ru]=Распаковать модуль (pfsextract)
Icon=application-x-xzm-compressed-tar
Exec=lxqt-sudo -s mkdir $(echo %f | awk -F. ‘{print $1}’) && lxqt-sudo -s uxterm -e pfsextract %f $(echo %f | awk -F. ‘{print $1}’)
Но скрипт xzmXdir это xzm2dir, но с запуском в uxterm
Так что в консоли использовать - xzm2dir
А для ServiceMenus в magos-modules.desktop исползовать - xzmXdir
Убунта “не понимает”
if [ “$(fs_type $item)” == “squashfs” ] ; then
Надо задавать
if [ “$(fs_type $item)” = “squashfs” ] ; then
Все “==” из скриптов убрал.
Но теперь pfsextract и mkpfs в Убунте работают
Остальные не знаю. Не проверял
Все скрипты из /usr/lib/magos/scripts перенес в /usr/local/bin
Т к место предназначено системой для скриптов и не знаю как в Убунте сделать пач
для ~/.bashrc
А в /usr/local/bin ничего не надо делать. Все работает
Пока все как-то костыльно по описанию
Sudo может стать проблемой. У нас принято su и будут путаться который пароль вводить. Но это пол беды, юзер у нас не факт что в судоерс и вообще работать не будет, а в убунте рут без пароля и не будет работать с su. Надо думать, не пришлось бы изобретать detect-OS и делать варианты.
По путям. Попробуйте запускать скрипты с полным путем, а в начало скриптов добавить экспорт $PATH с добавленным путем до скрипта взятым из $0.
По = и == странно, должно и так и так работать. Проверьте шебанг в скриптах что бы был bash, а не sh возможно в убунте sh не линк на баш. Из-за этого и bashrc не работает возможно.
В Магее kdesu не запускает dolphin под root от обычного юзера
В Убунте вообще вроде под root не работают. Нашел способ как входить под root/
Это в плазме вроде усилена безопасность и идет такая политика от разрабов
И например
lxqt-sudo -s dolphin
Запускает dolphin под root от обычного юзера в Убунте
Где опция -s
-s|–su Использовать su(1) для повышения привилегий.
Но при распаковке модуля команда задается двумя командами в magos-modules.desktop и пришлось на каждую команду писать свой lxqt-sudo
Exec=lxqt-sudo -s mkdir $(echo %f | awk -F. ‘{print $1}’) && lxqt-sudo -s uxterm -e pfsextract %f $(echo %f | awk -F. ‘{print $1}’)
Иначе не запускалось
bashrc работает но как то странно.
Из терминала в Убунте допустим команда вызывается из ServiceMenus нет
Например pfs я делаю ссылкой на /usr/bin
Видимо еще что то где то задается. Немного другой bash в Убунте чем в Магее и Росе
Это теорию читать мне надо
Из за Убунту и писал в ServiceMenus полные пути для команд
Но перенес скрипты из /usr/lib/magos/scripts перенес в /usr/local/bin и сейчас все работает в Убунту без полных путей
С == действительно странно
Но bash даже в Магее и Росе немного отличаются по синтаксису
Был случай. Не помню точно но скрипт в Магее работает а в Росе нет.
Оказалось синтаксис команды разный. Исправил синтаксис и заработало и в Росе
PFS вято из МагОС и там в скриптах
#!/bin/sh
Но в Магее работает и сейчас из /usr/local/bin все работает но == изменены на =
Все скрипты из /usr/lib/magos/scripts перенес в /usr/local/bin
Два варианта
-
В скриптах PFS 1 строка #!/bin/bash
Заработало но в пакуемом модуле не проходят тени -
В скриптах PFS 1 строка #!/bin/sh и во всех скриптах == заменены на =
Все работает. Тени на месте
С тенями это никак не связано. Где-то в другом месте вылезло. Sh чаще всего ссылка на баш, но может быть dash и бизибокс например. Не думал, что == это башизм, посмотрим как правильно починить. Тут или баш в шебанг или =.
А почему не подходит == заменить на = ?
Заработало
В скриптах PFS 1 строка должна быть #!/bin/bash для Убунту
Но !
Все скрипты из /usr/lib/magos/scripts перенес в /usr/local/bin
Собственно крыша не горит. Пока мне так и можно оставить
Как в bashrc ввести не предназначенную для скриптов папку я не знаю
Скрипты в пфсутилс друг-друга вроде не используют, только общую либу pfs. Поиск этой либы там встроен, она должна быть либо в папке рядом с самим скриптом либо в PATH. То есть если вызывать скрипт с полным путем все должно работать из любой папки не только из PATH. Если не работает надо смотреть и чинить. Другое дело скриты магос, там все должно быть в PATH. Надо думать.
По замене == на = я не против, главное чтоб в другом варианте sh не отвалилось, в чем я не уверен. Всегда думал, что == это правильно, а = чисто для совместимости.
нет, это место для ПО которое пользователь ставит через make install и только на одну конкретную машину. В нашем случае не годится.
Сейчас у меня все работает. А то вообще тягостно было. Нетбук даже зависал
Но так
В скриптах PFS 1 строка должна быть #!/bin/bash для Убунту
В Магее работает с #!/bin/sh
Хорошо бы вариант кот не зависит от дистра и от версии bash
Посмотрел как делают в Магее
Допустим как запускают draknetcenter из /usr/bin
#!/usr/bin/sh
if [[ “$UID” != “0” ]] ; then
/usr/bin/pkexec /usr/libexec/draknetcenter “$@”
exit $?
fi
exec /usr/libexec/draknetcenter “$@”
Может как то так попробовать ?
Но это на каждую команду свой запуск придется делать.
В самом начале я делал ссылки команд из /usr/lib/magos/scripts на /usr/bin
То же все работало
Думать как раз вообще не о чем !
Все оказалось просто.
Путь в Убунту задается в /etc/environment
И никаких ~/.bashrc
По крайней мере паковка и распаковка модуля работает из /usr/lib/magos/scripts
Надо в преинит дописать, мне кажется, должно везде работать.