Makefile - Установка нескольких переменных на одном этапе

TL;DR

Создайте файл .desktopс содержимым, идентификатор Steam для Project Hospital 868360, вы можете увидеть этот номер внутри ссылки Steam, например.:

https://store.steampowered.com/app/868360/Project_Hospital/

[Desktop Entry]
Name=[replace with the game name]
Exec=steam steam://rungameid/[replace with a number = Steam Id of the game]
Icon=[replace with a path to some image you find suitable]
Terminal=false
Type=Application
Categories=Game

Вы можете проверить синтаксис с помощью следующей команды:

desktop-file-validate /path/to/the/desktop/file

Он ничего не скажет, если не найдет ошибку.


Детали

На GitHub уже есть закрытый тикет по этой теме, который предположительно является дубликатом этого тикета . Открытый тикет по этому вопросу::https://github.com/ValveSoftware/steam-for-linux/issues/5590

Но обходного пути нигде не написано. Он был закрыт в соответствии с решением от 2017 -ноября -8, что было год назад.

Я не понимаю, почему эта проблема до сих пор остается закрытой, но тем не менее...

Вы должны запустить chmod +xдля этого файла, размещенного на вашем рабочем столе, и не так, если он находится в вашем меню.

Расположение элементов рабочего стола моего пользователя:~/Desktop

Расположение пунктов моего глобального меню:/usr/share/applications/


Отладка-комментарий к тикету моего выпуска в Steam стенограмма

Как бы то ни было, я только что отправил заявку на открытый тикет, спасибо Аарону за комментарий, кстати:


Итак, давайте приступим к делу и, наконец, отладим эту штуку!

$ ls -lhF ~/.local/share/Steam/steam/games/

-rwxrwxr-x 1 vlastimil vlastimil 102K Dec  4 14:51 051f52fdea67d8f16a20daaccaf2fbfa1823d202.ico*
-rwxrwxr-x 1 vlastimil vlastimil 159K Nov 12 12:06 3f2b22c6d7bca4d39f06c203d16facb50014bbbb.ico*
-rw-rw-r-- 1 vlastimil vlastimil 178K Oct 17 10:00 61f9291306d3f002cc749d437ce84c42c9c9d52d.ico
-rw-rw-r-- 1 vlastimil vlastimil  11K Sep 26 15:13 75a21c39178811f5ec421d85a58fa2a07c2633b7.ico
-rwxrwxr-x 1 vlastimil vlastimil  60K Nov 27 03:42 7f263bfdc0c2df24b756d7e87472c6b447ee8538.ico*
-rwxrwxr-x 1 vlastimil vlastimil 362K Nov 19 13:09 866ec9836186e7127888bfd7a11231a3971f105d.ico*
-rwxrwxr-x 1 vlastimil vlastimil  602 Feb  4  2010 PlatformMenu.vdf*
-rwxrwxr-x 1 vlastimil vlastimil 9,9K May  4  2006 SteamMovie.ico*

Первая странная вещь, которую вы здесь заметите, это то, что некоторые файлы имеют флаг выполнения (, обозначенный также звездочкой после имени файла ).

Во-вторых, вы заметите, что некоторые файлы крошечные, а другие больше, чтобы быть значком сами по себе.

Таким образом, выполнение следующего покажет больше:

