webapp: Automatically install Nautilus integration scripts to get and drop files.

This commit was sponsored by Gian-Maria Daffre.
This commit is contained in:
Joey Hess 2014-03-22 15:51:30 -04:00
parent fb8a32cc7f
commit f6eb967f1e
6 changed files with 63 additions and 2 deletions

View file

@ -35,11 +35,14 @@ standaloneAppBase = getEnv "GIT_ANNEX_APP_BASE"
-
- Note that this is done every time it's started, so if the user moves
- it around, the paths this sets up won't break.
-
- Nautilus hook script installation is done even for packaged apps,
- since it has to go into the user's home directory.
-}
ensureInstalled :: IO ()
ensureInstalled = go =<< standaloneAppBase
where
go Nothing = noop
go Nothing = installNautilus "git-annex"
go (Just base) = do
let program = base </> "git-annex"
programfile <- programFile
@ -78,6 +81,32 @@ ensureInstalled = go =<< standaloneAppBase
viaTmp writeFile shim content
modifyFileMode shim $ addModes [ownerExecuteMode]
installNautilus program
installNautilus :: FilePath -> IO ()
#ifdef linux_HOST_OS
installNautilus program = do
scriptdir <- (\d -> d </> "nautilus" </> "scripts") <$> userDataDir
genscript scriptdir "get"
genscript scriptdir "drop"
where
genscript scriptdir action =
installscript (scriptdir </> scriptname action) $ unlines
[ "#!/bin/sh"
, autoaddedcomment
, program ++ " " ++ action ++ " --notify-start --notify-finish \"$@\""
]
scriptname action = "git-annex " ++ action
installscript f c = whenM (safetoinstallscript f) $ do
writeFile f c
modifyFileMode f $ addModes [ownerExecuteMode]
safetoinstallscript f = catchDefaultIO True $
elem autoaddedcomment . lines <$> readFileStrict f
autoaddedcomment = "# Automatically added by git-annex, do not edit. (To disable, chmod 600 this file.)"
#else
installNautilus _ = noop
#endif
{- Returns a cleaned up environment that lacks settings used to make the
- standalone builds use their bundled libraries and programs.
- Useful when calling programs not included in the standalone builds.

2
debian/changelog vendored
View file

@ -7,6 +7,8 @@ git-annex (5.20140321) UNRELEASED; urgency=medium
(using the dbus Desktop Notifications Specification)
* --notify-start switch will show desktop notifications when each
file upload/download starts.
* webapp: Automatically install Nautilus integration scripts
to get and drop files.
-- Joey Hess <joeyh@debian.org> Fri, 21 Mar 2014 14:08:41 -0400

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -11,4 +11,3 @@ designed to interoperate with it.
utility, with a `-A` switch that enables git-annex support.
* Emacs Org mode can auto-commit attached files to git-annex.
* [git annex darktable integration](https://github.com/xxv/darktable-git-annex)
* [Nautilus file manager ingegration](https://gist.github.com/ion1/9660286)

View file

@ -0,0 +1,31 @@
Integrating git-annex and your file manager provides an easy way to select
annexed files to get or drop.
## nautilus
Recent git-annex comes with built-in nautilus integration. Just pick the
action from the menu.
[[!img assistant/nautilusmenu.png]]
[[!img assistant/downloadnotification.png]]
This is set up by making simple scripts in
`~/.local/share/nautilus/scripts`, with names like "git-annex get"
## your file manager here
Edit this page and add instructions!
## general
If your file manager can run a command on a file, it should be easy to
integrate git-annex with it. A simple script will suffice:
#!/bun/sh
git-annex get --notify-start --notify-finish "$@"
The --notify-start and --notify-stop options make git-annex display a
desktop notification. This is useful to give the user an indication that
their action took effect. Desktop notifications are currently only
implenented for Linux.