diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/Info.plist b/extras/automator-workflows/Open Terminus here.workflow/Contents/Info.plist new file mode 100644 index 00000000..182cb2c3 --- /dev/null +++ b/extras/automator-workflows/Open Terminus here.workflow/Contents/Info.plist @@ -0,0 +1,31 @@ + + + + + NSServices + + + NSBackgroundColorName + background + NSIconName + NSActionTemplate + NSMenuItem + + default + Open Terminus here + + NSMessage + runWorkflowAsService + NSRequiredContext + + NSApplicationIdentifier + com.apple.finder + + NSSendFileTypes + + public.item + + + + + diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/QuickLook/Thumbnail.png b/extras/automator-workflows/Open Terminus here.workflow/Contents/QuickLook/Thumbnail.png new file mode 100644 index 00000000..51f003b4 Binary files /dev/null and b/extras/automator-workflows/Open Terminus here.workflow/Contents/QuickLook/Thumbnail.png differ diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeDirectory b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeDirectory new file mode 100644 index 00000000..54c73fc9 Binary files /dev/null and b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeDirectory differ diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements new file mode 100644 index 00000000..d7b287c4 Binary files /dev/null and b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements differ diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements-1 b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements-1 new file mode 100644 index 00000000..e2274a4c Binary files /dev/null and b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeRequirements-1 differ diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeResources b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeResources new file mode 100644 index 00000000..0c881002 --- /dev/null +++ b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeResources @@ -0,0 +1,136 @@ + + + + + files + + files2 + + QuickLook/Thumbnail.png + + hash + + tv0Qtgo8zZ9+sQPQDNdKJHm7jeQ= + + hash2 + + 8nlfnBbkORcam9cE84KuxM9Lgf6hYU0jehepX8sSNDU= + + + document.wflow + + cdhash + + VK77ipNZktBsDCcUfnfht774juM= + + requirement + identifier document and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = V4JSMC46SY + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeSignature b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeSignature new file mode 100644 index 00000000..3e8d8d74 Binary files /dev/null and b/extras/automator-workflows/Open Terminus here.workflow/Contents/_CodeSignature/CodeSignature differ diff --git a/extras/automator-workflows/Open Terminus here.workflow/Contents/document.wflow b/extras/automator-workflows/Open Terminus here.workflow/Contents/document.wflow new file mode 100644 index 00000000..7d657c80 --- /dev/null +++ b/extras/automator-workflows/Open Terminus here.workflow/Contents/document.wflow @@ -0,0 +1,226 @@ + + + + + AMApplicationBuild + 444.38 + AMApplicationVersion + 2.9 + AMDocumentVersion + 2 + actions + + + action + + AMAccepts + + Container + List + Optional + + Types + + com.apple.cocoa.string + + + AMActionVersion + 2.0.3 + AMApplication + + Automator + + AMParameterProperties + + COMMAND_STRING + + CheckedForUserDefaultShell + + inputMethod + + shell + + source + + + AMProvides + + Container + List + Types + + com.apple.cocoa.string + + + ActionBundlePath + /System/Library/Automator/Run Shell Script.action + ActionName + Run Shell Script + ActionParameters + + COMMAND_STRING + /Applications/Terminus.app/Contents/MacOS/terminus open "$1" + CheckedForUserDefaultShell + + inputMethod + 1 + shell + /bin/sh + source + + + BundleIdentifier + com.apple.RunShellScript + CFBundleVersion + 2.0.3 + CanShowSelectedItemsWhenRun + + CanShowWhenRun + + Category + + AMCategoryUtilities + + Class Name + RunShellScriptAction + InputUUID + CDBAB8D4-B8B8-4FBB-9115-B4082FB99E1C + Keywords + + Shell + Script + Command + Run + Unix + + OutputUUID + 96B5890B-A95F-4BF2-8E5A-38E07A849C33 + UUID + 62251AFB-502C-4EA0-821C-D9B8CA96E6EE + UnlocalizedApplications + + Automator + + arguments + + 0 + + default value + 0 + name + inputMethod + required + 0 + type + 0 + uuid + 0 + + 1 + + default value + + name + source + required + 0 + type + 0 + uuid + 1 + + 2 + + default value + + name + CheckedForUserDefaultShell + required + 0 + type + 0 + uuid + 2 + + 3 + + default value + + name + COMMAND_STRING + required + 0 + type + 0 + uuid + 3 + + 4 + + default value + /bin/sh + name + shell + required + 0 + type + 0 + uuid + 4 + + + isViewVisible + + location + 529.000000:305.000000 + nibPath + /System/Library/Automator/Run Shell Script.action/Contents/Resources/Base.lproj/main.nib + + isViewVisible + + + + connectors + + workflowMetaData + + applicationBundleID + com.apple.finder + applicationBundleIDsByPath + + /System/Library/CoreServices/Finder.app + com.apple.finder + + applicationPath + /System/Library/CoreServices/Finder.app + applicationPaths + + /System/Library/CoreServices/Finder.app + + inputTypeIdentifier + com.apple.Automator.fileSystemObject + outputTypeIdentifier + com.apple.Automator.nothing + presentationMode + 15 + processesInput + 0 + serviceApplicationBundleID + com.apple.finder + serviceApplicationPath + /System/Library/CoreServices/Finder.app + serviceInputTypeIdentifier + com.apple.Automator.fileSystemObject + serviceOutputTypeIdentifier + com.apple.Automator.nothing + serviceProcessesInput + 0 + systemImageName + NSActionTemplate + useAutomaticInputType + 0 + workflowTypeIdentifier + com.apple.Automator.servicesMenu + + + diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/Info.plist b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/Info.plist new file mode 100644 index 00000000..569b3e8e --- /dev/null +++ b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/Info.plist @@ -0,0 +1,31 @@ + + + + + NSServices + + + NSBackgroundColorName + background + NSIconName + NSActionTemplate + NSMenuItem + + default + Paste path into Terminus + + NSMessage + runWorkflowAsService + NSRequiredContext + + NSApplicationIdentifier + com.apple.finder + + NSSendFileTypes + + public.item + + + + + diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/QuickLook/Thumbnail.png b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/QuickLook/Thumbnail.png new file mode 100644 index 00000000..51f003b4 Binary files /dev/null and b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/QuickLook/Thumbnail.png differ diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeDirectory b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeDirectory new file mode 100644 index 00000000..11741774 Binary files /dev/null and b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeDirectory differ diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements new file mode 100644 index 00000000..7470cb46 Binary files /dev/null and b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements differ diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements-1 b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements-1 new file mode 100644 index 00000000..ecfbb68b Binary files /dev/null and b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeRequirements-1 differ diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeResources b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeResources new file mode 100644 index 00000000..1bed7a73 --- /dev/null +++ b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeResources @@ -0,0 +1,136 @@ + + + + + files + + files2 + + QuickLook/Thumbnail.png + + hash + + tv0Qtgo8zZ9+sQPQDNdKJHm7jeQ= + + hash2 + + 8nlfnBbkORcam9cE84KuxM9Lgf6hYU0jehepX8sSNDU= + + + document.wflow + + cdhash + + x6j3FhtlZlqVwCjiTDDdZxRQkDk= + + requirement + identifier document and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = V4JSMC46SY + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeSignature b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeSignature new file mode 100644 index 00000000..9a3b9467 Binary files /dev/null and b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/_CodeSignature/CodeSignature differ diff --git a/extras/automator-workflows/Paste path into Terminus.workflow/Contents/document.wflow b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/document.wflow new file mode 100644 index 00000000..7d35eafe --- /dev/null +++ b/extras/automator-workflows/Paste path into Terminus.workflow/Contents/document.wflow @@ -0,0 +1,226 @@ + + + + + AMApplicationBuild + 444.38 + AMApplicationVersion + 2.9 + AMDocumentVersion + 2 + actions + + + action + + AMAccepts + + Container + List + Optional + + Types + + com.apple.cocoa.string + + + AMActionVersion + 2.0.3 + AMApplication + + Automator + + AMParameterProperties + + COMMAND_STRING + + CheckedForUserDefaultShell + + inputMethod + + shell + + source + + + AMProvides + + Container + List + Types + + com.apple.cocoa.string + + + ActionBundlePath + /System/Library/Automator/Run Shell Script.action + ActionName + Run Shell Script + ActionParameters + + COMMAND_STRING + echo -n $1 | /Applications/Terminus.app/Contents/MacOS/terminus paste --escape + CheckedForUserDefaultShell + + inputMethod + 1 + shell + /bin/sh + source + + + BundleIdentifier + com.apple.RunShellScript + CFBundleVersion + 2.0.3 + CanShowSelectedItemsWhenRun + + CanShowWhenRun + + Category + + AMCategoryUtilities + + Class Name + RunShellScriptAction + InputUUID + CDBAB8D4-B8B8-4FBB-9115-B4082FB99E1C + Keywords + + Shell + Script + Command + Run + Unix + + OutputUUID + 96B5890B-A95F-4BF2-8E5A-38E07A849C33 + UUID + 62251AFB-502C-4EA0-821C-D9B8CA96E6EE + UnlocalizedApplications + + Automator + + arguments + + 0 + + default value + 0 + name + inputMethod + required + 0 + type + 0 + uuid + 0 + + 1 + + default value + + name + source + required + 0 + type + 0 + uuid + 1 + + 2 + + default value + + name + CheckedForUserDefaultShell + required + 0 + type + 0 + uuid + 2 + + 3 + + default value + + name + COMMAND_STRING + required + 0 + type + 0 + uuid + 3 + + 4 + + default value + /bin/sh + name + shell + required + 0 + type + 0 + uuid + 4 + + + isViewVisible + + location + 529.000000:305.000000 + nibPath + /System/Library/Automator/Run Shell Script.action/Contents/Resources/Base.lproj/main.nib + + isViewVisible + + + + connectors + + workflowMetaData + + applicationBundleID + com.apple.finder + applicationBundleIDsByPath + + /System/Library/CoreServices/Finder.app + com.apple.finder + + applicationPath + /System/Library/CoreServices/Finder.app + applicationPaths + + /System/Library/CoreServices/Finder.app + + inputTypeIdentifier + com.apple.Automator.fileSystemObject + outputTypeIdentifier + com.apple.Automator.nothing + presentationMode + 15 + processesInput + 0 + serviceApplicationBundleID + com.apple.finder + serviceApplicationPath + /System/Library/CoreServices/Finder.app + serviceInputTypeIdentifier + com.apple.Automator.fileSystemObject + serviceOutputTypeIdentifier + com.apple.Automator.nothing + serviceProcessesInput + 0 + systemImageName + NSActionTemplate + useAutomaticInputType + 0 + workflowTypeIdentifier + com.apple.Automator.servicesMenu + + + diff --git a/clink/CHANGES b/extras/clink/CHANGES similarity index 100% rename from clink/CHANGES rename to extras/clink/CHANGES diff --git a/clink/LICENSE b/extras/clink/LICENSE similarity index 100% rename from clink/LICENSE rename to extras/clink/LICENSE diff --git a/clink/clink.bat b/extras/clink/clink.bat similarity index 100% rename from clink/clink.bat rename to extras/clink/clink.bat diff --git a/clink/clink.html b/extras/clink/clink.html similarity index 100% rename from clink/clink.html rename to extras/clink/clink.html diff --git a/clink/clink.lua b/extras/clink/clink.lua similarity index 100% rename from clink/clink.lua rename to extras/clink/clink.lua diff --git a/clink/clink_dll_x64.dll b/extras/clink/clink_dll_x64.dll similarity index 100% rename from clink/clink_dll_x64.dll rename to extras/clink/clink_dll_x64.dll diff --git a/clink/clink_dll_x86.dll b/extras/clink/clink_dll_x86.dll similarity index 100% rename from clink/clink_dll_x86.dll rename to extras/clink/clink_dll_x86.dll diff --git a/clink/clink_inputrc_base b/extras/clink/clink_inputrc_base similarity index 100% rename from clink/clink_inputrc_base rename to extras/clink/clink_inputrc_base diff --git a/clink/clink_x64.exe b/extras/clink/clink_x64.exe similarity index 100% rename from clink/clink_x64.exe rename to extras/clink/clink_x64.exe diff --git a/clink/clink_x86.exe b/extras/clink/clink_x86.exe similarity index 100% rename from clink/clink_x86.exe rename to extras/clink/clink_x86.exe diff --git a/clink/profile/.history b/extras/clink/profile/.history similarity index 100% rename from clink/profile/.history rename to extras/clink/profile/.history diff --git a/clink/profile/settings b/extras/clink/profile/settings similarity index 100% rename from clink/profile/settings rename to extras/clink/profile/settings diff --git a/package.json b/package.json index 0d9e86af..3a8b08c9 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ ], "extraResources": [ "builtin-plugins", - "clink" + "extras" ], "win": { "icon": "./build/windows/icon.ico", diff --git a/terminus-settings/src/components/settingsTab.component.pug b/terminus-settings/src/components/settingsTab.component.pug index f4d2f4c5..2f593f4d 100644 --- a/terminus-settings/src/components/settingsTab.component.pug +++ b/terminus-settings/src/components/settingsTab.component.pug @@ -19,6 +19,14 @@ ngb-tabset.vertical(type='pills', [activeId]='activeTab') i.fa.fa-bug span Report a problem + .form-line(*ngIf='!automatorWorkflowsInstalled') + .header + .title Finder context menu items + .description Allows quickly opening a terminal in the selected folder + button.btn.btn-primary((click)='installAutomatorWorkflows()') + i.fa.fa-check + span Install + .form-line .header .title Theme diff --git a/terminus-settings/src/components/settingsTab.component.ts b/terminus-settings/src/components/settingsTab.component.ts index feaaccde..23fbbdbe 100644 --- a/terminus-settings/src/components/settingsTab.component.ts +++ b/terminus-settings/src/components/settingsTab.component.ts @@ -1,4 +1,7 @@ import * as yaml from 'js-yaml' +import * as path from 'path' +import * as fs from 'mz/fs' +import { exec } from 'mz/child_process' import { Subscription } from 'rxjs' import { Component, Inject, Input } from '@angular/core' import { ElectronService, DockingService, ConfigService, IHotkeyDescription, HotkeyProvider, BaseTabComponent, Theme, HostAppService, Platform, HomeBaseService } from 'terminus-core' @@ -21,7 +24,11 @@ export class SettingsTabComponent extends BaseTabComponent { Platform = Platform configDefaults: any configFile: string + automatorWorkflowsInstalled = false private configSubscription: Subscription + private automatorWorkflows = ['Open Terminus here.workflow', 'Paste path into Terminus.workflow'] + private automatorWorkflowsLocation: string + private automatorWorkflowsDestination: string constructor ( public config: ConfigService, @@ -45,6 +52,19 @@ export class SettingsTabComponent extends BaseTabComponent { this.configSubscription = config.changed$.subscribe(() => { this.configFile = config.readRaw() }) + + this.automatorWorkflowsLocation = path.join( + path.dirname(path.dirname(this.electron.app.getPath('exe'))), + 'Resources', + 'extras', + 'automator-workflows', + ) + + this.automatorWorkflowsDestination = path.join(process.env.HOME, 'Library', 'Services') + } + + async ngOnInit () { + this.automatorWorkflowsInstalled = await fs.exists(path.join(this.automatorWorkflowsDestination, this.automatorWorkflows[0])) } getRecoveryToken (): any { @@ -75,4 +95,11 @@ export class SettingsTabComponent extends BaseTabComponent { return false } } + + async installAutomatorWorkflows () { + for (let wf of this.automatorWorkflows) { + await exec(`cp -r "${this.automatorWorkflowsLocation}/${wf}" "${this.automatorWorkflowsDestination}"`) + } + this.automatorWorkflowsInstalled = true + } } diff --git a/terminus-terminal/src/shells/windowsStock.ts b/terminus-terminal/src/shells/windowsStock.ts index cb81d60b..7f4b39d4 100644 --- a/terminus-terminal/src/shells/windowsStock.ts +++ b/terminus-terminal/src/shells/windowsStock.ts @@ -27,6 +27,7 @@ export class WindowsStockShellsProvider extends ShellProvider { path.join( path.dirname(this.electron.app.getPath('exe')), 'resources', + 'extras', 'clink', `clink_${process.arch}.exe`, ),