├── Actions
├── Notes Navigator.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ └── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ ├── Scripts
│ │ │ └── default.scpt
│ │ └── Info.plist
│ ├── images
│ │ └── Notes_Demo.gif
│ └── README.md
├── Screen Sharing.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ └── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ ├── Scripts
│ │ │ ├── default.js
│ │ │ └── suggestions.py
│ │ └── Info.plist
│ ├── images
│ │ ├── ScreenSharing.png
│ │ └── ScreenSharing_Demo.gif
│ └── README.md
├── RAM Drive.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ ├── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ │ ├── fat.png
│ │ │ ├── hfs.png
│ │ │ ├── exfat.png
│ │ │ ├── extfs.png
│ │ │ ├── ntfs.png
│ │ │ ├── RAMDrive.png
│ │ │ └── default.png
│ │ ├── Info.plist
│ │ └── Scripts
│ │ │ ├── listFS.py
│ │ │ └── createVolume.py
│ ├── images
│ │ ├── RAMDrive.gif
│ │ └── RAMDrive_Intro.png
│ └── README.md
├── Link Sharing.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ ├── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ │ ├── Document.png
│ │ │ └── Link Sharing.png
│ │ ├── Scripts
│ │ │ ├── copy_link.rb
│ │ │ └── format_link.rb
│ │ └── Info.plist
│ ├── images
│ │ ├── LinkSharing_Demo.gif
│ │ └── LinkSharing_Intro.png
│ └── README.md
├── Paths.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ ├── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ │ └── Icon.png
│ │ ├── Scripts
│ │ │ └── Paths.scpt
│ │ └── Info.plist
│ ├── images
│ │ └── Paths_Intro.png
│ └── README.md
├── Open in Bugzilla.lbaction
│ ├── Contents
│ │ ├── Resources
│ │ │ ├── en.lproj
│ │ │ │ └── InfoPlist.strings
│ │ │ ├── Safari.png
│ │ │ ├── Bugzilla.png
│ │ │ └── Documents.png
│ │ ├── Scripts
│ │ │ ├── script.py
│ │ │ └── open_url.py
│ │ └── Info.plist
│ ├── images
│ │ ├── Bugzilla_Demo.gif
│ │ └── Bugzilla_Intro.png
│ └── README.md
├── Skype Copy Clipboard.lbaction
│ ├── images
│ │ ├── Skype_req_auth.png
│ │ ├── Skype_CopyClipboard_Demo.gif
│ │ └── Skype_CopyClipboard_Intro.png
│ ├── Contents
│ │ ├── Scripts
│ │ │ ├── friends.scpt
│ │ │ ├── default.py
│ │ │ └── suggestions.py
│ │ └── Info.plist
│ └── README.md
├── Skype Open Chat.lbaction
│ ├── Contents
│ │ ├── Scripts
│ │ │ ├── friends.scpt
│ │ │ ├── default.py
│ │ │ └── suggestions.py
│ │ └── Info.plist
│ ├── images
│ │ ├── Skype_Open_Chat_Demo.gif
│ │ └── Skype_Open_Chat_Intro.png
│ └── README.md
└── Text Expander Snippets.lbaction
│ ├── Images
│ ├── te_preferences.png
│ ├── te_native_window.png
│ └── text_expander_snippets.gif
│ ├── Contents
│ ├── Scripts
│ │ ├── te_put.scpt
│ │ ├── te_get_abbr.scpt
│ │ ├── te_get_label.scpt
│ │ ├── default.js
│ │ └── suggestions.js
│ └── Info.plist
│ └── README.md
└── Source
├── Paths.source.zip
├── RAM Drive.source.zip
├── Link Sharing.source.zip
├── Notes Navigator.source.zip
├── Screen Sharing.source.zip
├── Skype Open Chat.source.zip
├── Open in Bugzilla.source.zip
├── Skype Copy Clipboard.source.zip
└── Text Expander Snippets.source.zip
/Actions/Notes Navigator.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Source/Paths.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Paths.source.zip
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleName" = "RAM Drive";
2 |
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleName" = "Link Sharing";
2 |
--------------------------------------------------------------------------------
/Source/RAM Drive.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/RAM Drive.source.zip
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleName" = "Paths: copy a file path";
2 |
--------------------------------------------------------------------------------
/Source/Link Sharing.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Link Sharing.source.zip
--------------------------------------------------------------------------------
/Source/Notes Navigator.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Notes Navigator.source.zip
--------------------------------------------------------------------------------
/Source/Screen Sharing.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Screen Sharing.source.zip
--------------------------------------------------------------------------------
/Source/Skype Open Chat.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Skype Open Chat.source.zip
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Resources/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleName" = "Bugzilla: ticket opener";
2 |
--------------------------------------------------------------------------------
/Source/Open in Bugzilla.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Open in Bugzilla.source.zip
--------------------------------------------------------------------------------
/Source/Skype Copy Clipboard.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Skype Copy Clipboard.source.zip
--------------------------------------------------------------------------------
/Source/Text Expander Snippets.source.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Source/Text Expander Snippets.source.zip
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/images/Paths_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Paths.lbaction/images/Paths_Intro.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/images/RAMDrive.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/images/RAMDrive.gif
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/Contents/Scripts/default.js:
--------------------------------------------------------------------------------
1 | function runWithString(argument)
2 | {
3 | LaunchBar.openURL('vnc://' + argument);
4 | }
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/Contents/Resources/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Paths.lbaction/Contents/Resources/Icon.png
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/Contents/Scripts/Paths.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Paths.lbaction/Contents/Scripts/Paths.scpt
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/fat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/fat.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/hfs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/hfs.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/images/RAMDrive_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/images/RAMDrive_Intro.png
--------------------------------------------------------------------------------
/Actions/Notes Navigator.lbaction/images/Notes_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Notes Navigator.lbaction/images/Notes_Demo.gif
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/exfat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/exfat.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/extfs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/extfs.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/ntfs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/ntfs.png
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/images/LinkSharing_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Link Sharing.lbaction/images/LinkSharing_Demo.gif
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/images/LinkSharing_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Link Sharing.lbaction/images/LinkSharing_Intro.png
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/images/Bugzilla_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Open in Bugzilla.lbaction/images/Bugzilla_Demo.gif
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/RAMDrive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/RAMDrive.png
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Resources/default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/RAM Drive.lbaction/Contents/Resources/default.png
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/images/ScreenSharing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Screen Sharing.lbaction/images/ScreenSharing.png
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/images/Bugzilla_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Open in Bugzilla.lbaction/images/Bugzilla_Intro.png
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Resources/Document.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Link Sharing.lbaction/Contents/Resources/Document.png
--------------------------------------------------------------------------------
/Actions/Notes Navigator.lbaction/Contents/Scripts/default.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Notes Navigator.lbaction/Contents/Scripts/default.scpt
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Resources/Safari.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Open in Bugzilla.lbaction/Contents/Resources/Safari.png
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/images/ScreenSharing_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Screen Sharing.lbaction/images/ScreenSharing_Demo.gif
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/images/Skype_req_auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Copy Clipboard.lbaction/images/Skype_req_auth.png
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/Contents/Scripts/friends.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Open Chat.lbaction/Contents/Scripts/friends.scpt
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Resources/Link Sharing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Link Sharing.lbaction/Contents/Resources/Link Sharing.png
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Resources/Bugzilla.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Open in Bugzilla.lbaction/Contents/Resources/Bugzilla.png
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/images/Skype_Open_Chat_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Open Chat.lbaction/images/Skype_Open_Chat_Demo.gif
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/images/Skype_Open_Chat_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Open Chat.lbaction/images/Skype_Open_Chat_Intro.png
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Images/te_preferences.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Images/te_preferences.png
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Resources/Documents.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Open in Bugzilla.lbaction/Contents/Resources/Documents.png
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/Contents/Scripts/friends.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Copy Clipboard.lbaction/Contents/Scripts/friends.scpt
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_put.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_put.scpt
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Images/te_native_window.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Images/te_native_window.png
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/images/Skype_CopyClipboard_Demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Copy Clipboard.lbaction/images/Skype_CopyClipboard_Demo.gif
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_get_abbr.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_get_abbr.scpt
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Images/text_expander_snippets.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Images/text_expander_snippets.gif
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/images/Skype_CopyClipboard_Intro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Skype Copy Clipboard.lbaction/images/Skype_CopyClipboard_Intro.png
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_get_label.scpt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/facetheheat/LaunchBar/HEAD/Actions/Text Expander Snippets.lbaction/Contents/Scripts/te_get_label.scpt
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # RAM Drive
2 |
3 | This action creates a RAM drive with selected size and format volume with any installed filesystem.
4 |
5 | ## Installation
6 | * Click "Download ZIP" on the right
7 | * Run LaunchBar/Ram Drive.lbaction to install
8 |
9 |
10 | 
11 | 
12 |
13 |
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Paths: copy a file path
2 |
3 | This action copies file path(from Finder window) to the clipboard.
4 |
5 | ## Features
6 | * support multiple files selection
7 |
8 | ## Installation
9 | * Click "Download ZIP" on the right
10 | * Run LaunchBar/Paths.lbaction to install
11 |
12 |
13 | 
14 |
15 |
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Text Expander Snippets
2 |
3 | ## Demo
4 | 
5 |
6 | ## By the way
7 | I know about 'Suggest Matching Abbreviations' shortcut in Text Expander preferences, but I want to get integration with LaunchBar.
8 | 
9 | 
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Scripts/default.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @author Pavel Miroshnichenko
3 | * @email pavel@miroshnichen.co
4 | **/
5 |
6 | function run()
7 | {
8 | LaunchBar.openCommandURL('x-launchbar:hide');
9 | }
10 |
11 | function runWithString(argument)
12 | {
13 | LaunchBar.debugLog(argument);
14 | LaunchBar.openCommandURL('x-launchbar:hide');
15 | LaunchBar.executeAppleScriptFile('te_put.scpt', argument);
16 | }
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # VNC History: Screen Sharing.app history viewer with auto substitution
2 |
3 | This action - the viewer of history of screen sharing connections.
4 |
5 | ## Features
6 | * Get connections from *.vncloc files
7 | * Auto substitution
8 |
9 | ## Installation
10 | * Click "Download ZIP" on the right
11 | * Run LaunchBar/Screen Sharing.lbaction to install
12 |
13 |
14 | 
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Actions/Notes Navigator.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Notes Navigator
2 |
3 | An action for navigating between notes & folder from Notas.app.
4 | Hit 'Return' to open Notes.app with seleted note.
5 |
6 | ## Features
7 | * Hit 'Enter' to open note
8 | * Simple keyboard navigation
9 | * Groups notes by folders
10 |
11 |
12 | ## Installation
13 | * Click "Download ZIP" on the right
14 | * Run LaunchBar/Note Navigator.lbaction to install
15 |
16 | 
17 |
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Open in Bugzilla: The clipboard link parser
2 |
3 | This action - the clipboard links parser. If someone send you short ticket to bugzilla bugtracker, you can easily open it in a seconds.
4 |
5 |
6 | ## Features
7 | * parsing multiple ticket numbers
8 |
9 |
10 | ## Installation
11 | * Click "Download ZIP" on the right
12 | * Run LaunchBar/Open In Bugzilla.lbaction to install
13 |
14 |
15 | 
16 | 
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Skype: Copy friend's name to the clipboard
2 |
3 | This action helps to copy skype friend's name & account to the clipboard.
4 | And you can easyly share it via email or other sharing channel.
5 |
6 | ## Features
7 | * Autocomplete Suggestions
8 |
9 | ## Installation
10 | * Click "Download ZIP" on the right
11 | * Run LaunchBar/Skype Copy Clipboard.lbaction to install
12 |
13 | ## Screenshot
14 | 
15 |
16 | ## Demo
17 | 
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Link Sharing: convert any smb/cifs/afp/win/unix links
2 |
3 | This action - the sharing link converter. If someone send you a link, like \\server\share, you could easily convert it for Finder support.
4 |
5 | ## Features
6 | * Input: smb, cifs, windows sharing, unix links
7 | * Copy one or multiple links
8 |
9 |
10 | ## Installation
11 | * Click "Download ZIP" on the right
12 | * Run LaunchBar/Link Sharing.lbaction to install
13 |
14 |
15 | 
16 | 
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/README.md:
--------------------------------------------------------------------------------
1 | # Skype: Open friend's chat window
2 |
3 | This action helps to open skype chat window with your friend.
4 | Search friend's name with autocomplete suggestion.
5 | It's like: Open Skype window, Cmd+Alt+F(Search Contacts).
6 |
7 | ## Features
8 | * Autocomplete Suggestions
9 |
10 | ## Installation
11 | * Click "Download ZIP" on the right
12 | * Run LaunchBar/Skype Open Chat.lbaction to install
13 |
14 | ## Screenshot
15 | 
16 |
17 | ## Demo
18 | 
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Scripts/copy_link.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | require 'json'
4 |
5 | url = JSON.parse(ARGV[0])
6 |
7 | items = []
8 | url.each do |value|
9 | #puts value.values
10 | items.push(value.values.to_s)
11 | end
12 |
13 | def copy_to_clipboard(value)
14 | `echo "#{value}" |pbcopy`
15 | return 0
16 | end
17 |
18 | report = ''
19 | i = 0
20 | itemsLength = items.length
21 | while i < itemsLength
22 | report << "#{items[i]}\n"
23 | i += 1
24 | end
25 |
26 | report.gsub!(/\[/, '')
27 | report.gsub!(/\]/, '')
28 | copy_to_clipboard(report)
29 |
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/Contents/Scripts/default.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "pavel@miroshnichen.co"
5 |
6 | import sys
7 | import re
8 | from subprocess import Popen, PIPE
9 |
10 | cmd = '/usr/bin/osascript "./friends.scpt"'
11 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
12 | out, err = p.communicate()
13 | text = out.split(',')
14 | for item in text:
15 | item = item.split(';')
16 | display_name = item[0].strip()
17 | account_name = item[1].strip()
18 | search_name = sys.argv[1]
19 | match = re.search(account_name, search_name)
20 | if match:
21 | cmd = 'open skype:%s?chat' % account_name
22 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
23 |
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/Contents/Scripts/default.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "pavel@miroshnichen.co"
5 |
6 | import sys
7 | import re
8 | from subprocess import Popen, PIPE
9 |
10 | cmd = '/usr/bin/osascript "./friends.scpt"'
11 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
12 | out, err = p.communicate()
13 | text = out.split(',')
14 | for item in text:
15 | item = item.split(';')
16 | display_name = item[0].strip()
17 | account_name = item[1].strip()
18 | search_name = sys.argv[1]
19 | match = re.search(account_name, search_name)
20 | if match:
21 | cmd = 'echo "%s, skype: %s" |pbcopy' % (display_name, account_name)
22 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
23 |
--------------------------------------------------------------------------------
/Actions/Paths.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleName
6 | Paths
7 | CFBundleIconFile
8 | Icon.png
9 | CFBundleVersion
10 | 1.0
11 | CFBundleIdentifier
12 | com.facetheheat.paths
13 | LBScripts
14 |
15 | LBDefaultScript
16 |
17 | LBScriptName
18 | Paths.scpt
19 | LBReturnsResult
20 |
21 |
22 |
23 | LBDescription
24 |
25 | LBDownload
26 | https://github.com/facetheheat
27 | LBTwitter
28 | @previewthenew
29 | LBSummary
30 | Paths: copy a file path to the clipboard
31 | LBAuthor
32 | Pavel Miroshnichenko
33 | LBEmail
34 | pavel@miroshnichen.co
35 | LBWebsite
36 | http://pavel.miroshnichen.co
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Scripts/script.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "facetheheat@icloud.com"
5 |
6 | import sys
7 | import subprocess
8 | import re
9 | import json
10 | import time
11 |
12 | inputString = sys.argv[1]
13 | ticketsList = re.sub('[A-z.,\:-_=+%$^#{}\'\"/]', '', inputString)
14 | ticketsList = ticketsList.split(' ')
15 |
16 | items = []
17 | openAll = {}
18 | openAll['title'] = 'Open All'
19 | openAll['icon'] = 'Safari.png'
20 | openAll['action'] = 'open_url.py'
21 | argumentList = []
22 | for everyTicket in ticketsList:
23 | outputArguments = {}
24 | outputArguments[everyTicket] = everyTicket
25 | argumentList.append(outputArguments)
26 | openAll['actionArgument'] = json.dumps(argumentList)
27 | items.append(openAll)
28 |
29 | for ticket in ticketsList:
30 | item = {}
31 | item['title'] = ticket
32 | item['subtitle'] = "Open ticket in a browser..."
33 | item['icon'] = 'Documents.png'
34 | item['action'] = 'open_url.py'
35 | outputArguments = {}
36 | outputArguments[ticket] = ticket
37 | item['actionArgument'] = json.dumps([outputArguments])
38 | items.append(item)
39 |
40 | print json.dumps(items)
41 |
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/Contents/Scripts/suggestions.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "pavel@miroshnichen.co"
5 |
6 | import sys
7 | import re
8 | import json
9 | from subprocess import Popen, PIPE
10 |
11 | def get_():
12 | cmd = '/usr/bin/osascript "./friends.scpt"'
13 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
14 | out, err = p.communicate()
15 | text = out.split(',')
16 | friends = []
17 | for item in text:
18 | item = item.split(';')
19 | friend_properties = {}
20 | friend_properties['title'] = item[0].strip()
21 | friend_properties['icon'] = 'com.skype.skype'
22 | friend_properties['subtitle'] = item[1].strip()
23 | friend_properties['action'] = 'default.py'
24 | friend_properties['actionArgument'] = json.dumps(item[1].strip())
25 | friends.append(friend_properties)
26 |
27 | filtered_text = []
28 | for element in friends:
29 | match = re.search(friend.decode('utf-8').lower(), element['title'].decode('utf-8').lower())
30 | if match:
31 | filtered_text.append(element)
32 | return filtered_text
33 |
34 | if __name__ == "__main__":
35 | if len(sys.argv) == 2:
36 | friend = sys.argv[1]
37 | print json.dumps(get_())
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/Contents/Scripts/suggestions.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "pavel@miroshnichen.co"
5 |
6 | import sys
7 | import re
8 | import json
9 | from subprocess import Popen, PIPE
10 |
11 | def get_():
12 | cmd = '/usr/bin/osascript "./friends.scpt"'
13 | p = Popen(cmd , shell=True, stdout=PIPE, stderr=PIPE)
14 | out, err = p.communicate()
15 | text = out.split(',')
16 | friends = []
17 | for item in text:
18 | item = item.split(';')
19 | friend_properties = {}
20 | friend_properties['title'] = item[0].strip()
21 | friend_properties['icon'] = 'com.skype.skype'
22 | friend_properties['subtitle'] = item[1].strip()
23 | friend_properties['action'] = 'default.py'
24 | friend_properties['actionArgument'] = json.dumps(item[1].strip())
25 | friends.append(friend_properties)
26 |
27 | filtered_text = []
28 | for element in friends:
29 | match = re.search(friend.decode('utf-8').lower(), element['title'].decode('utf-8').lower())
30 | if match:
31 | filtered_text.append(element)
32 | return filtered_text
33 |
34 | if __name__ == "__main__":
35 | if len(sys.argv) == 2:
36 | friend = sys.argv[1]
37 | print json.dumps(get_())
--------------------------------------------------------------------------------
/Actions/Notes Navigator.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LSMinimumSystemVersion
6 | 10.9
7 | LBDebugLogEnabled
8 |
9 | CFBundleIdentifier
10 | com.facetheheat.notesnavigator
11 | CFBundleIconFile
12 | com.apple.Notes
13 | CFBundleName
14 | Notes Navigator
15 | CFBundleVersion
16 | 1.0
17 | LBRequiredApplication
18 | com.apple.Notes
19 | LBScripts
20 |
21 | LBDefaultScript
22 |
23 | LBReturnsResult
24 |
25 | LBScriptName
26 | default.scpt
27 |
28 |
29 | LBDescription
30 |
31 | LBDownload
32 | https://github.com/facetheheat
33 | LBChangelog
34 |
35 | LBWebsite
36 | http://pavel.miroshnichen.co
37 | LBEmail
38 | pavel@miroshnichen.co
39 | LBSummary
40 | Simple notes.app navigator
41 | LBAuthor
42 | Pavel Miroshnichenko
43 | LBTwitter
44 | @previewthenew
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/Contents/Scripts/suggestions.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "pavel@miroshnichen.co"
5 |
6 | import os
7 | import sys
8 | import plistlib
9 | import re
10 | import json
11 |
12 | def fetch_hosts_from_vncloc():
13 | hosts = []
14 | for root, dirs, files in os.walk(history_folder):
15 | for file in files:
16 | if file.endswith(".vncloc"):
17 | hostPrefs = {}
18 | filePath = root + file
19 | connection_name = plistlib.readPlist(filePath)
20 | connection_name = connection_name['URL']
21 | hostPrefs['title'] = connection_name[6::]
22 | hostPrefs['icon'] = 'com.apple.ScreenSharing'
23 | hostPrefs['subtitle'] = 'connect to vnc://%s via Screen Sharing.app' % hostPrefs['title']
24 | hosts.append(hostPrefs)
25 | #creating filtered list
26 | filtered_hosts = []
27 | for element in hosts:
28 | match = re.match(host, element['title'])
29 | if match:
30 | filtered_hosts.append(element)
31 | return filtered_hosts
32 |
33 | if __name__ == "__main__":
34 | user_name = os.getlogin()
35 | history_folder = ('/Users/'+ user_name +'/Library/Application Support/Screen Sharing/')
36 | if len(sys.argv) == 2:
37 | host = sys.argv[1]
38 | if host.startswith('vnc://'):
39 | host = host[6::]
40 | else:
41 | host = ''
42 | print json.dumps(fetch_hosts_from_vncloc())
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBDebugLogEnabled
6 |
7 | CFBundleName
8 | RAM Drive
9 | CFBundleIconFile
10 | RAMDrive.png
11 | CFBundleVersion
12 | 1.0
13 | CFBundleIdentifier
14 | com.facetheheat.ramdrive
15 | LBScripts
16 |
17 | LBDefaultScript
18 |
19 | LBRequiresArgument
20 |
21 | LBLiveFeedbackEnabled
22 |
23 | LBKeepWindowActive
24 |
25 | LBScriptName
26 | listFS.py
27 |
28 |
29 | LBTextInputTitle
30 | Enter size(clusters/Mb/Gb) of RAM Drive
31 | LBDescription
32 |
33 | LBTwitter
34 | @previewthenew
35 | LBDownload
36 | https://github.com/facetheheat
37 | LBChangelog
38 |
39 | LBSummary
40 | Create a RAM Drive
41 | LBAuthor
42 | Pavel Miroshnichenko
43 | LBEmail
44 | pavel@miroshnichen.co
45 | LBWebsite
46 | http://pavel.miroshnichen.co
47 | LBUpdate
48 | https://github.com/facetheheat
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/Actions/Skype Open Chat.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBTextInputTitle
6 | Search for someone to start a conversation
7 | LBDebugLogEnabled
8 |
9 | CFBundleName
10 | Skype: Open chat with friend
11 | CFBundleIconFile
12 | com.skype.skype
13 | CFBundleVersion
14 | 1.0
15 | CFBundleIdentifier
16 | com.facetheheat.skypeopenchat
17 | LBScripts
18 |
19 | LBDefaultScript
20 |
21 | LBLiveFeedbackEnabled
22 |
23 | LBKeepWindowActive
24 |
25 | LBRequiresArgument
26 |
27 | LBAcceptedArgumentTypes
28 |
29 | string
30 |
31 | LBScriptName
32 | suggestions.py
33 | LBReturnsResult
34 |
35 |
36 |
37 | LBDescription
38 |
39 | LBDownload
40 | https://github.com/facetheheat
41 | LBTwitter
42 | @previewthenew
43 | LBSummary
44 | Skype: Open chat with friend
45 | LBAuthor
46 | Pavel Miroshnichenko
47 | LBEmail
48 | pavel@miroshnichen.co
49 | LBWebsite
50 | http://pavel.miroshnichen.co
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Actions/Skype Copy Clipboard.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBTextInputTitle
6 | Copy friend's name to the clipboard
7 | LBDebugLogEnabled
8 |
9 | CFBundleName
10 | Skype: Copy name to the clipboard
11 | CFBundleIconFile
12 | com.skype.skype
13 | CFBundleVersion
14 | 1.0
15 | CFBundleIdentifier
16 | com.facetheheat.skypecopyclipboard
17 | LBScripts
18 |
19 | LBDefaultScript
20 |
21 | LBKeepWindowActive
22 |
23 | LBLiveFeedbackEnabled
24 |
25 | LBRequiresArgument
26 |
27 | LBAcceptedArgumentTypes
28 |
29 | string
30 |
31 | LBScriptName
32 | suggestions.py
33 | LBReturnsResult
34 |
35 |
36 |
37 | LBDescription
38 |
39 | LBDownload
40 | https://github.com/facetheheat
41 | LBTwitter
42 | @previewthenew
43 | LBSummary
44 | Skype: Copy name to the clipboard
45 | LBAuthor
46 | Pavel Miroshnichenko
47 | LBEmail
48 | pavel@miroshnichen.co
49 | LBWebsite
50 | http://pavel.miroshnichen.co
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Actions/Screen Sharing.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIconFile
6 | com.apple.ScreenSharing
7 | CFBundleIdentifier
8 | com.facetheheat.screensharing
9 | CFBundleName
10 | VNC History
11 | CFBundleVersion
12 | 1.0
13 | LBTextInputTitle
14 | Host IP/Name
15 | LBScripts
16 |
17 | LBDefaultScript
18 |
19 | LBAcceptedArgumentTypes
20 |
21 | string
22 |
23 | LBRequiresArgument
24 |
25 | LBScriptName
26 | default.js
27 |
28 | LBSuggestionsScript
29 |
30 | LBScriptName
31 | suggestions.py
32 | LBRunInBackground
33 |
34 |
35 |
36 | LBDescription
37 |
38 | LBTwitter
39 | @previewthenew
40 | LBUpdate
41 | https://github.com/facetheheat
42 | LBWebsite
43 | http://pavel.miroshnichen.co
44 | LBEmail
45 | pavel@miroshnichen.co
46 | LBChangelog
47 |
48 | LBDownload
49 | https://github.com/facetheheat
50 | LBSummary
51 | Screen Sharing history browser
52 | LBAuthor
53 | Pavel Miroshnichenko
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBKeepWindowActive
6 |
7 | LBRequiresArgument
8 |
9 | LBReturnsResult
10 |
11 | LBRunInBackground
12 |
13 | LBLiveFeedbackEnabled
14 |
15 | LBDebugLogEnabled
16 |
17 | CFBundleName
18 | Open in Bugzilla
19 | CFBundleIconFile
20 | Bugzilla.png
21 | CFBundleVersion
22 | 1.0
23 | CFBundleIdentifier
24 | com.facetheheat.openinbugzilla
25 | LBScripts
26 |
27 | LBDefaultScript
28 |
29 | LBRequiresArgument
30 |
31 | LBLiveFeedbackEnabled
32 |
33 | LBKeepWindowActive
34 |
35 | LBScriptName
36 | script.py
37 |
38 |
39 | LBTextInputTitle
40 | paste ticket(s) number
41 | LBDescription
42 |
43 | LBDownload
44 | https://github.com/facetheheat
45 | LBChangelog
46 |
47 | LBSummary
48 | Open Links from the clipboard in Bugzilla
49 | LBAuthor
50 | Pavel Miroshnichenko
51 | LBTwitter
52 | @previewthenew
53 | LBEmail
54 | pavel@miroshnichen.co
55 | LBWebsite
56 | http://pavel.miroshnichen.co
57 | LBUpdate
58 | https://github.com/facetheheat
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBKeepWindowActive
6 |
7 | LBRequiresArgument
8 |
9 | LBReturnsResult
10 |
11 | LBRunInBackground
12 |
13 | LBLiveFeedbackEnabled
14 |
15 | LBDebugLogEnabled
16 |
17 | CFBundleName
18 | Link Sharing
19 | CFBundleIconFile
20 | Link Sharing.png
21 | CFBundleVersion
22 | 1.0
23 | CFBundleIdentifier
24 | com.facetheheat.linksharing
25 | LBScripts
26 |
27 | LBDefaultScript
28 |
29 | LBRequiresArgument
30 |
31 | LBLiveFeedbackEnabled
32 |
33 | LBKeepWindowActive
34 |
35 | LBScriptName
36 | format_link.rb
37 |
38 |
39 | LBTextInputTitle
40 | paste smb/cifs/afp link to convert
41 | LBDescription
42 |
43 | LBDownload
44 | https://github.com/facetheheat
45 | LBChangelog
46 |
47 | LBSummary
48 | Convert current shared link into os-specific format
49 | LBAuthor
50 | Pavel Miroshnichenko
51 | LBEmail
52 | pavel@miroshnichen.co
53 | LBWebsite
54 | http://pavel.miroshnichen.co
55 | LBTwitter
56 | @previewthenew
57 | LBUpdate
58 | https://github.com/facetheheat
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LBDebugLogEnabled
6 |
7 | LBRequiredApplication
8 | com.smileonmymac.textexpander
9 | LBAssociatedApplication
10 | com.smileonmymac.textexpander
11 | CFBundleIconFile
12 | com.smileonmymac.textexpander
13 | CFBundleIdentifier
14 | com.facetheheat.textexpanderjs
15 | CFBundleName
16 | Text Expander Snippets
17 | CFBundleVersion
18 | 1.0.1
19 | LBTextInputTitle
20 | Find a snippet
21 | LBScripts
22 |
23 | LBDefaultScript
24 |
25 | LBAcceptedArgumentTypes
26 |
27 | string
28 |
29 | LBRequiresArgument
30 |
31 | LBScriptName
32 | default.js
33 |
34 | LBSuggestionsScript
35 |
36 | LBScriptName
37 | suggestions.js
38 | LBRunInBackground
39 |
40 |
41 |
42 | LBDescription
43 |
44 | LBDownload
45 | https://github.com/facetheheat
46 | LBChangelog
47 |
48 | LBSummary
49 | Searches Text Expander
50 | LBRequirements
51 | Requires a Text Expander
52 | LBAuthor
53 | Pavel Miroshnichenko
54 | LBEmail
55 | pavel@miroshnichen.co
56 | LBWebsite
57 | http://pavel.miroshnichen.co
58 | LBTwitter
59 | @previewthenew
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/Actions/Open in Bugzilla.lbaction/Contents/Scripts/open_url.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "facetheheat@icloud.com"
5 |
6 | import os
7 | import os.path
8 | import sys
9 | import subprocess
10 | import json
11 | import plistlib
12 |
13 | supportPath = os.environ.get('LB_SUPPORT_PATH')
14 | settingsPath = supportPath + "/Preferences.plist"
15 |
16 |
17 | def openTicket(ticket):
18 | bugzillaUrlFile = plistlib.readPlist(settingsPath)
19 | bugzillaUrl = bugzillaUrlFile.get('Bugzilla URL')
20 | if bugzillaUrl:
21 | cmd = ["open", bugzillaUrl + "/show_bug.cgi?id=" + ticket]
22 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
23 | (output, error_output) = proc.communicate()
24 | return 0
25 | else:
26 | print 'Error in Preferences.plist. File was Removed'
27 | cmd = ["rm", settingsPath]
28 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
29 | (output, error_output) = proc.communicate()
30 | return 0
31 |
32 |
33 | def createSettingsFile():
34 | d = {'Bugzilla URL':"http://server.com/bugzilla",}
35 | settingsFile = open(settingsPath,'w')
36 | try:
37 | plistlib.writePlist(d, settingsFile)
38 | settingsFile.seek(0)
39 | finally:
40 | settingsFile.close()
41 | return 0
42 |
43 |
44 | def main():
45 | if os.path.isfile(settingsPath):
46 | inputArguments = json.loads(sys.argv[1])
47 | for item in inputArguments:
48 | openTicket(item.keys()[0])
49 | else:
50 | createSettingsFile()
51 | openSettingsFile = {}
52 | openSettingsFile['title'] = 'Bugzilla URL is not set. Type ENTER'
53 | openSettingsFile['subtitle'] = 'in Preferences.plist'
54 | openSettingsFile['path'] = "%s" % settingsPath
55 | print json.dumps(openSettingsFile)
56 | return 0
57 |
58 | # Start program
59 | if __name__ == "__main__":
60 | main()
61 |
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Scripts/listFS.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 | __author__ = "Pavel Miroshnichenko"
4 | __email__ = "facetheheat@icloud.com"
5 |
6 | import sys
7 | import subprocess
8 | import re
9 | import json
10 |
11 | #Create unsorted output from disk utility
12 | #skips first 9 lines of the output
13 | cmd = ["/usr/sbin/diskutil", "listFilesystems"]
14 | proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
15 | (output, error_output) = proc.communicate()
16 | output = output.split('\n')[9:]
17 |
18 | #Create list of filesystems
19 | listFilesystems = []
20 | for row in output:
21 | row = row.strip()
22 | match = re.search("\(or\)", row, re.I | re.S | re.M)
23 | if match or row == "":
24 | continue
25 | row = row.split(' ')
26 | if row[0] == 'Free Space':
27 | continue
28 | listFilesystems.append(row[0])
29 |
30 | items = []
31 | for fs in listFilesystems:
32 | item = {}
33 | item['title'] = fs
34 | item['subtitle'] = "Create %s RAM Drive" % fs
35 | if fs == 'MS-DOS' or fs == 'MS-DOS FAT32' or fs == 'MS-DOS FAT12' or fs == 'MS-DOS FAT16':
36 | item['icon'] = 'fat.png'
37 | elif fs == 'ExFAT':
38 | item['icon'] = 'exfat.png'
39 | elif fs == 'UFSD_NTFS' or fs == 'UFSD_NTFSCOMPR' or fs == 'Tuxera NTFS':
40 | item['icon'] = 'ntfs.png'
41 | elif fs == 'UFSD_EXTFS' or fs == 'UFSD_EXTFS3' or fs == 'UFSD_EXTFS4':
42 | item['icon'] = 'extfs.png'
43 | elif fs == 'HFS+' or fs == 'Journaled HFS+' or 'Case-sensitive HFS+' or 'Case-sensitive Journaled HFS+':
44 | item['icon'] = 'hfs.png'
45 | else:
46 | item['icon'] = 'default.png'
47 | item['action'] = 'createVolume.py'
48 | item['actionReturnsItems'] = True
49 | outputArguments = {}
50 | outputArguments['volumeSize'] = "%s" % sys.argv[1]
51 | outputArguments['filesystemType'] = "%s" % fs
52 | item['actionArgument'] = json.dumps(outputArguments)
53 | items.append(item)
54 | print json.dumps(items)
55 |
--------------------------------------------------------------------------------
/Actions/Text Expander Snippets.lbaction/Contents/Scripts/suggestions.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @author Pavel Miroshnichenko
3 | * @email pavel@miroshnichen.co
4 | **/
5 |
6 | function runWithString(argument)
7 | {
8 | if (argument.length == 0){
9 | LaunchBar.debugLog("EMPTY");
10 | //return [{ title : "No arguments passed" }]
11 | } else {
12 | //creates 2 requests, getting labels and abbreviations
13 | //bad code
14 | var list_by_abbreviation = LaunchBar.executeAppleScriptFile('te_get_abbr.scpt', argument);
15 | var list_by_label = LaunchBar.executeAppleScriptFile('te_get_label.scpt', argument);
16 | LaunchBar.debugLog(list_by_abbreviation);
17 | LaunchBar.debugLog(list_by_label);
18 |
19 | //create array
20 | var list_by_abbreviation = list_by_abbreviation.split(' ');
21 | var list_by_label = list_by_label.split(' ');
22 | LaunchBar.debugLog(list_by_abbreviation);
23 | LaunchBar.debugLog(list_by_label);
24 |
25 | try {
26 | var launchbar_preview = [];
27 | var i = 0;
28 | for (i = 0; i < list_by_abbreviation.length; i++) {
29 | var the_abbreviation = list_by_abbreviation[i];
30 | var the_label = list_by_label[i];
31 |
32 | //remove ',' from the end of item
33 | if (the_abbreviation.substr(the_abbreviation.length - 1) === ','){
34 | the_abbreviation = the_abbreviation.slice(0,-1);
35 | }
36 | LaunchBar.debugLog(the_abbreviation);
37 | LaunchBar.debugLog(the_label);
38 |
39 | launchbar_preview.push({
40 | 'title' : the_abbreviation,
41 | 'subtitle' : the_label,
42 | 'icon' : 'com.smileonmymac.textexpander'
43 | });
44 | }
45 | return launchbar_preview;
46 | } catch (exception) {
47 | LaunchBar.log('Exception while parsing result: ' + exception);
48 | return [];
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Actions/Link Sharing.lbaction/Contents/Scripts/format_link.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/ruby
2 |
3 | require 'json'
4 |
5 | url = ARGV[0]
6 |
7 | case url
8 | when /^(smb:\/\/)/
9 | a1 = url.clone.gsub(/^(([^:\/??#]+?):)??(\/\/)/imx, "\\\\\\\\\\")
10 | a2 = a1.gsub!("\/", "\\")
11 | b1 = url.clone.gsub("smb", "afp")
12 | c1 = url.clone.gsub("smb", "cifs")
13 | printList = [a2, b1, c1, url]
14 |
15 | when /^(cifs:)/
16 | a2 = url.clone.gsub(/^(([^:\/??#]+?):)??(\/\/)/imx, "\\\\\\\\\\")
17 | a3 = a2.gsub!("\/", "\\")
18 | b1 = url.clone.gsub("cifs", "afp")
19 | c1 = url.clone.gsub("cifs", "cifs")
20 | printList = [a3, b1, c1, url]
21 |
22 | when /^(\/\/)/
23 | a1 = url.clone.gsub(/^(([^:\/??#]+?):)??(\/\/)/imx, "\\\\\\\\\\")
24 | a2 = a1.gsub!("\/", "\\")
25 | b1 = url.clone.gsub("//", "afp://")
26 | c1 = url.clone.gsub("//", "smb://")
27 | d1 = url.clone.gsub("//", "cifs://")
28 | printList = [a2, b1, c1, d1, url]
29 |
30 | when /^(\\)/
31 | a1 = url.clone.gsub(/^(([\\+\\]))/imx, "//")
32 | a2 = a1.gsub!("\\", "/")
33 | a3 = a2.gsub!("///", "//")
34 | b1 = a3.clone.gsub("//", "afp://")
35 | c1 = a3.clone.gsub("//", "smb://")
36 | d1 = a3.clone.gsub("//", "cifs://")
37 | printList = [a3, b1, c1, d1, url]
38 |
39 | when /^(afp:)/
40 | a2 = url.clone.gsub(/^(([^:\/??#]+?):)??(\/\/)/imx, "\\+\\")
41 | a3 = a2.gsub!("\/", "\\")
42 | b1 = url.clone.gsub("afp", "smb")
43 | c1 = url.clone.gsub("afp", "cifs")
44 | printList = [a3, b1, c1, url]
45 | else
46 | puts "Unknown URL\n"
47 | exit 0
48 | end
49 |
50 | items = []
51 |
52 | item = {}
53 | item['title'] = 'Copy All'
54 | item['icon'] = 'Share Link.png'
55 | item['action'] = 'copy_link.rb'
56 |
57 | argumentList = []
58 | printList.each do |selectedValue|
59 | outputArgument = {}
60 | outputArgument[selectedValue] = selectedValue
61 | argumentList.push(outputArgument)
62 | end
63 | item['actionArgument'] = argumentList.to_json
64 |
65 | items.push(item)
66 |
67 | printList.each do | value |
68 | item = {}
69 | item['title'] = value
70 | item['icon'] = 'Document.png'
71 | item['action'] = 'copy_link.rb'
72 | argumentOutput = []
73 | actionOutput = {}
74 | actionOutput[value] = value
75 | argumentOutput.push(actionOutput)
76 | item['actionArgument'] = argumentOutput.to_json
77 | items.push(item)
78 | end
79 |
80 | puts items.to_json
81 |
--------------------------------------------------------------------------------
/Actions/RAM Drive.lbaction/Contents/Scripts/createVolume.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # -*- coding: utf-8 -*-
3 |
4 | import subprocess
5 | import json
6 | import re
7 | import sys
8 | import os
9 | import plistlib
10 | import StringIO
11 | from xml.parsers.expat import ExpatError
12 | from subprocess import Popen, PIPE
13 |
14 | INFO_FIELD_MAP = {
15 | 'DeviceNode': {'name': 'Device', 'value': lambda x: str(x)},
16 | 'FilesystemName': {'name': 'Filesystem', 'value': lambda x: str(x)},
17 | 'UsedSpace': {'name': 'Used', 'value': lambda x: x/1024},
18 | 'UsedPercent': {'name': 'Percent', 'value': lambda x: x/1024},
19 | 'FreeSpace': {'name': 'Free', 'value': lambda x: x/1024},
20 | 'TotalSize': {'name': 'Sizd', 'value': lambda x: x/1024},
21 | 'VolumeName': {'name': 'Volume Name', 'value': lambda x: str(x)},
22 | 'VolumeUUID': {'name': 'UUID', 'value': lambda x: str(x)},
23 | }
24 | INFO_FIELD_ORDER = [
25 | 'DeviceNode',
26 | 'VolumeName',
27 | 'FilesystemName',
28 | 'VolumeUUID',
29 | 'UsedSpace',
30 | 'FreeSpace',
31 | 'TotalSize'
32 | ]
33 |
34 | class DiskUtilError(Exception):
35 | pass
36 |
37 | class DiskInfo(dict):
38 | def __init__(self, device):
39 | if not os.access(device, os.R_OK):
40 | raise DiskUtilError('Device not readable: %s' % device)
41 |
42 | cmd = ['diskutil', 'info', '-plist', device]
43 | p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
44 | (stdout, stderr) = p.communicate()
45 | try:
46 | plist = StringIO.StringIO(stdout)
47 | self.update(plistlib.readPlist(plist))
48 | except ExpatError, emsg:
49 | raise DiskUtilError('Error parsing plist: %s' % stdout)
50 |
51 | if self.has_key('TotalSize') and self.has_key('FreeSpace'):
52 | self['UsedSpace'] = self.TotalSize - self.FreeSpace
53 | self['UsedPercent'] = int(round(1-(float(self.FreeSpace) / float(self.TotalSize))))
54 |
55 | def __getattr__(self, attr):
56 | try:
57 | return self[attr]
58 | except KeyError:
59 | raise AttributeError
60 |
61 | def keys(self):
62 | """
63 | Return keys as sorted list
64 | """
65 | return sorted(dict.keys(self))
66 |
67 | def items(self):
68 | """
69 | Return (key, value) sorted by key
70 | """
71 | return [(k, self[k]) for k in self.keys()]
72 |
73 | def values(self):
74 | """
75 | Return values sorted by key
76 | """
77 | return [self[k] for k in self.keys()]
78 |
79 |
80 | def createVolume(inputSize, inputFilesystem):
81 | filesystemsList = listFilesystems()
82 | if inputFilesystem.strip() not in filesystemsList:
83 | print "%s does not appear to be a valid file system format" % inputFilesystem
84 | sys.exit(1)
85 |
86 | getSize = inputSize.lower()
87 | value = re.findall('\d+', getSize)
88 | digitValue = lambda nums: int(''.join(str(i) for i in value))
89 |
90 | if getSize.isdigit():
91 | getSize = ("ram://%s") % getSize
92 | elif re.findall('m', getSize):
93 | getSize = ("ram://%s") % str(digitValue(value) * 2048)
94 | elif re.findall('g', getSize):
95 | getSize = ("ram://%s") % str(digitValue(value) * 1024 * 2048)
96 | else:
97 | sys.exit('Unable to convert %s' % inputSize )
98 |
99 | cmd_create = ["/usr/bin/hdiutil", "attach", "-nomount", getSize]
100 | proc = subprocess.Popen(cmd_create, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
101 | (output, error_output) = proc.communicate()
102 | blockDevice = output.split('\n')
103 | blockDevice = " ".join(blockDevice).strip()
104 |
105 | cmd_format = ["/usr/sbin/diskutil", "eraseVolume", inputFilesystem.strip(), "VOLINRAM", blockDevice]
106 | proc = subprocess.Popen(cmd_format, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
107 | (output, error_output) = proc.communicate()
108 |
109 | items = []
110 | item = {}
111 | item['title'] = DiskInfo(blockDevice).MountPoint
112 | item['path'] = DiskInfo(blockDevice).MountPoint
113 | items.append(item)
114 | print json.dumps(items)
115 |
116 |
117 | def listFilesystems():
118 | cmd_list_fs = ["/usr/sbin/diskutil", "listFilesystems"]
119 | proc = subprocess.Popen(cmd_list_fs, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
120 | (output, error_output) = proc.communicate()
121 | output = output.split('\n')[9:]
122 | listFilesystems = []
123 | for row in output:
124 | row = row.strip()
125 | match = re.search("\(or\)", row, re.I | re.S | re.M)
126 | if match or row == "" or row[0] == "Free Space":
127 | continue
128 | row = row.split(' ')
129 | listFilesystems.append(row[0])
130 | return listFilesystems
131 |
132 | def main():
133 | inputArguments = json.loads(sys.argv[1])
134 | volumeSize = inputArguments['volumeSize']
135 | filesystemType = inputArguments['filesystemType']
136 | if len(volumeSize) < 2:
137 | itemsError = []
138 | itemError = {}
139 | itemError['title'] = "Unknown Disk Size"
140 | itemsError.append(itemError)
141 | print json.dumps(itemsError)
142 | else:
143 | createVolume(volumeSize, filesystemType)
144 |
145 |
146 | if __name__ == '__main__':
147 | main()
148 |
--------------------------------------------------------------------------------