Skip to content

Commit

Permalink
Re-add hide-desktop.py as a LaunchBar action
Browse files Browse the repository at this point in the history
  • Loading branch information
liyanage committed Mar 23, 2016
1 parent d716e5f commit 4cf0390
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 0 deletions.
1 change: 1 addition & 0 deletions hide-desktop.py
39 changes: 39 additions & 0 deletions launchbar-actions/HideUnhideDesktop.lbaction/Contents/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?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>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>ch.entropy.launchbar.action.hide-desktop</string>
<key>CFBundleName</key>
<string>Hide/Unhide Desktop</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LBAbbreviation</key>
<string>hide</string>
<key>LBDescription</key>
<dict>
<key>LBAuthor</key>
<string>Marc Liyanage</string>
<key>LBTwitter</key>
<string>@liyanage</string>
<key>LBWebsiteURL</key>
<string>http://www.entropy.ch</string>
</dict>
<key>LBScripts</key>
<dict>
<key>LBDefaultScript</key>
<dict>
<key>LBResultType</key>
<string>unknown</string>
<key>LBScriptName</key>
<string>hide-desktop.py</string>
</dict>
</dict>
<key>LBTextInputTitle</key>
<string>Shorter Name</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2016 Marc Liyanage</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#!/usr/bin/env python

# Maintained at https://github.com/liyanage/macosx-shell-scripts/
#

import sys
import os
import re
import argparse
import logging
import Foundation
import subprocess

class Tool(object):

def __init__(self, args):
self.args = args

def run(self):
if self.args.action == 'toggle':
self.toggle()
elif self.args.action == 'show':
self.show()
elif self.args.action == 'hide':
self.hide()
elif self.args.action == 'auto':
self.auto()

def show(self):
self.set_hidden_state(False)

def hide(self):
self.set_hidden_state(True)

def toggle(self):
self.set_hidden_state(not self.is_currently_hidden())

def auto(self):
try:
self.hide()
raw_input('Desktop hidden, hit Return to unhide:\n')
except BaseException:
pass
finally:
self.show()

def set_hidden_state(self, new_state):
if new_state == self.is_currently_hidden():
return

if new_state:
cmd = 'defaults write com.apple.finder CreateDesktop -bool false'.split()
else:
cmd = 'defaults delete com.apple.finder CreateDesktop'.split()

subprocess.check_call(cmd)
subprocess.check_call('killall Finder'.split())

def is_currently_hidden(self):
finder_settings = Foundation.NSUserDefaults.standardUserDefaults().persistentDomainForName_("com.apple.finder")
if 'CreateDesktop' in finder_settings:
return not finder_settings['CreateDesktop']
return False

@classmethod
def main(cls):
action_default = 'auto' if sys.stdout.isatty() else 'toggle'
parser = argparse.ArgumentParser(description='Hide/show Desktop contents, for presentations / screen recordings / screenshots')
parser.add_argument('action', nargs='?', default=action_default, choices=['hide', 'show', 'toggle', 'auto'], help='Action to perform')

args = parser.parse_args()
cls(args).run()


if __name__ == "__main__":
Tool.main()

0 comments on commit 4cf0390

Please sign in to comment.