Skip to content

Commit

Permalink
Add support for Thunar Qubes VM tools
Browse files Browse the repository at this point in the history
  • Loading branch information
fepitre committed Nov 18, 2017
1 parent 589c32b commit 0fd109b
Show file tree
Hide file tree
Showing 4 changed files with 164 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
72 changes: 72 additions & 0 deletions misc/uca_qubes.xml
Original file line number Diff line number Diff line change
@@ -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 changes: 51 additions & 0 deletions qubes-rpc/qvm-actions.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 39 additions & 0 deletions rpm_spec/core-agent.spec
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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 || :
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 0fd109b

Please sign in to comment.