Thay đổi tập tin liên kết trong thiết bị đầu cuối?


18

Có phương pháp nào để liên kết các loại tệp với các ứng dụng qua thiết bị đầu cuối không? Tôi nghĩ ~ / Library / Preferences / com.apple.launchservice.plist có thể làm điều đó và tôi cũng đã thấy: Tại sao một dòng lệnh thay đổi thành ~ / Library / Preferences / com.apple.LaunchService.plist không hiệu quả ngay lập tức? nhưng tôi dường như không thể làm cho nó hoạt động.

Tôi đoán tôi đang tìm cách bắt chước GUI làm gì khi ai đó sử dụng nó để thay đổi các loại kết hợp, nó dường như hoạt động ngay lập tức ở đó ...

Câu trả lời:


8

Bạn có thể chỉnh sửa ~/Library/Preferences/com.apple.LaunchServices.plisttrong trình soạn thảo văn bản sau khi chuyển đổi nó sang XML:

plutil -convert xml1 ~/Library/Preferences/com.apple.LaunchServices.plist

Sau đó thêm các mục như thế này vào LSHandlersmảng:

<dict>
  <key>LSHandlerContentType</key>
  <string>com.adobe.pdf</string>
  <key>LSHandlerRoleAll</key>
  <string>net.sourceforge.skim-app.skim</string>
</dict>
<dict>
  <key>LSHandlerContentTag</key>
  <string>mkv</string>
  <key>LSHandlerContentTagClass</key>
  <string>public.filename-extension</string>
  <key>LSHandlerRoleAll</key>
  <string>org.videolan.vlc</string>
</dict>

Bạn có thể sử dụng mdlsđể xem UTI của các loại tệp và một cái gì đó giống như osascript -e 'id of app "AppName"'để xem các định danh gói ứng dụng.

Bạn có thể áp dụng các thay đổi com.apple.LaunchServices.plistbằng cách khởi động lại. Đăng xuất và đăng nhập trở lại là không đủ.


LƯU Ý : dutikhông còn trong quá trình phát triển tích cực và đã được các nhà bảo trì của nó gắn nhãn là "không được hỗ trợ". Dự án đã không thấy bất kỳ tiến bộ lớn nào kể từ năm 2012 ngoài các cập nhật cấu hình. Nó đã chuyển từ Sourceforge sang Github. Câu trả lời này đã được cập nhật để bao gồm các liên kết mới.

Tôi cũng sử dụng duti mặc dù. Tôi đã lưu một tệp như thế này (với khoảng 100 dòng) là ~/.duti:

org.gnu.Emacs public.plain-text all # .txt, .text, plain text files without an extension
org.gnu.Emacs public.unix-executable all # executable scripts
com.SequentialX.Sequential .jpg all
org.videolan.vlc .mkv all

Tôi có một tác nhân launchd chạy duti ~/.dutitự động khi ~/.dutiđược thay đổi.

Thông thường bạn có thể sử dụng các phần mở rộng tên tệp (như .jpg) thay vì UTI (như public.jpg) để chỉ định loại tệp. dutichuyển đổi các phần mở rộng thành UTI cũng áp dụng cho các phần mở rộng khác (như .jpeg). Đối với một số tiện ích mở rộng như .mkv.tex, UTI phụ thuộc vào ứng dụng nào đã đăng ký tiện ích mở rộng trước.

Các phiên bản mới nhất của dutichỉ bao gồm mã nguồn, nhưng 1.5.0 cũng bao gồm một trình cài đặt.


5

Kiểm tra duti :

duti là một công cụ dòng lệnh được viết bởi Andrew Mortensen, được thiết kế để đặt các ứng dụng mặc định cho các loại tài liệu và các lược đồ URL trên Mac OS X.

Các loại tài liệu trên Mac OS X được xác định bởi những gì Apple gọi là Định danh loại thống nhất hoặc UTI. Ví dụ, các tệp HTML có UTI của public.html. Các tài liệu Microsoft Word được mô tả bởi UTI com.microsoft.word.doc. Apple cung cấp nhiều UTI với Mac OS X, nhưng các nhà phát triển có thể tự định nghĩa, miễn là UTI là duy nhất cho loại tài liệu đó.

tên của duti có nghĩa là "mặc định cho UTI."


2
Gợi ý bắt buộc: sử dụng brew install dutiđể cài đặtduti
Cầu tàu Paolo Ramon

1

Đây là một tác nhân khởi động cho duti sẽ thực hiện thủ thuật:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.duti.watcher</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/duti</string>
      <string>/Users/joshgummersall/.duti</string>
    </array>
    <key>UserName</key>
    <string>joshgummersall</string>
    <key>KeepAlive</key>
    <false/>
    <key>WatchPaths</key>
    <array>
      <string>/Users/joshgummersall/.duti</string>
    </array>
  </dict>
</plist>

Rõ ràng thay thế joshgummersallbằng tên người dùng của riêng bạn. Tôi đã đặt tập tin này tại ~/Library/LaunchAgents/duti.plist, chmmodd đến 644 và chạy:

$ launchctl load -F -w ~/Library/LaunchAgents/duti.plist

0

Câu trả lời ngắn: Liên kết ứng dụng của tệp được lưu trữ trong ngã ba tài nguyên của tệp và Apple cung cấp hai tiện ích ( RezDeRez ) cho phép thao tác các nhánh tài nguyên. Nhưng điều này không dành cho người yếu tim.

Để biết thêm chi tiết, câu hỏi này được trả lời rất kỹ lưỡng tại Super User:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.