วิธีดำเนินการ gsettings ภายในการ จำกัด แพ็คเกจ snap


0

ฉันกำลังสร้างแพคเกจสแน็ปสำหรับแอปพลิเคชันของฉันซึ่งใช้จาวาและดาวน์โหลดภาพพื้นหลังจากอินเทอร์เน็ต จนถึงตอนนี้ดีมาก แต่ตอนนี้ฉันกำลังเพิ่มคุณสมบัติใหม่เพื่อตั้งค่าภาพพื้นหลังที่เลือกและมันไม่ทำงาน คุณลักษณะนี้มีการใช้งานสำหรับเดสก์ท็อป Unity และ Gnome 3 ซึ่งเป็นวิธีที่ง่ายในการตั้งค่ารูปพื้นหลังของเดสก์ท็อปผ่านเครื่องมือบรรทัดคำสั่ง gsettings

ด้วยวิธีนี้การเรียกใช้gsettings ตั้งไฟล์ org.gnome.desktop.background picture-uri: //blablabla.jpgคุณสามารถเปลี่ยนภาพพื้นหลังเดสก์ทอปโดยตรงและแอปพลิเคชันที่ใช้ java ของฉันใช้เครื่องมือนี้และคำสั่งนี้เพื่อให้บรรลุเป้าหมายนี้

ครั้งแรกเมื่อฉันทดสอบ wallpaperdownloader ภายในแพ็คเกจ snap มันบ่นเพราะมันไม่พบ gsettings ไบนารีภายใน snap ตอนนี้มันได้รับการแก้ไขแล้วเพราะฉันได้รวมlibglib2.0-binเป็นแพ็คเกจแพ็คเกจ อย่างไรก็ตามมันไม่ทำงาน ฉันเดาว่าการตั้งค่า gsettings ภายในแพ็คเกจ snap ไม่สามารถจัดการไฟล์นอก snap ได้และฉันต้องแก้ไขไฟล์เหล่านั้นโดยตรงภายในโฮมไดเร็กตอรี่ของผู้ใช้ ฉันสามารถทำสิ่งนี้ได้หรือถูก จำกัด ?

นี่คือไฟล์ 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

ในที่สุดฉันก็แก้ปัญหานี้ เคล็ดลับคือการใช้ส่วนต่อประสาน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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.