GoBACKSPACE————致敬Go2Shell的macOS Finder插件

僅以此項目向Go2Shell致敬喳逛、也祝Github10周年生日快樂最铁,整個項目開源于Github,直接想用的朋友可以去百度網(wǎng)盤下載费就。

背景

在macOS系統(tǒng)中诉瓦,Finder(中文被官方譯為訪達)扮演著文件管理器的角色。在大多數(shù)場景下力细,F(xiàn)inder還是挺好用的睬澡,但是有一點讓我很抓狂,那就是我在Finder視圖中發(fā)現(xiàn)了一個文件或文件夾艳汽,想去它的父級目錄時比較麻煩猴贰,因為Finder工具欄左邊的< >按鈕經(jīng)常是灰色的对雪,而且也只是能記錄著你之前訪問過的文件路徑歷史河狐,有點類似于safari里訪問過網(wǎng)頁的歷史。

image

Finder(訪達)的工具欄截圖 (< >為灰色)瑟捣,藍色指南針為GoBACKSPACE

macOS的Finder只幫你記錄了按時間先后訪問過的文件地址馋艺,這意味著按<鍵并不一定意味著去父級文件夾,它只表示是你之前訪問過的文件夾迈套。 更多情況下捐祠,<和>按鍵是灰色的,不讓按的狀態(tài)桑李。

而GoBACKSPACE的出現(xiàn)將徹底改變這一現(xiàn)狀踱蛀,GoBACKSPACE可以做到的就是讓你在文件的絕對路徑關系之間瀏覽文件。主要需要解決的絕對路徑去父文件夾的功能贵白,因為去子文件夾只需要靠雙擊操作即可率拒。我覺得絕對路徑關系是更符合我思考的一種方式。去父文件夾這件事還是經(jīng)常發(fā)生的禁荒,比如你在一個項目視圖下猬膨,想去父目錄將整個項目刪除或AirDrop分享給其他人;搜索到了一張照片呛伴,想將該目錄下所有照片打包等…

由于GoBACKSPACE和Finder之間的關系緊密勃痴,把它做成一個類似Go2Shell那樣的插件是更好的選擇;考慮到GoBACKSPACE的開發(fā)初衷是幫助用戶更好的在不同文件夾間切換热康,因此這里選用了一個指南針作為logo沛申,乍一看跟safari的圖標好像,估計上架時會被蘋果噴姐军∥鬯看著旁邊的Go2Shell,竟毫無違和感。

希望至此衫贬,讀者已經(jīng)明白了我為什么要開發(fā)GoBACKSPACE德澈。

使用方法

首先要下載這個軟件,我將安裝文件打包上傳到了百度網(wǎng)盤固惯,無需密碼即可下載梆造。

為了幫助讀者將GoBACKSPACE添加到Finder工具欄,我做了一個Gif如下葬毫。

image

將GoBACKSPACE添加到Finder工具欄的方法

一次添加即可镇辉,無需重復添加,使用它的時候贴捡,需要兩個步驟:

  • 步驟1:點擊icon
  • 步驟2:沒有步驟2!!
App icon

插件的最終效果demo

核心功能的實現(xiàn)

本項目的需求是我個人的真實需求忽肛,實現(xiàn)的時候參考了PathToGo這個項目,該項目返回上層使用了AppleScript烂斋,蘋果自己的腳本語言屹逛,并使用Swift與之進行交互,返回腳本執(zhí)行成功與否汛骂;并根據(jù)腳本的執(zhí)行情況給用戶彈toast罕模,以免在最頂層目錄時,不能繼續(xù)往父級目錄前進給用戶帶來困擾帘瞭。


tell application "Finder"
    set currentPath to POSIX path of (target of window 1 as alias)
    set myArray to my theSplit(currentPath, "/")
    set lengthOfArray to the length of myArray
    set the_path to "" as string
    
    if lengthOfArray ≤ 3 then
        return "fail"
    else
        set lengthOfNewArray to (lengthOfArray - 2)
        set parentPath to items 2 through lengthOfNewArray of myArray
        
        repeat with anItem in parentPath
            set the_path to the_path & "/" & anItem
        end repeat
        set the_path to the_path & "/"
        -- go2Parent(the_path)
        set the_folder to (POSIX file the_path) as alias
        tell application "Finder"
            activate
            if window 1 exists then
                set target of window 1 to the_folder
            else
                reveal the_folder
            end if
        end tell
        
        return "OK"
        
        
    end if
    
    return myArray
end tell

on theSplit(theString, theDelimiter)
    -- save delimiters to restore old settings
    set oldDelimiters to AppleScript's text item delimiters
    -- set delimiters to delimiter to be used
    set AppleScript's text item delimiters to theDelimiter
    -- create the array
    set theArray to every text item of theString
    -- restore the old setting
    set AppleScript's text item delimiters to oldDelimiters
    -- return the result
    return theArray
end theSplit

AppleScript的邏輯是將當前Finder視圖的路徑返回淑掌,然后將這個路徑以”/”進行分割,并根據(jù)返回數(shù)組的長度蝶念,去掉最后兩個元素抛腕,形成新的路徑,讓AppleScript控制Finder將當前頁面替換為新的文件夾路徑媒殉,由于AppleScript的原生性担敌,體驗還是非常順滑的。

Toast的出現(xiàn)和消除添加了動畫适袜,且動畫的時間都是可以設置的柄错,實現(xiàn)于ToastWindowController.swift文件中,感興趣的讀者可以去將項目clone下來看看苦酱,我覺得這個部分可以單獨抽出去成為一個小輪子售貌,也來源于PathToGO。

參考

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疫萤,一起剝皮案震驚了整個濱河市颂跨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扯饶,老刑警劉巖恒削,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件池颈,死亡現(xiàn)場離奇詭異,居然都是意外死亡钓丰,警方通過查閱死者的電腦和手機躯砰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來携丁,“玉大人琢歇,你說我怎么就攤上這事∶渭” “怎么了李茫?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肥橙。 經(jīng)常有香客問我魄宏,道長,這世上最難降的妖魔是什么存筏? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任宠互,我火速辦了婚禮,結果婚禮上方篮,老公的妹妹穿的比我還像新娘名秀。我一直安慰自己励负,他們只是感情好藕溅,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著继榆,像睡著了一般巾表。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上略吨,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天集币,我揣著相機與錄音,去河邊找鬼翠忠。 笑死鞠苟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的秽之。 我是一名探鬼主播当娱,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼考榨!你這毒婦竟也來了跨细?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤河质,失蹤者是張志新(化名)和其女友劉穎冀惭,沒想到半個月后震叙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡散休,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年媒楼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戚丸。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡匣砖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昏滴,到底是詐尸還是另有隱情猴鲫,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布谣殊,位于F島的核電站拂共,受9級特大地震影響,放射性物質發(fā)生泄漏姻几。R本人自食惡果不足惜宜狐,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛇捌。 院中可真熱鬧抚恒,春花似錦、人聲如沸络拌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽春贸。三九已至混萝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萍恕,已是汗流浹背逸嘀。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留允粤,地道東北人崭倘。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像类垫,于是被迫代替她去往敵國和親司光。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容