Как выполнить gsettings в поспешном заключении пакета

Я создаю поспешный пакет для своего приложения, которое основано на Java и загружает обои с Интернета. Пока неплохо, но теперь я добавляю новую опцию для установки выбранных обоев, и они не работают. Эта опция реализована для Единицы и Gnome 3 рабочих стола, которые обеспечивают простой способ установить обои для рабочего стола через инструмент командной строки gsettings.

Таким образом, выполняя gsettings установил org.gnome.desktop.background uri изображения file://blablabla.jpg, можно изменить обои для рабочего стола непосредственно, и мое java-приложение использует этот инструмент и эту команду для достижения этой цели.

Во-первых, когда я протестировал wallpaperdownloader в поспешном пакете, он жаловался, потому что он не нашел двоичный файл gsettings в рамках снимка. Теперь это фиксируется, потому что я включал libglib2.0-мусорное-ведро как пакет этапа. Тем не менее, это не работает. Я предполагаю, что gsettings в поспешном пакете не могут управлять файлами вне снимка, и я должен непосредственно изменить те файлы в рамках корневого каталога пользователя. Могу я achive это, или он ограничивается?

Это файлы snapcraft.yaml и сценарий, выполняемый, когда wallpaperdownloaded запускается

snapcraft.yml

name: wallpaperdownloader
version: "2.2"
summary: Download and manage your favorite wallpapers from the Internet
description: WallpaperDownloader is a simple GUI Java based application for downloading and managing wallpapers from the Internet
confinement: strict

apps:
  wallpaperdownloader:
    command: wallpaperdownloader.sh
    plugs: [x11, network-bind, home]

parts:
  # Pulls the code from the original source (master branch)
  wallpaperdownloader:
    plugin: maven
    source: .
    stage-packages:
      - libglib2.0-bin

  # It will copy wallpaperdownloader script into /bin/
  # This script contains all the commands needed (sets env variables, launches the jar file...) to
  # execute the application
  exec:
    plugin: copy
    files:
      wallpaperdownloader.sh: bin/wallpaperdownloader.sh

wallpaperdownloader.sh

#!/bin/sh
# Only for packaging!
# Script for snap packaging wallpaperdownloader application. It is not related to the code itself
# Not good, needed for fontconfig
export XDG_DATA_HOME=$SNAP/usr/share
# Font Config
export FONTCONFIG_PATH=$SNAP/etc/fonts/config.d
export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
export HOME=$SNAP_USER_DATA
java -jar -Duser.home=$SNAP_USER_DATA $SNAP/jar/wallpaperdownloader.jar

P.S.: я попробовал gsettings и unity7 плагины, но они не работали, хотя я только включал их в snapcraft.yaml файл, и я не применял тонкой настройки/конфигурации.

Большое спасибо,

Элой

0
задан 30 August 2016 в 17:47

1 ответ

Наконец, я решил эту проблему. Прием должен использовать интерфейс gsettings, и snapcraft-desktop-helpers часть выходят на Wiki (desktop/gtk3). Это основные файлы. Я опубликовал их на всякий случай, они полезны, чтобы другие решили подобную проблему.

snapcraft.yaml

name: wallpaperdownloader
version: "2.2"
summary: Download and manage your favorite wallpapers from the Internet
description: WallpaperDownloader is a simple GUI Java based application for downloading and managing wallpapers from the Internet
grade: stable
confinement: strict

apps:
  wallpaperdownloader:
    command: wallpaperdownloader.sh
    plugs: [x11, network-bind, home, gsettings]

parts:
  # Pulls the code from the original source (master branch)
  # desktop/gtk3 is a snapcraft part (snapcraft-desktop-helpers) from the Wiki: https://wiki.ubuntu.com/snapcraft/parts
  # It enables desktop integration and gsettings manipulation from the confined application
  # It is necessary to use gsettings interface (see above) in order to have a fully functional
  # desktop/gtk3 part
  # Github repository for snapcraft-desktop-helpers: https://github.com/ubuntu/snapcraft-desktop-helpers
  wallpaperdownloader:
    plugin: maven
    source: ..
    after: [desktop/gtk3]

  # It will copy wallpaperdownloader script into /bin/
  # This script contains all the commands needed (sets env variables, launches the jar file...) to
  # execute the application
  exec:
    plugin: dump
    source: scripts

wallpaperdownloader.sh

#!/bin/sh
# Only for packaging!
# Script for snap packaging wallpaperdownloader application. It is not related to the code itself
# Not good, needed for fontconfig
export XDG_DATA_HOME=$SNAP/usr/share
# Font Config
export FONTCONFIG_PATH=$SNAP/etc/fonts/config.d
export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
export HOME=$SNAP_USER_DATA
desktop-launch java -jar -Duser.home=$SNAP_USER_DATA $SNAP/jar/wallpaperdownloader.jar
1
ответ дан 28 September 2019 в 15:32

Другие вопросы по тегам:

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