題:
另一個自定義邊欄圖標問題(系統Info.plist問題)
Nick J
2013-11-22 16:17:47 UTC
view on stackexchange narkive permalink

我細讀了幾乎所有我能想到的Google搜索,並且得到了我認為很接近如何在側欄中設置自定義圖標的答案,而不必求助於Dropbox的mach_inject黑客,但我有一個答案幾個問題,我很困惑。我的主要問題是:您可以為文件夾設置“類型”嗎?之所以問是因為進入/System/Library/CoreServices/CoreTypes.bundle/Contents時有一個Info.plist文件。此文件顯示系統文件夾的圖標關聯。在研究側邊欄圖標之前,首先,我想知道“常規”圖標如何與系統文件夾相關聯。我將以“文檔”文件夾為例。我可以在此Info.plist文件的“文檔類型”下看到,項目155用於“文檔”文件夾,它說明應該與“文檔”文件夾關聯的圖標應該是DocumentsFolderIcon.icns。它還表明“文檔操作系統類型”是4個字符的類型,稱為“文檔”。

docs type

可以安全地假設如果我創建了一個New文件夾,我可以以某種方式編輯一個擴展屬性或某種元數據,以聲明我的新文件夾為“ docs”類型,這將導致Finder為它顯示DocumentsFolderIcon.icns?我該如何修改我的文件夾“類型”?

此外,在同一Info.plist文件中,它解釋了側邊欄圖標。條目10的字典(“文檔”側欄圖標)說明,“ sbDc”的文檔操作系統類型將顯示SidebarDocumentsFolder.icns。同樣,對於新創建的文件夾,我可以以某種方式編輯屬性或元數據以指示邊欄類型應為“ sbDc”而不是默認的“ sbFd”(用於“通用文件夾”圖標)。

sbDc type

能夠以這種方式修改新文件夾中的那​​些屬性,可以為我提供概念證明,而無需mach_inject技巧即可獲取自定義的側邊欄圖標,並使我能夠創建新文件夾,就像它們是系統生成的文件夾帶有其自己的自定義側邊欄圖標和所有內容。

(我知道/ Library / Preferences中有一個名為com.apple.sidebarlists.plist的其他文件,但是我很困惑,因為對於文檔文件夾定義,它表示com.apple.LSSharedFileList.TemplateSystemSelector的十進制數字,將其轉換為十六進制,然後轉換為ASCII時,拼寫出“ sbDt”而不是“ sbDc”,該文件在系統Info.plist文件中列為Documents邊欄類型)-編輯-實際上,我進行了修改,以嘗試進行更改以查看會發生什麼;默認情況下,最初為“文檔”設置的十進制數字實際上為1,935,819,875,將其轉換為ASCII中的“ sbDc”。 (下面的屏幕快照做了我的更改。)

number > hex > ASCII

因此,回顧一下,如何在一個新的屬性上修改屬性,元數據或任何被調用的內容創建的文件夾將其聲明為“ docs”類型而不是“ fldr,fold,utif或aexf”類型,以便代替通用文件夾圖標,而是顯示“文檔”文件夾圖標?

我也知道這已經被打死了,我只是覺得我已經能夠設置自定義圖標和側邊欄圖標,而不必借助代碼注入了……

在此先感謝!

-關於“常規”自定義圖標(不是側邊欄圖標)的另一條註釋:我知道如何使用常規方法為文件夾設置自定義圖標,但是當您使用預覽選擇圖像然後單擊“獲取信息”時在文件夾上,然後將圖像粘貼到左上角以設置圖標,文件夾的磁盤大小會發生變化... 不是系統文件夾的圖標設置方式。系統文件夾必須通過某種方式將其4個字符的類型與它們的圖標相關聯,而我正嘗試對自己的自定義文件夾進行同樣的操作。--

UPDATE

Tobias的答案(請參閱下面的答案)似乎在正確的路徑上,但是我終生無法找到哪個文件將路徑連接至圖標。我嘗試使用Terminal在計算機上的每個文件中搜索字符串'/ Sites'。如果在“主”文件夾中創建“站點”文件夾,它將獲得帶有Safari徽標的特殊圖標,但是如果在桌面上創建“站點”文件夾,則將獲得通用文件夾圖標。因此,Tobias肯定會繼續進行路徑歧視!出於某種原因,我相信或打算將“站點”保留在OS X的較舊版本中,並留給Web開發人員使用(儘管奇怪的是,它沒有出現特殊的補充工具欄圖標,但仍然在補充工具欄上獲得了通用文件夾圖標)。誰能解釋如何,為什麼Sites文件夾如此特別?重點是 how ,大聲笑。

二 答案:
Dave
2013-11-22 20:05:14 UTC
view on stackexchange narkive permalink

如果您只是想將默認圖標更改為其他內容,請此處是我為上一篇文章提供的答案。我已經使用它自定義了Finder側欄中的幾個圖標。

謝謝戴夫。目的是能夠為全新的和自定義文件夾插入新定義,即在其中保留所有默認設置,然後為我自己的自定義文件夾添加新圖標。我試圖確切地了解那些“文檔操作系統類型”如何與那些4個字符的字符串一起運行。我在想每個可以修改的-actual-文件夾都必須有某種元數據。作為測試,我想創建一個新文件夾,以某種方式將其“類型”設置為“文檔”,並查看其圖標顯示與“文檔”文件夾相同的圖標。
Tobias Simon
2014-03-07 18:07:55 UTC
view on stackexchange narkive permalink

您假定文件/文件夾上必須有一個屬性,才能對其進行特殊的圖標處理。

使用終端,並且 ls -l @ e 顯示所有擴展名屬性鍵以及與文件/文件夾關聯的訪問控制列表(ACL)。關於特殊文件夾的唯一特殊之處在於,ACL的狀態為 0:group:Everyone Deny Delete 。帶有 cp -a 的副本保留了所有內容,包括擴展屬性鍵和ACL,但不保留特殊圖標。

因此文件上沒有屬性/ folder。

相反,Finder自己對待這些文件夾的方式有所不同。

它只是通過路徑識別來實現。使用 sudo mv 進行驗證。


其他說明

  • 名稱本地化由文件夾內的 .localized 文件完成。
  • 自定義圖標會在文件夾和特殊文件中產生屬性

      com.apple.FinderInfo 32  

      -rw-r--r-@@ 1 <user> <group> 0 <dd> <mmm> <yyyy>圖標? com.apple.FinderInfo 32 com.apple.ResourceFork 202364  

    在文件夾內。


下一步:搜索將路徑連接到其文檔操作系統類型的東西。希望它是易於訪問的 .plist 之類的東西。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...