Note: This has not been fully tested since macOS 10.14. Some features will not work on macOS Ventura 13 or later due to changes in System Settings
For more usage see this blog post
sudo gem install panes
gem list
Panes requires sudo access to read and write to the main plist file. You can run commands in two ways. From a ruby interactive shell, or running a ruby script directly from the command line.
sudo irb
require 'panes'
Panes.Disable("com.apple.preference.network")
Put your commands in a ruby file and run it via the terminal. For example, create a file named "test-command.rb"
test-command.rb:
#!//usr/bin/ruby
require 'panes'
Panes.Disable("com.apple.preference.network")
Run the command from terminal:
sudo ruby test-command.rb
You must require 'panes' in your ruby file. Then you can run the command below to see all your options.
Panes.Options
This will return:
- CFBundleIdentifier
- CreateProfile
- Disable
- Enable
- List
- OptionalCFBundleIdentifier
- Options
- Reset
puts Panes.CFBundleIdentifier
CFBundleIdentifier is a string usually in reverse DNS format, that specifies the specific app type of the bundle. Used in macOS to specify Applications.
Panes.CreateProfile
If the file "/Library/Preferences/com.apple.systempreferences.plist" doesn't exist, it will be created.
There's no real reason to run this independently, it's used internally when the file isn't found.
The heart of this gem is the Disable method. It takes a specific CFBundleIdentifier or multiple CFBundleIdentifiers.
#to disable one Pane
Panes.Disable("com.apple.preference.network")
#to disable multiple Panes, use comma separated list
Panes.Disable(
"com.apple.preference.network",
"com.apple.preferences.Bluetooth")
Panes.Enable("com.apple.preference.network")
If you decide to enable a pane after it's been disable.
Panes.List
you'll get a list of available preference panes:
- Accounts.prefPane
- Appearance.prefPane
- AppStore.prefPane
- Bluetooth.prefPane
- and so forth ....
puts Panes.OptionalCFBundleIdentifier
These are usually Panes that have been installed by a user like Adobe Flash or Oracle Java
- com.adobe.flashplayerpreferences
- com.oracle.java.JavaControlPanel
Panes.Options
Prints available methods
Panes.Reset
This enables all panes and deletes the "/Library/Preferences/com.apple.systempreferences.plist" file