ওএস এক্স-এ ফাইল টাইপের সাথে যুক্ত ডিফল্ট অ্যাপ্লিকেশনগুলি পরিবর্তন করার কোন দ্রুত উপায় আছে?


13

আরসিডিএফএল্ট অ্যাপ্লিকেশন বা ম্যাজিক লঞ্চ ব্যবহার করা বা ফাইন্ডারের তথ্য প্যানেলে সমস্ত বার পরিবর্তন করুন বোতাম টিপানোর চেয়ে আরও সুবিধাজনক কিছু আছে কি ?

আমি একটি শেল স্ক্রিপ্ট লেখার বিষয়ে ভেবেছিলাম যা তথ্য.প্লেস্ট ফাইলগুলিতে সিএফবান্ডেলডোকামেন্টটাইপস অ্যারেগুলিকে সংশোধন করবে। তবে প্রতিটি অ্যাপ্লিকেশনটিতে একাধিক কী রয়েছে (কখনও কখনও একটি আইকন) যা পরিবর্তিত হওয়া দরকার।

lsregister লঞ্চ পরিষেবা ডেটাবেজে নির্দিষ্ট পরিবর্তন করতে ব্যবহার করা যাবে না।

$ `locate lsregister` -h
lsregister: [OPTIONS] [ <path>... ]
                      [ -apps <domain>[,domain]... ]
                      [ -libs <domain>[,domain]... ]
                      [ -all  <domain>[,domain]... ]

Paths are searched for applications to register with the Launch Service database.
Valid domains are "system", "local", "network" and "user". Domains can also
be specified using only the first letter.

  -kill     Reset the Launch Services database before doing anything else
  -seed     If database isn't seeded, scan default locations for applications and libraries to register
  -lint     Print information about plist errors while registering bundles
  -convert  Register apps found in older LS database files
  -lazy n   Sleep for n seconds before registering/scanning
  -r        Recursive directory scan, do not recurse into packages or invisible directories
  -R        Recursive directory scan, descending into packages and invisible directories
  -f        force-update registration even if mod date is unchanged
  -u        unregister instead of register
  -v        Display progress information
  -dump     Display full database contents after registration
  -h        Display this help

অসাধারণ কাজ লৌরি, সিএমডি-আই, সমস্ত পরিবর্তন করার পরামর্শ দিয়ে লোকেরা নেটটি অচল। আমি dutiপরের বার একটি ঘূর্ণি দেব যা আমি আরও একটি অ্যাপ্লিকেশন চেষ্টা করে যা কয়েক ডজন ফাইলের পুনরায় নিবন্ধ করে।
ocodo

উত্তর:


12

duti

  1. Pkg ইনস্টলার ডাউনলোড করুন বা উত্স থেকে সংকলন করুন
  2. কোথাও এর মতো ফাইল সংরক্ষণ করুন:

    com.macromates.textmate public.shell-script all
    com.macromates.textmate public.unix-executable all
    com.macromates.textmate com.apple.property-list all
    org.videolan.vlc .avi all
    org.videolan.vlc .mkv all
    # ...
    
  3. duti $file.duti

বান্ডেল সনাক্তকারী বা ইউটিআইগুলি সন্ধান করা:

bundleid() {
  osascript -e "id of app \"$*\""
}

getuti() {
  local f="/tmp/me.lri.getuti.${1##*.}"
  touch "$f"
  mdimport "$f"
  mdls -name kMDItemContentTypeTree "$f"
  rm "$f"
}

lsapps

আমি ডুবির মতো একটি রুবি স্ক্রিপ্ট লিখেছিলাম এটি সম্পর্কে জানতে পারার আগে। পরিবর্তনের প্রয়োগের জন্য এটি ওএস পুনরায় চালু করা প্রয়োজন। এটি এতে যে কোনও বাহ্যিক পরিবর্তন ওভাররাইট করে com.apple.LaunchServices.plist

#!/usr/bin/env ruby

datafile = "#{ENV['HOME']}/Notes/lsapps.txt"
cachedir = "#{ENV['HOME']}/Library/Caches/me.lri.scripts"
cachefile = cachedir + "/lsapps"
`mkdir -p #{cachedir}; touch #{cachefile}`
cachetext = IO.read(cachefile)

