Преглед на файлове

Add support for Thunar Qubes VM tools

Frédéric Pierret преди 6 години
родител
ревизия
0fd109b8f1
променени са 4 файла, в които са добавени 164 реда и са изтрити 0 реда
  1. 2 0
      Makefile
  2. 72 0
      misc/uca_qubes.xml
  3. 51 0
      qubes-rpc/qvm-actions.sh
  4. 39 0
      rpm_spec/core-agent.spec

+ 2 - 0
Makefile

@@ -247,6 +247,8 @@ endif
 	install qubes-rpc/qvm-copy-to-vm.gnome $(DESTDIR)$(LIBDIR)/qubes
 	install qubes-rpc/qvm-move-to-vm.kde $(DESTDIR)$(LIBDIR)/qubes
 	install qubes-rpc/qvm-move-to-vm.gnome $(DESTDIR)$(LIBDIR)/qubes
+	install qubes-rpc/qvm-actions.sh $(DESTDIR)$(LIBDIR)/qubes
+	install -m 0644 misc/uca_qubes.xml $(DESTDIR)$(LIBDIR)/qubes
 	install qubes-rpc/xdg-icon $(DESTDIR)$(LIBDIR)/qubes
 	install qubes-rpc/{vm-file-editor,qfile-agent,qopen-in-vm} $(DESTDIR)$(LIBDIR)/qubes
 	install qubes-rpc/qubes-open $(DESTDIR)$(BINDIR)

+ 72 - 0
misc/uca_qubes.xml

@@ -0,0 +1,72 @@
+<action>
+	<icon>folder-copy</icon>
+	<name>Copy to VM</name>
+	<unique-id>1507455450991127-4</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh copy %F</command>
+	<description></description>
+	<patterns>*</patterns>
+	<directories/>
+	<audio-files/>
+	<image-files/>
+	<other-files/>
+	<text-files/>
+	<video-files/>
+</action>
+<action>
+	<icon>folder-move</icon>
+	<name>Move to VM</name>
+	<unique-id>1507455437157027-3</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh move %F</command>
+	<description></description>
+	<patterns>*</patterns>
+	<directories/>
+	<audio-files/>
+	<image-files/>
+	<other-files/>
+	<text-files/>
+	<video-files/>
+</action>
+<action>
+	<icon>document-open</icon>
+	<name>Open in VM</name>
+	<unique-id>1507455471075266-5</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh openvm %F</command>
+	<description></description>
+	<patterns>*</patterns>
+	<audio-files/>
+	<image-files/>
+	<other-files/>
+	<text-files/>
+	<video-files/>
+</action>
+<action>
+	<icon>gtk-convert</icon>
+	<name>Convert in DisposableVM</name>
+	<unique-id>1507455488971315-6</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh p %F</command>
+	<description></description>
+	<patterns>*.pdf</patterns>
+	<other-files/>
+</action>
+<action>
+	<icon>gtk-convert</icon>
+	<name>Convert in DisposableVM</name>
+	<unique-id>1507455503129941-7</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh img %F</command>
+	<description></description>
+	<patterns>*</patterns>
+	<image-files/>
+</action>
+<action>
+	<icon>document-open</icon>
+	<name>Open in DisposableVM</name>
+	<unique-id>1507455559234996-8</unique-id>
+	<command>/usr/lib/qubes/qvm-actions.sh opendvm %F</command>
+	<description></description>
+	<patterns>*</patterns>
+	<audio-files/>
+	<image-files/>
+	<other-files/>
+	<text-files/>
+	<video-files/>
+</action>

+ 51 - 0
qubes-rpc/qvm-actions.sh

