Page 1 of 1

как в DEB пакет всунуть ярлык на рабочем столе

Posted: Sat Sep 08, 2018 3:49 pm
by cutecode
подскажите, как создать на рабочем столе ярлык на программу через DEB-пакет.
Я создал ярлык в папке /usr/share/applications/myprog.desktop

как теперь тоже самое скопировать на рабочий стол?

А еще лучше создать ярлык для всех существующих пользователей.

И уж совсем бы хорошо если создавать его и для новых созданных пользователей.

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Tue Sep 11, 2018 11:56 am
by T-Rex
Вопрос, как бы, совсем не по wxWidgets, но

https://ubuntuforums.org/showthread.php?t=968399

И там правильно пишут, не надо так делать. Это только в богомерзкой винде за такое руки не отрывают.

UPD: https://www.debian.org/doc/manuals/main ... intscripts - в постинсталл скрипте можно сделать .desktop файлы и проставить им пермишены. Но, в целом, лучше бы только в меню добавлять, а не на рабочий стол.

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Tue Sep 11, 2018 12:25 pm
by cutecode
поэтому и спрашиваю здесь, т.к. не нашел ответа в Инете.
Я пробовал вставить в postScrypt эту строку

Code: Select all

cp /usr/share/applications/myprog.desktop "$(xdg-user-dir DESKTOP)/"
но т.к. dpkg runs as root, то вместо /home/user/DeskTop, он пытается копировать в /root/DeskTop

вот если бы как то в скрипте узнать имя пользователя, который выполняет команду от root...?

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Tue Sep 11, 2018 12:34 pm
by T-Rex
Узнать кто вызвал sudo можно через

Code: Select all

sudo who|awk '{print $1}'

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Thu Sep 13, 2018 6:57 am
by cutecode
спасибо.

тут еще заморочки появились c именем папки рабочего стола.
Поскольку очень велика вероятность имени папки "Рабочий стол" или "Desktop", то написал такой скрипт.
Может кто поправит?

Code: Select all

#имя файла ярлыка нашей программы
MYFILE=dental-soft.desktop

#создаем временный файл
mytmp=$(mktemp)

#загоняем имя текущего пользователя в этот временный файл
who|awk '{print $1}'>$mytmp

#читаем первую строку из временного файла
read LINE < $mytmp;
#теперь переменная $LINE содержит имя текущего пользователя

#удаляем временный файл
rm "$mytmp"

#будем надеятся что папка рабочего стола называется "Рабочий стол"
#и находится в папке /home/$USER
MYDESKTOP="/home/"$LINE"/Рабочий стол/"

#копируем наш ярлык в предпологаемый рабочий стол
cp /usr/share/applications/$MYFILE "$MYDESKTOP"

#даем всем права на удаление файла ярлыка 
chmod 777 "$MYDESKTOP$MYFILE"

#если ни "Рабочий стол", то может быть Desktop?
#повторяем тоже самое
MYDESKTOP="/home/"$LINE"/Desktop/"
cp /usr/share/applications/$MYFILE "$MYDESKTOP"
chmod 777 "$MYDESKTOP$MYFILE"

#говорим dpkg, что всё прошло удачно
exit 0

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Thu Sep 13, 2018 10:37 am
by T-Rex

Code: Select all

echo $(xdg-user-dir DESKTOP)
?

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Thu Sep 13, 2018 9:31 pm
by cutecode
не катит, уже пробовал

Code: Select all

alexander@debian:~$ sudo echo $(xdg-user-dir DESKTOP)
[sudo] пароль для alexander: 
/home/alexander/Рабочий стол
alexander@debian:~$ sudo su
root@debian:/home/alexander# echo $(xdg-user-dir DESKTOP)
/root/Desktop
root@debian:/home/alexander# 
если делать su, затем эту команду, то выдает так, как мне надо.
Но если сделать sudo su, то как видно выше выдает /root/Desktop

я вставлял этот код в postinst, там тоже пишет /root/Desktop

Re: как в DEB пакет всунуть ярлык на рабочем столе

Posted: Fri Sep 14, 2018 10:44 am
by T-Rex
Можно внутри скрипта попробовать сделать source с файла ~/.config/user-dirs.dirs юзера, который сделал sudo. там должна быть куча XDG_* переменных