
나는 Java 기반이고 인터넷에서 배경 화면을 다운로드하는 내 응용 프로그램용 스냅 패키지를 만들고 있습니다. 지금까지는 괜찮았지만 이제 선택한 배경화면을 설정하는 새로운 기능을 추가하고 있는데 작동하지 않습니다. 이 기능은 gsettings 명령줄 도구를 통해 바탕화면 배경화면을 쉽게 설정할 수 있는 Unity 및 Gnome 3 데스크톱용으로 구현되었습니다.
이런 식으로 실행gsettings는 org.gnome.desktop.Background 그림-uri 파일을 설정합니다://blablabla.jpg바탕 화면 배경 무늬를 직접 변경할 수 있으며 내 Java 기반 응용 프로그램은 이 도구와 명령을 사용하여 이 목표를 달성합니다.
첫째, 스냅 패키지 내에서 wallpaperdownloader를 테스트했을 때 스냅 내에서 gsettings 바이너리를 찾지 못해서 불평했습니다. 이제 내가 포함했기 때문에 수정되었습니다.libglib2.0-bin무대 패키지로 그럼에도 불구하고 작동하지 않습니다. 스냅 패키지 내부의 gsettings는 스냅 외부의 파일을 조작할 수 없으며 사용자의 홈 디렉터리에 있는 해당 파일을 직접 수정해야 하는 것 같습니다. 이것을 달성할 수 있습니까? 아니면 제한되어 있습니까?
이는 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
PS: gsettings 및 unity7 플러그인을 사용해 보았지만 snapcraft.yaml 파일에만 포함하고 조정/구성을 적용하지 않았음에도 불구하고 작동하지 않았습니다.
매우 감사합니다,
엘로이
답변1
마침내 나는 이 문제를 해결했다. 비결은 다음과 같습니다.g설정인터페이스와 snapcraft-desktop-helpers 부분은 Wiki(데스크탑/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