@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# Allow us to handle filenames with spaces using newline separator from Thunar
+IFS='
+'
+
+# Check if at least two arguments are provided: actions + file(s)
+if [ "$#" -le 1 ]; then
+    echo "Not enough arguments provided. Aborting..."
+fi
+
+# File(s)
+files=${*:2}
+
+# copy and move handle a list of files where other actions don't
+case $1 in
+    copy)
+        qvm-copy-to-vm '$default' $files | zenity --notification --text="Copying files..." --timeout 3
+        ;;
+    move)
+        qvm-move-to-vm '$default' $files | zenity --notification --text="Moving files..." --timeout 3
+        ;;
+    img)
+        for file in $files
+        do
+            /usr/lib/qubes/qvm-convert-img.gnome $file
+        done
+        ;;
+    pdf)
+        for file in $files
+        do
+            /usr/lib/qubes/qvm-convert-pdf.gnome $file
+        done
+        ;;
+    openvm)
+        for file in $files
+        do
+            qvm-open-in-vm '$default' $file | zenity --notification --text "Opening $file in VM..." --timeout 3 &
+        done
+        ;;
+    opendvm)
+        for file in $files
+        do
+            qvm-open-in-dvm $files | zenity --notification --text "Opening $file in DisposableVM..." --timeout 3 &
+        done
+        ;;
+    *)
+        echo "Unknown action. Aborting..."
+        exit 1
+      ;;
+esac

+ 39 - 0
rpm_spec/core-agent.spec

@@ -268,6 +268,13 @@ switching from user to root. Since all the user data in a VM is accessible
 already from normal user account, there is not much more to guard there. Qubes
 VM is a single user system.
 
+%package thunar
+Summary: Thunar support for Qubes VM tools
+Requires: Thunar
+
+%description thunar
+Thunar support for Qubes VM tools
+
 %define _builddir %(pwd)
 
 %define kde_service_dir /usr/share/kde4/services
@@ -463,6 +470,22 @@ sed 's/^net.ipv4.ip_forward.*/#\0/'  -i /etc/sysctl.conf
 %post qrexec
 %systemd_post qubes-qrexec-agent.service
 
+%post thunar 
+# There is no system-wide Thunar custom actions. There is only a default
+# file and a user file created from the default one. Qubes actions need
+# to be placed after all already defined actions and before </actions>
+# the end of file.
+if [ "$1" = 1 ]; then
+  if [ -f /etc/xdg/Thunar/uca.xml ] ; then
+    cp -p /etc/xdg/Thunar/uca.xml{,.bak}
+    sed -i '$e cat /usr/lib/qubes/uca_qubes.xml' /etc/xdg/Thunar/uca.xml
+  fi
+  if [ -f /home/user/.config/Thunar/uca.xml ] ; then
+    cp -p /home/user/.config/Thunar/uca.xml{,.bak}
+    sed -i '$e cat /usr/lib/qubes/uca_qubes.xml' /home/user/.config/Thunar/uca.xml
+  fi
+fi
+
 %preun
 if [ "$1" = 0 ] ; then
     # no more packages left
@@ -484,6 +507,18 @@ fi
 %preun qrexec
 %systemd_preun qubes-qrexec-agent.service
 
+%postun thunar 
+if [ "$1" = 0 ]; then
+  if [ -f /etc/xdg/Thunar/uca.xml ] ; then
+    mv /etc/xdg/Thunar/uca.xml{,.uninstall}
+    mv /etc/xdg/Thunar/uca.xml{.bak,}
+  fi
+  if [ -f /home/user/.config/Thunar/uca.xml ] ; then
+    mv /home/user/.config/Thunar/uca.xml{,.uninstall}
+    mv /home/user/.config/Thunar/uca.xml{.bak,}
+  fi
+fi
+
 %postun
 if [ $1 -eq 0 ] ; then
     /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
@@ -674,6 +709,10 @@ rm -f %{name}-%{version}
 /usr/share/nautilus-python/extensions/qvm_move_nautilus.py*
 /usr/share/nautilus-python/extensions/qvm_dvm_nautilus.py*
 
+%files thunar
+/usr/lib/qubes/qvm-actions.sh
+/usr/lib/qubes/uca_qubes.xml
+
 %files dom0-updates
 %dir %attr(0775,user,user) /var/lib/qubes/dom0-updates
 /usr/lib/qubes/qubes-download-dom0-updates.sh