Summary: | Надо разобраться, можно ли создать перемещаемый ярлык | ||
---|---|---|---|
Product: | LINUX@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | Danil Michailov <danil> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P4 | CC: | baraka, info, kondratyuk, lav, sin |
Version: | не указана | ||
Target Milestone: | выпуск 1.0 | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 4159 | ||
Bug Blocks: | 9097, 638, 8900 |
Description
Vitaly Lipatov
2008-02-29 23:07:08 MSK
http://portland.freedesktop.org/xdg-utils-1.0/xdg-desktop-menu.html Если невозможно указать дополнительный каталог для deskstop-файлов и значков, придётся делать команду их копирования/обновления пользователю? Я не совсем понял задачу. Опиши, пожалуйста, пример такого ярлыка. Нужно сделать ярлык для приложения (со значком), при условии, что файл приложения и файл значка располагаются в домашнем каталоге. При этом в ярлыке не должно быть явной привязки к домашнему каталогу. То есть кладёшь программу в ~/bin, а значок в ~/.local/share/icons делаешь на них ярлык, а потом передаёшь мне ярлык вместе с файлами из bin и icons, и ярлык у меня работает. В стандарте ничего не сказано про относительные пути: http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html Там говорится, что можно использовать или имя команды, тогда для поиска будет использоваться $PATH, или полный путь. Но я попробовал создать .desktop, у которого прописан ключ Exec=~/test, где test - имя команды. при этом сам десктоп-файл находился в другом каталоге и все запускалось нормально. Затем попробовал указывать Exec=$HOME/test, тоже работает. Мне кажется, это какая-то недокументированная фича. У меня стоит KDE4, надо проверить в гноме. Порядок тестирования: $ mkdir -p ~/test/test $ ln -s `which xterm` ~/test/test $ echo -e '[Desktop Entry]\nType=Application\nName=xterm\nExec=~/test/test/xterm' > ~/xterm.desktop Полученный файл xterm.desktop пробуем запустить двойным кликом из конкверора или аналогичной программе в гноме. Затем меняем пусть к исполняемому файлу на Exec=$HOME/test/test/xterm. Konqueror запускает без вопросов в федоровском kde4. Dolphin спрашивает подтверждения при первом запуске. И там, и там работает и использование ~/... и переменных окружения типа $HOME UPD: Desktop Entry пишется через пробел. Основная проблема - со значком. Команду, понятно, так или иначе, можно запустить. Для иконки нельзя указать относительный путь. То есть, использование всяких ~ и $HOME не работает. Только абсолютный или вообще без пути и расширения, тогда файл ищется в общесистемных каталогах. Так, я сейчас вспомнил, что в хоуме есть отражения стандартного /usr/share/local, а именно, ~/.local. И есть каталог ~/.local/share/icons, в который можно скинуть иконку и затем в ключе Icon=blablabla указывать без полного пути, просто имя иконки. Проверил в кедах у себя, работает. Не знаю на счет стандартизированности, но ~/.local это общеизвестная штука. На этом, думаю, проблему можно считать решенной. Переоткрываю, чтобы Денис проверил на GNOME Пример работающего переносимого ярлыка: #!/usr/bin/env xdg-open [Desktop Entry] Name=1C:Предприятие Exec=env WINEPREFIX="$HOME/.wine-buh" wine "C:\\Program Files\\1cv82\\common\\1cestart.exe". Type=Application StartupNotify=true Icon=89d2_shortcut_thinstarter.0.png (In reply to comment #12) > Пример работающего переносимого ярлыка: > #!/usr/bin/env xdg-open > [Desktop Entry] > Name=1C:Предприятие > Exec=env WINEPREFIX="$HOME/.wine-buh" wine "C:\\Program > Files\\1cv82\\common\\1cestart.exe". > Type=Application > StartupNotify=true > Icon=89d2_shortcut_thinstarter.0.png > Ну он будет не совсем работающий, так как картинку то с собой придется нести, а так, он будет работать. В Gnome при использовании такой команды запуска: Exec=env WINEPREFIX=$HOME/.wine wine "C:\\ProgramFiles\\1cv82\\common\\1cestart.exe" происходит создание нового окружения в каталоге /home/user/$HOME/.wine т.е. не происходит расшифровки $HOME тестировал в WINE@Etersoft 1.0.12 eter6.12/eter11 Ubuntu 10.04 Александр Морозов 2011-01-12 15:59:01 MSK
Отработанное время: 0.5
> Хочется Win-путь к ярлыку для увеличения переносимости ярлыков.
Кроме пути к Win-программе .desktop-файл содержит ещё рабочую директорию, её
нельзя записать в виде win-пути. Так что переносимым ярлык всё равно не будет.
Итак, на данный момент для W@E 2.0 осталось выяснить, можно ли записать WINEPREFIX как ~/.wine или $HOME/.wine (В ответ на http://bugs.etersoft.ru/show_bug.cgi?id=6748#c11) > А рабочую директорию возможно записать через переменную вроде: ~/.wine или > $HOME/.wine ? Это поддерживается не везде: http://www.mail-archive.com/xdg@lists.freedesktop.org/msg04327.html В спецификации ничего про ~ и переменные окружения нет: http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html Но вообще Path по спецификации не требуется. Возможно, устроит .desktop-файл с запуском .lnk с помощью start (я не разбирался, хранится ли в .lnk рабочая директория). (В ответ на comment #16) > Итак, на данный момент для W@E 2.0 осталось выяснить, можно ли записать > WINEPREFIX как ~/.wine или $HOME/.wine Насколько я понимаю, это будет работать не везде. > Но вообще Path по спецификации не требуется. Возможно, устроит .desktop-файл с
> запуском .lnk с помощью start (я не разбирался, хранится ли в .lnk рабочая
> директория).
От проблемы с WINEPREFIX это, правда, всё равно не избавит.
Может просто из ярлыка вызывать скрипт, который всё запустит как надо (с нужным WINEPREFIX)?
(В ответ на comment #15) > > Хочется Win-путь к ярлыку для увеличения переносимости ярлыков. > Кроме пути к Win-программе .desktop-файл содержит ещё рабочую директорию, её > нельзя записать в виде win-пути. Так что переносимым ярлык всё равно не будет. Подожди, настоящий рабочий каталог должен храниться в lnk-файле. в desktop не всегда есть его поддержка. (В ответ на comment #17) ... > (В ответ на comment #16) > > Итак, на данный момент для W@E 2.0 осталось выяснить, можно ли записать > > WINEPREFIX как ~/.wine или $HOME/.wine > Насколько я понимаю, это будет работать не везде. Сказки не надо — WINEPREFIX обрабатывается внутри Wine, если мы там решим раскрывать «~», то будет раскрываться. > > > Итак, на данный момент для W@E 2.0 осталось выяснить, можно ли записать
> > > WINEPREFIX как ~/.wine или $HOME/.wine
> > Насколько я понимаю, это будет работать не везде.
> Сказки не надо — WINEPREFIX обрабатывается внутри Wine, если мы там решим
> раскрывать «~», то будет раскрываться.
Ну, это если решим...
Добрый день. Есть-ли какие-то продвижения по этому вопросу? Интересует каким образом можно создать ссылку на запуск 1С в /etc/skel, чтобы при добавлении нового пользователя ярлык автоматически появлялся на рабочем столе? Директорию .wine c установленной 1С в /etc/skel скопировали. Вообще говоря, WINEPREFIX нужно устанавливать, только если используется нестандартный wineprefix, не ~/.wine. Но если таки нужно его прописать, то, думаю, должно работать такое:
Exec=sh -c 'WINEPREFIX="$HOME/.wine-buh" wine "C:\\Program Files\\1cv82\\common\\1cestart.exe"'
> Добрый день. Есть-ли какие-то продвижения по этому вопросу? Интересует каким
> образом можно создать ссылку на запуск 1С в /etc/skel, чтобы при добавлении
> нового пользователя ярлык автоматически появлялся на рабочем столе? Директорию
> .wine c установленной 1С в /etc/skel скопировали.
Поместите создающийся при установке 1С ярлык в /etc/skel/Desktop, удалив env WINEPREFIX="..." в Exec. Скопируйте иконку (имя задано в Icon в ярлыке) в /etc/skel/.local/share/icons. Думаю, должно работать.
1) Создал файл /etc/skel/Desktop/notepad.desktop #!/usr/bin/env xdg-open [Desktop Entry] Name=Notepad Exec="wine notepad" Type=Application StartupNotify=true Icon=/etc/skel/.local/share/icons/wine.png 2) Положил иконку cp /usr/share/icons/wine.ico /etc/skel/.local/share/icons/ 3) Создал нового пользователя adduser -b /var/ftp/tmp -m tempuser Указание иконки через Icon=~/.local/share/icons/wine.png Icon=$HOME/.local/share/icons/wine.png не работают |