gnu: Add udiskie.
* gnu/packages/freedesktop.scm (udiskie): New variable. * gnu/packages/patches/udiskie-no-appindicator.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
This commit is contained in:
parent
93953ec714
commit
d29d04c9e6
|
@ -1386,6 +1386,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
||||||
%D%/packages/patches/txr-shell.patch \
|
%D%/packages/patches/txr-shell.patch \
|
||||||
%D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \
|
%D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \
|
||||||
|
%D%/packages/patches/udiskie-no-appindicator.patch \
|
||||||
%D%/packages/patches/unzip-CVE-2014-8139.patch \
|
%D%/packages/patches/unzip-CVE-2014-8139.patch \
|
||||||
%D%/packages/patches/unzip-CVE-2014-8140.patch \
|
%D%/packages/patches/unzip-CVE-2014-8140.patch \
|
||||||
%D%/packages/patches/unzip-CVE-2014-8141.patch \
|
%D%/packages/patches/unzip-CVE-2014-8141.patch \
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||||
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
|
;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
|
||||||
;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
|
;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
|
||||||
|
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -74,6 +75,7 @@
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages polkit)
|
#:use-module (gnu packages polkit)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
#:use-module (gnu packages python-crypto)
|
||||||
#:use-module (gnu packages python-xyz)
|
#:use-module (gnu packages python-xyz)
|
||||||
#:use-module (gnu packages sqlite)
|
#:use-module (gnu packages sqlite)
|
||||||
#:use-module (gnu packages valgrind)
|
#:use-module (gnu packages valgrind)
|
||||||
|
@ -1439,3 +1441,64 @@ encoding names are iconv-compatible.")
|
||||||
;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
|
;; This combines code under MPL 1.1, LGPL 2.1+, and GPL 2.0+, so the
|
||||||
;; combination is GPL 2.0+.
|
;; combination is GPL 2.0+.
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
(define-public udiskie
|
||||||
|
(package
|
||||||
|
(name "udiskie")
|
||||||
|
(version "1.7.7")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (pypi-uri "udiskie" version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"121g9dkr7drv9igpdbcbkj59x15mm72rzp3198bp50zj0lr4wbvi"))
|
||||||
|
;; Remove support for the libappindicator library of the
|
||||||
|
;; Unity desktop environment which is not in Guix.
|
||||||
|
(patches (search-patches "udiskie-no-appindicator.patch"))))
|
||||||
|
(build-system python-build-system)
|
||||||
|
(native-inputs
|
||||||
|
`(("asciidoc" ,asciidoc)
|
||||||
|
("gettext" ,gettext-minimal)
|
||||||
|
("gobject-introspection" ,gobject-introspection)))
|
||||||
|
(inputs
|
||||||
|
`(("gobject-introspection" ,gobject-introspection)
|
||||||
|
("gtk+" ,gtk+)
|
||||||
|
("libnotify" ,libnotify)
|
||||||
|
("udisks" ,udisks)))
|
||||||
|
(propagated-inputs
|
||||||
|
`(("python-docopt" ,python-docopt)
|
||||||
|
("python-pygobject" ,python-pygobject)
|
||||||
|
("python-keyutils" ,python-keyutils)
|
||||||
|
("python-pyxdg" ,python-pyxdg)
|
||||||
|
("python-pyyaml" ,python-pyyaml)))
|
||||||
|
(arguments
|
||||||
|
`(#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'install 'wrap-gi-typelib
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let ((out (assoc-ref outputs "out"))
|
||||||
|
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
|
||||||
|
(wrap-program (string-append out "/bin/udiskie")
|
||||||
|
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
|
||||||
|
#t)))))
|
||||||
|
(home-page "https://github.com/coldfix/udiskie")
|
||||||
|
(synopsis "Automounter for removable media")
|
||||||
|
(description
|
||||||
|
"The @command{udiskie} program is a udisks2 front-end that allows to
|
||||||
|
manage removable media such as CDs or flash drives from userspace.
|
||||||
|
|
||||||
|
Its features include:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item automount removable media,
|
||||||
|
@item notifications,
|
||||||
|
@item tray icon,
|
||||||
|
@item command line tools for manual (un)mounting,
|
||||||
|
@item LUKS encrypted devices,
|
||||||
|
@item unlocking with keyfiles,
|
||||||
|
@item loop devices (mounting ISO archives),
|
||||||
|
@item password caching.
|
||||||
|
@end itemize
|
||||||
|
")
|
||||||
|
(license license:expat)))
|
||||||
|
|
|
@ -0,0 +1,155 @@
|
||||||
|
Remove the support for Unity's appindicator.
|
||||||
|
|
||||||
|
diff -Naur udiskie-1.7.7/completions/_udiskie udiskie-1.7.7a/completions/_udiskie
|
||||||
|
--- udiskie-1.7.7/completions/_udiskie 2019-02-17 18:28:58.000000000 +0100
|
||||||
|
+++ udiskie-1.7.7a/completions/_udiskie 2019-10-29 14:21:04.556193639 +0100
|
||||||
|
@@ -21,8 +21,6 @@
|
||||||
|
'(-a)'{-A,--no-automount}"[disable automounting]"
|
||||||
|
'(-N)'{-n,--notify}"[show popup notifications]"
|
||||||
|
'(-n)'{-N,--no-notify}"[disable notifications]"
|
||||||
|
- '(--no-appindicator)'--appindicator"[use appindicator for status icon]"
|
||||||
|
- '(--appindicator)'--no-appindicator"[don't use appindicator]"
|
||||||
|
'(-T -s)'{-t,--tray}"[show tray icon]"
|
||||||
|
'(-T -t)'{-s,--smart-tray}"[auto hide tray icon]"
|
||||||
|
'(-t -s)'{-T,--no-tray}"[disable tray icon]"
|
||||||
|
diff -Naur udiskie-1.7.7/doc/udiskie.8.txt udiskie-1.7.7a/doc/udiskie.8.txt
|
||||||
|
--- udiskie-1.7.7/doc/udiskie.8.txt 2019-02-17 18:28:58.000000000 +0100
|
||||||
|
+++ udiskie-1.7.7a/doc/udiskie.8.txt 2019-10-29 14:21:52.304570344 +0100
|
||||||
|
@@ -95,12 +95,6 @@
|
||||||
|
*-F, \--no-file-manager*::
|
||||||
|
Disable browsing.
|
||||||
|
|
||||||
|
-*-appindicator*::
|
||||||
|
- Use AppIndicator3 for the status icon. Use this on Ubuntu/Unity if no icon is shown.
|
||||||
|
-
|
||||||
|
-*--no-appindicator*::
|
||||||
|
- Use Gtk.StatusIcon for the status icon (default).
|
||||||
|
-
|
||||||
|
*--password-cache MINUTES*::
|
||||||
|
Cache passwords for LUKS partitions and set the timeout.
|
||||||
|
|
||||||
|
diff -Naur udiskie-1.7.7/udiskie/appindicator.py udiskie-1.7.7a/udiskie/appindicator.py
|
||||||
|
--- udiskie-1.7.7/udiskie/appindicator.py 2019-02-17 18:28:58.000000000 +0100
|
||||||
|
+++ udiskie-1.7.7a/udiskie/appindicator.py 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
@@ -1,61 +0,0 @@
|
||||||
|
-"""
|
||||||
|
-Status icon using AppIndicator3.
|
||||||
|
-"""
|
||||||
|
-
|
||||||
|
-from gi.repository import Gtk
|
||||||
|
-from gi.repository import AppIndicator3
|
||||||
|
-
|
||||||
|
-from udiskie.async_ import Async
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-class AppIndicatorIcon(object):
|
||||||
|
-
|
||||||
|
- """
|
||||||
|
- Show status icon using AppIndicator as backend. Replaces
|
||||||
|
- `udiskie.tray.StatusIcon` on ubuntu/unity.
|
||||||
|
- """
|
||||||
|
-
|
||||||
|
- def __init__(self, menumaker, _icons):
|
||||||
|
- self._maker = menumaker
|
||||||
|
- self._menu = Gtk.Menu()
|
||||||
|
- self._indicator = AppIndicator3.Indicator.new(
|
||||||
|
- 'udiskie',
|
||||||
|
- _icons.get_icon_name('media'),
|
||||||
|
- AppIndicator3.IndicatorCategory.HARDWARE)
|
||||||
|
- self._indicator.set_status(AppIndicator3.IndicatorStatus.PASSIVE)
|
||||||
|
- self._indicator.set_menu(self._menu)
|
||||||
|
- # Get notified before menu is shown, see:
|
||||||
|
- # https://bugs.launchpad.net/screenlets/+bug/522152/comments/15
|
||||||
|
- dbusmenuserver = self._indicator.get_property('dbus-menu-server')
|
||||||
|
- self._dbusmenuitem = dbusmenuserver.get_property('root-node')
|
||||||
|
- self._conn = self._dbusmenuitem.connect('about-to-show', self._on_show)
|
||||||
|
- self.task = Async()
|
||||||
|
- menumaker._quit_action = self.destroy
|
||||||
|
- # Populate menu initially, so libdbusmenu does not ignore the
|
||||||
|
- # 'about-to-show':
|
||||||
|
- self._maker(self._menu)
|
||||||
|
-
|
||||||
|
- def destroy(self):
|
||||||
|
- self.show(False)
|
||||||
|
- self._dbusmenuitem.disconnect(self._conn)
|
||||||
|
- self.task.callback()
|
||||||
|
-
|
||||||
|
- @property
|
||||||
|
- def visible(self):
|
||||||
|
- status = self._indicator.get_status()
|
||||||
|
- return status == AppIndicator3.IndicatorStatus.ACTIVE
|
||||||
|
-
|
||||||
|
- def show(self, show=True):
|
||||||
|
- if show == self.visible:
|
||||||
|
- return
|
||||||
|
- status = (AppIndicator3.IndicatorStatus.ACTIVE if show else
|
||||||
|
- AppIndicator3.IndicatorStatus.PASSIVE)
|
||||||
|
- self._indicator.set_status(status)
|
||||||
|
-
|
||||||
|
- def _on_show(self, menu):
|
||||||
|
- # clear menu:
|
||||||
|
- for item in self._menu.get_children():
|
||||||
|
- self._menu.remove(item)
|
||||||
|
- # repopulate:
|
||||||
|
- self._maker(self._menu)
|
||||||
|
- self._menu.show_all()
|
||||||
|
diff -Naur udiskie-1.7.7/udiskie/cli.py udiskie-1.7.7a/udiskie/cli.py
|
||||||
|
--- udiskie-1.7.7/udiskie/cli.py 2019-02-17 18:28:58.000000000 +0100
|
||||||
|
+++ udiskie-1.7.7a/udiskie/cli.py 2019-10-29 14:18:22.678919186 +0100
|
||||||
|
@@ -376,9 +376,6 @@
|
||||||
|
-T, --no-tray Disable tray icon
|
||||||
|
-m MENU, --menu MENU Tray menu [flat/nested]
|
||||||
|
|
||||||
|
- --appindicator Use appindicator for status icon
|
||||||
|
- --no-appindicator Don't use appindicator
|
||||||
|
-
|
||||||
|
--password-cache MINUTES Set password cache timeout
|
||||||
|
--no-password-cache Disable password cache
|
||||||
|
|
||||||
|
@@ -400,7 +397,6 @@
|
||||||
|
'notify': True,
|
||||||
|
'tray': False,
|
||||||
|
'menu': 'flat',
|
||||||
|
- 'appindicator': False,
|
||||||
|
'file_manager': 'xdg-open',
|
||||||
|
'password_prompt': 'builtin:gui',
|
||||||
|
'password_cache': False,
|
||||||
|
@@ -415,7 +411,6 @@
|
||||||
|
'--no-tray': False,
|
||||||
|
'--smart-tray': 'auto'}),
|
||||||
|
'menu': Value('--menu'),
|
||||||
|
- 'appindicator': Switch('appindicator'),
|
||||||
|
'file_manager': OptionalValue('--file-manager'),
|
||||||
|
'password_prompt': OptionalValue('--password-prompt'),
|
||||||
|
'password_cache': OptionalValue('--password-cache'),
|
||||||
|
@@ -541,11 +536,7 @@
|
||||||
|
raise ValueError("Invalid menu: %s" % (options['menu'],))
|
||||||
|
|
||||||
|
menu_maker = udiskie.tray.UdiskieMenu(self, icons, actions, flat)
|
||||||
|
- if options['appindicator']:
|
||||||
|
- import udiskie.appindicator
|
||||||
|
- TrayIcon = udiskie.appindicator.AppIndicatorIcon
|
||||||
|
- else:
|
||||||
|
- TrayIcon = udiskie.tray.TrayIcon
|
||||||
|
+ TrayIcon = udiskie.tray.TrayIcon
|
||||||
|
trayicon = TrayIcon(menu_maker, icons)
|
||||||
|
return udiskie.tray.UdiskieStatusIcon(trayicon, menu_maker, smart)
|
||||||
|
|
||||||
|
diff -Naur udiskie-1.7.7/udiskie.egg-info/SOURCES.txt udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt
|
||||||
|
--- udiskie-1.7.7/udiskie.egg-info/SOURCES.txt 2019-02-17 19:42:25.000000000 +0100
|
||||||
|
+++ udiskie-1.7.7a/udiskie.egg-info/SOURCES.txt 2019-10-29 14:40:09.333315287 +0100
|
||||||
|
@@ -24,7 +24,6 @@
|
||||||
|
test/test_cache.py
|
||||||
|
test/test_match.py
|
||||||
|
udiskie/__init__.py
|
||||||
|
-udiskie/appindicator.py
|
||||||
|
udiskie/async_.py
|
||||||
|
udiskie/automount.py
|
||||||
|
udiskie/cache.py
|
||||||
|
@@ -46,4 +45,4 @@
|
||||||
|
udiskie.egg-info/dependency_links.txt
|
||||||
|
udiskie.egg-info/entry_points.txt
|
||||||
|
udiskie.egg-info/requires.txt
|
||||||
|
-udiskie.egg-info/top_level.txt
|
||||||
|
\ Pas de fin de ligne à la fin du fichier
|
||||||
|
+udiskie.egg-info/top_level.txt
|
Loading…
Reference in New Issue