$ file ~/.local/share/Steam/steam/games/*

/home/vlastimil/.local/share/Steam/steam/games/051f52fdea67d8f16a20daaccaf2fbfa1823d202.ico: Zip archive data, at least v1.0 to extract
/home/vlastimil/.local/share/Steam/steam/games/3f2b22c6d7bca4d39f06c203d16facb50014bbbb.ico: Zip archive data, at least v2.0 to extract
/home/vlastimil/.local/share/Steam/steam/games/61f9291306d3f002cc749d437ce84c42c9c9d52d.ico: MS Windows icon resource - 5 icons, 16x16, 32 bits/pixel, 24x24, 32 bits/pixel
/home/vlastimil/.local/share/Steam/steam/games/75a21c39178811f5ec421d85a58fa2a07c2633b7.ico: Zip archive data, at least v2.0 to extract
/home/vlastimil/.local/share/Steam/steam/games/7f263bfdc0c2df24b756d7e87472c6b447ee8538.ico: Zip archive data, at least v2.0 to extract
/home/vlastimil/.local/share/Steam/steam/games/866ec9836186e7127888bfd7a11231a3971f105d.ico: MS Windows icon resource - 6 icons, 16x16, 32 bits/pixel, 32x32, 32 bits/pixel
/home/vlastimil/.local/share/Steam/steam/games/PlatformMenu.vdf:                             ASCII text, with CRLF line terminators
/home/vlastimil/.local/share/Steam/steam/games/SteamMovie.ico:                               MS Windows icon resource - 6 icons, 16x16, 4 bits/pixel, 16x16, 8 bits/pixel

Теперь, когда мы знаем, что некоторые файлы на самом деле являются архивами.zip, давайте рассмотрим их поближе, сначала скопируем в безопасное место.:

$ mkdir -p ~/steamIcons && cp ~/.local/share/Steam/steam/games/*.ico ~/steamIcons && cd ~/steamIcons && rm SteamMovie.ico

Теперь давайте удалим разрешение на выполнение, так как по моим стандартам его вообще не должно быть, и перечислим, что мы получили:

$ chmod -x * && ls -lh

-rw-r--r-- 1 vlastimil vlastimil 102K Dec  6 23:54 051f52fdea67d8f16a20daaccaf2fbfa1823d202.ico
-rw-r--r-- 1 vlastimil vlastimil 159K Dec  6 23:54 3f2b22c6d7bca4d39f06c203d16facb50014bbbb.ico
-rw-r--r-- 1 vlastimil vlastimil 178K Dec  6 23:54 61f9291306d3f002cc749d437ce84c42c9c9d52d.ico
-rw-r--r-- 1 vlastimil vlastimil  11K Dec  6 23:54 75a21c39178811f5ec421d85a58fa2a07c2633b7.ico
-rw-r--r-- 1 vlastimil vlastimil  60K Dec  6 23:54 7f263bfdc0c2df24b756d7e87472c6b447ee8538.ico
-rw-r--r-- 1 vlastimil vlastimil 362K Dec  6 23:54 866ec9836186e7127888bfd7a11231a3971f105d.ico

Наверное, стоит сейчас отделить эти значки от архивов:

$ mkdir -p ico zip
$ mv 61f9291306d3f002cc749d437ce84c42c9c9d52d.ico 866ec9836186e7127888bfd7a11231a3971f105d.ico ico/
$ mv *.ico zip/

И дайте этим zip-архивам правильное расширение:

$ for file in *; do mv "${file}" "${file}.zip"; done && ls -lh

Теперь я хотел бы создать каталог для каждого из zip-файлов и распаковать эти файлы в каталоги:

$ for filename in *; do dirname="${filename%.zip}"; dirname="${dirname%.ico}"; mkdir -p "${dirname}"; unzip "${filename}" -d "${dirname}";rm "${filename}"; done

Теперь мне нужно увидеть структуру каталогов. У вас, вероятно, не будет установлен tree, поэтому давайте установим его на моем Linux на базе Ubuntu:

$ sudo apt-get install tree

И посмотрим, что у нас есть:

$ tree

.
├── 051f52fdea67d8f16a20daaccaf2fbfa1823d202
│   └── icons
│       ├── icon_16.png
│       ├── icon_24.png
│       ├── icon_32.png
│       ├── icon_64.png
│       └── icon_96.png
├── 3f2b22c6d7bca4d39f06c203d16facb50014bbbb
│   ├── 128x128.png
│   ├── 16x16.png
│   ├── 24x24.png
│   ├── 256x256.png
│   ├── 32x32.png
│   ├── 64x64.png
│   └── 96x96.png
├── 75a21c39178811f5ec421d85a58fa2a07c2633b7
│   ├── Hexcells Icon 128.png
│   ├── Hexcells Icon 16.png
│   ├── Hexcells Icon 32.png
│   ├── Hexcells Icon 64.png
│   └── Hexcells Icon 96.png
└── 7f263bfdc0c2df24b756d7e87472c6b447ee8538
    ├── civ5.png
    └── __MACOSX

6 directories, 18 files

Насколько я вижу, здесь, к сожалению, есть несколько не -идентифицируемых игр, так что лучше смотреть в графическом интерфейсе:

icons_folder_screenshot

И, кажется, теперь я нашел причину!

Как вы сами видите, игры, которые работали, имеют значки png прямо внутри каталога,тогда как игра, которая не работала в моем тестовом примере (Project Hospital ), имеет подкаталог -с именем icons, который затем содержит эти значки.

Дело решено, @kisak -valve Пожалуйста, настройте клиент Steam для обработки этих случаев. Спасибо.

1
14.02.2020, 21:04
1 ответ

возможно,.ONESHELL сделает то, что задумано.

поскольку gnu make запускает новый процесс для каждой строки рецепта по умолчанию, настройки переменных не распространяются на рецепт ниже..ONESHELL пытается запустить все рецепты этой цели за один вызов оболочки

.

https://www.gnu.org/software/make/manual/make.html#One-Shell.ONESHELL:

0
22.05.2021, 13:06

Теги

Похожие вопросы