diff --git a/client.go b/client.go index 170b768..89eb383 100644 --- a/client.go +++ b/client.go @@ -141,6 +141,24 @@ var ( LongHelp: wrap(`Show workflow status, info and options.`), Exec: runStatus, } + + // open file in default application + openCmd = &ffcli.Command{ + Name: "open", + Usage: "alfred-firefox open ", + ShortHelp: "open file in default application", + LongHelp: wrap(`Open file in default application.`), + Exec: runOpen, + } + + // reveal file in Finder + revealCmd = &ffcli.Command{ + Name: "reveal", + Usage: "alfred-firefox reveal ", + ShortHelp: "reveal file in Finder", + LongHelp: wrap(`Reveal file in Finder.`), + Exec: runReveal, + } ) func runOpenURL(_ []string) error { @@ -472,8 +490,13 @@ func runDownloads(_ []string) error { Subtitle(util.PrettyPath(dl.Path)). Arg(dl.Path). UID(dl.Path). + IsFile(true). Icon(&aw.Icon{Value: dl.Path, Type: aw.IconTypeFileIcon}). - Valid(true) + Valid(true). + Var("CMD", "open"). + NewModifier(aw.ModCmd). + Subtitle("Reveal in Finder"). + Var("CMD", "reveal") } wf.WarnEmpty("Nothing Found", "Try a different query?") @@ -481,6 +504,20 @@ func runDownloads(_ []string) error { return nil } +// open file in default application +func runOpen(args []string) error { + path := args[0] + log.Printf("opening file %q ...", util.PrettyPath(path)) + return exec.Command("/usr/bin/open", path).Run() +} + +// reveal file in Finder +func runReveal(args []string) error { + path := args[0] + log.Printf("revealing file %q in Finder ...", util.PrettyPath(path)) + return exec.Command("/usr/bin/open", "-R", path).Run() +} + // run update check in background func checkForUpdate() { if wf.UpdateCheckDue() && !wf.IsRunning("update") { diff --git a/icon.png b/icon.png index 227eb9f..bbeed5c 100644 Binary files a/icon.png and b/icon.png differ diff --git a/icons.afdesign b/icons.afdesign index e92d2e2..416f6f2 100644 Binary files a/icons.afdesign and b/icons.afdesign differ diff --git a/icons/bookmark.png b/icons/bookmark.png index 3c47fbc..18841ef 100644 Binary files a/icons/bookmark.png and b/icons/bookmark.png differ diff --git a/icons/bookmarklet.png b/icons/bookmarklet.png index 1ede3b0..658f175 100644 Binary files a/icons/bookmarklet.png and b/icons/bookmarklet.png differ diff --git a/icons/error.png b/icons/error.png index 02bce3e..9cbfc9b 100644 Binary files a/icons/error.png and b/icons/error.png differ diff --git a/icons/history.png b/icons/history.png index ecffe81..bc106c7 100644 Binary files a/icons/history.png and b/icons/history.png differ diff --git a/icons/more.png b/icons/more.png index 7eb0dab..bdb44ba 100644 Binary files a/icons/more.png and b/icons/more.png differ diff --git a/icons/tab.png b/icons/tab.png index 5e610af..a16bd26 100644 Binary files a/icons/tab.png and b/icons/tab.png differ diff --git a/icons/update-available.png b/icons/update-available.png index 845fe4e..2b20888 100644 Binary files a/icons/update-available.png and b/icons/update-available.png differ diff --git a/icons/update-ok.png b/icons/update-ok.png index 42efff5..2372c0d 100644 Binary files a/icons/update-ok.png and b/icons/update-ok.png differ diff --git a/icons/url.png b/icons/url.png index 71697a3..d8a0d37 100644 Binary files a/icons/url.png and b/icons/url.png differ diff --git a/icons/warning.png b/icons/warning.png index d182509..9af9ae0 100644 Binary files a/icons/warning.png and b/icons/warning.png differ diff --git a/main.go b/main.go index 007be14..86d2ce7 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,6 @@ package main // TODO: implement setup (save native application manifest) -// TODO: implement tab scripts (injectable JS)? // TODO: package extension import ( @@ -92,6 +91,8 @@ func init() { currentTabCmd, downloadsCmd, historyCmd, + openCmd, + revealCmd, runBookmarkletCmd, serveCmd, statusCmd,