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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post by cutecode »

подскажите, как создать на рабочем столе ярлык на программу через DEB-пакет.
Я создал ярлык в папке /usr/share/applications/myprog.desktop

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

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

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

regards,
Alexander Saprykin
https://v2.dental-soft.ru
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

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

Post by T-Rex »

Вопрос, как бы, совсем не по wxWidgets, но

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

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

UPD: https://www.debian.org/doc/manuals/main ... intscripts - в постинсталл скрипте можно сделать .desktop файлы и проставить им пермишены. Но, в целом, лучше бы только в меню добавлять, а не на рабочий стол.
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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...?
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

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

Post by T-Rex »

Узнать кто вызвал sudo можно через

Code: Select all

sudo who|awk '{print $1}'
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

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

Post by T-Rex »

Code: Select all

echo $(xdg-user-dir DESKTOP)
?
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
User avatar
T-Rex
Moderator
Moderator
Posts: 1248
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

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

Post by T-Rex »

Можно внутри скрипта попробовать сделать source с файла ~/.config/user-dirs.dirs юзера, который сделал sudo. там должна быть куча XDG_* переменных
Post Reply