a = []
IO.readlines(datafile).each do |line|
  line.strip!
  next unless line =~ /^([^#].*): (.+)/
  z = $1, $2

  bid = cachetext.scan(/#{z[0]}  (.*)/)[0]
  unless bid
    bid = `osascript -e 'id of app "#{z[0]}"'`.chomp
    next unless bid
    File.open(cachefile, "a") { |f| f.puts(z[0] + "  " + bid) }
  end

  z[1].strip.split(" ").each do |e|
    if e =~ /(.+):\/\/$/
      a << "{LSHandlerURLScheme='#{$1}';LSHandlerRoleAll='#{bid}';}"
    elsif e.include?(".")
      a << "{LSHandlerContentType='#{e}';LSHandlerRoleAll='#{bid}';}"
    else
      a << "{LSHandlerContentTag='#{e}';LSHandlerContentTagClass=\
'public.filename-extension';LSHandlerRoleAll='#{bid}';}"
    end
  end
end

system("defaults", "write", "com.apple.LaunchServices", "LSHandlers",
"(" + a.join(",") + ")")

`defaults write com.apple.LaunchServices LSQuarantine -bool false`

lsapps.txt

NetNewsWire Lite: feed:// public.rss
iCal: icaltodo icalevent
Google Chrome: chrome://
Safari: public.html
TextEdit: txt text md markdown csv
TextMate: public.shell-script public.unix-executable public.script ssh:// xml plist dict css rst tex sh pl py rb gemspec php js java c h m conf bash opml as cfm cfml class coffee ctp erb rhtml haml less msass scss yaml rd
VLC: avi mpg flv mkv mp4 flac 3gp
The Unarchiver: rar
Skim: pdf
iChm: chm
AppleScript Editor: scpt
Sequential: png jpg


@ কোপিসচে মন্তব্য করেছেন ... কিছু ক্ষেত্রে ডিউটি ব্যবহারের পরে অপারেটিং সিস্টেম পুনরায় চালু করার প্রয়োজন হয় না
গ্রাহাম পেরিন

2
@ গ্রাহামপেরিন আমার অর্থ হ'ল আমার নিজের রুবি স্ক্রিপ্টের (ডুটি নয়) পুনরায় চালু করা দরকার। আমি মূলত ডুটিতে স্যুইচ করেছি মূলত কারণ এটি পুনরায় আরম্ভ বা প্লাস্টটিকে ওভাররাইটের প্রয়োজন হয় না।
Lri

1

অ্যাপ্লিকেশনটি খুব সহজেই সমস্ত এভিআই খোলার জন্য আপনি কোনও পরিবর্তন করতে পারবেন, কোনও স্ক্রিপ্টিংয়ের দরকার নেই। একটি এভিআই ফাইল সন্ধান করুন এবং এটিতে তথ্য পান। এটি আপনাকে ফাইলের তথ্য প্রদর্শন করবে। আপনি যে প্রোগ্রামটি ফাইলগুলি খুলতে চান তা নির্বাচন করুন, তারপরে "সমস্ত পরিবর্তন করুন ..." বোতামটি ক্লিক করুন। এটি আপনাকে ডিফল্ট সংযুক্তি পরিবর্তন করতে অনুরোধ করবে। এখানে চিত্র বর্ণনা লিখুন

একটি ছোট পয়েন্ট হিসাবে, সম্পদ কাঁটাচামচ পর্যায়ক্রমে করা হচ্ছে না, তবে স্রষ্টার কোডগুলি। যেমন, নতুন ম্যাক ওএস সিস্টেমগুলিতে ফাইলগুলি কীভাবে খুলতে হয় তার জন্য আরও নমনীয় সিস্টেম রয়েছে। অ্যাপ্লিকেশনগুলিতে এমন ফাইলগুলিতে কাজ করার কথা রয়েছে যাগুলির রিসোর্স কাঁটা নেই, তবে কিছু অ্যাপ্লিকেশন এখনও সেগুলি ব্যবহার করে।


1
কোনও তথ্য ডায়ালগ থেকে ডিফল্ট অ্যাপ্লিকেশন পরিবর্তন করতে প্রায় 10 মাউস বা কীবোর্ড ক্রিয়া প্রয়োজন। এটি প্রথম কয়েকশবার বা তার পরে বেশ বিরক্তিকর হয়।
ল্রি

সেক্ষেত্রে , এই উত্তরটি সাইটের অন্য যে কোনও জায়গায় দেখুন , এটি আপনাকে একটি কমান্ড লাইন ব্যাচ পরিবর্তন কীভাবে করতে হবে তা দেখায়।
mauvedeity

(লিঙ্কযুক্ত উত্তরটি এর রিসোর্স কাঁটাচামচ থেকে কোনও একক ফাইলের ডিফল্ট অ্যাপ্লিকেশনটি পরিবর্তন করার বিষয়ে existing) আমি আমার বিদ্যমান সমস্ত ফাইলের রিসোর্স ফর্ককে সংশোধন করলেও এটি আমার থাকা ফাইলগুলির ডিফল্ট অ্যাপ্লিকেশনগুলিকে পরিবর্তন করবে না ভবিষ্যত।
Lri
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.