diff --git a/Makefile b/Makefile index bf1a824..43c6bc3 100644 --- a/Makefile +++ b/Makefile @@ -140,6 +140,7 @@ install-vm: install -m 0644 qubes-rpc/qubes.DetachPciDevice $(DESTDIR)/etc/qubes-rpc install -m 0644 qubes-rpc/qubes.{Backup,Restore} $(DESTDIR)/etc/qubes-rpc install -m 0644 qubes-rpc/qubes.Select{File,Directory} $(DESTDIR)/etc/qubes-rpc + install -m 0644 qubes-rpc/qubes.GetImageRGBA $(DESTDIR)/etc/qubes-rpc install -d $(DESTDIR)/usr/share/file-manager/actions install -m 0644 qubes-rpc/*-gnome.desktop $(DESTDIR)/usr/share/file-manager/actions diff --git a/qubes-rpc/qubes.GetImageRGBA b/qubes-rpc/qubes.GetImageRGBA new file mode 100644 index 0000000..5b3d809 --- /dev/null +++ b/qubes-rpc/qubes.GetImageRGBA @@ -0,0 +1,31 @@ +set -e +read filename + +if [[ "${filename}" = xdgicon:* ]]; then + # get biggest icon from hicolor theme + candidate=$(find /usr/share/icons/hicolor -type f -name "${filename#*:}.png" | xargs ls --sort=size | head -1) + + if [[ ! "$(basename "${candidate}")" = "${filename#*:}.png" ]]; then + # file not found, ls returned garbage + exit 1 + fi + filename="${candidate}" + +elif [[ "${filename}" = "-" ]] || [[ "${filename}" = *":-" ]]; then + tmpfile="$(mktemp /tmp/qimg-XXXXXXXX)" + cat > "${tmpfile}" + if [[ "$filename" = *":-" ]]; then + tmpfile="${filename%:*}:${tmpfile}" + fi + filename="${tmpfile}" + +elif ! [[ -r "${filename}" ]]; then + exit 1 +fi + +identify -format '%w %h' "$filename" +convert -depth 8 "$filename" rgba:- + +[[ -n "${tmpfile}" ]] && rm -f ${tmpfile} || true + +# vim: ft=sh ts=4 sw=4 et diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 4442af9..7edb73b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -48,6 +48,7 @@ Requires: net-tools Requires: nautilus-actions Requires: qubes-core-vm-kernel-placeholder Requires: qubes-utils +Requires: ImageMagick Provides: qubes-core-vm Obsoletes: qubes-core-commonvm Obsoletes: qubes-core-appvm @@ -281,6 +282,7 @@ rm -f %{name}-%{version} /etc/qubes-rpc/qubes.Restore /etc/qubes-rpc/qubes.SelectFile /etc/qubes-rpc/qubes.SelectDirectory +/etc/qubes-rpc/qubes.GetImageRGBA /etc/sudoers.d/qubes %config(noreplace) /etc/sysconfig/iptables %config(noreplace) /etc/sysconfig/ip6tables