diff --git a/.github/workflows/script-commands.yml b/.github/workflows/script-commands.yml index 8514e4a58..cd5dea05f 100644 --- a/.github/workflows/script-commands.yml +++ b/.github/workflows/script-commands.yml @@ -3,19 +3,25 @@ name: Set as Executable and Generate Documentation on: push: branches: [master] + paths-ignore: + - commands/README.md + - commands/extensions.json jobs: scriptCommands: - runs-on: macos-latest + runs-on: macos-15 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable + - name: Setup Xcode + uses: raycast/github-actions/setup-xcode@xcode-16.1.x + + - name: Setup GIT + uses: raycast/github-actions/setup-git@v1.1.0 - name: Build Toolkit run: | @@ -29,20 +35,27 @@ jobs: run: | make gen-docs-and-commit - - name: Push changes + - name: Rebase + if: success() + run: git pull origin ${{ github.ref }} --autostash --rebase -X ours + + - name: Push if: success() uses: ad-m/github-push-action@master with: - github_token: ${{ secrets.RAYCAST_BOT_ACCESS_TOKEN }} branch: ${{ github.ref }} + github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - name: Re-pull on failure + - name: Notify Failure if: failure() - run: git pull origin ${{ github.ref }} --autostash --rebase -X ours - - - name: Re-push on failure - if: failure() - uses: ad-m/github-push-action@master + uses: edge/simple-slack-notify@master with: - branch: ${{ github.ref }} - github_token: ${{ secrets.GITHUB_TOKEN }} + color: "danger" + text: ":no_entry_sign: ${env.GITHUB_WORKFLOW} has failed" + fields: | + [ + { "title": "Action logs:", "value": "${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}"}, + { "title": "Commit:", "value": "${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}/commit/${ env.GITHUB_SHA }"} + ] + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_STREAM_INFRA_CHANNEL_WEBHOOK_URL }} diff --git a/Makefile b/Makefile index 8775b77df..e7fab3f56 100644 --- a/Makefile +++ b/Makefile @@ -37,3 +37,6 @@ lint: fix: swiftlint --fix + +open: + open -a /Applications/Xcode.app $(TOOLKIT_PATH) diff --git a/README.md b/README.md index 13ef5b05d..fcccd6f14 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@
- GitHub contributors + GitHub contributors - Twitter Follow + Twitter Follow
@@ -18,7 +18,9 @@ [Raycast](https://raycast.com/) lets you control your tools with a few keystrokes and installing script commands makes it possible to execute commands from anywhere on your desktop. They are a great way to speed up every-day tasks such as converting data, opening bookmarks or triggering dev workflows. This repository contains some example scripts as well as links to our community commands and documentation to write your own ones. -🚨 For anything that is not related to script commands, please [send us an email](feedback@raycast.com), use the feedback command within Raycast, or join the [Slack community](https://www.raycast.com/community). +**✨ Looking to build richer extensions?** Check out the Extensions API [here](https://github.com/raycast/extensions). + +🚨 For anything that is not related to script commands, please [send us an email](mailto:feedback@raycast.com), use the feedback command within Raycast, or join the [Slack community](https://www.raycast.com/community).

@@ -32,11 +34,15 @@ To install new commands, follow these steps: -1. Choose your script from the [community repo](https://github.com/raycast/script-commands/tree/master/commands#apps) and save them into a new directory (alternatively, you can use the [_enabled-commands](https://github.com/raycast/script-commands/tree/master/_enabled-commands) folder for this). -2. Open the Extensions tab in the Raycast preferences -3. Click the plus button -4. Click `Add Script Directory` -5. Select directories containing your Script Commands +1. Choose a script from the [community repo](https://github.com/raycast/script-commands/tree/master/commands#apps) and save it into a new directory. + + Scripts containing the word `.template.` in the filename require some values to be set (check [the troubleshooting section](#troubleshooting-and-faqs) for more information). + + Alternatively, instead of creating a new directory you can reuse the repo's [`_enable-commands` folder](https://github.com/raycast/script-commands/tree/master/_enabled-commands). +3. Open the Extensions tab in the Raycast preferences +4. Click the plus button +5. Click `Add Script Directory` +6. Select directories containing your Script Commands **💡 Hint:** We recommend that you don't directly load the community script directories into Raycast to avoid potential restructuring and new script commands suddenly appearing in Raycast. diff --git a/Tools/Toolkit/Package.resolved b/Tools/Toolkit/Package.resolved index a92b4e5ca..b28930b2b 100644 --- a/Tools/Toolkit/Package.resolved +++ b/Tools/Toolkit/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/apple/swift-argument-parser.git", "state": { "branch": null, - "revision": "9564d61b08a5335ae0a36f789a7d71493eacadfc", - "version": "0.3.2" + "revision": "d2930e8fcf9c33162b9fcc1d522bc975e2d4179b", + "version": "1.0.1" } }, { @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/apple/swift-tools-support-core.git", "state": { "branch": null, - "revision": "243beea77d20db46647a3de4765c96e2c801c7c7", - "version": "0.1.12" + "revision": "f9bbd6b80d67408021576adf6247e17c2e957d92", + "version": "0.2.4" } } ] diff --git a/Tools/Toolkit/Package.swift b/Tools/Toolkit/Package.swift index 1cbc72245..2d91c0bc5 100644 --- a/Tools/Toolkit/Package.swift +++ b/Tools/Toolkit/Package.swift @@ -10,11 +10,11 @@ let package = Package( dependencies: [ .package( url: "https://github.com/apple/swift-tools-support-core.git", - .upToNextMinor(from: "0.1.11") + .upToNextMinor(from: "0.2.4") ), .package( url: "https://github.com/apple/swift-argument-parser.git", - .upToNextMinor(from: "0.3.0") + .upToNextMinor(from: "1.0.0") ), ], targets: [ diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Documentation/Documentation.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Documentation/Documentation.swift index 43c98f885..0d07a8739 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Documentation/Documentation.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Documentation/Documentation.swift @@ -117,7 +117,7 @@ private extension Documentation { contentString += .newLine contentString += .newLine + "| Icon | Title | Description | Author | Args | Templ | Lang |" - contentString += .newLine + "| ---- | ----- | ----------- | ------ | ---- | ----- | ---- |" + contentString += .newLine + "| :--: | ----- | ----------- | :----: | :--: | :---: | :--: |" for scriptCommand in group.scriptCommands.sorted() { contentString += scriptCommand.markdownDescription diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Stores/DataManager.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Stores/DataManager.swift index 9ffafed1d..9339abad9 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Stores/DataManager.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Stores/DataManager.swift @@ -48,6 +48,12 @@ public final class DataManager { total += 1 } + func addLanguage(_ language: String) { + data.languages.insert( + Language.Information(name: language) + ) + } + func loadContent() { if let byteString = try? fileSystem.readFileContents(extensionsPath) { let data = byteString.contents.data diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+Constants.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+Constants.swift index 171c279be..4558f2628 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+Constants.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+Constants.swift @@ -30,7 +30,7 @@ public extension Toolkit { static var information: (name: String, version: String) { ( name: "Raycast Toolkit", - version: "0.3.1" + version: "0.4.0" ) } diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+ReadContent.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+ReadContent.swift index d73994300..d8000d9f2 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+ReadContent.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Core/Toolkit/Toolkit+ReadContent.swift @@ -7,8 +7,10 @@ import Foundation import TSCBasic extension Toolkit { + typealias FolderContent = (scriptCommands: ScriptCommands, readmePath: String?, groupName: String) + @discardableResult - func readFolderContent(path: AbsolutePath, parentGroups: inout Groups, ignoreFilesInDir: Bool = false) throws -> ScriptCommands { + func readFolderContent(path: AbsolutePath, parentGroups: inout Groups, ignoreFilesInDir: Bool = false) throws -> FolderContent { var scriptCommands = ScriptCommands() for directory in onlyDirectories(at: path) { @@ -23,22 +25,34 @@ extension Toolkit { var subGroups = Groups() - let values = try readFolderContent(path: directory, parentGroups: &subGroups) + let (scriptCommands, readmePath, groupName) = try readFolderContent(path: directory, parentGroups: &subGroups) + + if groupName.isEmpty == false, groupName.lowercased() == group.name.lowercased() { + group.name = groupName + } - if values.isEmpty == false { - group.scriptCommands = values + if scriptCommands.isEmpty == false { + group.scriptCommands = scriptCommands } if subGroups.isEmpty == false { group.subGroups = subGroups } - if values.isEmpty == false || subGroups.isEmpty == false { + if let readmePath = readmePath { + group.readme = readmePath + } + + if scriptCommands.isEmpty == false || subGroups.isEmpty == false { parentGroups.append(group) } } let directoryFiles = onlyFiles(at: path) + + var groupName = "" + var readmePath: String? + for file in directoryFiles where directoryFiles.isEmpty == false { guard ignoreFilesInDir == false else { continue @@ -50,21 +64,37 @@ extension Toolkit { continue } - if var scriptCommand = readScriptCommand(from: file) { + if file.basenameWithoutExt.lowercased() == "readme" { + guard let fileContent = readContentFile(from: file), fileContent.count > 0 else { + continue + } + + let pathCount = dataManager.extensionsPathString.count + 1 + readmePath = String(file.pathString.dropFirst(pathCount)) + } else if var scriptCommand = readScriptCommand(from: file) { // This is to avoid data racing DispatchQueue.global(qos: .userInitiated).async { self.dataManager.increaseTotal() + self.dataManager.addLanguage(scriptCommand.language) } scriptCommand.configure( isExecutable: fileSystem.isExecutableFile(file) ) + if let packageName = scriptCommand.packageName { + groupName = packageName + } + scriptCommands.append(scriptCommand) } } - return scriptCommands + return ( + scriptCommands: scriptCommands, + readmePath: readmePath, + groupName: groupName + ) } func readContentFile(from path: AbsolutePath) -> String? { @@ -80,7 +110,7 @@ extension Toolkit { func extractGitDates(from filePath: AbsolutePath) -> [String]? { do { - let dates = try self.git.run( + let dates = try git.run( "log", "--format=%aI", "--follow", filePath.basename, path: filePath ) @@ -115,7 +145,6 @@ extension Toolkit { let filenameKey = ScriptCommand.CodingKeys.filename.rawValue let packageNameKey = ScriptCommand.CodingKeys.packageName.rawValue - // TODO: Use the content of dictionary to implement the validation var dictionary = readKeyValues(of: content) dictionary[filenameKey] = filename diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Models/Group.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Group.swift index 0d7d01e70..288c91759 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Models/Group.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Group.swift @@ -8,8 +8,9 @@ import Foundation typealias Groups = [Group] struct Group: Codable { - let name: String + var name: String let path: String + var readme: String? var scriptCommands: ScriptCommands = [] var subGroups: Groups? } diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language+Information.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language+Information.swift new file mode 100644 index 000000000..bbe8df004 --- /dev/null +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language+Information.swift @@ -0,0 +1,28 @@ +// +// MIT License +// Copyright (c) 2020-2021 Raycast. All rights reserved. +// + +extension Language { + typealias Informations = [Information] + + struct Information: Codable { + let name: String + let displayName: String + let icon: String? + + init(name: String) { + let language = Language(name) + + self.name = language.name + self.displayName = language.displayName + self.icon = language.icon + } + } +} + +extension Language.Information: Hashable { + func hash(into hasher: inout Hasher) { + hasher.combine(name) + } +} diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language.swift index 1a2944989..eee029a7c 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Models/Language.swift @@ -12,6 +12,7 @@ enum Language { case ruby case swift case node + case php case custom(String) init(_ rawValue: String) { @@ -20,7 +21,7 @@ enum Language { switch value { case "applescript", "osascript": self = .applescript - case "bash", "zsh": + case "bash", "zsh", "sh": self = .bash case "python", "python2", "python3": self = .python @@ -28,8 +29,10 @@ enum Language { self = .ruby case "swift": self = .swift - case "node", "js": + case "node", "js", "zx": self = .node + case "php": + self = .php default: self = .custom(value) } @@ -49,6 +52,8 @@ enum Language { return "icon-swift.png" case .node: return "icon-nodejs.png" + case .php: + return "icon-php.png" default: return nil } @@ -68,6 +73,8 @@ enum Language { return "Swift" case .node: return "Node" + case .php: + return "PHP" case .custom(let name): return name } diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Models/RaycastData.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Models/RaycastData.swift index 870f01b38..c78d8056f 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Models/RaycastData.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Models/RaycastData.swift @@ -10,6 +10,7 @@ struct RaycastData: Codable { var updatedAt: Date var totalScriptCommands: Int var metadata: [Metadata] + var languages: Set var isEmpty: Bool { groups.isEmpty @@ -22,6 +23,7 @@ struct RaycastData: Codable { case updatedAt case totalScriptCommands case metadata + case languages } init() { @@ -29,6 +31,7 @@ struct RaycastData: Codable { self.updatedAt = Date() self.totalScriptCommands = 0 self.metadata = [] + self.languages = [] } init(from decoder: Decoder) throws { @@ -36,6 +39,7 @@ struct RaycastData: Codable { groups = try container.decode(Groups.self, forKey: .groups) totalScriptCommands = try container.decode(Int.self, forKey: .totalScriptCommands) + languages = try container.decode(Set.self, forKey: .languages) if let value = try container.decodeIfPresent(String.self, forKey: .updatedAt) { let dateFormatter = DateFormatter() diff --git a/Tools/Toolkit/Sources/ToolkitLibrary/Models/ScriptCommand.swift b/Tools/Toolkit/Sources/ToolkitLibrary/Models/ScriptCommand.swift index c0e9b81aa..58265b460 100644 --- a/Tools/Toolkit/Sources/ToolkitLibrary/Models/ScriptCommand.swift +++ b/Tools/Toolkit/Sources/ToolkitLibrary/Models/ScriptCommand.swift @@ -175,7 +175,7 @@ extension ScriptCommand: MarkdownDescriptionProtocol { } if let value = self.details { - details = value + details = value.replacingOccurrences(of: "|", with: #"\|"#) } let language = Language(self.language).markdownDescription diff --git a/Tools/Toolkit/toolkit b/Tools/Toolkit/toolkit deleted file mode 120000 index a20c8ecf7..000000000 --- a/Tools/Toolkit/toolkit +++ /dev/null @@ -1 +0,0 @@ -.build/debug/toolkit \ No newline at end of file diff --git a/commands/README.md b/commands/README.md index 4bb1832c3..c50ff8db0 100644 --- a/commands/README.md +++ b/commands/README.md @@ -25,74 +25,110 @@ This repository contains sample commands and documentation to write your own one ### Categories +- [Ai](#ai) + - [Gemini](#gemini) - [Apps](#apps) - [Agenda](#agenda) - [Amphetamine](#amphetamine) + - [Baremetrics](#baremetrics) + - [Bartender](#bartender) - [Bear](#bear) + - [BusyCal](#busycal) + - [Chatgpt](#chatgpt) + - [Claude](#claude) - [Cleanshot](#cleanshot) - [Craft](#craft) + - [DND Me](#dnd-me) - [Deepl](#deepl) - - [Dnd Me](#dnd-me) + - [Devutils](#devutils) + - [Dictionary](#dictionary) + - [Downie](#downie) - [Espanso](#espanso) + - [Eudic](#eudic) - [Evernote](#evernote) + - [ExpressVPN](#expressvpn) - [Fantastical](#fantastical) - [Ferdi](#ferdi) - - [Hazeover](#hazeover) - - [Iconsur](#iconsur) - - [Iterm](#iterm) + - [Find My](#find-my) + - [Focus](#focus) + - [GoodLinks](#goodlinks) + - [HazeOver](#hazeover) + - [Hyper](#hyper) + - [Lungo](#lungo) - [Mail](#mail) - - [Meetingbar](#meetingbar) + - [Medo](#medo) + - [MeetingBar](#meetingbar) + - [MenubarX](#menubarx) + - [Message](#Message) - [Mullvad](#mullvad) - - [Noteplan3](#noteplan3) + - [NotePlan3](#noteplan3) - [Notes](#notes) - [Obsidian](#obsidian) - - [Openvpn](#openvpn) - - [Phpstorm](#phpstorm) + - [One Thing](#one-thing) + - [OpenVPN](#openvpn) + - [PhpStorm](#phpstorm) - [Plash](#plash) - [Playground](#playground) - [Pulse Secure](#pulse-secure) + - [Quip](#quip) + - [Raycast](#raycast) + - [Reminders](#reminders) - [Safari](#safari) - - [Script Kit](#script-kit) - [Session](#session) - - [Sidenotes](#sidenotes) + - [SideNotes](#sidenotes) - [Sip](#sip) - - [Spotify](#spotify) + - [Stickies](#stickies) + - [Sublime](#sublime) - [Surfshark](#surfshark) - [Tailscale](#tailscale) + - [Terminal Translate](#terminal-translate) - [Things](#things) + - [Timing](#timing) - [Todoist](#todoist) - [Translate Shell](#translate-shell) - [Trello](#trello) - - [Tunnelblick](#tunnelblick) + - [TunnelBlick](#tunnelblick) - [Viscosity](#viscosity) + - [WARP](#warp) + - [WebStorm](#webstorm) - [Wikipedia](#wikipedia) - [Y Pomodoro](#y-pomodoro) -- [Bookmarks](#bookmarks) + - [iTerm](#iterm) + - [iconsur](#iconsur) - [Browsing](#browsing) - [Communication](#communication) - [Cloudup](#cloudup) + - [DuckDuckGo Email Protection](#duckduckgo-email-protection) - [Emojis](#emojis) - [Gmail](#gmail) - [Google Meet](#google-meet) + - [Mail](#mail) - [Messenger](#messenger) - [Slack](#slack) - [Zoom](#zoom) - [Conversions](#conversions) - [Change Case](#change-case) +- [Culture](#culture) - [Dashboard](#dashboard) - [Countdowns](#countdowns) + - [Firebase](#firebase) + - [Mood Meter](#mood-meter) + - [Open Weather](#open-weather) +- [Dashboards](#dashboards) - [Developer Utils](#developer-utils) - [Aws](#aws) - [Brew](#brew) - [Cloudflare](#cloudflare) - [Docker](#docker) - [Git](#git) - - [Github](#github) - - [Gitlab](#gitlab) + - [GitHub](#github) + - [GitLab](#gitlab) - [Google](#google) - [Ip](#ip) + - [Minikube](#minikube) - [Sentry](#sentry) -- [Google Maps](#google-maps) + - [Vscode](#vscode) + - [Xcode](#xcode) - [Home](#home) - [Elgato](#elgato) - [Philips Hue](#philips-hue) @@ -101,29 +137,51 @@ This repository contains sample commands and documentation to write your own one - [Apple Music](#apple-music) - [Apple Tv](#apple-tv) - [Cmus](#cmus) + - [Endel](#endel) + - [Lowfi](#lowfi) + - [Sonos](#sonos) + - [Speaker Setup](#speaker-setup) - [Spotify](#spotify) + - [Tidal](#tidal) + - [foobar2000](#foobar2000) - [Navigation](#navigation) -- [Password Managers](#password-managers) - - [Bitwarden](#bitwarden) - [Productivity](#productivity) + - [Bitwarden](#bitwarden) - [Imgur](#imgur) - [Pomodoro](#pomodoro) - - [Stopwatch](#stopwatch) + - [Writing](#writing) + - [macOCR](#macocr) + - [stopwatch](#stopwatch) + - [tesseract](#tesseract) - [Remote Control](#remote-control) - - [Lg Tv](#lg-tv) - - [Samsung Tv](#samsung-tv) + - [Ddc](#ddc) + - [Arm64](#arm64) + - [X86](#x86) + - [Denon AVR](#denon-avr) + - [LG TV](#lg-tv) + - [Samsung TV](#samsung-tv) - [System](#system) - [Audio](#audio) - - [Vpn](#vpn) + - [Magic Keyboard Switcher](#magic-keyboard-switcher) + - [VPN](#vpn) + - [Vpnutil](#vpnutil) - [Web Searches](#web-searches) - - [Wordpress](#wordpress) + - [WordPress](#wordpress) + +## Ai + +#### Gemini + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Ask Gemini](ai/gemini/gemini.js) | Open Gemini in Chrome browser and submit a prompt with optional selected text as context | [Est7](https://github.com/est7) and [Nimo Beeren](https://github.com/nimobeeren) | ✅ | | | ## Apps #### Agenda | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Agenda Today Overview](apps/agenda/agenda-today.sh) | Opens Agenda - Today Overview | [Michael Ellis](https://github.com/mtellis2) | | | | | | [Create New On the Agenda Note](apps/agenda/agenda-new-note.sh) | Creates New Note and adds it to On the Agenda | [Michael Ellis](https://github.com/mtellis2) | ✅ | | | | | [On the Agenda Overview](apps/agenda/agenda-on-the-agenda.sh) | Opens Agenda - On the Agenda Overview | [Michael Ellis](https://github.com/mtellis2) | | | | @@ -131,14 +189,30 @@ This repository contains sample commands and documentation to write your own one #### Amphetamine | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [End Session](apps/amphetamine/amphetamine-off.applescript) | Stop Current Amphetamine Session | [James Lyons](https://github.com/jamesjlyons) | | | | | | [Start Default Session](apps/amphetamine/amphetamine-on.applescript) | Start Default Amphetamine Session | [James Lyons](https://github.com/jamesjlyons) | | | | +#### Baremetrics + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Annual Recurring Revenue](apps/baremetrics/get-arr.sh) | Display Annual Recurring Revenue (ARR) | [Valentin Chrétien](https://github.com/valentinchrt) | | | | + | | [Average Revenue Per User](apps/baremetrics/get-arpu.sh) | Display Average revenue per user (ARPU) | [Valentin Chrétien](https://github.com/valentinchrt) | | | | + | | [Lifetime Value](apps/baremetrics/get-ltv.sh) | Display Lifetime Value (LTV) | [Valentin Chrétien](https://github.com/valentinchrt) | | | | + | | [Monthly Recurring Revenue](apps/baremetrics/get-mrr.sh) | Display Monthly Recurring Revenue (MRR) | [Valentin Chrétien](https://github.com/valentinchrt) | | | | + | | [Revenue](apps/baremetrics/simple-dashboard.sh) | Display Revenue Dashboard | [Valentin Chrétien](https://github.com/valentinchrt) | | | | + +#### Bartender + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Search Bartender](apps/bartender/bartender-search.applescript) | Perform a quick search of Menu Bar Items, in Bartender 4 | Raycast | ✅ | | | + #### Bear | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Add Note](apps/bear/bear-add-note.sh) | Add a new note to Bear. | [Tanay Nistala](https://github.com/tanaynistala) | ✅ | | | | | [Open Note](apps/bear/bear-open-note.sh) | Open the specified note in Bear. | [Tanay Nistala](https://github.com/tanaynistala) | ✅ | | | | | [Open Tag](apps/bear/bear-open-tag.sh) | Open the specified tag in Bear. | [Tanay Nistala](https://github.com/tanaynistala) | ✅ | | | @@ -146,10 +220,28 @@ This repository contains sample commands and documentation to write your own one | | [Open Todos](apps/bear/bear-todo.sh) | Open the Todo section in Bear. | [Tanay Nistala](https://github.com/tanaynistala) | ✅ | | | | | [Search](apps/bear/bear-search.sh) | Search notes by keyword and/or tag in Bear. | [Tanay Nistala](https://github.com/tanaynistala) | ✅ | | | +#### BusyCal + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Create Event/Task](apps/busycal/new-busycal-event-or-task.applescript) | Creates new events or tasks in BusyCal. | [Annie Ma](www.anniema.co) | ✅ | | | + +#### Chatgpt + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [chatgpt](apps/chatgpt/chatgpt-open-safari.applescript) | Open chatgpt in safari | [gintonyc](https://raycast.com/gintonyc) | | | | + +#### Claude + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ✨ | [Ask Claude](apps/claude/claude.js) | Open Claude in Chrome browser and submit a prompt | [Nimo Beeren](https://github.com/nimobeeren) | ✅ | | | + #### Cleanshot | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Add Quick Access Overlay](apps/cleanshot/cleanshot-add-quick-access-overlay.sh) | Opens a new Quick Access Overlay with the specified image or video. | [CleanShot X](https://twitter.com/CleanShot_app) | ✅ | | | | | [Annotate](apps/cleanshot/cleanshot-annotate.sh) | Opens specified file in Annotate. | [CleanShot X](https://twitter.com/CleanShot_app) | ✅ | | | | | [Capture Area](apps/cleanshot/cleanshot-capture-area.sh) | Take a screenshot of a specific area on your screen. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | @@ -160,6 +252,7 @@ This repository contains sample commands and documentation to write your own one | | [Open from Clipboard](apps/cleanshot/cleanshot-open-from-clipboard.sh) | Open screenshot that is currently in the clipboard. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | | | [Pin to the Screen](apps/cleanshot/cleanshot-pin.sh) | Pin a screenshot to the screen. | [CleanShot X](https://twitter.com/CleanShot_app) | ✅ | | | | | [Record Screen](apps/cleanshot/cleanshot-record-screen.sh) | Start a screen recording and save it as a video or an optimized GIF file. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | + | | [Record Screen With Keystroke Pro](apps/cleanshot/cleanshot-record-screen-with-keystroke-pro.sh) | Start a screen recording with keystrokes using the Keystroke Pro app and save it as a video or an optimized GIF file. | [Danylo Zalizchuk](https://raycast.com/danulqua) | | | | | | [Restore Recently Closed File](apps/cleanshot/cleanshot-restore.sh) | Restore the recently closed file. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | | | [Scrolling Capture](apps/cleanshot/cleanshot-scrolling-capture.sh) | Capture any scrollable content. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | | | [Self-Timer](apps/cleanshot/cleanshot-self-timer.sh) | Take a screenshot after a specified delay to capture the perfect moment. | [CleanShot X](https://twitter.com/CleanShot_app) | | | | @@ -168,28 +261,79 @@ This repository contains sample commands and documentation to write your own one #### Craft | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Doc](apps/craft/craft-create-doc.template.sh) | Creates a doc in Craft | [James Lyons](https://github.com/jamesjlyons) | ✅ | ✅ | | | | [Search in Workspace](apps/craft/craft-search-workspace.template.sh) | Searches in Workspace in Craft | [James Lyons](https://github.com/jamesjlyons) | ✅ | ✅ | | +#### DND Me + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🔕 | [Start DND](apps/dnd-me/start-dnd-me.sh) | Starts DND via DND Me. The parameter has to be a menu item or slider equivalent: 15m, 30m, 1h, 2h, ..., 12h, next, next-hour, next-half-hour; it defaults to next. next-hour means the next 60m mark, next-half-hour means the next 30m mark and next means the first of the two. For example, if it's 9:22, next-hour means 10:00, next-half-hour means 9:30 and next means 9:30. | [Roland Leth](https://runtimesharks.com/projects/dnd-me) | ✅ | | | + | 🔔 | [Stop DND](apps/dnd-me/stop-dnd-me.sh) | Stops DND via DND Me. | [Roland Leth](https://runtimesharks.com/projects/dnd-me) | | | | + #### Deepl | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [DeepL App Translate](apps/deepl/deepl-app-translate.applescript) | Translate text in DeepL for Mac. Features options to input from the clipboard as well as automatically copy translation results. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | | | | | [DeepL Web Translate](apps/deepl/deepl-web-translate.sh) | Translate text on the DeepL website. Translates to a default language if no "to" argument is given. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | | | -#### Dnd Me - -| Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | 🔕 | [Start DND](apps/dnd-me/start-dnd-me.sh) | Starts DND via DND Me. The parameter has to be a menu item or slider equivalent: 15m, 30m, 1h, 2h, ..., 12h, next, next-hour, next-half-hour; it defaults to next. next-hour means the next 60m mark, next-half-hour means the next 30m mark and next means the first of the two. For example, if it's 9:22, next-hour means 10:00, next-half-hour means 9:30 and next means 9:30. | [Roland Leth](https://runtimesharks.com/projects/dnd-me) | ✅ | | | - | 🔔 | [Stop DND](apps/dnd-me/stop-dnd-me.sh) | Stops DND via DND Me. | [Roland Leth](https://runtimesharks.com/projects/dnd-me) | | | | +#### Devutils + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Backslash Escape/Unescape](apps/devutils/backslash.sh) | Escape (or unescape) backslashes in your current clipboard string | [DevUtils.app](https://devutils.app) | | | | + | | [Base64 Image Encode/Decode](apps/devutils/base64image.sh) | Decode the Base64 string in clipboard to an image (if it’s decodable) | [DevUtils.app](https://devutils.app) | | | | + | | [Base64 String Encode/Decode](apps/devutils/base64encode.sh) | Decode the Base64 string in clipboard (if it’s decodable) | [DevUtils.app](https://devutils.app) | | | | + | | [CSS Beautify/Minify](apps/devutils/cssformatter.sh) | Beautify or minify your current clipboard as CSS | [DevUtils.app](https://devutils.app) | | | | + | | [CSV to JSON](apps/devutils/csv2json.sh) | Convert your current clipboard from CSV to JSON | [DevUtils.app](https://devutils.app) | | | | + | | [Cron Job Parser](apps/devutils/cronparser.sh) | Parse the cron job expression in clipboard (if it’s a valid cron expression) | [DevUtils.app](https://devutils.app) | | | | + | | [ERB Beautify/Minify](apps/devutils/erbformatter.sh) | Beautify or minify your current clipboard as ERB | [DevUtils.app](https://devutils.app) | | | | + | | [HTML Beautify/Minify](apps/devutils/htmlformatter.sh) | Beautify or minify your current clipboard as HTML | [DevUtils.app](https://devutils.app) | | | | + | | [HTML Entity Encode/Decode](apps/devutils/htmlencode.sh) | Escape (or unescape) the HTML entities your current clipboard string | [DevUtils.app](https://devutils.app) | | | | + | | [HTML Preview](apps/devutils/htmlpreview.sh) | Show a HTML preview of your current clipboard string | [DevUtils.app](https://devutils.app) | | | | + | | [HTML to JSX](apps/devutils/html2jsx.sh) | Convert the HTML string in clipboard to JSX | [DevUtils.app](https://devutils.app) | | | | + | | [Hash Generator](apps/devutils/hashing.sh) | Calculate the hash of your current clipboard string | [DevUtils.app](https://devutils.app) | | | | + | | [JS Beautify/Minify](apps/devutils/jsformatter.sh) | Beautify or minify your current clipboard as JavaScript | [DevUtils.app](https://devutils.app) | | | | + | | [JSON Format/Validate](apps/devutils/jsonformatter.sh) | Format the JSON string currently in your clipboard (if it’s a valid JSON) | [DevUtils.app](https://devutils.app) | | | | + | | [JSON to CSV](apps/devutils/json2csv.sh) | Convert your current clipboard from JSON to CSV | [DevUtils.app](https://devutils.app) | | | | + | | [JSON to YAML](apps/devutils/json2yaml.sh) | Convert your current clipboard from JSON to YAML | [DevUtils.app](https://devutils.app) | | | | + | | [JWT Debugger](apps/devutils/jwt.sh) | Decode and verify the current JWT token in your clipboard | [DevUtils.app](https://devutils.app) | | | | + | | [LESS Beautify/Minify](apps/devutils/lessformatter.sh) | Beautify or minify your current clipboard as LESS | [DevUtils.app](https://devutils.app) | | | | + | | [Lorem Ipsum Generator](apps/devutils/loremipsum.sh) | Get some randomly generated lorem ipsum strings | [DevUtils.app](https://devutils.app) | | | | + | | [Markdown Preview](apps/devutils/markdownpreview.sh) | Preview the markdown string currently in your clipboard | [DevUtils.app](https://devutils.app) | | | | + | | [Number Base Converter](apps/devutils/numberbase.sh) | Convert numbers between bases (oct, hex, binary, etc.) | [DevUtils.app](https://devutils.app) | | | | + | | [QR Code Reader/Generator](apps/devutils/qrcode.sh) | Generate a QR code from your current clipboard string | [DevUtils.app](https://devutils.app) | | | | + | | [RegExp Tester](apps/devutils/regextester.sh) | Test your regular expression with a string and inspect matches, groups, etc. | [DevUtils.app](https://devutils.app) | | | | + | | [SCSS Beautify/Minify](apps/devutils/scssformatter.sh) | Beautify or minify your current clipboard as SCSS | [DevUtils.app](https://devutils.app) | | | | + | | [SQL Formatter](apps/devutils/sqlformatter.sh) | Format the SQL string currently in your clipboard | [DevUtils.app](https://devutils.app) | | | | + | | [String Case Converter](apps/devutils/stringcaseconverter.sh) | Convert a string in clipboard into various naming conventions | [DevUtils.app](https://devutils.app) | | | | + | | [String Inspector](apps/devutils/stringinspect.sh) | Inspect your current clipboard string (length, words count, unicode, etc.) | [DevUtils.app](https://devutils.app) | | | | + | | [Text Diff Checker](apps/devutils/textdiff.sh) | Compare two texts and find diff (per characters, words, lines, etc.) | [DevUtils.app](https://devutils.app) | | | | + | | [URL Encode/Decode](apps/devutils/urlencode.sh) | Decode the current URL string in your clipboard (if any) | [DevUtils.app](https://devutils.app) | | | | + | | [URL Parser](apps/devutils/querystringparser.sh) | Parse the URL string currently in your clipboard | [DevUtils.app](https://devutils.app) | | | | + | | [UUID/ULID Generate/Decode](apps/devutils/uuidtool.sh) | Decode the UUID in your clipboard (if any), or generate UUIDs | [DevUtils.app](https://devutils.app) | | | | + | | [Unix Time Converter](apps/devutils/unixtime.sh) | Parse and display UNIX the timestamp string currently in your clipboard | [DevUtils.app](https://devutils.app) | | | | + | | [XML Beautify/Minify](apps/devutils/xmlformatter.sh) | Beautify or minify your current clipboard as XML | [DevUtils.app](https://devutils.app) | | | | + | | [YAML to JSON](apps/devutils/yaml2json.sh) | Convert your current clipboard from YAML to JSON | [DevUtils.app](https://devutils.app) | | | | + +#### Dictionary + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Look up in Dictionary](apps/dictionary/look-up-in-dictionary.applescript) | Look up selected text in Dictionary | [yayiji](https://github.com/yayiji) | | | | + +#### Downie + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Download Video](apps/downie/download-video.sh) | Download video from Pasteboard link | [Clu Soh](https://twitter.com/designedbyclu) | | | | #### Espanso | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Text Expansion](apps/espanso/espanso-create-expansion.sh) | Add a text expansion to expanso | [Max Stoiber](https://github.com/mxstbr) | ✅ | | | | | [Disable Espanso](apps/espanso/disable-espanso.sh) | N/A | [es183923](https://github.com/es183923) | | | | | | [Enable Espanso](apps/espanso/enable-espanso.sh) | N/A | [es183923](https://github.com/es183923) | | | | @@ -197,63 +341,137 @@ This repository contains sample commands and documentation to write your own one | | [Start Espanso](apps/espanso/start-espanso.sh) | N/A | [es183923](https://github.com/es183923) | | | | | | [Stop Espanso](apps/espanso/stop-espanso.sh) | N/A | [es183923](https://github.com/es183923) | | | | +#### Eudic + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Look up Word](apps/eudic/look-up-in-eudic.applescript) | look up in eudic | [jingyi](https://jingyi.blog) | ✅ | | | + #### Evernote | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Evernote](apps/evernote/create-note.applescript) | Creates a new Evernote. | [Aaron Miller](https://github.com/aaronhmiller) | | | | | | [Create Evernote Paste Clipboard](apps/evernote/create-note-paste-clipboard.applescript) | Creates a new Evernote, pastes in the contents of the clipboard, and positions the cursor in the title area. | [Aaron Miller](https://github.com/aaronhmiller) | | | | +#### ExpressVPN + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Connect](apps/expressvpn/expressvpn-connect.applescript) | N/A | [Amir Hossein SamadiPour](https://github.com/SamadiPour) | | | | + | | [Disconnect](apps/expressvpn/expressvpn-disconnect.applescript) | N/A | [Amir Hossein SamadiPour](https://github.com/SamadiPour) | | | | + | | [Reconnect](apps/expressvpn/expressvpn-reconnect.applescript) | N/A | [Amir Hossein SamadiPour](https://github.com/SamadiPour) | | | | + #### Fantastical | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Event](apps/fantastical/create-event.applescript) | Create an event in Fantastical | [Robert Cooper](https://github.com/robertcoopercode) | ✅ | | | | | [Create Task](apps/fantastical/create-todo-in-fantastical.applescript) | Speed up setting reminders for Fantastical by invoking this script. | [Vardan Sawhney](https://github.com/commai) | ✅ | | | #### Ferdi | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Open Service by Index](apps/ferdi/ferdi-open-service-by-index.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Open Service by Name](apps/ferdi/ferdi-open-service-by-name.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | -#### Hazeover +#### Find My + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Find My Phone (Auto Sound)](apps/find-my/fmp.js) | N/A | Raycast | | | | + +#### Focus + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Open Focus Preferences](apps/focus/focus-preferences.sh) | Open focus preferences. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Start 25 minutes Focus Session](apps/focus/focus-start-session-25.sh) | Start a 25 minutes focus session. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Start Custom Break](apps/focus/focus-start-custom-break.sh) | Start a custom break. If you don't enter any values, it uses the last break duration. | [Ernest Ojeh](https://github.com/namzo) | ✅ | | | + | | [Start Custom Focus Session](apps/focus/focus-start-custom-session.sh) | Start a custom focus session. If you don't enter any values, it starts an untimed focus session. | [Ernest Ojeh](https://github.com/namzo) | ✅ | | | + | | [Start Focus Session (Focus)](apps/focus/focus-start-session.sh) | Start an untimed focus session. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Stop Break (Unbreak)](apps/focus/focus-stop-break.sh) | Stop break and continues the current focus session. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Stop Focus Session (Unfocus)](apps/focus/focus-stop-session.sh) | Stop the current focus session. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Take 5 Minutes Break](apps/focus/focus-start-break-5.sh) | Take 5 minutes break. | [Ernest Ojeh](https://github.com/namzo) | | | | + | | [Toggle Focus Session](apps/focus/focus-toggle-focus.sh) | Toggle between start session (untimed) and stop session. | [Ernest Ojeh](https://github.com/namzo) | | | | + +#### GoodLinks + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Open Last Unread Link](apps/goodlinks/goodlinks-last-unread-link.sh) | Open the last unread link in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + | | [Open Link](apps/goodlinks/goodlinks-open-link.sh) | Open a link in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | ✅ | | | + | | [Open Random Unread Link](apps/goodlinks/goodlinks-random-unread-link.sh) | Open a random unread link in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + | | [Save Link](apps/goodlinks/goodlinks-save-link.sh) | Saves a new link to GoodLinks | [Filip Chabik](https://github.com/hadret) | ✅ | | | + | | [Show Read List](apps/goodlinks/goodlinks-read-list.sh) | Show Read list in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + | | [Show Starred List](apps/goodlinks/goodlinks-starred-list.sh) | Show Starred list in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + | | [Show Tag](apps/goodlinks/goodlinks-tagged-links.sh) | Show links tagged with the specified tag in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | ✅ | | | + | | [Show Unread List](apps/goodlinks/goodlinks-unread-list.sh) | Show Unread list in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + | | [Show Untagged List](apps/goodlinks/goodlinks-untagged-list.sh) | Show Untagged list in the GoodLinks app | [Filip Chabik](https://github.com/hadret) | | | | + +#### HazeOver | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Set Intensity](apps/hazeover/hazeover-set-intensity.applescript) | Set dimming intensity of background windows. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | | [Toggle Dimming](apps/hazeover/hazeover-toggle-dimming.applescript) | Toggle dimming of all background windows. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | -#### Iconsur +#### Hyper | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | 🅱️ | [Change Application Icon](apps/iconsur/iconsur.sh) | Change App icons to match Big Sur | [StevenRCE0](https://github.com/StevenRCE0) | ✅ | | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Run Shell Command](apps/hyper/hyper-run-shell-command.applescript) | Run a terminal using Hyper | [Eliot Hertenstein](https://github.com/eIiot) | ✅ | | | -#### Iterm +#### Lungo | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Run Shell Command](apps/iterm/iterm-run-shell-command.applescript) | N/A | [Andrei Borisov](https://github.com/andreiborisov) | ✅ | | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Activate](apps/lungo/lungo-activate.sh) | Deactivate Lungo. | [Lungo](https://sindresorhus.com/lungo) | ✅ | | | + | | [Deactivate](apps/lungo/lungo-deactivate.sh) | Deactivate Lungo. | [Lungo](https://sindresorhus.com/lungo) | | | | + | | [Toggle](apps/lungo/lungo-toggle.sh) | Toggle Lungo. | [Lungo](https://sindresorhus.com/lungo) | ✅ | | | #### Mail | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [CaptchaFromMail](apps/mail/copy-captcha-from-mail.py) | Copy the captcha from the emlx file. | [RealTong](https://raycast.com/RealTong) | | | | | 📧 | [Copy Foreground Mail Deeplink](apps/mail/copy-foreground-mail-deeplink.applescript) | Copies the foreground Mail deeplink | [Jesse Claven](https://github.com/jesse-c) | | | | -#### Meetingbar +#### Medo | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Add Task](apps/medo/add-task.sh) | Add a new task | [Aayush ](https://github.com/Aayush9029) | ✅ | | | + | | [Medo Float](apps/medo/medo-float.sh) | Add a new task with priority | [Aayush ](https://github.com/Aayush9029) | | | | + | | [Medo Float Large](apps/medo/medo-float-large.sh) | Add a new task with priority | [Aayush ](https://github.com/Aayush9029) | | | | + | | [Medo Float Small](apps/medo/medo-float-small.sh) | Add a new task with priority | [Aayush ](https://github.com/Aayush9029) | | | | + +#### MeetingBar + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Meeting](apps/meetingbar/meetingbar-create-meeting.applescript) | Create a new meeting. | [Jakub Lanski](https://github.com/jaklan) | | | | | | [Join Meeting](apps/meetingbar/meetingbar-join-meeting.applescript) | Join the ongoing or upcoming meeting. | [Jakub Lanski](https://github.com/jaklan) | | | | +#### MenubarX + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Close Last Tab](apps/menubarx/close-last-menubarx-tab.sh) | Close last viewed tab in MenubarX | [Clu Soh](https://twitter.com/designedbyclu) | | | | + | | [Open Tabs](apps/menubarx/open-tab-in-menubar.applescript) | Open X Tab in your menubar | [Clu Soh](https://twitter.com/designedbyclu) | ✅ | | | + | | [Open in MenubarX](apps/menubarx/open-in-menubarx.sh) | Open Pasteboard link in MenubarX | [Clu Soh](https://twitter.com/designedbyclu) | | | | + +#### Message + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Copy Code](apps/Message/copycode.sh) | Copy verification code from a message. | [Fatpandac](https://github.com/Fatpandac) | | | | + #### Mullvad | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Connect](apps/mullvad/connect.sh) | Connect the Mullvad VPN tunnel using the most recent configuration settings. | [Phil Salant](https://github.com/PSalant726) | | | | | | [Connect to Location](apps/mullvad/location.sh) | Connect the Mullvad VPN tunnel using the specified location. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | | | [Disconnect](apps/mullvad/disconnect.sh) | Disconnect from the Mullvad VPN tunnel. | [Phil Salant](https://github.com/PSalant726) | | | | @@ -261,17 +479,17 @@ This repository contains sample commands and documentation to write your own one | | [Reconnect](apps/mullvad/reconnect.sh) | Force the client to reconnect to the Mullvad VPN tunnel. | [Phil Salant](https://github.com/PSalant726) | | | | | | [Search Countries, Cities, and Hostnames](apps/mullvad/search.sh) | Search the list of available entities to which a Mullvad VPN tunnel connection can be made. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | -#### Noteplan3 +#### NotePlan3 | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Append To Daily Note](apps/noteplan3/noteplan-append-daily-note.sh) | Append to daily note | [Göran Damberg](https://github.com/gdamberg) | ✅ | | | | | [New Note From Clipboard](apps/noteplan3/noteplan-new-note-from-clipboard.sh) | Create a new note from clipboard | [Göran Damberg](https://github.com/gdamberg) | ✅ | | | #### Notes | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Append Content From Clipboard](apps/notes/append-note-from-clipboard.applescript) | Script to append to an existing note content from clipboard. | [Ayoub Gharbi](https://github.com/ayoub-g) | ✅ | | | | | [Create Note](apps/notes/create-note.applescript) | Create a new Note | [Vardan Sawhney](https://github.com/commai) | ✅ | | | | | [Create Note From Clipboard](apps/notes/create-note-from-clipboard.applescript) | Create Note From Clipboard | [Ayoub Gharbi](https://github.com/ayoub-g) | ✅ | | | @@ -281,28 +499,35 @@ This repository contains sample commands and documentation to write your own one #### Obsidian | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Note](apps/obsidian/obsidian-create-note.template.sh) | Create a new note | [Yiyao Wei](https://github.com/HotThoughts) | ✅ | ✅ | | | | [Search in Vault](apps/obsidian/obsidian-search-vault.template.sh) | Search Obsidian Vault | [Yiyao Wei](https://github.com/HotThoughts) | ✅ | ✅ | | -#### Openvpn +#### One Thing | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Clear Text](apps/one-thing/one-thing-clear-text.sh) | Clear the text shown in One Thing app. | [One Thing](https://sindresorhus.com/one-thing) | | | | + | | [Set Text](apps/one-thing/one-thing-set-text.sh) | Set the text shown in One Thing app. | [One Thing](https://sindresorhus.com/one-thing) | ✅ | | | + +#### OpenVPN + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Connect OpenVPN](apps/openvpn/connect-openvpn.applescript) | Prepares OpenVPN Connect client to connect or reconnect. | [Aaron Miller](https://github.com/aaronhmiller) | | | | | | [Disconnect OpenVPN](apps/openvpn/disconnect-openvpn.applescript) | Disconnects the OpenVPN Connect client from VPN. | [Aaron Miller](https://github.com/aaronhmiller) | | | | | | [Quit OpenVPN](apps/openvpn/quit-openvpn.applescript) | Quits the OpenVPN Connect client. | [Aaron Miller](https://github.com/aaronhmiller) | | | | -#### Phpstorm +#### PhpStorm | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Update Recent Projects](apps/phpstorm/recent-projects.sh) | N/A | Raycast | | | | #### Plash | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Add Website](apps/plash/plash-add-website.sh) | Add a website to Plash. | [Plash](https://github.com/sindresorhus/Plash) | ✅ | | | | | [Next Website](apps/plash/plash-next-website.sh) | Switch to the next website in the list in Plash. | [Plash](https://github.com/sindresorhus/Plash) | | | | | | [Previous Website](apps/plash/plash-previous-website.sh) | Switch to the previous website in the list in Plash. | [Plash](https://github.com/sindresorhus/Plash) | | | | @@ -313,23 +538,42 @@ This repository contains sample commands and documentation to write your own one #### Playground | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🕊 | [Create Basic](apps/playground/open-new-playground.py) | Create and open a new basic Swift Playground | [Quentin Eude](https://github.com/qeude) | ✅ | | | | 🕊 | [Create View Based](apps/playground/open-new-view-playground.py) | Create and open a new view based Swift Playground | [Quentin Eude](https://github.com/qeude) | ✅ | | | #### Pulse Secure | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Connect / Reconnect](apps/pulse-secure/pulse-secure-connect.applescript) | Connect to the given / default connection with the given / default username. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Disconnect / Cancel](apps/pulse-secure/pulse-secure-disconnect.applescript) | Disconnect / cancel the active connection. | [Jakub Lanski](https://github.com/jaklan) | | | | | | [Resume](apps/pulse-secure/pulse-secure-resume.applescript) | Resume the suspended connection. | [Jakub Lanski](https://github.com/jaklan) | | | | | | [Suspend](apps/pulse-secure/pulse-secure-suspend.applescript) | Suspend the active connection. | [Jakub Lanski](https://github.com/jaklan) | | | | +#### Quip + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Set up Quip commands](apps/quip/set-up-quip-commands.py) | Create script commands for creating Quip documents, based on the configuration in quip_config.ini. | [diego_zamboni](https://raycast.com/diego_zamboni) | | | | + | | [{{commandtitle}}](apps/quip/quip-new.template.py) | Configure your Quip API token and other defaults in quip_config.ini | [zzamboni](https://raycast.com/zzamboni) | ✅ | ✅ | | + +#### Raycast + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🎉 | [Celebrate](apps/raycast/celebrate.sh) | Set Confetti to run for a number of times and during intervals | [Fatpandac](https://github.com/Fatpandac) | ✅ | | | + +#### Reminders + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Add Reminder](apps/reminders/reminders-create-reminder.sh) | Add a new reminder. | [Andrei Nedelcu](https://dinosaurgame.net) | ✅ | | | + #### Safari | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Add Item to Reading List](apps/safari/safari-create-reading-list-item.applescript) | Add a new Reading List item with the given URL. Allows a custom title to be specified. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | | [Clear Cache and Refresh Page](apps/safari/safari-clear-cache-reload.applescript) | This script clears cache and reloads the page of the frontmost Safari window. | [Aaron Miller](https://github.com/aaronhmiller) | | | | | | [Close All Tabs](apps/safari/safari-close-all-tabs.applescript) | Close all tabs in the frontmost window | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | @@ -337,51 +581,53 @@ This repository contains sample commands and documentation to write your own one | | [Close Other Tabs](apps/safari/safari-close-other-tabs.applescript) | Close all tabs besides the currently active tab. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | | [Close Tabs to the Left](apps/safari/safari-close-tabs-left.applescript) | Close all tabs to the left side of the currently active tab. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | | [Close Tabs to the Right](apps/safari/safari-close-tabs-right.applescript) | Close all tabs to the right side of the currently active tab. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | + | | [Download Current URL](apps/safari/safari-download-url.applescript) | Download the currently active tab's URL. | [Michael Bianco](https://github.com/iloveitaly) | | | | | | [Duplicate Tab](apps/safari/safari-duplicate-tab.applescript) | Duplicates and opens the currently active tab. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | + | | [Open Bing with Edge User-Agent](apps/safari/safari-bing-edge-user-agent.applescript) | Open Bing in Safari with Edge User-Agent | [smxl](https://github.com/smxl) | | | | | | [Open Safari URL in Chrome](apps/safari/safari-current-page-url-in-chrome.applescript) | Open current Safari URL in new tab in Chrome | [Dave Lehman](https://github.com/dlehman) | | | | | | [Open Safari URL in Firefox](apps/safari/safari-current-page-url-in-firefox.applescript) | Open current Safari URL in new tab in Firefox | [Dave Lehman](https://github.com/dlehman) | | | | -#### Script Kit - -| Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Import scripts from Script Kit](apps/script-kit/import-scripts-from-script-kit.py) | Convert all Script Kit scripts to Raycast Script Commands | [Achille Lacoin](https://github.com/pomdtr) | | | | - #### Session | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Abandon Session](apps/session/session-abandon.sh) | Starts a focus session in Session app | [James Lyons](https://github.com/jamesjlyons) | | | | | | [Finish Session](apps/session/session-finish.sh) | Finishes a focus session in Session app | [James Lyons](https://github.com/jamesjlyons) | | | | | | [Pause Session](apps/session/session-pause.sh) | Starts a focus session in Session app | [James Lyons](https://github.com/jamesjlyons) | | | | | | [Start Previous Session](apps/session/session-start-previous.sh) | Starts a focus session in Session app with the previous intent and duration | [James Lyons](https://github.com/jamesjlyons) | | | | | | [Start Session](apps/session/session-start-new.sh) | Starts a focus session in Session app | [James Lyons](https://github.com/jamesjlyons) | ✅ | | | -#### Sidenotes +#### SideNotes | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [SideNotes create](apps/sidenotes/sidenotes-create-note.applescript) | Create a new note within the selected or the first SideNotes folder. | [Marcel Bochtler](https://github.com/MarcelBochtler) | ✅ | | | #### Sip | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [ Add Color to History](apps/sip/sip-add-hex-color.sh) | Add a color to your Sip history. | [Sip](https://twitter.com/sip_app/) | ✅ | | | | | [Check Contrast](apps/sip/sip-check-contrast-hex.sh) | Open Sip Contrast Checker. | [Sip](https://twitter.com/sip_app/) | ✅ | | | | | [Open Contrast Checker](apps/sip/sip-open-check-contrast.sh) | Open Sip Contrast Checker. | [Sip](https://twitter.com/sip_app/) | | | | | | [Show Color Picker](apps/sip/sip-show-picker.sh) | Pick a color value from your screen. | [Sip](https://twitter.com/sip_app/) | | | | -#### Spotify +#### Stickies | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Create Spotify Command](apps/spotify/create-spotify-command.js) | Create Spotify Shortcut Command from the Spotify URL that's in your clipboard | [Nichlas W. Andersen](https://twitter.com/nichlaswa) | ✅ | | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [New Floating Sticky Note](apps/stickies/new-floating-sticky.applescript) | This script creates a new floating note in the Apple Stickies application | [Annie Ma](http://www.anniema.co/) | | | | + +#### Sublime + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Open with Sublime](apps/sublime/open-with-sublime.applescript) | Open currently focused directory in Sublime | [Rock Hu](https://twitter.com/0xRock) | | | | #### Surfshark | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Surfshark VPN Status](apps/surfshark/surfshark-vpn-status.sh) | Get Surfshark VPN status | [Jordi Clement](https://github.com/jordicl) | | | | | | [VPN Connect](apps/surfshark/surfshark-vpn-start.sh) | Start Surfshark VPN connection | [Jordi Clement](https://github.com/jordicl) | | | | | | [VPN Disconnect](apps/surfshark/surfshark-vpn-stop.sh) | Stop Surfshark VPN connection | [Jordi Clement](https://github.com/jordicl) | | | | @@ -389,32 +635,45 @@ This repository contains sample commands and documentation to write your own one #### Tailscale | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Connect](apps/tailscale/tailscale-connect.sh) | Connects to Tailscale | [Ross Zurowski](https://github.com/rosszurowski) | | | | | | [Disconnect](apps/tailscale/tailscale-disconnect.sh) | Disconnects from Tailscale | [Ross Zurowski](https://github.com/rosszurowski) | | | | | | [Get IP](apps/tailscale/tailscale-ip.sh) | Gets your private Tailscale IP | [Ross Zurowski](https://github.com/rosszurowski) | | | | - | | [Switch Account](apps/tailscale/tailscale-switch.sh) | Switches Tailscale networks | [Ross Zurowski](https://github.com/rosszurowski) | | | | + | | [Switch Account](apps/tailscale/tailscale-switch.sh) | Switches Tailscale networks | [Ross Zurowski](https://github.com/rosszurowski) and [Daniel Schoemer](https://github.com/quatauta) | | | | + +#### Terminal Translate + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📖 | [Translate](apps/terminal-translate/translate.sh) | Translate word or sentence. | [Fatpandac](https://github.com/Fatpandac) | ✅ | | | #### Things | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create To-Do](apps/things/things-create-todo.sh) | Create a new To-Do with title and optional deadline. | [Things](https://twitter.com/culturedcode/) | ✅ | | | | | [Current To-Do](apps/things/things-current-todo.applescript) | Show your current To-Do to stay focused. | [Things](https://twitter.com/culturedcode/) | | | | | | [Search To-Dos](apps/things/things-search-to-dos.sh) | Search To-Dos with a query. | [Things](https://twitter.com/culturedcode/) | ✅ | | | | | [Today](apps/things/things-today.applescript) | Get an overview of your completed tasks for today. | [Things](https://twitter.com/culturedcode/) | | | | +#### Timing + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Start Timer](apps/timing/timing-start-timer.js) | Start a timer | [Landen Danyluk](https://github.com/landendanyluk) | ✅ | | | + | | [Stop Timer](apps/timing/timing-stop-timer.js) | Stop the active timer | [Landen Danyluk](https://github.com/landendanyluk) | | | | + #### Todoist | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Create Task](apps/todoist/create-task.template.sh) | Creates Todoist task | [Faris Aziz](https://github.com/farisaziz12) | ✅ | ✅ | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Create Task](apps/todoist/create-task.template.sh) | Create Task | [Faris Aziz](https://github.com/farisaziz12) | ✅ | ✅ | | | | [Get Tasks](apps/todoist/get-tasks.template.sh) | Gets All Todoist tasks | [Faris Aziz](https://github.com/farisaziz12) | | ✅ | | #### Translate Shell | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🌍 | [Translate Shell](apps/translate-shell/translate-shell-language-pair.py) | Translate text using translate-shell. | [Marcel Bochtler](https://github.com/MarcelBochtler) | ✅ | | | | 📖 | [Translate to EN](apps/translate-shell/translate-to-en.sh) | Translate and copy brief translation to clipboard. | [tiancheng92](https://github.com/tiancheng92) | ✅ | | | | 📖 | [Translate to ZH](apps/translate-shell/translate-to-zh.sh) | Translate and copy brief translation to clipboard. | [tiancheng92](https://github.com/tiancheng92) | ✅ | | | @@ -422,13 +681,13 @@ This repository contains sample commands and documentation to write your own one #### Trello | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create Card](apps/trello/create-trello-card.template.py) | Create a new Trello card | [Michael Francis](https://github.com/mikefrancis) | ✅ | ✅ | | -#### Tunnelblick +#### TunnelBlick | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Tunnelblick: Connect](apps/tunnelblick/tunnelblick-connect.applescript) | Connect a VPN configuration. | [Achille Lacoin](https://github.com/pomdtr) | ✅ | | | | | [Tunnelblick: Connect All](apps/tunnelblick/tunnelblick-connect-all.applescript) | Connect all unconnected VPN configurations. | [Achille Lacoin](https://github.com/pomdtr) | | | | | | [Tunnelblick: Disconnect](apps/tunnelblick/tunnelblick-disconnect.applescript) | Disconnect a VPN configuration. | [Achille Lacoin](https://github.com/pomdtr) | ✅ | | | @@ -437,96 +696,147 @@ This repository contains sample commands and documentation to write your own one #### Viscosity | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Viscosity: Connect](apps/viscosity/viscosity-connect.applescript) | Connect a VPN viscosity configuration. | [Luigi Cardito (credits Achille Lacoin https://github.com/pomdtr)](https://github.com/lcardito) | ✅ | | | | | [Viscosity: Connect All](apps/viscosity/viscosity-connect-all.applescript) | Connect all unconnected VPN configurations. | [Luigi Cardito (credits Achille Lacoin https://github.com/pomdtr)](https://github.com/lcardito) | | | | | | [Viscosity: Disconnect](apps/viscosity/viscosity-disconnect.applescript) | Disconnect a VPN configuration. | [Luigi Cardito (credits Achille Lacoin https://github.com/pomdtr)](https://github.com/lcardito) | ✅ | | | | | [Viscosity: Disconnect All](apps/viscosity/viscosity-disconnect-all.applescript) | Disconnect all connected VPN configurations. | [Luigi Cardito (credits Achille Lacoin https://github.com/pomdtr)](https://github.com/lcardito) | | | | +#### WARP + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Connect](apps/warp/warp-start.sh) | Create a connection to WARP | [Sergey Fuksman](https://github.com/fuksman) | | | | + | | [Disconnect](apps/warp/warp-stop.sh) | Disconnect from WARP | [Sergey Fuksman](https://github.com/fuksman) | | | | + | | [Reauthenticate](apps/warp/warp-reauth.sh) | Force WARP reauthentication | [Daniils Petrovs](https://github.com/danirukun) | | | | + | | [Toggle WARP](apps/warp/warp-toggle.sh) | Toggle Connection | [Sergey Fuksman](https://github.com/fuksman) | | | | + | | [WARP Status](apps/warp/warp-status.sh) | Check WARP connection | [Sergey Fuksman](https://github.com/fuksman) | | | | + +#### WebStorm + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Open](apps/webstorm/open-workspace.template.sh) | Open WebStorm projects | [Daniel Stovv](https://github.com/stovv) | ✅ | ✅ | | + #### Wikipedia | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Wikipedia Search](apps/wikipedia/wikipedia-search.py) | Search Wikipedia and display the result in Raycast | [Juan I. Serra](https://twitter.com/jiserra) | ✅ | | | #### Y Pomodoro | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🍅 | [Pause](apps/y-pomodoro/pause.sh) | Pause active pomodoro timer using [y-pomodoro](https://github.com/jesse-c/y-pomodoro) | [Jesse Claven](https://github.com/jesse-c) | | | | | 🍅 | [Resume](apps/y-pomodoro/resume.sh) | Resume active pomodoro timer using [y-pomodoro](https://github.com/jesse-c/y-pomodoro) | [Jesse Claven](https://github.com/jesse-c) | | | | | 🍅 | [Show](apps/y-pomodoro/show.sh) | Show active pomodoro timer using [y-pomodoro](https://github.com/jesse-c/y-pomodoro) | [Jesse Claven](https://github.com/jesse-c) | | | | | 🍅 | [Start](apps/y-pomodoro/start.sh) | Start a pomodoro timer using [y-pomodoro](https://github.com/jesse-c/y-pomodoro) | [Jesse Claven](https://github.com/jesse-c) | | | | | 🍅 | [Stop](apps/y-pomodoro/stop.sh) | Stop active pomodoro timer using [y-pomodoro](https://github.com/jesse-c/y-pomodoro) | [Jesse Claven](https://github.com/jesse-c) | | | | -## Bookmarks +#### iTerm | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | 📜 | [Open Script Commands Repository](bookmarks/open-script-commands-repository.sh) | Open the GitHub repository for Script Commands provided by the community. | Raycast | | | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🤖 | [Open profile](apps/iterm/iterm-open-profile-in-new-window.applescript) | N/A | [sunrisewestern](https://github.com/sunrisewestern) | ✅ | | | + | | [Run Shell Command](apps/iterm/iterm-run-shell-command.applescript) | N/A | [Andrei Borisov](https://github.com/andreiborisov) | ✅ | | | + +#### iconsur + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🅱️ | [Change Application Icon](apps/iconsur/iconsur.sh) | Change App icons to match Big Sur | [StevenRCE0](https://github.com/StevenRCE0) | ✅ | | | ## Browsing | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🐔 | [Convert Twitter to Nitter](browsing/convert-twitter-to-nitter.js) | Convert Twitter link to Nitter | [cSharp](https://github.com/noidwasavailable) | | | | | 🧭 | [Copy Current Page URL](browsing/safari-current-page-url.sh) | This script copies URL of currently opened page in Safari into clipboard. | [Kirill Gorbachyonok](https://github.com/japanese-goblinn) | | | | | 🧭 | [Copy Current Page URL](browsing/chrome-current-page-url.sh) | This script copies URL of currently opened page in Google Chrome into clipboard. | [Jakub Lanski](https://github.com/jaklan) | | | | | 🧭 | [Copy Current Window URLs](browsing/safari-current-window-urls.applescript) | This script copies to clipboard all URLs from frontmost Safari window. | [Kirill Gorbachyonok](https://github.com/japanese-goblinn) | | | | + | | [Create Short URL](browsing/shlink-create-short-url.template.sh) | Create a short URL using Shlink | [Eliot Hertenstein](https://github.com/eIiot) | ✅ | ✅ | | + | 🥽 | [Current Website to Private Browser](browsing/to-private-browsing.sh) | Open the current site in a private browser | [raulanatol](https://github.com/raulanatol) | | | | | | [Go to Outline](browsing/go-to-outine.sh) | Open the website at Outline | [Ronan Rodrigo Nunes](https://ronanrodrigo.dev) | ✅ | | | + | 🌐 | [New Browser Window](browsing/new-browser-window.sh) | Open new window in default browser | [Levi Nelson](https://github.com/LeviticusNelson) | | | | + | 📚 | [Open Multiple Websites on Safari](browsing/open-multiple-websites-on-safari.template.sh) | Open multiple websites on Safari using list of URLs | [Yasutaka Nishii](https://github.com/ystknsh) | | ✅ | | + | 🤖 | [Open in guest profile](browsing/open-in-guest-profile.sh) | Open current website in guest profile/mode | [JD Solanki](https://github.com/jd-solanki) | | | | + | | [Open without CORS](browsing/open-chrome-without-cors.sh) | Open chrome with web security option disabled. | [Tahsin Yazkan](https://github.com/thsnyzkn) | | | | | | [Peek a link](browsing/peekalink.template.sh) | Use [Peekalink.io](https://peekalink.io) API to peek specified URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | ✅ | | | 🖼️ | [Screenshot Website](browsing/website-screenshots.sh) | Takes screenshots of the entered URL using [`pageres`](https://github.com/sindresorhus/pageres) and saves it to the Desktop. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 🔗 | [Shorten URL From Clipboard](browsing/shorten-url.sh) | Shorten the URL in your Clipboard with Tiny URL. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | + | | [Shorten URL from GitHub](browsing/git-io.sh) | Shorten any github.com URL | [Astrit](https://github.com/astrit) | | | | | 🔗 | [Shorten URL with Bitly](browsing/shorten-url-bitly.template.sh) | Transform the clipboard contents to a short Bitly URL | [Nitin Gupta](https://twitter.com/gniting) | | ✅ | | + | 🔗 | [Shorten URL with Emojis](browsing/short-url-emoji.sh) | Transform the clipboard contents to a short Emoji URL | [Samuel Henry](https://bne.sh) | | | | + | 📹 | [Youtube Shorts in video player](browsing/Youtube Shorts in video player.sh) | Opens current Youtube Shorts video in the normal video player by replacing "/shorts/" with "/v/" in the url. | [Kailash Yellareddy](https://github.com/kyellareddy) | | | | ## Communication | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🔐 | [2FA from iMessages](communication/imessage-2fa.sh) | Get most recent two-factor authentication code from iMessages. | [Caleb Stauffer](https://github.com/crstauf) and [Thiago Holanda](https://twitter.com/tholanda) | | | | + | 📱 | [Call with iPhone](communication/call-with-iphone.sh) | Place a telephone call via your iPhone on Wi-Fi. | [Alexander JH Steffen](https://github.com/alexjsteffen) | ✅ | | | | 🔐 | [Generate Passphrase](communication/xkcdpass.sh) | Use [xkcdpass](https://github.com/redacted/XKCD-password-generator) to create a passphrase. | [Caleb Stauffer](https://github.com/crstauf) | | | | + | 🤡 | [Let Me Google That](communication/let-me-google-that.sh) | Let Me Google That For You | [Leo Fritsch](https://github.com/leofritsch) | | | | | 🗣 | [Say](communication/say.sh) | Convert text to audible speech. | [Felipe Turcheti](https://felipeturcheti.com) | ✅ | | | | | [Share Secret from Clipboard](communication/share-secret-doppler.py) | Share secret securely using https://share.doppler.com/. | [Petr Nikolaev](https://github.com/PitNikola) | ✅ | | | #### Cloudup | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Paste](communication/cloudup/cloudup-paste.sh) | Upload clipboard contents to [Cloudup](https://cloudup.com/). | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Pick](communication/cloudup/cloudup-pick.sh) | Open file dialog and upload to [Cloudup](https://cloudup.com/). | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Upload](communication/cloudup/cloudup-upload.sh) | Upload path or URL in clipboard to [Cloudup](https://cloudup.com/). | [Caleb Stauffer](https://github.com/crstauf) | | | | +#### DuckDuckGo Email Protection + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Configure](communication/duckduckgo-email-protection/configure-@duck.com-script-command.applescript) | Use this script command to configure your @duck.com authorizationID | [Rediwed](github.com/Rediwed) | ✅ | | | + | | [Generate Unique Address](communication/duckduckgo-email-protection/generate-unique-email-address.applescript) | This script command generates a unique private @duck.com email address. | [Rediwed](github.com/Rediwed) | | | | + #### Emojis | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🎲 | [Random Emoji](communication/emojis/random-emoji.sh) | Copy a random emoji to the clipboard. | [Tomohiro Nishimura](https://github.com/Sixeight) | | | | | 📙 | [Search Emojis](communication/emojis/emojis-search.sh) | Search for emojis related to input. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 📙 | [Search and Copy First Related Emoji](communication/emojis/emoji-copy.sh) | Copy first emoji related to input. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | #### Gmail | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Gmail](communication/gmail/google-gmail.sh) | Open gmail.com in the default browser | [Michael Aigner](https://github.com/tonka3000) | | | | #### Google Meet | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Open Google Meet](communication/google-meet/meet.sh) | Start a Google Meet session | [Mujib Azizi](https://github.com/mujibazizi) | | | | +#### Mail + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ✉️ | [Open Most Recent Email](communication/mail/open-most-recent-email.applescript) | Open the last received email in your inbox in Mail.app | [Ben Yoon](https://github.com/benyn) | | | | + #### Messenger | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Open Conversation](communication/messenger/messenger-open-conversation.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | #### Slack | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ⏰ | [Add Reminder](communication/slack/add-slack-reminder.template.sh) | Create a Slack reminder | [Zeb Pykosz](https://github.com/zebapy) | ✅ | ✅ | | | | [Clear Slack DND](communication/slack/clear-slack-DND-status.sh) | Clear DND Status in Slack | [Sam Ching](https://github.com/samching) | | | | | 🧼 | [Clear Status](communication/slack/clear-slack-status.template.sh) | Clear your status in Slack. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | | | [Jump to...](communication/slack/slack-jump-to.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | + | | [Launch Dev Mode](communication/slack/slack-dev-mode.sh) | Open Slack with the Developer Menu enabled. ⌘⌥I to access the Developer Menu. If you find it's not working, quit Slack and run this command again. | [Cody Carrell](https://raycast.com/sourcecody) | | | | | | [Open Workspace by Index](communication/slack/slack-open-workspace-by-index.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Open Workspace by Name](communication/slack/slack-open-workspace-by-name.applescript) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Send Message in Channel](communication/slack/slack-send-message.applescript) | This script posts a message text to a slack channel and sets active status (defaults to random good morning message in #general) | [Faris Aziz](https://github.com/farisaziz12) | ✅ | | | @@ -538,23 +848,35 @@ This repository contains sample commands and documentation to write your own one #### Zoom | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Leave Meeting](communication/zoom/leave-meeting.applescript) | Leaves Current Zoom meeting | [Faris Aziz](https://github.com/farisaziz12) | | | | + | | [Rename Profile](communication/zoom/rename-profile.applescript) | Rename your profile in Zoom Meeting App (Mac Only) and cliclick. | [Leo Voon](https://github.com/leovoon) | ✅ | | | | | [Toggle Microphone](communication/zoom/toggle-mic.applescript) | Mute/Unmute your microphone in the current meeting | [Luigi Cardito](https://github.com/lcardito) and [Faris Aziz](https://github.com/farisaziz12) | | | | | | [Toggle Video](communication/zoom/toggle-video.applescript) | Show/Hide your microphone in the current meeting | [Luigi Cardito](https://github.com/lcardito) and [Faris Aziz](https://github.com/farisaziz12) | | | | ## Conversions | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📋 | [Clipboard to Markdown](conversions/clipboard-to-markdown.js) | Automatically take the content found in the clipboard and turn it into Markdown | [Alessandra Pereyra](https://github.com/alessandrapereyra) | | | | | 🎨 | [Color Conversion](conversions/color-conversion.sh) | Convert color formats (e.g. #FFEEFF -> rgba(255,238,255,1) | [quelhasu](https://github.com/quelhasu) | ✅ | | | | 🗂 | [Column to Comma](conversions/column-to-comma.sh) | Converts column to comma separated list. | Raycast | | | | | ⏱ | [Convert Epoch to Human-Readable Date](conversions/epoch-to-human-date.sh) | Convert epoch to human-readable date. | [Siyuan Zhang](https://github.com/kastnerorz) | ✅ | | | + | 📋 | [Convert Google Docs Rich Text HTML to Markdown](conversions/google-docs-to-markdown.sh) | A script to take the HTML pastboard type filled by google docs and convert it to nicely formatted markdown | [Michael Bianco](https://github.com/iloveitaly) | | | | | ⏱ | [Convert Human-Readable Date To Epoch](conversions/human-date-to-epoch.sh) | Convert human-readable date to timestamp epoch. | [Siyuan Zhang](https://github.com/kastnerorz) | ✅ | | | + | 🔄 | [Convert Markdown to Telegram Format](conversions/markdown-to-telegram.py) | Convert Markdown formatting to Telegram format, excluding processing inside code blocks or quotes | [Maxim Borzov](https://github.com/borzov) | | | | + | 📋 | [Convert Raw HTML to Rich Text on Clipboard](conversions/raw-html-to-rich-text-clipboard.sh) | This script will convert raw HTML on your clipboard to rich text. It requires pandoc to be installed on your system. | [Michael Bianco](https://github.com/iloveitaly) | | | | | 📹 | [Create GIF from video](conversions/create-gif-from-video.py) | Create a GIF from video, by default it takes the last screen record video | [Quentin Eude](https://github.com/qeude) | ✅ | | | | 🎨 | [Hex to RGB](conversions/hex-to-rgb.sh) | Convert hexadecimal color value to RGB value. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 🎨 | [Hex to RGBA](conversions/hex-to-rgba.sh) | Convert hexadecimal color value to RGBA value. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | + | 🧱 | [Markdown Table](conversions/create-markdown-table.js) | Create a markdown table template | [Ryan Nystrom](https://github.com/rnystrom) | ✅ | | | + | 📋 | [OCR Image](conversions/clipboard-ocr.sh) | OCR Image from Clipboard | [xxchan](https://github.com/xxchan) | | | | + | 📋 | [Paste and Match Style](conversions/paste-as-plain-text.applescript) | A script to click the "Paste and Match Style" menu item, even if it's disabled | [Michael Bianco](https://github.com/iloveitaly) | | | | + | | [QR Code Generation](conversions/qrcode-generate.sh) | QR Code Generation | [wyhaya](https://github.com/wyhaya) | ✅ | | | | 📝 | [Rich Text to Markdown](conversions/rich-text-clipboard-to-markdown.sh) | Convert rich text clipboard data to GitHub Flavored Markdown using Pandoc | [Adam Zethraeus](https://github.com/adam-zethraeus) | | | | + | | [Screenshot QR Code to Clipboard](conversions/qr-code-screenshot-to-text.sh) | Decode QR Code from screenshot to clipboard using https://qrserver.com/ | [Diego Lopes](https://github.com/Dihgg) | | | | + | 🔗 | [Simple Markdown Link Generator](conversions/inputs-to-markdown-link.sh) | Quickly and simply generate a markdown formatted link with your specified URL and title. | [atzzCokeK](https://github.com/atzzCokeK) | ✅ | | | + | 📝 | [Space Fixer](conversions/space-fixer.sh) | Add spaces between Chinese and English, number or symbols. | [RealTong](https://raycast.com/RealTong) | | | | | 🔠 | [Strikethrough Text](conversions/strikethrough.sh) | Converts given text (or clipboard if no argument) to t̶e̶x̶t̶ | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | ✂️ | [Trim Newlines and Tabs](conversions/trim-newlines-tabs.sh) | Trim newlines and tabs from clipboard content. | [Caleb Stauffer](https://github.com/crstauf) | | | | | 🦸‍♀️ | [Unicode Superscript](conversions/unicode-superscript.sh) | Convert clipboards text to fake unicode superscript | [Adam Zethraeus](https://github.com/adam-zethraeus) | ✅ | | | @@ -566,7 +888,7 @@ This repository contains sample commands and documentation to write your own one #### Change Case | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Camel Case](conversions/change-case/camelcase.py) | Change to clipboard text to camel case | [Robert Cooper](https://github.com/robertcoopercode) | | | | | | [Kebab Case](conversions/change-case/kebabcase.py) | Change to clipboard text to kebab case | [Robert Cooper](https://github.com/robertcoopercode) | | | | | | [Lowercase](conversions/change-case/lowercase.py) | Change clipboard text to lowercase | [Robert Cooper](https://github.com/robertcoopercode) | | | | @@ -574,37 +896,75 @@ This repository contains sample commands and documentation to write your own one | | [Title Case](conversions/change-case/titlecase.py) | Change to clipboard text to title case | [Robert Cooper](https://github.com/robertcoopercode) | | | | | | [Uppercase](conversions/change-case/uppercase.py) | Change to clipboard text to uppercase | [Robert Cooper](https://github.com/robertcoopercode) | | | | +## Culture + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🕌 | [Prayer Times](culture/prayer-times.sh) | Prayer Times grabbed from the aladhan.com. | [Emircan Erkul](https://emircanerkul.com) | | | | + ## Dashboard | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Bitcoin Price](dashboard/bitcoin-price-usd.sh) | Get current Bitcoin price from Coindesk. | [Tanguy Le Stradic](https://github.com/tanguyls) | | | | + | 💲 | [Check Usage of OpenAI API](dashboard/open-ai-usage.sh) | Get total usage of OpenAI API | [nagauta](https://github.com/nagauta) | | | | | 💰 | [Crypto](dashboard/crypto-portfolio.py) | Gets crypto prices from Binance | [Manan Mehta](https://github.com/mehtamanan) | | | | | 🌦️ | [Current Weather](dashboard/current-weather.sh) | Get current weather report from [wttr.in](https://wttr.in/). | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [DOGE Price](dashboard/doge.sh) | Checking DOGE coin price | [Clu Soh](https://github.com/designedbyclu) | | | | | | [Ethereum Price](dashboard/ethereum-price-usd.sh) | Get current Ethereum price from CoinGecko. | [Clark Dinnison](https://github.com/cdinnison) | | | | + | | [Fear Index](dashboard/fear-index.sh) | Fear & Greed Index from CNN | [Astrit](https://github.com/astrit) | | | | | | [Metals Price](dashboard/precious-metals.sh) | Retrieves the value of precious metals per 1 oz | [Stefan de Graaf](https://github.com/DBZFYAM) | | | | | | [NextDNS Status](dashboard/nextdns-status-check.py) | Check if this machine is using NextDNS. | [Phil Salant](https://github.com/PSalant726) | | | | | 🤖 | [SABnzbd Queue](dashboard/sabnzbd-queue-status.template.sh) | Show SABnzbd's queue status | [Jesse Claven](https://github.com/jesse-c) | | ✅ | | | | [Speedtest](dashboard/speedtest.sh) | Test download and upload connection speed using [Speedtest](https://www.speedtest.net/apps/cli). | [Caleb Stauffer](https://github.com/crstauf) | | | | | 📈 | [Stocks](dashboard/stock-portfolio.rb) | Keep track of your stock portfolio. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | 📈 | [System Activity](dashboard/system-activity.sh) | N/A | Raycast | | | | + | 🚘 | [Tesla](dashboard/tesla.template.sh) | Get the status of your Tesla vehicle | [Mortada Sarheed](https://github.com/mSarheed) | | ✅ | | | | [Twitter Statistics](dashboard/twitter-statistics.template.rb) | Shows the followers, favorites and friends count of your Twitter account. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | | 🕐 | [World Time](dashboard/world-time.sh) | Show the time from elsewhere in the world | [Jesse Claven](https://github.com/jesse-c) | | | | | ⏱ | [Year Progress](dashboard/year-progress.sh) | See the year progress on your desktop. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | + | | [YouTube Statistics](dashboard/youtube-statistics.template.rb) | Shows YouTube Subscribers, Views and Videos | [Astrit](https://github.com/astrit) | | ✅ | | #### Countdowns | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🎅🏻 | [Countdown to Christmas](dashboard/countdowns/countdown-to-christmas.sh) | See how many days until Christmas. | [Valentin Chrétien](https://github.com/valentinchrt) | | | | | ⏱ | [Countdown to Date](dashboard/countdowns/countdown-to-date.template.sh) | See how many days/hours until a specific date. | [Valentin Chrétien](https://github.com/valentinchrt) | | ✅ | | | ⏱ | [Create Countdown](dashboard/countdowns/create-countdown.template.sh) | Create countdowns via Raycast. | [Valentin Chrétien](https://github.com/valentinchrt) | ✅ | ✅ | | +#### Firebase + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Get Authorization Token](dashboard/firebase/firebase-authentication-get-token.template.sh) | Get token from Firebase Authentication service | [João Melo](https://github.com/joaopcm) | | ✅ | | + | | [Get data from Firebase](dashboard/firebase/firebase-realtime-db-get-data.template.sh) | Get values from Firebase Realtime Database | [Marek Mašek](https://github.com/marekmasek) | | ✅ | | + +#### Mood Meter + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ☕️ | [Add Mood](dashboard/mood-meter/add-mood.js) | Add mood value to current or specified date | [Federico Miraglia](https://github.com/Mitra98t) | ✅ | | | + | ☕️ | [Display Mood Month](dashboard/mood-meter/display-mood-month.js) | Displays month mood table | [Federico Miraglia](https://github.com/Mitra98t) | | | | + | ☕️ | [Display Mood Year](dashboard/mood-meter/display-mood-year.js) | Displays year mood table | [Federico Miraglia](https://github.com/Mitra98t) | ✅ | | | + +#### Open Weather + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ⛅️ | [Current Weather](dashboard/open-weather/weather-current.template.sh) | Get current weather from OpenWeather | [Marek Mašek](https://github.com/marekmasek) | | ✅ | | + | ⛅️ | [Weather Forecast](dashboard/open-weather/weather-forecast.template.sh) | Get weather forecast from OpenWeather | [Marek Mašek](https://github.com/marekmasek) | | ✅ | | + +## Dashboards + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 💾 | [Speed Test](dashboards/iperf-speed-test.template.sh) | Runs an iPerf Speed Test. | [Sam Wright](https://raycast.com/samywamy10) | | ✅ | | + ## Developer Utils | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🔑 | [Add SSH Keys (with Terminal)](developer-utils/add-ssh-keys.template.applescript) | Add one or multiple SSH keys to your SSH agent (with Terminal). | [Caleb Stauffer](https://github.com/crstauf) | | ✅ | | | 🤖 | [Base Converter](developer-utils/base-converter.sh) | Utility to convert numbers between bases. Can be one number or a list of string-delimited numbers. | [Saimir S.](https://www.saimirsulaj.com) | ✅ | | | | 🔓 | [Base64 Decode](developer-utils/base64-decode-input.sh) | Decode the base64 string | [Bin Hua](https://github.com/hzb) | ✅ | | | @@ -613,13 +973,16 @@ This repository contains sample commands and documentation to write your own one | 🧹 | [Clear All Related Junk](developer-utils/clear_xcode.sh) | This script clears all Xcode related junk. | [Kirill Gorbachyonok](https://github.com/japanese-goblinn) | | | | | 🧹 | [Clear Derived Data](developer-utils/clear-derived-data.sh) | Clear the derived data of Xcode. | Raycast | | | | | ⏱️ | [Copy Current Epoch Unix Timestamp](developer-utils/unix-timestamp.sh) | Copy the current epoch Unix timestamp. | [Caleb Stauffer](https://github.com/crstauf) | | | | + | 📁 | [Copy Focused Finder Window Path](developer-utils/copy-focused-finder-window-path.sh) | Copies full path of the currently focused Finder window | [Vishal Telangre](https://github.com/vishaltelangre) | | | | | 📝 | [Copy Lorem Ipsum](developer-utils/lorem-ipsum.sh) | Copy one paragraph of Lorem Ipsum to clipboard. | Raycast | | | | + | 🔑 | [Copy SSH Public Key](developer-utils/copy-ssh-public-key.sh) | Copying the default SSH public key to the clipboard | [Angelos Michalopoulos](https://github.com/miagg) | | | | | 🤖 | [Count Characters Bash](developer-utils/count-characters.sh) | Counts the characters of either the clipboard or the passed argument | es183923 | ✅ | | | | 🤐 | [Create .gitignore](developer-utils/generate-git-ignore.sh) | Generates a .gitignore file via https://gitignore.io | [Roland Leth](https://runtimesharks.com) | ✅ | | | | | [Create Image from Code](developer-utils/create-image-from-code.sh) | Create beautiful images of your code with https://ray.so | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | 💻 | [Decode Base64](developer-utils/decode-base64.sh) | Decodes clipboard content to Base64 and copies it again. | Raycast | | | | | | [Decode JWT](developer-utils/decode-jwt.sh) | Decodes JSON web token from the clipboard. | Raycast | | | | | 💻 | [Decode URL](developer-utils/decode-url.sh) | Decodes clipboard content url and copies it again. | Raycast | | | | + | ⌨️ | [Delete Current Line](developer-utils/delete-current-line.applescript) | This script deletes the line at cursor position. | [Annie Ma](http://www.anniema.co/) | | | | | 🌍 | [Dig](developer-utils/dig.sh) | Perform a dig command with the specified options | Tommaso Panozzo | ✅ | | | | 💻 | [Encode Base64](developer-utils/encode-base64.sh) | Encodes clipboard content to Base64 and copies it again. | Raycast | | | | | 💻 | [Encode URL](developer-utils/encode-url.sh) | Encodes clipboard content url and copies it again. | Raycast | | | | @@ -629,14 +992,17 @@ This repository contains sample commands and documentation to write your own one | | [Format Swift](developer-utils/format-swift.sh) | Use [swiftformat](https://github.com/nicklockwood/SwiftFormat) to format clipboard content. | [Dean Moore](https://github.com/moored) | | | | | | [Generate Password](developer-utils/genpasswd.py) | Generates an iOS style password | [everdrone](https://github.com/everdrone) | ✅ | | | | 🔐 | [Generate Password](developer-utils/generate-password.sh) | Generates a random password and copies it to the clipboard. | [Sven Hofmann](https://github.com/hofmannsven) | | | | + | 💻 | [Generate ULID](developer-utils/generate-ulid.sh) | Generates a ULID and copies it to the clipboard. | [David Molinero](https://github.com/doktor500) | | | | | 💻 | [Generate UUID](developer-utils/generate-uuid.sh) | Generates a UUID and copies it to the clipboard. | Raycast | | | | + | 🕐 | [Get TTFB (Time to First Byte)](developer-utils/get-ttfb.sh) | Get the TTFB (Time to First Byte) of a website | [Angelos Michalopoulos](https://github.com/miagg) | ✅ | | | | 🧹 | [Ignore Package Folders](developer-utils/ignore-package-folders-time-machine.template.sh) | Ignore package folders (node_modules, Pods, etc) from Time Machine backups. They might not be big in size (altough they do add up), but they usually have tens of thousands of files, making backups slower than they should be. Many files are worse than big files when copying. You can also add a Spotlight comment to each file, to easily be able to exclude the same folders from Spotlight indexing (disabled by default). | [Roland Leth](https://runtimesharks.com) | | ✅ | | - | 🩺 | [Is It Up?](developer-utils/is-it-up.sh) | Check if a website is up | [Jesse Claven](https://github.com/jesse-c) | ✅ | | | + | 🌐 | [Is It Up?](developer-utils/is-it-up.sh) | Check if a website is up | [Jesse Claven](https://github.com/jesse-c) | ✅ | | | | | [JSON to Go Struct](developer-utils/json-to-go-struct.sh) | Convert the copied JSON into a golang structure. | [tiancheng92](https://github.com/tiancheng92) | ✅ | | | + | 🛠 | [Join Clipboard Lines by Delimiter](developer-utils/join-lines.sh) | Join multiple lines of text from the clipboard into a single line, separated by a specified delimiter. | [decaylala](https://github.com/decaylala) | ✅ | | | | 💻 | [Json Stringify Text](developer-utils/json-stringify-text.js) | Get JSON-formatted text | Senthil Prabhu | | | | | 🔐 | [MD5 Hash](developer-utils/md5-hash.sh) | Hashing any text data by using MD5 | [Bin Hua](https://github.com/hzb) | ✅ | | | + | | [Microlink API](developer-utils/microlink.sh) | Microlink API integration | [Kiko Beats](https://github.com/kikobeats) | ✅ | | | | 🔗 | [Open Deep Link](developer-utils/open-link-simulator.applescript) | Opens a URL inside the currently booted iOS Simulator. Can be used to open deeplinks | [Tomás Martins](https://github.com/tfmart) | ✅ | | | - | | [Open Directory](developer-utils/open-folder-in-vscode.applescript) | Opens current topmost directory in VSCode | [chohner](https://github.com/chohner) | | | | | 🌐 | [Ping](developer-utils/ping.sh) | Ping an IP address or URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 🌐 | [Ping Monitor](developer-utils/ping-monitor.template.sh) | Ping an IP address or URL on an interval. | [Caleb Stauffer](https://github.com/crstauf) | | ✅ | | | 💻 | [Prettify JSON](developer-utils/prettify-json.sh) | Pretty prints the JSON currently in the clipboard. | Raycast | | | | @@ -652,21 +1018,26 @@ This repository contains sample commands and documentation to write your own one | 🔐 | [Strong Password Generator](developer-utils/strong-password-generator.sh) | Generate a strong password of requested character length | [Nitin Gupta](https://twitter.com/gniting) | ✅ | | | | 🕒 | [Time Between Dates](developer-utils/time-between-dates.js) | Given two dates returns the time between them in multiple units of measure. | [Federico Miraglia](https://github.com/Mitra98t) | ✅ | | | | 🕒 | [Time Calculator](developer-utils/time-calculator.js) | Add or Subtract specified amount of time from given date. | [Federico Miraglia](https://github.com/Mitra98t) | ✅ | | | + | 🔒 | [Toggle SSH SOCKS Tunnel](developer-utils/toggle_ssh_proxy_tunnel.template.sh) | Toggles an SSH SOCKS proxy tunnel on and off. | [Andrii Barabash](https://github.com/AndriiBarabash) | | ✅ | | | 🔠 | [Transform Case](developer-utils/transform-case.sh) | Transform the case of clipboard content. Defaults to lower case if no conversion type is specified. | [Nitin Gupta](https://twitter.com/gniting) | ✅ | | | | ✂ | [Trim Git Commit Hash](developer-utils/trim-git-commit-hash.sh) | Trim full git commit hash down to seven characters. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 🔗 | [Unshorten URL](developer-utils/unshorten-url.sh) | Unshortens clipboard content url and copies the result again. | [Nikita Galaiko](https://github.com/ngalaiko) | | | | + | 📖 | [View Scripting Dictionary](developer-utils/view-scripting-dictionary.sh) | Opens the Scripting Dictionary for the given application, defaulting to the active application if none is provided. | [Stephen Kaplan](https://github.com/SKaplanOfficial) | ✅ | | | | 🌐 | [Whois](developer-utils/whois.sh) | Whois of URL. | [Caleb Stauffer](https://github.com/crstauf) and [Ronan Rodrigo Nunes](https://ronanrodrigo.dev) | ✅ | | | #### Aws | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🤖 | [Find AWS Region by IP](developer-utils/aws/whatismyregion.sh) | Copies the AWS IPv4 to the clipboard. | [Oğuzhan Yılmaz](https://github.com/c1982) | | | | + | | [S3 Download](developer-utils/aws/amazon-s3-download.sh) | Download from Amazon S3 via URL | [Chris Cook](https://github.com/zirkelc) | ✅ | | | + | | [Single Sign-On](developer-utils/aws/aws-sso-util.sh) | Login to AWS using aws-sso-util | [David Molinero](https://github.com/doktor500) | | | | #### Brew | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🍺 | [Cask Upgrade](developer-utils/brew/brew-cask-upgrade.sh) | Updates brew and upgrades every outdated app | [LanikSJ](https://github.com/LanikSJ) | | | | | 🍺 | [Doctor](developer-utils/brew/brew-doctor.sh) | Run Brew Doctor | [Thiago Holanda](https://twitter.com/tholanda) | | | | | 🍺 | [Install a package](developer-utils/brew/brew-install.sh) | Installs specified brew package. | [Alex Zotov](https://github.com/lex4hex) | ✅ | | | | 🍺 | [Leaves](developer-utils/brew/brew-leaves.sh) | Show list of installed brew formulae that are not dependencies of other installed formula. | [owpac](https://github.com/Owpac) | | | | @@ -676,28 +1047,31 @@ This repository contains sample commands and documentation to write your own one | 🍺 | [Services List](developer-utils/brew/brew-services-list.sh) | Show Brew Services List | [Thiago Holanda](https://twitter.com/tholanda) | | | | | 🍺 | [Start Service](developer-utils/brew/brew-services-start.sh) | Start Service in Brew | [Thiago Holanda](https://twitter.com/tholanda) | ✅ | | | | 🍺 | [Stop Service](developer-utils/brew/brew-services-stop.sh) | Stop Service in Brew | [Thiago Holanda](https://twitter.com/tholanda) | ✅ | | | + | 🍺 | [Uninstall](developer-utils/brew/brew-uninstall-application.sh) | Uninstalls an Specified Application Using Homebrew | [StevenRCE0](https://github.com/StevenRCE0) | ✅ | | | | 🍺 | [Update](developer-utils/brew/brew-update.sh) | Run Brew Update | [chengzhiqi](https://twitter.com/1872Fate) | | | | | 🍺 | [Upgrade](developer-utils/brew/brew-upgrade.sh) | Run Brew Upgrade | [Thiago Holanda](https://twitter.com/tholanda) | | | | #### Cloudflare | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Purge Cloudflare cache](developer-utils/cloudflare/purge-cloudflare-cache.template.sh) | Purge Cloudflare cache for zone. | [Caleb Stauffer](https://github.com/crstauf) | | ✅ | | #### Docker | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🧹 | [Clean](developer-utils/docker/clean-docker.sh) | Script that cleans Docker images, volumes, and containers | Quentin Eude | | | | | | [List Containers](developer-utils/docker/docker-ps.sh) | List containers in Docker | Sebastian Kroll | | | | | | [List Images](developer-utils/docker/docker-images.sh) | List images in Docker | Sebastian Kroll | | | | + | ▶️ | [Run](developer-utils/docker/run-docker.sh) | Runs a Docker container | Fabián Delgado | ✅ | | | + | ⏹️ | [Stop](developer-utils/docker/stop-docker.sh) | Stops a Docker container | Fabián Delgado | ✅ | | | | | [System Prune](developer-utils/docker/docker-system-prune.sh) | Remove unused data (system prune) | Sebastian Kroll | | | | #### Git | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Clear Changes](developer-utils/git/git-clear-changes.sh) | Clear all changes | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | | [Save Changes](developer-utils/git/git-save-changes.sh) | Commit all pending changes. If no commit message is provided, it will amend the changes. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | | [Standup](developer-utils/git/git-standup.sh) | Lists your commits from the last 24 hours. Optionally specify since when, e.g. "1 week". | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | @@ -705,23 +1079,26 @@ This repository contains sample commands and documentation to write your own one | | [Switch Branch](developer-utils/git/git-switch-branch.sh) | Switch to a new branch. If not name was provided, it checks out the default branch. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | | [Sync Changes](developer-utils/git/git-sync-changes.sh) | Pulls, rebases and pushes your changes. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | -#### Github +#### GitHub | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Create GitHub Gist from Clipboard](developer-utils/github/create-github-gist.template.sh) | Create a GitHub Gist from clipboard contents and copy Gist URL. | [Caleb Stauffer](https://github.com/crstauf) | | ✅ | | + | | [GitHub Contributions](developer-utils/github/github-contributions.template.sh) | Show GitHub user contributions from the current year | [Astrit](https://github.com/astrit) | | ✅ | | | | [Open Commit History](developer-utils/github/github-open-commit-history.sh) | Opens the commit history of the filepath in the clipboard or the frontmost window. Alternatively can open the file view on GitHub. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | | [Open Pull Requests](developer-utils/github/github-open-pull-requests.template.rb) | Display number of open pull requests | [Faye Sipiano](https://github.com/FSipiano) | | ✅ | | | | [Open Pull Requests page](developer-utils/github/github-open-pull-requests-page.sh) | Open your GitHub pull requests page | [Faye Sipiano](https://github.com/FSipiano) | | | | | ⭐️ | [Repository Statistics](developer-utils/github/github-repository-stars.template.rb) | Show statistics of your GitHub repository. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | + | ⭐️ | [Repository Statistics](developer-utils/github/github-repository-stars_all_repos_template.rb) | Show statistics of your GitHub repositories. | [Valdir Junior](https://github.com/valdirjunior011 ) | | ✅ | | | | [Show Open Pull Requests](developer-utils/github/github-open-pull-requests-details.template.rb) | Display (detailed) GitHub pull requests | [Faye Sipiano](https://github.com/FSipiano) | | ✅ | | + | | [Show Review Requests](developer-utils/github/github-review-requests.template.rb) | Display number of Pull Requests requesting your review | [Vince Picone](https://github.com/vpicone) | | ✅ | | | | [Unread Notifications](developer-utils/github/github-unread-notifications.template.sh) | Display (detailed) number of unread GitHub notifications. | [Caleb Stauffer](https://github.com/crstauf) | | ✅ | | | | [Visit a Repository, Pull Request, or Issue](developer-utils/github/open-gh-repo-pr-or-issue.sh) | Open a repository, pull request, or issue on GitHub | [Phil Salant](https://github.com/PSalant726) | ✅ | | | -#### Gitlab +#### GitLab | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Issues](developer-utils/gitlab/gitlab-issues.template.py) | Show issues from GitLab | [Michael Aigner](https://github.com/tonka3000) | | ✅ | | | | [Merge Requests](developer-utils/gitlab/gitlab-mergerequests.template.py) | Show merge requests from GitLab | [Michael Aigner](https://github.com/tonka3000) | | ✅ | | | | [To-Dos](developer-utils/gitlab/gitlab-todos.template.py) | Show todos from GitLab | [Michael Aigner](https://github.com/tonka3000) | | ✅ | | @@ -729,7 +1106,7 @@ This repository contains sample commands and documentation to write your own one #### Google | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Lighthouse](developer-utils/google/google-lighthouse.sh) | Open a [Lighthouse](https://developers.google.com/web/tools/lighthouse/) report of URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [PageSpeed Insights - Desktop](developer-utils/google/google-psi-desktop.sh) | Run a [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) analysis on desktop of URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [PageSpeed Insights - Mobile](developer-utils/google/google-psi-mobile.sh) | Run a [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) analysis on mobile of URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | @@ -737,7 +1114,7 @@ This repository contains sample commands and documentation to write your own one #### Ip | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🌐 | [External IPv4](developer-utils/ip/get-external-ip-v4.sh) | Copies the external IPv4 to the clipboard. | Raycast | | | | | 🌐 | [External IPv6](developer-utils/ip/get-external-ip-v6.sh) | Copies the external IPv6 to the clipboard. | Raycast | | | | | 🌐 | [Local IPv4](developer-utils/ip/get-local-ip-v4.sh) | Copies the local IPv4 to the clipboard. | Raycast | | | | @@ -745,25 +1122,44 @@ This repository contains sample commands and documentation to write your own one | 🌐 | [URL IPv4](developer-utils/ip/get-url-ip-v4.sh) | Get IPv4 address of URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | 🌐 | [URL IPv6](developer-utils/ip/get-url-ip-v6.sh) | Get IPv6 address of URL. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | +#### Minikube + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | ⚙️ | [Config Set](developer-utils/minikube/minikube-config-set.sh) | Pause Minikube cluster | [Daniils Petrovs](https://danpetrov.xyz) | ✅ | | | + | ⏸ | [Pause](developer-utils/minikube/minikube-pause.sh) | Pause Minikube cluster | [Daniils Petrovs](https://danpetrov.xyz) | | | | + | 🚀 | [Start](developer-utils/minikube/minikube-start.sh) | Start Minikube cluster | [Daniils Petrovs](https://danpetrov.xyz) | | | | + | ℹ️ | [Status](developer-utils/minikube/minikube-status.sh) | Show Minikube cluster status | [Daniils Petrovs](https://danpetrov.xyz) | | | | + | 🤖 | [Stop](developer-utils/minikube/minikube-stop.sh) | Stops a running Minikube cluster | [Daniils Petrovs](https://danpetrov.xyz) | | | | + | ⏸ | [Unpause](developer-utils/minikube/minikube-unpause.sh) | Pause Minikube cluster | [Daniils Petrovs](https://danpetrov.xyz) | | | | + #### Sentry | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Unresolved Issues](developer-utils/sentry/sentry-unresolved-issues.template.py) | Show unresolved issues of the last 24 hours from Sentry. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | | | [Unresolved Issues By Project](developer-utils/sentry/sentry-unresolved-issues-by-project.template.py) | Show unresolved issues in the last 24 hours (by project) from Sentry. | [Phil Salant](https://github.com/PSalant726) and [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | ✅ | | -## Google Maps +#### Vscode + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Open Directory](developer-utils/vscode/open-folder-in-vscode.applescript) | Opens current topmost directory in VS Code | [chohner](https://github.com/chohner) | | | | + | | [Open Project](developer-utils/vscode/open-project-in-vscode.sh) | Finds path to the given directory which must be a VS Code or Git project and opens it with VS Code | [Maksim Zemlyanikin](https://github.com/Maksimka101) | ✅ | | | + +#### Xcode | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Search Google Maps](google-maps/google-maps.sh) | N/A | Raycast | ✅ | | | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Last Project](developer-utils/xcode/xcode-last-project.sh) | Open the last Xcode project | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Recent Project](developer-utils/xcode/xcode-recent-project.sh) | Open recent Xcode project | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | ## Home #### Elgato | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Decrease Brightness](home/elgato/elgato-key-light-decrease-brightness.template.rb) | Decrease brightness of Elgato Key Light by 5%. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | | | [Increase Brightness](home/elgato/elgato-key-light-increase-brightness.template.rb) | Increase brightness of Elgato Key Light by 5%. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | | | [Turn Off](home/elgato/elgato-key-light-turn-off.template.rb) | Turn off Elgato Key Light. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | ✅ | | @@ -772,27 +1168,35 @@ This repository contains sample commands and documentation to write your own one #### Philips Hue | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | 💡 | [Lights](home/philips-hue/hue-lights-inline.template.mjs) | Show inline summary of any Hue compatible lights. Choose to show on/off, brightness percentage, color temperature or hue, saturation, brightness values. Recommended to have already assigned names to lights in the Hue app. | [Jono Hewitt](https://github.com/jonohewitt) | | ✅ | zx | - | 💡 | [Rooms](home/philips-hue/hue-rooms-inline.template.mjs) | Show inline summary about your rooms of Hue compatible lights. Choose to show the number of lights on out of the room total, or use more general terms such as "All on". Requires rooms to have already been set up in the Hue app. | [Jono Hewitt](https://github.com/jonohewitt) | | ✅ | zx | - | 💡 | [Set Light Bulb](home/philips-hue/hue-bulb.template.mjs) | Set a specified or default individual color bulb to a preset, hsb or brightness value. Leave preset and value arguments empty to toggle a bulb on or off. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | ✅ | zx | - | 💡 | [Set Room Lights](home/philips-hue/hue-room.template.mjs) | Set a specified or default room of color bulbs to a preset, hsb or brightness value. Leave preset and value arguments empty to toggle a room on or off. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | ✅ | zx | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 💡 | [Lights](home/philips-hue/hue-lights-inline.template.mjs) | Show inline summary of any Hue compatible lights. Choose to show on/off, brightness percentage, color temperature or hue, saturation, brightness values. Recommended to have already assigned names to lights in the Hue app. | [Jono Hewitt](https://github.com/jonohewitt) | | ✅ | | + | 💡 | [Rooms](home/philips-hue/hue-rooms-inline.template.mjs) | Show inline summary about your rooms of Hue compatible lights. Choose to show the number of lights on out of the room total, or use more general terms such as "All on". Requires rooms to have already been set up in the Hue app. | [Jono Hewitt](https://github.com/jonohewitt) | | ✅ | | + | 💡 | [Set Light Bulb](home/philips-hue/hue-bulb.template.mjs) | Set a specified or default individual color bulb to a preset, hsb or brightness value. Leave preset and value arguments empty to toggle a bulb on or off. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | ✅ | | + | 💡 | [Set Room Lights](home/philips-hue/hue-room.template.mjs) | Set a specified or default room of color bulbs to a preset, hsb or brightness value. Leave preset and value arguments empty to toggle a room on or off. | [Jono Hewitt](https://github.com/jonohewitt) | ✅ | ✅ | | ## Math | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Calculate CAGR Percentage](math/calculate-CAGR.sh) | Calculate the CAGR between "from" and "to" values over given "years," then copy the result. | [Samuel Barton](https://github.com/samueldbarton) | ✅ | | | | 📈 | [Calculate Growth %](math/calculate-growth.sh) | Calculate percentage increase between "from" and "to" values. | [Petr Nikolaev](https://github.com/pitnikola) | ✅ | | | + | 🔢 | [Generate Random Number](math/random-number.sh) | Generate a number between a given range (inclusive) and then copy the value | [Matt Gleich](https://mattglei.ch) | ✅ | | | + | 🧮 | [LaTeX Calculator](math/latex-calculator.py) | Evaluate LaTeX expressions and get the product copied to your clipboard | [Matt Gleich](https://mattglei.ch) | ✅ | | | | | [Wolfram Alpha](math/wolfram-alpha.template.sh) | Use Wolfram Alpha to answer your query | [es183923](https://github.com/es183923) | ✅ | ✅ | | + | | [nCr: Calculate Combinations](math/calculate-combinations.js) | nCr: Calculate combinations | [cSharp](https://github.com/noidwasavailable) | ✅ | | | ## Media #### Apple Music | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Apple Music Volume Down](media/apple-music/apple-music-volume-down.applescript) | N/A | [Juan I. Serra](https://github.com/jiserra) | | | | + | | [Apple Music Volume Up](media/apple-music/apple-music-volume-up.applescript) | N/A | [Juan I. Serra](https://github.com/jiserra) | | | | | | [Current Track](media/apple-music/apple-music-current-track.applescript) | Show currently playing track in Music. | [mmerle](https://github.com/mmerle) | | | | | | [Go to Artist in Apple Music](media/apple-music/apple-music-go-to-artist-page.sh) | Go to Artist page in the Apple Music App | [Jordi Clement](https://github.com/jordicl) | ✅ | | | + | | [Hate Current Track](media/apple-music/apple-music-hate-current-track.applescript) | Let the algorithm know how you feel about the currently playing track. | [Bryan Schuetz](https://github.com/bryanschuetz) | | | | + | | [Love Current Track](media/apple-music/apple-music-love-current-track.applescript) | Let the algorithm know how you feel about the currently playing track. | [Bryan Schuetz](https://github.com/bryanschuetz) | | | | | | [Next Track](media/apple-music/apple-music-next.applescript) | Next track in Music. | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Pause](media/apple-music/apple-music-pause.applescript) | Pause Music. | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Play](media/apple-music/apple-music-play.applescript) | Play Music. | [Caleb Stauffer](https://github.com/crstauf) | | | | @@ -806,7 +1210,7 @@ This repository contains sample commands and documentation to write your own one #### Apple Tv | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Pause](media/apple-tv/apple-tv-pause.applescript) | Pause TV. | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Play](media/apple-tv/apple-tv-play.applescript) | Play TV. | [Caleb Stauffer](https://github.com/crstauf) | | | | | | [Play Movie](media/apple-tv/apple-tv-play-movie.applescript) | Play specified movie from library in TV. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | @@ -816,7 +1220,7 @@ This repository contains sample commands and documentation to write your own one #### Cmus | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | ℹ️ | [Current Track](media/cmus/track-info.sh) | Shows info on the current track if cmus is running | [mmerle](https://github.com/mmerle) | | | | | ⏩ | [Next Track](media/cmus/next-track.sh) | Goes forward a track if cmus is running | [mmerle](https://github.com/mmerle) | | | | | ⏪ | [Previous Track](media/cmus/previous-track.sh) | Goes back a track if cmus is running | [mmerle](https://github.com/mmerle) | | | | @@ -824,10 +1228,56 @@ This repository contains sample commands and documentation to write your own one | 🔁 | [Toggle Repeat](media/cmus/toggle-repeat.sh) | Toggles the repeat option if cmus is running | [mmerle](https://github.com/mmerle) | | | | | 🔀 | [Toggle Shuffle](media/cmus/toggle-shuffle.sh) | Toggles the shuffle option if cmus is running | [mmerle](https://github.com/mmerle) | | | | +#### Endel + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Deep Focus](media/endel/endel-deep-focus.sh) | Set deep focus mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Deep Work](media/endel/endel-scenarios-deepwork.sh) | Run Deep Work scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Focus](media/endel/endel-focus.sh) | Set focus mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Homework](media/endel/endel-scenarios-homework.sh) | Run Homework scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Lullaby](media/endel/endel-lullaby.sh) | Set AI lullaby mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Meditate](media/endel/endel-scenarios-meditate.sh) | Run Meditate scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Power Nap](media/endel/endel-scenarios-powernap.sh) | Run Power Nap scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Read](media/endel/endel-scenarios-read.sh) | Run Read scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Recovery](media/endel/endel-recovery.sh) | Set recovery mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Relax](media/endel/endel-relax.sh) | Set relax mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Self Care](media/endel/endel-scenarios-selfcare.sh) | Run Self Care scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Set Alarm](media/endel/endel-alarm.sh) | Set Alarm in Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Set Timer](media/endel/endel-timer.sh) | Set Timer in Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Sleep](media/endel/endel-sleep.sh) | Set focus mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Study](media/endel/endel-study.sh) | Set study mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Unwind](media/endel/endel-scenarios-unwind.sh) | Run Unwind scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Wiggly Wisdom](media/endel/endel-wisdom.sh) | Set wiggly wisdom mode at Endel | [Sergey Korobyin](https://github.com/huangsemao) | | | | + | | [Workout](media/endel/endel-scenarios-workout.sh) | Run Workout scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + | | [Yoga](media/endel/endel-scenarios-yoga.sh) | Run Yoga scenario at Endel | [Sergey Korobyin](https://github.com/huangsemao) | ✅ | | | + +#### Lowfi + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Lowfi](media/lowfi/lowfi.sh) | N/A | Raycast | | | | + +#### Sonos + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Play Favorite](media/sonos/sonos-play-favorite.sh) | Play from Sonos favorites. | [David Blackman](https://github.com/whizziwig) | ✅ | | | + | | [Set Volume](media/sonos/sonos-volume-set.sh) | Sets volume of Sonos. | [David Blackman](https://github.com/whizziwig) | ✅ | | | + | | [Volume Down](media/sonos/sonos-volume-down.sh) | Raises volume of Sonos. | [David Blackman](https://github.com/whizziwig) | | | | + | | [Volume Up](media/sonos/sonos-volume-up.sh) | Raises volume of Sonos. | [David Blackman](https://github.com/whizziwig) | | | | + +#### Speaker Setup + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🔊 | [Speaker Setup](media/speaker-setup/speaker-setup.sh) | N/A | [Kailash Yellareddy](https://github.com/kyellareddy) | | | | + #### Spotify | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [${commandName}](media/spotify/create-spotify-command.js) | Play ${commandName} on Spotify | [Nichlas Wærnes Andersen](https://twitter.com/nichlaswa) | ✅ | | | | | [Copy Current Playing Song URL](media/spotify/spotify-now-playing-url.applescript) | Get link to current Spotify playing song | [Jack LaFond](https://github.com/jacc) | | | | | | [Current Track](media/spotify/spotify-current-track.applescript) | Show currently playing track in Spotify. | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | | [Next Track](media/spotify/spotify-next-track.applescript) | Skips to the next track in Spotify. | Raycast | | | | @@ -837,10 +1287,29 @@ This repository contains sample commands and documentation to write your own one | | [Previous Track](media/spotify/spotify-previous-track.applescript) | Skips to the previous track in Spotify. | Raycast | | | | | | [Toggle Play/Pause](media/spotify/spotify-play-pause.applescript) | Toggles play or pause of current track in Spotify. | Raycast | | | | +#### Tidal + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Next Track](media/tidal/tidal-next-track.applescript) | Skip to the next track in Tidal. | [Charles Harries](https://github.com/charlesharries) | | | | + | | [Pause](media/tidal/tidal-pause.applescript) | Pause the current track in Tidal. | [Charles Harries](https://github.com/charlesharries) | | | | + | | [Play](media/tidal/tidal-play.applescript) | Play the current track in Tidal. | [Charles Harries](https://github.com/charlesharries) | | | | + | | [Previous Track](media/tidal/tidal-previous-track.applescript) | Skip back to the previous track in Tidal. | [Charles Harries](https://github.com/charlesharries) | | | | + | | [Toggle Play/Pause](media/tidal/tidal.applescript) | Play/Pause Tidal | [Cebrail AKTAS](https://github.com/AktasC) | | | | + +#### foobar2000 + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Next foobar2000](media/foobar2000/foobar2000-next.applescript) | Shortcuts to next foobar2000 for Mac v2.3.0 | [Jing Li](https://github.com/lixeon) | | | | + | | [Pause foobar2000](media/foobar2000/foobar2000-pause.applescript) | Shortcuts to pause foobar2000 for Mac v2.3.0 | [Jing Li](https://github.com/lixeon) | | | | + | | [Previous foobar2000](media/foobar2000/foobar2000-pervious.applescript) | Shortcuts to Previous foobar2000 for Mac v2.3.0 | [Jing Li](https://github.com/lixeon) | | | | + ## Navigation | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🫥 | [Hide Current Application](navigation/hide-application.applescript) | Easily hide your foremost application | [Chris Bailey](https://raycast.com/that70schris) | | | | | | [JustFocus](navigation/justfocus.applescript) | N/A | Jax0rz | ✅ | | | | 📂 | [Open Applications](navigation/open-applications.sh) | Opens the Applications folder in the Finder. | Raycast | | | | | 🖥 | [Open Clipboard URL on Desktop](navigation/open-desktop-url-from-clipboard.swift) | Opens the URL from the clipboard in the desktop app. | Raycast | | | | @@ -854,6 +1323,7 @@ This repository contains sample commands and documentation to write your own one | 🔍 | [Open Finder](navigation/open-finder.sh) | Open Finder at Home folder or argument location | [Afraz](https://github.com/afrazkhan) | ✅ | | | | | [Open Home](navigation/open-home.sh) | Opens the Home folder in the Finder. | Raycast | | | | | | [Open Image From Clipboard](navigation/open-clipboard-in-pixelmator-pro.applescript) | Creates a new document in Pixelmator Pro from the image stored in your clipboard. | [Bryce Carr](https://github.com/bdcarr) | | | | + | | [Open Last Downloaded](navigation/open-last-downloaded.sh) | Opens the last file that was downloaded | Raycast | | | | | | [Open Library](navigation/open-library.sh) | Opens the Library folder in the Finder. | Raycast | | | | | 🌐 | [Open URL From Clipboard](navigation/open-url-from-clipboard.sh) | Opens the URL in the clipboard. | Raycast | | | | | | [Quit Application](navigation/quit-application.applescript) | Quit the application. Edit the command to change the default values (Application: "", Force quit?: "No"). | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | @@ -861,32 +1331,31 @@ This repository contains sample commands and documentation to write your own one | | [Search in Dash](navigation/search-in-dash.sh) | N/A | Jax0rz | ✅ | | | | | [Search in Devdocs](navigation/search-in-devdocs.sh) | N/A | Jax0rz | ✅ | | | -## Password Managers +## Productivity #### Bitwarden | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | - | | [Bitwarden Status](password-managers/bitwarden/status.sh) | Display the authentication and lock status of the user's Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | | | | - | | [Copy First Matching Password](password-managers/bitwarden/copy-first-matching-password.sh) | Search all items in a Bitwarden vault, and copy the password of the first search result to the clipboard. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Copy First Matching TOTP](password-managers/bitwarden/copy-first-matching-totp.sh) | Search all items in a Bitwarden vault, and copy the TOTP of the first search result to the clipboard. | [Phil Salant](https://github.com/int3rrupt) | ✅ | | | - | | [Create a Text Send](password-managers/bitwarden/create-text-send.sh) | Create a new text-only Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Delete a Send](password-managers/bitwarden/delete-send.sh) | Delete a Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Edit a Send](password-managers/bitwarden/edit-send.sh) | Edit an existing Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [List All Text Sends](password-managers/bitwarden/list-sends.sh) | List all Bitwarden text Sends created in the currently unlocked account. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Lock Session](password-managers/bitwarden/lock.sh) | Lock a Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | | | | - | | [Log In](password-managers/bitwarden/log-in.template.sh) | Log in to Bitwarden. | [Phil Salant](https://github.com/PSalant726) | ✅ | ✅ | | - | | [Log Out](password-managers/bitwarden/log-out.sh) | Log out of Bitwarden. | [Phil Salant](https://github.com/PSalant726) | | | | - | | [Receive a Text Send](password-managers/bitwarden/receive-text-send.sh) | View the content of a text-only Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Search Vault Items](password-managers/bitwarden/search-vault-items.sh) | Search all items in a Bitwarden vault. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - | | [Unlock Session](password-managers/bitwarden/unlock.sh) | Unlock an authenticated Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | - -## Productivity +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Bitwarden Status](productivity/bitwarden/status.sh) | Display the authentication and lock status of the user's Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | | | | + | | [Copy First Matching Password](productivity/bitwarden/copy-first-matching-password.sh) | Search all items in a Bitwarden vault, and copy the password of the first search result to the clipboard. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Copy First Matching TOTP](productivity/bitwarden/copy-first-matching-totp.sh) | Search all items in a Bitwarden vault, and copy the TOTP of the first search result to the clipboard. | [Phil Salant](https://github.com/int3rrupt) | ✅ | | | + | | [Create a Text Send](productivity/bitwarden/create-text-send.sh) | Create a new text-only Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Delete a Send](productivity/bitwarden/delete-send.sh) | Delete a Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Edit a Send](productivity/bitwarden/edit-send.sh) | Edit an existing Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [List All Text Sends](productivity/bitwarden/list-sends.sh) | List all Bitwarden text Sends created in the currently unlocked account. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Lock Session](productivity/bitwarden/lock.sh) | Lock a Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | | | | + | | [Log In](productivity/bitwarden/log-in-apikey.template.sh) | Log in to Bitwarden using an API key. | [Marcel Bochtler](https://github.com/MarcelBochtler) | ✅ | ✅ | | + | | [Log In](productivity/bitwarden/log-in.template.sh) | Log in to Bitwarden. | [Phil Salant](https://github.com/PSalant726) | ✅ | ✅ | | + | | [Log Out](productivity/bitwarden/log-out.sh) | Log out of Bitwarden. | [Phil Salant](https://github.com/PSalant726) | | | | + | | [Receive a Text Send](productivity/bitwarden/receive-text-send.sh) | View the content of a text-only Bitwarden Send. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Search Vault Items](productivity/bitwarden/search-vault-items.sh) | Search all items in a Bitwarden vault. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Unlock Session](productivity/bitwarden/unlock.sh) | Unlock an authenticated Bitwarden session. | [Phil Salant](https://github.com/PSalant726) | ✅ | | | #### Imgur | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 📋 | [Clipboard to Imgur](productivity/imgur/imgur-upload-clipboard-image.template.sh) | Upload Image from your Clipboard and copy the image link to clipboard | [Fahim Faisal](https://github.com/i3p9) | | ✅ | | | 📷 | [Screenshot and Imgur](productivity/imgur/screenshot-and-imgur.sh) | Opens default screenshot interface and immediately uploads and copies link to clipboard | [Fahim Faisal](https://github.com/i3p9) | | | | | ☁️ | [Upload Latest Screenshot to Imgur](productivity/imgur/imgur-upload-latest-screenshot.template.sh) | Upload your last screenshot to Imgur and copy the image link to clipboard | [Fahim Faisal](https://github.com/i3p9) | | ✅ | | @@ -894,29 +1363,72 @@ This repository contains sample commands and documentation to write your own one #### Pomodoro | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 🍅 | [Start Timer](productivity/pomodoro/pomodoro-start-timer.sh) | Start a Pomodoro timer | [Thomas Paul Mann](https://github.com/thomaspaulmann) | ✅ | | | | 🍅 | [Status](productivity/pomodoro/pomodoro-status.sh) | Status of a Pomodoro timer | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | | 🍅 | [Stop Timer](productivity/pomodoro/pomodoro-stop-timer.sh) | Stop active Pomodoro timer | [Thomas Paul Mann](https://github.com/thomaspaulmann) | | | | -#### Stopwatch +#### Writing | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📖 | [Dictionary Lookup](productivity/writing/dictionary-lookup.swift) | Directly use macOS Dictionary | [Alessandra Pereyra](https://github.com/alessandrapereyra) | ✅ | | | + | 🤖 | [Word Count](productivity/writing/word-count.sh) | Counts the number of words of the text in the clipboard | [Benny Wong](https://bwong.net) | | | | + +#### macOCR + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📸 | [Run OCR](productivity/macocr/macocr-run-ocr.sh) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | + +#### stopwatch + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | ⏱ | [Show Stopwatch Progress](productivity/stopwatch/stopwatch-progress.sh) | Status of active stopwatch | [Achille Lacoin](https://github.com/pomdtr) | | | | | ⏱ | [Start Stopwatch](productivity/stopwatch/stopwatch-start.sh) | Start a stopwatch | [Achille Lacoin](https://github.com/pomdtr) | | | | | ⏱ | [Stop Stopwatch](productivity/stopwatch/stopwatch-stop.sh) | Stop active stopwatch, copy total time | [Achille Lacoin](https://github.com/pomdtr) | | | | +#### tesseract + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 🔍 | [OCR Screenshot](productivity/tesseract/tesseract-ocr.sh) | Tesseract OCR | [Diego Lopes](https://github.com/Dihgg) | ✅ | | | + ## Remote Control -#### Lg Tv +#### Arm64 + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📺 | [Switch to DP](remote-control/ddc/arm64/screen-dp.sh) | This script will switch the external display screen to DP. | goodhyun | | | | + | 📺 | [Switch to HDMI](remote-control/ddc/arm64/screen-hdmi.sh) | This script will switch the external display screen to HDMI. | goodhyun | | | | + +#### X86 + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📺 | [Switch to DP](remote-control/ddc/x86/screen-dp.sh) | This script will switch the external display screen to DP. | goodhyun | | | | + | 📺 | [Switch to HDMI](remote-control/ddc/x86/screen-hdmi.sh) | This script will switch the external display screen to HDMI. | goodhyun | | | | + +#### Denon AVR | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Configure](remote-control/denon-avr/configure.applescript) | Helperscript to configure Denon AVR Script Commands | [Rediwed](github.com/Rediwed) | ✅ | | | + | | [Power Off](remote-control/denon-avr/power-off.applescript) | Powers off a modern Denon AVR if it is currently powered on | [Rediwed](github.com/Rediwed) | | | | + | | [Power On](remote-control/denon-avr/power-on.applescript) | Powers on a modern Denon AVR if it is currently powered off | [Rediwed](github.com/Rediwed) | | | | + | | [Volume Down](remote-control/denon-avr/volume-down.applescript) | Decreases the volume of your Denon AVR by one unit | [Rediwed](github.com/Rediwed) | | | | + | | [Volume Up](remote-control/denon-avr/volume-up.applescript) | Increases the volume of your Denon AVR by one unit | [Rediwed](github.com/Rediwed) | | | | + +#### LG TV + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Authenticate](remote-control/lg-tv/authenticate.sh) | Authenticate the library. The TV has to be turned on. You have to provide the IP address of the TV and accept the connection on the TV. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Change Channel](remote-control/lg-tv/change-channel.sh) | Change the TV channel by its ID. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Change Input](remote-control/lg-tv/change-input.sh) | Change the input by its ID. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | - | | [Change Sound Output](remote-control/lg-tv/change-sound-output.sh) | Change the sound output. Possible "Output Type" values: tv_speaker | external_optical | external_arc | external_speaker | lineout | headphone | tv_external_speaker | tv_speaker_headphone | bt_soundbar. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | + | | [Change Sound Output](remote-control/lg-tv/change-sound-output.sh) | Change the sound output. Possible "Output Type" values: tv_speaker \| external_optical \| external_arc \| external_speaker \| lineout \| headphone \| tv_external_speaker \| tv_speaker_headphone \| bt_soundbar. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Change Volume](remote-control/lg-tv/change-volume.sh) | Change the volume level. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Close App](remote-control/lg-tv/close-app.sh) | Close the application by its ID. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | | | [Execute Command](remote-control/lg-tv/execute-command.sh) | Execute the given command on TV. | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | @@ -962,34 +1474,50 @@ This repository contains sample commands and documentation to write your own one | | [Turn Volume Up](remote-control/lg-tv/turn-volume-up.sh) | Turn the volume up. | [Jakub Lanski](https://github.com/jaklan) | | | | | | [Unmute](remote-control/lg-tv/unmute.sh) | Unmute the TV. | [Jakub Lanski](https://github.com/jaklan) | | | | -#### Samsung Tv +#### Samsung TV | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Turn Off TV](remote-control/samsung-tv/turn-off.template.py) | Turns off a Samsung TV. | [Darryl Brooks](https://github.com/DarrylBrooks97) | | ✅ | | | | [Turn On TV](remote-control/samsung-tv/turn-on.template.py) | Turns on a Samsung TV. | [Darryl Brooks](https://github.com/DarrylBrooks97) | | ✅ | | ## System | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 💻 | [Add Spacer to Dock](system/add-spacer-to-dock.sh) | Adds an invisible icon to the Dock as a separator. | [Alexandru Turcanu](https://github.com/Pondorasti) | | | | + | 🔋 | [Battery Info](system/battery-info.sh) | Get Battery percentage, time remaining, charge status, charger wattage, total cycles etc. | [Fahim Faisal](https://github.com/i3p9) | | | | | ☀️ | [Brightness](system/brightness.sh) | Set system brightness | [Antonio Dal Sie](https://github.com/exodusanto) | ✅ | | | + | 🖥️ | [CPU Usage](system/inline-cpu-usage-percent.sh) | Display CPU usage percent | [Juan Luis Romero](https://github.com/JuanluR8) | | | | | ☕️ | [Caffeinate](system/caffeinate-status.swift) | Shows caffeinate status and time left if it's running | [Yan Smaliak](https://github.com/ysmaliak) | | | | | ☕️ | [Caffeinate](system/caffeinate-status.sh) | Shows caffeinate status | [Yan Smaliak](https://github.com/ysmaliak) | | | | - | 💻 | [Capture Fullscreen to Clipboard](system/capture-fullscreen-to-clipboard.sh) | This script screenshots the entire screen and saves it to the clipboard. | [Aaron Miller](https://github.com/aaronhmiller) | | | sh | - | 💻 | [Capture Fullscreen to Desktop](system/capture-fullscreen-to-desktop.sh) | This script screenshots the entire screen and saves it to the desktop. | [Aaron Miller](https://github.com/aaronhmiller) | | | sh | - | 💻 | [Capture Screen Selection to Clipboard](system/capture-screen-selection-to-clipboard.sh) | This script screenshots the selected area and saves it to the clipboard. | [Aaron Miller](https://github.com/aaronhmiller) | | | sh | - | 💻 | [Capture Screen Selection to Desktop](system/capture-screen-selection-to-desktop.sh) | This script screenshots the selected area and saves it to the desktop. | [Aaron Miller](https://github.com/aaronhmiller) | | | sh | - | 📅 | [Copy Availability](system/copy-availability.swift) | Copies the calendar availability of today. | Raycast | | | | + | 💻 | [Capture Fullscreen to Clipboard](system/capture-fullscreen-to-clipboard.sh) | This script screenshots the entire screen and saves it to the clipboard. | [Aaron Miller](https://github.com/aaronhmiller) | | | | + | 💻 | [Capture Fullscreen to Desktop](system/capture-fullscreen-to-desktop.sh) | This script screenshots the entire screen and saves it to the desktop. | [Aaron Miller](https://github.com/aaronhmiller) | | | | + | 💻 | [Capture Screen Selection to Clipboard](system/capture-screen-selection-to-clipboard.sh) | This script screenshots the selected area and saves it to the clipboard. | [Aaron Miller](https://github.com/aaronhmiller) | | | | + | 💻 | [Capture Screen Selection to Desktop](system/capture-screen-selection-to-desktop.sh) | This script screenshots the selected area and saves it to the desktop. | [Aaron Miller](https://github.com/aaronhmiller) | | | | + | 🔪 | [Close All Finder Windows](system/close-finder-windows.applescript) | Close all open Finder windows. | [Alexander Steffen](https://github.com/alexjsteffen) | | | | + | 📅 | [Copy Availability](system/copy-availability.swift) | Copies the calendar availability of today. | Raycast | ✅ | | | + | | [Copy Finder Selection to Clipboard](system/copy-selection-to-clipboard.applescript) | Copy contents of selected items in Finder to the clipboard. If there's more than one file selected, they will be combined and added to the clipboard. | [Felipe Turcheti](https://felipeturcheti.com) | | | | | 💁 | [Copy Last Download](system/copy-last-download.swift) | Copy the last downloaded file to the clipboard. | Raycast | | | | | 📸 | [Copy Last Screenshot](system/copy-last-screenshot.swift) | Copies the last screenshot to the clipboard. | Raycast | | | | + | 📝 | [Copy Meeting Summary](system/meeting_summary_script.swift) | Copies a summary of today's meetings to the clipboard. | Raycast | | | | + | 📟 | [Copy Wi-Fi Password](system/wifi-password.sh) | Copy Wi-Fi password from current session | [Astrit Malsia](https://github.com/astrit) | | | | | 📧 | [Create Email](system/new-email.sh) | Opens default email application, and creates a new email with the given inputs. | [Brandon Escamilla](https://github.com/brandonescamilla) | ✅ | | | | 📄 | [Create New File](system/create-new-file.applescript) | Create files in the front window or desktop of the visit | [LokHsu](https://github.com/lokhsu) | | | | | | [Create New File in Finder](system/create-new-file-in-finder.applescript) | Create New File in Finder is a script to make your Finder better.You can use this script to create a plain text file. | Jax0rz | | | | + | | [Custom Window Size](system/custom-window.applescript) | Resize and center the frontmost window to any custom size. | [Astrit](https://github.com/astrit) | ✅ | | | + | | [Default to Arc](system/default-browser-arc.applescript) | Set Arc as the default browser. | [Marcos Sánchez-Dehesa](https://github.com/dehesa) | | | | + | | [Default to Chrome](system/default-browser-chrome.applescript) | Set Google Chrome as the default browser. | [Marcos Sánchez-Dehesa](https://github.com/dehesa) | | | | + | | [Default to Chromium](system/default-browser-chromium.applescript) | Set Chromium as the default browser. | [Marcos Sánchez-Dehesa](https://github.com/dehesa) | | | | + | | [Default to Firefox](system/default-browser-firefox.applescript) | Set Firefox as the default browser. | [Marcos Sánchez-Dehesa](https://github.com/dehesa) | | | | + | | [Default to Safari](system/default-browser-safari.applescript) | Set Safari as the default browser. | [Marcos Sánchez-Dehesa](https://github.com/dehesa) | | | | | ☕️ | [Disable Caffeinate](system/caffeinate-disable.sh) | Stops all caffeinate sessions | [Yan Smaliak](https://github.com/ysmaliak) | | | | + | 💾 | [Disk Free](system/disk-free.sh) | Show free space in your mounted disks | [Juan Luis Romero](https://github.com/JuanluR8) | | | | | 💿 | [Disk Usage](system/disk-usage.sh) | Show disk usage for / (root) | [Jesse Claven](https://github.com/jesse-c) | | | | + | 🔕 | [Dismiss Notifications](system/dismiss-notifications.applescript) | Close all notification alerts staying on screen, e.g., Calendar notifications. | [benyn](github.com/benyn) | | | | | 🔕 | [Do Not Disturb](system/do-not-disturb.sh) | Do Not Disturb | [Antonio Dal Sie](https://github.com/exodusanto) | ✅ | | | + | 🤖 | [Dock Position](system/dock-set-position.sh) | Set the position of the Dock in the screen | [Jelte Lagendijk](https://raycast.com/j3lte) | ✅ | | | + | 🤖 | [Dock Set Autohide](system/dock-set-autohide.sh) | Set the Dock autohide | [Jelte Lagendijk](https://raycast.com/j3lte) | ✅ | | | | 📀 | [Eject All Disks](system/eject-all-disks.applescript) | Ejects all mounted disk images. | Raycast | | | | | 📋 | [Empty Clipboard](system/empty-clipboard.sh) | Empty Clipboard | Raycast | | | | | 🗑 | [Empty Trash](system/empty-trash.applescript) | Empty the trash. | Raycast | | | | @@ -999,36 +1527,49 @@ This repository contains sample commands and documentation to write your own one | ⚠️ | [Kill Running Process](system/kill-process.sh) | Force kill a running process | [Gustavo Santana](https://github.com/gumadeiras) | ✅ | | | | 📈 | [Largest CPU Process](system/largest-cpu-process.sh) | Report process with largest system CPU usage. | [Caleb Stauffer](https://github.com/crstauf) | | | | | 📈 | [Largest RAM Process](system/largest-ram-process.sh) | Report process with largest system RAM usage. | [Caleb Stauffer](https://github.com/crstauf) | | | | + | 🔋 | [Low Power Mode](system/Low Power Mode.sh) | N/A | [Kailash Yellareddy](https://github.com/kyellareddy) | | | | + | | [Minimize All Windows](system/minimize-all-windows.applescript) | This script minimizes all windows of currently running apps | [Ernest Ojeh](https://github.com/namzo) | | | | | 🌵 | [Modify File Extension](system/modify-extension.sh) | Batch modify the file in the current directory or the specified extension of the selected file | [LokHsu](https://github.com/lokhsu) | ✅ | | | | 🗑 | [Move Desktop to Trash](system/move-desktop-to-trash.applescript) | Empty the desktop. | [Seypopi](https://github.com/Seypopi) | | | | | | [Move Downloads to Trash](system/move-downloads-to-trash.applescript) | N/A | Jax0rz | | | | + | 🛜 | [Network Info](system/Network Info.sh) | N/A | [Kailash Yellareddy](https://github.com/kyellareddy) | | | | + | 🌐 | [Network Quality](system/network-quality.sh) | N/A | [Archie Lacoin](https://github.com/pomdtr) and [LanikSJ](https://github.com/LanikSJ) | | | | | 📶 | [Network Status](system/network-status.sh) | Get current network connections. | [Alexandru Turcanu](https://github.com/Pondorasti) | | | | + | 🖼 | [OCR](system/ocr.swift) | Use macOS Vision API Identification pictures, if it contain a QR code, Copy the QR code content to the clipboard, If do not include QR codes, identify text content and supplement to clipboard | [zhe](https://github.com/wmszhe) | | | | + | 🔑 | [One-Time Password](system/otp.sh) | Get One-Time Password (OTP) from Apple Password Manager | Angelos Michalopoulos | ✅ | | | | 📁 | [Open Folder](system/open-folder.sh) | Open a folder on macOS | [Bin Hua](https://github.com/hzb) | ✅ | | | + | 📋 | [Open Image](system/open-image-from-clipboard.sh) | Open Image from Clipboard in Preview for OCR or other purposes. | [xxchan](https://github.com/xxchan) | | | | | 💁‍♂️ | [Open Last Download](system/open-last-download.swift) | Opens the last downloaded file. | Raycast | | | | | 🗃 | [Open Selection With](system/open-selection-with.applescript) | Open selected items in Finder with the given application. | [Felipe Turcheti](https://felipeturcheti.com) | ✅ | | | | 💥 | [Quit All Applications](system/quit-all-apps.swift) | Quits all running applications except Finder and Raycast. | Raycast | | | | | 💥 | [Quit app](system/quit-app.swift) | Quits an app, by name or process id. | [Roland Leth](https://runtimesharks.com) | ✅ | | | | 🖼️ | [Refresh Wallpaper](system/wallpaper-refresh.applescript) | Apply a random image from the [wallpaper directory](https://support.apple.com/guide/mac-help/change-your-desktop-picture-mchlp3013/mac) for the main display's current [Space](https://support.apple.com/guide/mac-help/work-in-multiple-spaces-mh14112/mac). | [Caleb Stauffer](https://github.com/crstauf) | | | | + | 📂 | [Rename Video](system/rename-videos-pictures.py) | This is a simple Python script for recursively renaming video and picture files within a directory. Type the root directory's absolute path, and it will scan all the video and picture files in it and rename them according to the folder where they are located as the format `--`. | [StepaniaH](https://github.com/StepaniaH) | ✅ | | | + | 🚀 | [Reset Launchpad](system/reset-launchpad.sh) | Resets the macOS Launchpad to its default state | [Zach Dawson](https://raycast.com/zdawz) | | | | | ♻️ | [Restart](system/restart.applescript) | Restarts computer. | Raycast | | | | | 💀 | [Restart the Dock](system/restart-dock.sh) | Restart the Dock | [Jordi Clement](https://github.com/jordicl) | | | | | 💀 | [Restart the Finder](system/restart-finder.sh) | Restart the Finder | [Jordi Clement](https://github.com/jordicl) | | | | | 🔡 | [Running processes](system/list-processes.rb) | List running app showing their process id, CPU usage, name, and optionally the process path. | [Roland Leth](https://runtimesharks.com) | ✅ | | | | 🎨 | [Sample Color](system/sample-color.swift) | Sample a color from anywhere on your screen. | [Jesse Claven](https://github.com/jesse-c) | | | | + | 🤖 | [Save Image From Clipboard](system/save-image-from-clipboard.py) | Save Image From Clipboard | [Yufei Kang](kangyufei.net) and [LanikSJ](https://github.com/LanikSJ) | | | | | 🌀 | [Screen Saver](system/screensaver.applescript) | A script command to start your current screen saver. | [Valentin Chrétien](https://twitter.com/valentinchrt) | | | | | 🧭 | [Set Frontmost App as Default Browser](system/default-browser-front-most-app.applescript) | Set Frontmost Web Browser as Default Browser. | [Yohanes Bandung Bondowoso](https://github.com/ybbond) | ✅ | | | | 🛌 | [Shut Down](system/shutdown.applescript) | Shuts down computer. | Raycast | | | | - | 🖥 | [Sidecar Switch](system/sidecar-toggle.template.applescript) | Toggles on/off a Sidecar screen. | [Marcos Sánchez-Dehesa](https://www.github.com/dehesa) | | ✅ | | | 😴 | [Sleep](system/sleep.applescript) | Puts computer to sleep. | Raycast | | | | - | 🧭 | [Switch Default Browser to Chrome](system/default-browser-chrome.sh) | Set Chrome as the default browser. | [Marc Klingen](https://github.com/marcklingen) | | | | - | 🧭 | [Switch Default Browser to Chromium](system/default-browser-chromium.sh) | Set Chromium as the default browser. | [Marc Klingen](https://github.com/marcklingen) | | | | - | 🧭 | [Switch Default Browser to Firefox](system/default-browser-firefox.sh) | Set Firefox as the default browser. | [Marc Klingen](https://github.com/marcklingen) | | | | - | 🧭 | [Switch Default Browser to Safari](system/default-browser-safari.sh) | Set Safari as the default browser. | [Marc Klingen](https://github.com/marcklingen) | | | | + | 😴 | [Sleep Timer](system/sleep-timer.applescript) | Put your Mac to sleep (in X minutes). | [AndriiBarabash](https://github.com/AndriiBarabash) | ✅ | | | + | 🧬 | [Toggle .DS_Store](system/toggle-ds-store.applescript) | A script command to enable and disable .DS_Store | [Astrit](https://github.com/astrit) | | | | + | 🔋 | [Toggle Battery Charging](system/toggle-battery-charging.sh) | Toggle charging the battery when it is plugged in. When turned off, it will always use the charger instead of the battery; when turned on, it will go to automatic mode (decide based on your settings and daily charging routine). | [Amir Hossein SamadiPour](https://github.com/SamadiPour) | | | | | | [Toggle Bluetooth](system/bluetooth.template.applescript) | Toggle your Bluetooth connection. | [Vincent Dörig](https://github.com/vincentdoerig) | | ✅ | | | 🖥 | [Toggle Desktop Icons](system/toggle-desktop-icons.applescript) | A script command to show and hide icons of Desktop folder | [Raycast](https://raycast.com) | | | | + | 🔄 | [Toggle Desktop Widgets](system/toggle-desktop-widget.sh) | N/A | [Federico Zivolo](https://github.com/FezVrasta) | | | | + | 🤖 | [Toggle Dock Autohide](system/dock-autohide-toggle.sh) | Toggle the Dock Autohide | [Jelte Lagendijk](https://raycast.com/j3lte) | | | | | 👓 | [Toggle Filename Extensions](system/toggle-filename-extensions.applescript) | Show or hide all filename extensions (like .txt, .png) | [Senthil Prabhu](https://github.com/senthilprabhut) | | | | | 🖥 | [Toggle Flip Screen to °](system/toggle-flip-screen.template.applescript) | Toggle flip (rotate) or revert the to ° | [Yohanes Bandung Bondowoso](https://github.com/ybbond) | | ✅ | | | 👓 | [Toggle Hidden Files](system/toggle-hidden-files.applescript) | Show and hide hidden files/folders which starts with "." (dot), i.e: .bash_rc, .ssh | [Thiago Holanda](https://twitter.com/tholanda) | | | | + | 🐚 | [Toggle Lid Sleep](system/toggle-lid-sleep.sh) | Prevent sleep from closing laptop lid (clamshell mode) | [Ivan Rybalko](https://github.com/ivribalko) | | | | | 🖱 | [Toggle Natural Scrolling](system/toggle-natural-scrolling.applescript) | Script Command to change natural trackpad/mouse scrolling setting. Reverting the setting value each time. | [Wiley Marques](https://twitter.com/wileymarques) | | | | + | 🖱 | [Toggle Natural Scrolling (macOS 15+)](system/toggle-natural-scrolling-macos15.applescript) | Toggle natural trackpad/mouse scrolling setting for macOS 15.6.1+ | [Raphael-KR](https://github.com/Raphael-KR) | | | | + | 🌘 | [Toggle Night Shift](system/nightshift.sh) | Toggle Night Shift mode (until tomorrow/sunrise). Required [nightlight](https://github.com/smudge/nightlight) | [BhEaN](https://github.com/bhean) | | | | | 🌗 | [Toggle System Appearance](system/toggle-system-appearance.applescript) | Script Command to switch between the system appearance, light and dark mode. | [Thiago Holanda](https://twitter.com/tholanda) | | | | | | [Toggle Wi-Fi](system/wifi.template.applescript) | Toggle your Wi-Fi connection. | [Vincent Dörig](https://github.com/vincentdoerig) | | ✅ | | | 😴 | [Turn Off Do Not Disturb](system/dnd-off.sh) | Turn off "do not disturb" mode. Does [not work on Big Sur](https://github.com/sindresorhus/do-not-disturb-cli/issues/2). | [Caleb Stauffer](https://github.com/crstauf) | | | | @@ -1039,33 +1580,53 @@ This repository contains sample commands and documentation to write your own one #### Audio | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | ⚡️ | [AirPods Battery Level](system/audio/airpodsbattery.sh) | Get the current battery status of your AirPods. | [Quentin Eude](https://www.github.com/qeude) | | | | | 🔈 | [Audio devices](system/audio/get-audio-devices.swift) | Lists all audio devices | [Roland Leth](https://runtimesharks.com) | | | | | 🔈 | [Audio devices](system/audio/get-selected-audio-device.swift) | Shows the selected audio devices for input and output | [Roland Leth](https://runtimesharks.com) | | | | + | 🎧 | [Headphones Battery Level](system/audio/bluetooth-headphones-battery-level.template.sh) | Get the battery level of your bluetooth headphones | [Mortada Sarheed](https://github.com/mSarheed) | | ✅ | | | 🎧 | [Reload CoreAudio](system/audio/reload-coreaudio.sh) | Reloads CoreAudio. | [Maxim Krouk](https://github.com/maximkrouk) | | | | | 🎧 | [Set audio device](system/audio/set-audio-device.swift) | Sets the input (i), the output (o) or both (b) audio sources, based on name. If `both` is passed, but no input or output device is found with the given name, it will still try to set the other one. For example, if you're trying to set both to "External mic", which doesn't have an input source, it will still set the output to the mic; vice-versa for a speaker. | [Roland Leth](https://runtimesharks.com) | ✅ | | | | 🔊 | [Switch Audio to ](system/audio/audio-output-switch.template.applescript) | Switch audio output to desired device. | [mmerle](https://github.com/mmerle) | | ✅ | | | | [Toggle AirPods](system/audio/toggle-airpods.template.swift) | Toggle AirPods bluetooth device | [Nichlas W. Andersen](https://github.com/itsnwa) | | ✅ | | | 🎙 | [Toggle Microphone](system/audio/toggle-mic.applescript) | Toggles microphone. | [Matthew Morek](https://github.com/matthewmorek) | | | | + | 🔔 | [Toggle Mute Notifcation Sounds](system/audio/toggle-mute-notification-sounds.applescript) | Toggles notification sounds. | [Annie Ma](http://www.anniema.co/) | | | | + +#### Magic Keyboard Switcher -#### Vpn +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | | [Magic Keyboard switcher](system/magic-keyboard-switcher/magic-keyboard-switcher.template.sh) | Switch a single magic keyboard between computers | [blastik](https://github.com/blastik) | | ✅ | | + +#### VPN | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 📡 | [Connect](system/vpn/vpn-start.sh) | Start VPN connection. | [Alexandru Turcanu](https://github.com/Pondorasti) | | | | | 📡 | [Disconnect](system/vpn/vpn-stop.sh) | Stop VPN connection. | [Alexandru Turcanu](https://github.com/Pondorasti) | | | | | 📡 | [VPN Status](system/vpn/vpn-status.sh) | Stop VPN connection. | [Alexandru Turcanu](https://github.com/Pondorasti) | | | | +#### Vpnutil + +| Icon | Title | Description | Author | Args | Templ | Lang | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | + | 📡 | [Start VPN](system/vpnutil/vpnutil-start.sh) | Start VPN connection. | [Sergey Fuksman](https://github.com/fuksman) | | | | + | 📡 | [Stop VPN](system/vpnutil/vpnutil-stop.sh) | Stop VPN connection | [Sergey Fuksman](https://github.com/fuksman) | | | | + | 📡 | [Toggle VPN](system/vpnutil/vpnutil-toggle.sh) | Toggle VPN connection | [Sergey Fuksman](https://github.com/fuksman) | | | | + | 📡 | [VPN Status](system/vpnutil/vpnutil-status.sh) | Check VPN connection | [Sergey Fuksman](https://github.com/fuksman) | | | | + ## Web Searches | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | 📦 | [Bundlephobia cost](web-searches/bundlephobia.sh) | N/A | [Zander Martineau](https://zander.wtf) | ✅ | | | | ❓ | [Caniuse.com search](web-searches/caniuse.sh) | N/A | [Zander Martineau](https://zander.wtf) | ✅ | | | | 🌦 | [Check Weather](web-searches/check-weather.sh) | N/A | [Jakub Lanski](https://github.com/jaklan) | ✅ | | | - | | [CoinMarketCap Search](web-searches/search-coinmarketcap.sh) | Searches coinmarketcap currencies. | [Benedict Neo](https://github.com/benthecoder) | ✅ | | | + | 🚚 | [Clipboard to 17TRACK](web-searches/clipboard-to-17track.js) | Open 17TRACK with the tracking code found in the clipboard | [Alessandra Pereyra](https://github.com/alessandrapereyra) | | | | + | 🪙 | [CoinMarketCap Search](web-searches/search-coinmarketcap.sh) | Searches coinmarketcap currencies. | [Benedict Neo](https://github.com/benthecoder) | ✅ | | | | | [Find Email Address With Hunter](web-searches/hunter.sh) | Find emails using hunter.io | [Tanguy Le Stradic](https://github.com/tanguyls) | ✅ | | | + | 📖 | [Find Paper](web-searches/doi.sh) | Parses and opens DOI links in your browser | [Razvan Azamfirei](https://github.com/razvanazamfirei) | ✅ | | | + | 📖 | [Find Paper](web-searches/doi-clipboard.sh) | Scans clipboard and opens DOI links in your browser | [Razvan Azamfirei](https://github.com/razvanazamfirei) | | | | | | [Giphy search](web-searches/giphy.sh) | N/A | [Zander Martineau](https://zander.wtf) | ✅ | | | | 🌍 | [Google Translate](web-searches/google-translate.rb) | Translates via Google Translate | [Roland Leth](https://runtimesharks.com) | ✅ | | | | | [I'm Feeling Ducky](web-searches/im-feeling-ducky.sh) | Open the first DuckDuckGo search result page for your query (also supports bang!) | [Achille Lacoin](https://github.com/pomdtr) | ✅ | | | @@ -1076,15 +1637,18 @@ This repository contains sample commands and documentation to write your own one | | [Search Genre in Chosic](web-searches/search-gender-in-chosic.applescript) | Find the current Spotify track's gender in Chosic | [quelhasu](https://github.com/quelhasu) | | | | | | [Search GitHub](web-searches/search-github.sh) | Search [GitHub](https://github.com). | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [Search Go Package Documentation](web-searches/pkg-go-dev.sh) | Search pkg.go.dev for package documentation | [Phil Salant](https://github.com/PSalant726) | ✅ | | | + | | [Search Google Maps](web-searches/google-maps.sh) | N/A | Raycast | ✅ | | | | | [Search Hacker News](web-searches/search-hacker-news.sh) | Search Hacker News | [Shannon Matthews](https://github.com/s-oram) | ✅ | | | | | [Search IMDB](web-searches/search-imdb.sh) | Search IMDB. | [Lucas Costa](https://github.com/lucasrcosta) | ✅ | | | | | [Search LinkedIn](web-searches/search-linkedin.sh) | Search LinkedIn | [Nitin Gupta](https://twitter.com/gniting) | ✅ | | | | | [Search MDN (Mozilla Developer Network)](web-searches/mozilla-developer-network.sh) | N/A | [Jon Callahan](https://www.joncallahan.com) | ✅ | | | | | [Search Netflix](web-searches/search-netflix.sh) | Search Netflix. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | + | | [Search OpenSecrets.org](web-searches/opensecrets.sh) | N/A | [Daniel Sieradski](https://github.com/selfagency) | ✅ | | | | | [Search PHP Docs](web-searches/search-php-docs.sh) | Search [PHP official documentation](https://www.php.net/docs.php). | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [Search Python 3 Documentation](web-searches/search-python3-docs.sh) | Search Python 3 Documentation | [Lucas Costa](https://github.com/lucasrcosta) | ✅ | | | | | [Search Python Package Index (PyPI)](web-searches/search-pypi.sh) | Search Python Package Index (PyPI) | [Lucas Costa](https://github.com/lucasrcosta) | ✅ | | | - | | [Search Script Command](web-searches/search-script-command-marketplace.sh) | Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https://scriptcommands.com). | [Alexandru Turcanu](https://github.com/Pondorasti) | ✅ | | | + | | [Search Rust Documentation](web-searches/search-rust-docs.sh) | Search Rust documentation | [lemorage](https://raycast.com/lemorage) | ✅ | | | + | | [Search Script Command](web-searches/search-script-command-marketplace.sh) | Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https://scriptcommands.alexandru.so). | [Alexandru Turcanu](https://github.com/Pondorasti) | ✅ | | | | | [Search Swift Code](web-searches/search-swift-github.sh) | N/A | Raycast | ✅ | | | | | [Search Unsplash](web-searches/search-unsplash.sh) | Search [Unsplash](https://unsplash.com). | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [Search WP Engine Installs](web-searches/search-wpengine-installs.sh) | Search [WP Engine](https://wpengine.com) installs. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | @@ -1122,10 +1686,10 @@ This repository contains sample commands and documentation to write your own one | 🐸 | [njt](web-searches/njt.sh) | N/A | [Zander Martineau](https://zander.wtf) | ✅ | | | | | [npms](web-searches/npms.sh) | N/A | [Zander Martineau](https://zander.wtf) | ✅ | | | -#### Wordpress +#### WordPress | Icon | Title | Description | Author | Args | Templ | Lang | -| ---- | ----- | ----------- | ------ | ---- | ----- | ---- | +| :--: | ----- | ----------- | :----: | :--: | :---: | :--: | | | [Search WordPress Docs](web-searches/wordpress/search-wordpress-docs.sh) | Search [WordPress Developer documentation](https://developer.wordpress.org/reference/). | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [WordPress CLI Command](web-searches/wordpress/wordpress-cli-command.sh) | Open [WordPress CLI command reference](https://developer.wordpress.org/cli/commands/) for specified command. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | | | [WordPress Classes Reference](web-searches/wordpress/wordpress-classes-reference.sh) | Open [WordPress classes reference](https://developer.wordpress.org/reference/classes/) for specified class. | [Caleb Stauffer](https://github.com/crstauf) | ✅ | | | diff --git a/commands/ai/gemini/gemini.js b/commands/ai/gemini/gemini.js new file mode 100755 index 000000000..20eaa42d8 --- /dev/null +++ b/commands/ai/gemini/gemini.js @@ -0,0 +1,231 @@ +#!/usr/bin/env node + +// Dependencies: +// This script requires the following software to be installed: +// - `node` https://nodejs.org +// - `chrome-cli` https://github.com/prasmussen/chrome-cli +// Install via homebrew: `brew install node chrome-cli` + +// This script needs to run JavaScript in your browser, which requires your permission. +// To do so, open Chrome and find the menu bar item: +// View > Developer > Allow JavaScript from Apple Events + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Ask Gemini +// @raycast.mode silent +// @raycast.packageName Gemini + +// Optional parameters: +// @raycast.icon ./images/icon-gemini.svg +// @raycast.argument1 { "type": "text", "placeholder": "Selected Text", "optional": true } +// @raycast.argument2 { "type": "text", "placeholder": "Prompt"} + +// Documentation: +// @raycast.description Open Gemini in Chrome browser and submit a prompt with optional selected text as context +// @raycast.author Est7 +// @raycast.authorURL https://github.com/est7 + +// @raycast.author Nimo Beeren +// @raycast.authorURL https://github.com/nimobeeren + +const { execSync } = require("child_process"); + +const selectedText = process.argv[2] || ""; // Get the text from "Selected Text" argument, or use an empty string if argument is empty. +const prompt = process.argv[3]; + +process.env.OUTPUT_FORMAT = "json"; + +/** Escape a string so that it can be used in JavaScript code when wrapped in double quotes. */ +function escapeJsString(str) { + return str.replaceAll(`\\`, `\\\\`).replaceAll(`"`, `\\"`); +} + +/** Escape a string so that it can be used in a shell command when wrapped in single quotes. */ +function escapeShellString(str) { + return str.replaceAll(`'`, `'"'"'`); +} + +// used to wait for Chrome to activate. +function sleep(ms) { + const start = Date.now(); + while (Date.now() - start < ms) {} +} + +/** + * Verifies that all required dependencies are installed. + * Exits the process with an error message if any dependency is missing. + */ +function checkDependencies() { + // Check if Google Chrome is installed + try { + execSync("osascript -e 'tell application \"Google Chrome\" to get version'" , { stdio: "ignore" }); + } catch { + try { + execSync("osascript -e 'tell application \"Chrome\" to get version'" , { stdio: "ignore" }); + } catch { + console.error("Google Chrome is required to run this script"); + process.exit(1); + } + } + + // Check if chrome-cli is installed + try { + execSync("which chrome-cli"); + } catch { + console.error( + "chrome-cli is required to run this script (https://github.com/prasmussen/chrome-cli)" + ); + process.exit(1); + } +} + +// Verify all dependencies are installed +checkDependencies(); + +// Bring Chrome to the foreground first. +try { + // Try to activate Chrome through AppleScript, supporting different possible application names. + execSync("osascript -e 'tell application \"Google Chrome\" to activate'", { + stdio: "ignore", + }); +} catch (e) { + try { + // If the first naming method fails, try possible alternatives. + execSync("osascript -e 'tell application \"Chrome\" to activate'", { + stdio: "ignore", + }); + } catch (err) { + console.error( + "Unable to activate Chrome browser, continue with other operations", + ); + } +} + +// Give Chrome a little time to make sure it is activated +sleep(300); + +// Find the Gemini tab if one is already open +let tabs = JSON.parse(execSync("chrome-cli list tabs")).tabs; +let geminiTab = tabs.find((tab) => + tab.url.startsWith("https://gemini.google.com/"), +); + +// If there is a Gemini tab open, get its info. Otherwise, open Gemini in a new window. +let geminiTabInfo; +if (geminiTab) { + // Focus on existing tags, do not refresh the page + execSync(`chrome-cli activate -t ${geminiTab.id}`); + // Get tab info + geminiTabInfo = JSON.parse(execSync(`chrome-cli info -t ${geminiTab.id}`)); +} else { + // Open a Gemini session in a new tab, focus it and return the tab info + geminiTabInfo = JSON.parse( + execSync("chrome-cli open 'https://gemini.google.com/app'"), + ); +} + +// Wait for the tab to be loaded, then execute the script +let interval = setInterval(() => { + if (geminiTabInfo.loading) { + geminiTabInfo = JSON.parse( + execSync(`chrome-cli info -t ${geminiTabInfo.id}`), + ); + } else { + clearInterval(interval); + executeScript(); + } +}, 100); + +function executeScript() { + const script = async function (selectedText, prompt) { + // Wait for prompt element to be on the page + let promptElement; + await new Promise((resolve) => { + let interval = setInterval(() => { + promptElement = document.querySelector( + 'div[aria-label="Enter a prompt here"]', + ); + if (promptElement) { + clearInterval(interval); + resolve(); + } + }, 100); + }); + + // Prepare the final text + let finalText = ""; + if (selectedText && selectedText.trim() !== "") { + finalText += `${selectedText}\n\n${prompt}`; + } else { + finalText = prompt; + } + + // Focus the input element first + promptElement.focus(); + + // Check if there's existing content + const hasExistingContent = promptElement.textContent.trim() !== ""; + + // Clear existing content if needed - safely without innerHTML + if (!hasExistingContent) { + // If empty, we'll just add our content + // No need to clear anything + } else { + // If we want to append to existing content, add a newline + // Create a new paragraph for separation + const selection = window.getSelection(); + const range = document.createRange(); + + // Move cursor to the end of existing content + range.selectNodeContents(promptElement); + range.collapse(false); // false means collapse to end + selection.removeAllRanges(); + selection.addRange(range); + + // Insert two newlines to separate content + document.execCommand("insertText", false, "\n\n"); + } + + // Insert the content using execCommand which is safer than innerHTML + // Split by newlines and insert with proper paragraph formatting + const paragraphs = finalText.split("\n"); + paragraphs.forEach((paragraph, index) => { + if (index > 0) { + // Insert newline between paragraphs (not before the first one) + document.execCommand("insertText", false, "\n"); + } + + // Insert the paragraph text + document.execCommand("insertText", false, paragraph || "\u200B"); + }); + + // Trigger input event to notify Gemini of changes + const inputEvent = new Event("input", { bubbles: true }); + promptElement.dispatchEvent(inputEvent); + + // Ensure cursor is at the end and visible + const selection = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(promptElement); + range.collapse(false); // false means collapse to end + selection.removeAllRanges(); + selection.addRange(range); + + // Scroll to make cursor visible + promptElement.scrollTop = promptElement.scrollHeight; + + // Additional scroll after a short delay to ensure visibility + setTimeout(() => { + promptElement.scrollTop = promptElement.scrollHeight; + }, 100); + }; + + const functionString = escapeShellString(script.toString()); + const selectedTextString = escapeShellString(escapeJsString(selectedText)); + const promptString = escapeShellString(escapeJsString(prompt)); + + execSync( + `chrome-cli execute '(${functionString})(\"${selectedTextString}\", \"${promptString}\")' -t ${geminiTabInfo.id}`, + ); +} diff --git a/commands/ai/gemini/images/icon-gemini.svg b/commands/ai/gemini/images/icon-gemini.svg new file mode 100644 index 000000000..4545c8331 --- /dev/null +++ b/commands/ai/gemini/images/icon-gemini.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/commands/apps/Message/copycode.sh b/commands/apps/Message/copycode.sh new file mode 100755 index 000000000..0cb5d737c --- /dev/null +++ b/commands/apps/Message/copycode.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Copy Code +# @raycast.mode silent +# @raycast.packageName Messages + +# Optional parameters: +# @raycast.icon images/Message.png + +# Documentation: +# @raycast.description Copy verification code from a message. +# @raycast.author Fatpandac +# @raycast.authorURL https://github.com/Fatpandac + +USERNAME=$(id -u -n) + +result=$(sqlite3 /Users/$USERNAME/Library/Messages/chat.db 'SELECT text FROM message WHERE datetime(date/1000000000 + 978307200,"unixepoch","localtime") > datetime("now","localtime","-60 second") ORDER BY date DESC LIMIT 1;') + +#You can append another `keyword` into the list to support other language Messages. +keyword=("验证码" "code"); +keyword_regex="^(.*)(${keyword[*]/%/|})(.*)$" + +if [ ! $result ]; then + echo "No verification code received in the last 60 seconds!" + exit 0; +fi + +if [[ "$result" =~ "$keyword_regex" ]]; then + code=`echo $result | grep -o "[0-9]\{4,6\}"`; + + echo "$code" | pbcopy; + echo "$code code copied!" +fi + diff --git a/commands/apps/Message/images/Message.png b/commands/apps/Message/images/Message.png new file mode 100644 index 000000000..f240f8857 Binary files /dev/null and b/commands/apps/Message/images/Message.png differ diff --git a/commands/apps/baremetrics/get-arpu.sh b/commands/apps/baremetrics/get-arpu.sh new file mode 100755 index 000000000..35ba04558 --- /dev/null +++ b/commands/apps/baremetrics/get-arpu.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function below). + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Average Revenue Per User +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.icon images/baremetrics.png +# @raycast.packageName Baremetrics + +# Documentation: +# @raycast.description Display Average revenue per user (ARPU) +# @raycast.author Valentin Chrétien +# @raycast.authorURL https://github.com/valentinchrt + + +# Configuration + +# To create a new API token, do the following: +# 1. Go to Settings > API (https://app.baremetrics.com/settings/api) +# 2. Copy your Live API Key +# 3. Insert your API token below + +API_TOKEN='' + +DATE=`gdate -d yesterday '+%Y-%m-%d'` + + +# Main program + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +ARPU_BEFORE=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/arpu?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +ARPU=$(echo "$ARPU_BEFORE * 0.01" | bc -l) +printf "€%'.0f\n" $ARPU \ No newline at end of file diff --git a/commands/apps/baremetrics/get-arr.sh b/commands/apps/baremetrics/get-arr.sh new file mode 100755 index 000000000..79e25649f --- /dev/null +++ b/commands/apps/baremetrics/get-arr.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function below). + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Annual Recurring Revenue +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.icon images/baremetrics.png +# @raycast.packageName Baremetrics + +# Documentation: +# @raycast.description Display Annual Recurring Revenue (ARR) +# @raycast.author Valentin Chrétien +# @raycast.authorURL https://github.com/valentinchrt + + +# Configuration + +# To create a new API token, do the following: +# 1. Go to Settings > API (https://app.baremetrics.com/settings/api) +# 2. Copy your Live API Key +# 3. Insert your API token below + +API_TOKEN='' + +DATE=`gdate -d yesterday '+%Y-%m-%d'` + + +# Main program + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +ARR_BEFORE=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/arr?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +ARR=$(echo "$ARR_BEFORE * 0.01" | bc -l) +printf "€%'.0f\n" $ARR \ No newline at end of file diff --git a/commands/apps/baremetrics/get-ltv.sh b/commands/apps/baremetrics/get-ltv.sh new file mode 100755 index 000000000..937dcf666 --- /dev/null +++ b/commands/apps/baremetrics/get-ltv.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function below). + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Lifetime Value +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.icon images/baremetrics.png +# @raycast.packageName Baremetrics + +# Documentation: +# @raycast.description Display Lifetime Value (LTV) +# @raycast.author Valentin Chrétien +# @raycast.authorURL https://github.com/valentinchrt + + +# Configuration + +# To create a new API token, do the following: +# 1. Go to Settings > API (https://app.baremetrics.com/settings/api) +# 2. Copy your Live API Key +# 3. Insert your API token below + +API_TOKEN='' + +DATE=`gdate -d yesterday '+%Y-%m-%d'` + + +# Main program + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +LTV_BEFORE=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/ltv?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +LTV=$(echo "$LTV_BEFORE * 0.01" | bc -l) +printf "€%'.0f\n" $LTV \ No newline at end of file diff --git a/commands/apps/baremetrics/get-mrr.sh b/commands/apps/baremetrics/get-mrr.sh new file mode 100755 index 000000000..7644d31a4 --- /dev/null +++ b/commands/apps/baremetrics/get-mrr.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function below). + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Monthly Recurring Revenue +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.icon images/baremetrics.png +# @raycast.packageName Baremetrics + +# Documentation: +# @raycast.description Display Monthly Recurring Revenue (MRR) +# @raycast.author Valentin Chrétien +# @raycast.authorURL https://github.com/valentinchrt + + +# Configuration + +# To create a new API token, do the following: +# 1. Go to Settings > API (https://app.baremetrics.com/settings/api) +# 2. Copy your Live API Key +# 3. Insert your API token below + +API_TOKEN='' + +DATE=`gdate -d yesterday '+%Y-%m-%d'` + + +# Main program + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +MRR_BEFORE=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/mrr?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +MRR=$(echo "$MRR_BEFORE * 0.01" | bc -l) +printf "€%'.0f\n" $MRR \ No newline at end of file diff --git a/commands/apps/baremetrics/images/baremetrics.png b/commands/apps/baremetrics/images/baremetrics.png new file mode 100644 index 000000000..9d3123c0e Binary files /dev/null and b/commands/apps/baremetrics/images/baremetrics.png differ diff --git a/commands/apps/baremetrics/simple-dashboard.sh b/commands/apps/baremetrics/simple-dashboard.sh new file mode 100755 index 000000000..5bd72f86f --- /dev/null +++ b/commands/apps/baremetrics/simple-dashboard.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function below). + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Revenue +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.icon images/baremetrics.png +# @raycast.packageName Baremetrics + +# Documentation: +# @raycast.description Display Revenue Dashboard +# @raycast.author Valentin Chrétien +# @raycast.authorURL https://github.com/valentinchrt + + +# Configuration + +# To create a new API token, do the following: +# 1. Go to Settings > API (https://app.baremetrics.com/settings/api) +# 2. Copy your Live API Key +# 3. Insert your API token below + +API_TOKEN='' + +DATE=`gdate -d today '+%Y-%m-%d'` + + +# Main program + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +ROUGH_MRR=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/mrr?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +CLEANED_MRR=$(echo "$ROUGH_MRR * 0.01" | bc -l) +MRR=$(printf "€%'.0f\n" $CLEANED_MRR) + +ROUGH_ARR=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/arr?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +CLEANED_ARR=$(echo "$ROUGH_ARR * 0.01" | bc -l) +ARR=$(printf "€%'.0f\n" $CLEANED_ARR) + +ROUGH_LTV=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/ltv?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +CLEANED_LTV=$(echo "$ROUGH_LTV * 0.01" | bc -l) +LTV=$(printf "€%'.0f\n" $CLEANED_LTV) + +ROUGH_ARPU=$(curl -s GET \ + --header 'Accept: application/json' \ + --header "Authorization: Bearer ${API_TOKEN}" \ + --url "https://api.baremetrics.com/v1/metrics/arpu?start_date=${DATE}&end_date=${DATE}" \ + | jq '.metrics[0].value') + +CLEANED_ARPU=$(echo "$ROUGH_ARPU * 0.01" | bc -l) +ARPU=$(printf "€%'.0f\n" $CLEANED_ARPU) + +# Display Revenue Dashboard +echo "MRR: $MRR | ARR: $ARR | LTV: $LTV | ARPU: $ARPU" \ No newline at end of file diff --git a/commands/apps/bartender/bartender-search.applescript b/commands/apps/bartender/bartender-search.applescript new file mode 100755 index 000000000..4270c4aff --- /dev/null +++ b/commands/apps/bartender/bartender-search.applescript @@ -0,0 +1,23 @@ +#!/usr/bin/osascript + +# Note: Bartender 4 required +# Install from https://www.macbartender.com/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Search Bartender +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/bartender-icon.png +# @raycast.argument1 { "type": "text", "placeholder": "Menu Bar Item Name" } +# @raycast.packageName Bartender.app + +# Documentation: +# @raycast.description Perform a quick search of Menu Bar Items, in Bartender 4 + +on run argv + tell application "Bartender 4" + quick search with argv + end tell +end run \ No newline at end of file diff --git a/commands/apps/bartender/images/bartender-icon.png b/commands/apps/bartender/images/bartender-icon.png new file mode 100644 index 000000000..0804cbb1d Binary files /dev/null and b/commands/apps/bartender/images/bartender-icon.png differ diff --git a/commands/apps/busycal/images/busycal.png b/commands/apps/busycal/images/busycal.png new file mode 100644 index 000000000..8671a4bf0 Binary files /dev/null and b/commands/apps/busycal/images/busycal.png differ diff --git a/commands/apps/busycal/new-busycal-event-or-task.applescript b/commands/apps/busycal/new-busycal-event-or-task.applescript new file mode 100755 index 000000000..05627da0c --- /dev/null +++ b/commands/apps/busycal/new-busycal-event-or-task.applescript @@ -0,0 +1,28 @@ +#!/usr/bin/osascript + +# Dependency: This script requires `BusyCal` installed: https://www.busymac.com/busycal/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Create Event/Task +# @raycast.mode compact +# @raycast.packageName BusyCal + +# Optional parameters: +# @raycast.icon images/busycal.png +# @raycast.argument1 { "type": "dropdown", "placeholder": "type", "data" : [{"title" : "event", "value": "event"}, {"title" : "task", "value": "task"}], "optional": true} +# @raycast.argument2 { "type": "text", "placeholder": "entry", "percentEncoded": true} + +# Documentation: +# @raycast.description Creates new events or tasks in BusyCal. +# @raycast.author Annie Ma +# @raycast.authorURL www.anniema.co + +on run argv + set query2 to (item 2 of argv) + tell application "BusyCal" + activate + if (item 1 of argv = "event") then open location "busycalevent://new/" & query2 + if (item 1 of argv = "task") then open location "busycalevent://new/-" & query2 + end tell +end run \ No newline at end of file diff --git a/commands/apps/chatgpt/chatgpt-open-safari.applescript b/commands/apps/chatgpt/chatgpt-open-safari.applescript new file mode 100755 index 000000000..c54e0fca0 --- /dev/null +++ b/commands/apps/chatgpt/chatgpt-open-safari.applescript @@ -0,0 +1,38 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title chatgpt +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/chatgpt.png +# @raycast.packageName Chatgpt Util + +# Documentation: +# @raycast.description Open chatgpt in safari +# @raycast.author gintonyc +# @raycast.authorURL https://raycast.com/gintonyc + + +tell application "Safari" + set targetURLPrefix to "https://chat.openai.com" + set foundTab to false + + repeat with aWindow in windows + repeat with aTab in (tabs of aWindow) + set tabURL to URL of aTab + if tabURL starts with targetURLPrefix then + set foundTab to true + set current tab of aWindow to aTab + exit repeat + end if + end repeat + if foundTab then exit repeat + end repeat + + if not foundTab then + make new document with properties {URL:targetURLPrefix} + end if + activate +end tell \ No newline at end of file diff --git a/commands/apps/chatgpt/images/chatgpt.png b/commands/apps/chatgpt/images/chatgpt.png new file mode 100644 index 000000000..dc0386d25 Binary files /dev/null and b/commands/apps/chatgpt/images/chatgpt.png differ diff --git a/commands/apps/claude/claude.js b/commands/apps/claude/claude.js new file mode 100755 index 000000000..f9adb66c8 --- /dev/null +++ b/commands/apps/claude/claude.js @@ -0,0 +1,127 @@ +#!/usr/bin/env node + +// Dependencies: +// This script requires the following software to be installed: +// - `node` https://nodejs.org +// - `chrome-cli` https://github.com/prasmussen/chrome-cli +// Install via homebrew: `brew install node chrome-cli` + +// This script needs to run JavaScript in your browser, which requires your permission. +// To do so, open Chrome and find the menu bar item: +// View > Developer > Allow JavaScript from Apple Events + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Ask Claude +// @raycast.mode silent +// @raycast.packageName Claude + +// Optional parameters: +// @raycast.icon ✨ +// @raycast.argument1 { "type": "text", "placeholder": "Prompt"} + +// Documentation: +// @raycast.description Open Claude in Chrome browser and submit a prompt +// @raycast.author Nimo Beeren +// @raycast.authorURL https://github.com/nimobeeren + +const { execSync } = require("child_process"); + +const prompt = process.argv[2]; + +process.env.OUTPUT_FORMAT = "json"; + +/** Escape a string so that it can be used in JavaScript code when wrapped in double quotes. */ +function escapeJsString(str) { + return str.replaceAll(`\\`, `\\\\`).replaceAll(`"`, `\\"`); +} + +/** Escape a string so that it can be used in a shell command when wrapped in single quotes. */ +function escapeShellString(str) { + return str.replaceAll(`'`, `'"'"'`); +} + +try { + execSync("which chrome-cli"); +} catch { + console.error( + "chrome-cli is required to run this script (https://github.com/prasmussen/chrome-cli)" + ); + process.exit(1); +} + +// Find the Claude tab if one is already open +let tabs = JSON.parse(execSync("chrome-cli list tabs")).tabs; +let claudeTab = tabs.find((tab) => tab.url.startsWith("https://claude.ai/")); + +// If there is a Claude tab open, get its info. Otherwise, open Claude in a new +// window. +let claudeTabInfo; +if (claudeTab) { + // Open a new Claude session in the existing tab and focus it + execSync(`chrome-cli open 'https://claude.ai/new' -t ${claudeTab.id}`); + // Get tab info + claudeTabInfo = JSON.parse(execSync(`chrome-cli info -t ${claudeTab.id}`)); +} else { + // Open a Claude session in a new tab, focus it and return the tab info + claudeTabInfo = JSON.parse( + execSync("chrome-cli open 'https://claude.ai/new'") + ); +} + +// Wait for the tab to be loaded, then execute the script +let interval = setInterval(() => { + if (claudeTabInfo.loading) { + claudeTabInfo = JSON.parse( + execSync(`chrome-cli info -t ${claudeTabInfo.id}`) + ); + } else { + clearInterval(interval); + executeScript(); + } +}, 100); + +function executeScript() { + const script = async function (prompt) { + // Wait for prompt element to be on the page + let promptElement; + await new Promise((resolve) => { + let interval = setInterval(() => { + promptElement = document.querySelector( + '[aria-label="Write your prompt to Claude"] > div' + ); + if (promptElement) { + clearInterval(interval); + resolve(); + } + }, 100); + }); + + // Set the prompt + const p = document.createElement("p"); + p.textContent = prompt; + promptElement.replaceChildren(p); + + // Wait for submit button to be on the page + let submitButton; + await new Promise((resolve) => { + let interval = setInterval(() => { + submitButton = document.querySelector('[aria-label="Send Message"]'); + if (submitButton) { + clearInterval(interval); + resolve(); + } + }, 100); + }); + + // Submit the prompt + submitButton.click(); + }; + + const functionString = escapeShellString(script.toString()); + const promptString = escapeShellString(escapeJsString(prompt)); + + execSync( + `chrome-cli execute '(${functionString})("${promptString}")' -t ${claudeTabInfo.id}` + ); +} diff --git a/commands/apps/cleanshot/cleanshot-record-screen-with-keystroke-pro.sh b/commands/apps/cleanshot/cleanshot-record-screen-with-keystroke-pro.sh new file mode 100755 index 000000000..d2a4d543f --- /dev/null +++ b/commands/apps/cleanshot/cleanshot-record-screen-with-keystroke-pro.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Note: CleanShot X required +# Install from https://cleanshot.com +# +# Keystroke Pro required +# Install from https://apps.apple.com/app/id1572206224?ct=ixeau + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Record Screen With Keystroke Pro +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/record-screen-keystroke-pro.png +# @raycast.packageName CleanShot X + +# Documentation: +# @raycast.author Danylo Zalizchuk +# @raycast.authorURL https://raycast.com/danulqua +# @raycast.description Start a screen recording with keystrokes using the Keystroke Pro app and save it as a video or an optimized GIF file. + +open "/Applications/Keystroke Pro.app" +open "cleanshot://record-screen" diff --git a/commands/apps/cleanshot/images/add-quick-access-overlay.png b/commands/apps/cleanshot/images/add-quick-access-overlay.png index 09cd39f6a..a0de5661c 100644 Binary files a/commands/apps/cleanshot/images/add-quick-access-overlay.png and b/commands/apps/cleanshot/images/add-quick-access-overlay.png differ diff --git a/commands/apps/cleanshot/images/annotate.png b/commands/apps/cleanshot/images/annotate.png index 21dba96be..4a249c54c 100644 Binary files a/commands/apps/cleanshot/images/annotate.png and b/commands/apps/cleanshot/images/annotate.png differ diff --git a/commands/apps/cleanshot/images/capture-area.png b/commands/apps/cleanshot/images/capture-area.png index 9cd3d6832..ccd895fdc 100644 Binary files a/commands/apps/cleanshot/images/capture-area.png and b/commands/apps/cleanshot/images/capture-area.png differ diff --git a/commands/apps/cleanshot/images/capture-fullscreen.png b/commands/apps/cleanshot/images/capture-fullscreen.png index 224f78460..31673a8e3 100644 Binary files a/commands/apps/cleanshot/images/capture-fullscreen.png and b/commands/apps/cleanshot/images/capture-fullscreen.png differ diff --git a/commands/apps/cleanshot/images/capture-previous-area.png b/commands/apps/cleanshot/images/capture-previous-area.png index fa89ee956..615e21472 100644 Binary files a/commands/apps/cleanshot/images/capture-previous-area.png and b/commands/apps/cleanshot/images/capture-previous-area.png differ diff --git a/commands/apps/cleanshot/images/capture-text.png b/commands/apps/cleanshot/images/capture-text.png index 187662587..55fa31be7 100644 Binary files a/commands/apps/cleanshot/images/capture-text.png and b/commands/apps/cleanshot/images/capture-text.png differ diff --git a/commands/apps/cleanshot/images/capture-window.png b/commands/apps/cleanshot/images/capture-window.png index 0f2868041..2c461343f 100644 Binary files a/commands/apps/cleanshot/images/capture-window.png and b/commands/apps/cleanshot/images/capture-window.png differ diff --git a/commands/apps/cleanshot/images/clipboard.png b/commands/apps/cleanshot/images/clipboard.png index be7f4b52e..f38f19791 100644 Binary files a/commands/apps/cleanshot/images/clipboard.png and b/commands/apps/cleanshot/images/clipboard.png differ diff --git a/commands/apps/cleanshot/images/pin.png b/commands/apps/cleanshot/images/pin.png index 751eb48c2..23aa66e52 100644 Binary files a/commands/apps/cleanshot/images/pin.png and b/commands/apps/cleanshot/images/pin.png differ diff --git a/commands/apps/cleanshot/images/record-screen-keystroke-pro.png b/commands/apps/cleanshot/images/record-screen-keystroke-pro.png new file mode 100644 index 000000000..91d2a2c05 Binary files /dev/null and b/commands/apps/cleanshot/images/record-screen-keystroke-pro.png differ diff --git a/commands/apps/cleanshot/images/record-screen.png b/commands/apps/cleanshot/images/record-screen.png index 95d2facfa..64f3dcc2e 100644 Binary files a/commands/apps/cleanshot/images/record-screen.png and b/commands/apps/cleanshot/images/record-screen.png differ diff --git a/commands/apps/cleanshot/images/restore.png b/commands/apps/cleanshot/images/restore.png index 5b09bbe5e..6679c8eb5 100644 Binary files a/commands/apps/cleanshot/images/restore.png and b/commands/apps/cleanshot/images/restore.png differ diff --git a/commands/apps/cleanshot/images/scrolling-capture.png b/commands/apps/cleanshot/images/scrolling-capture.png index 2148dc29b..8efb5258e 100644 Binary files a/commands/apps/cleanshot/images/scrolling-capture.png and b/commands/apps/cleanshot/images/scrolling-capture.png differ diff --git a/commands/apps/cleanshot/images/self-timer.png b/commands/apps/cleanshot/images/self-timer.png index ccb96d8da..08cbe4321 100644 Binary files a/commands/apps/cleanshot/images/self-timer.png and b/commands/apps/cleanshot/images/self-timer.png differ diff --git a/commands/apps/cleanshot/images/toggle-desktop-icons.png b/commands/apps/cleanshot/images/toggle-desktop-icons.png index cf516bd55..e3451583b 100644 Binary files a/commands/apps/cleanshot/images/toggle-desktop-icons.png and b/commands/apps/cleanshot/images/toggle-desktop-icons.png differ diff --git a/commands/apps/craft/images/craft.png b/commands/apps/craft/images/craft.png index f3631556e..47c965396 100644 Binary files a/commands/apps/craft/images/craft.png and b/commands/apps/craft/images/craft.png differ diff --git a/commands/apps/deepl/deepl-app-translate.applescript b/commands/apps/deepl/deepl-app-translate.applescript index c6094b8a1..235e7634e 100755 --- a/commands/apps/deepl/deepl-app-translate.applescript +++ b/commands/apps/deepl/deepl-app-translate.applescript @@ -1,7 +1,7 @@ #!/usr/bin/osascript # Dependency: This script requires DeepL to be installed: https://deepl.com/app -# Tested with DeepL for Mac Version 2.3.41773 +# Tested with DeepL for Mac Version 3.1.133440 # Once installed, DeepL will run in the background even if you quit the app from the dock # This script will work as long as the DeepL icon is visible in the menu bar in the top right @@ -47,7 +47,7 @@ on run translate end if tell application "System Events" - set value of text area 1 of group 5 of UI element 1 of scroll area 1 of group 1 of group 1 of window "DeepL" of process "DeepL" to inputText + set value of text area 1 of group 3 of group 1 of group 1 of UI Element 1 of scroll area 1 of group 1 of group 1 of window "DeepL" of process "DeepL" to inputText end tell if copyResultToClipboard is true then @@ -57,7 +57,11 @@ on run translate tell application "System Events" repeat until translation is not "" - set translation to value of text area 1 of group 12 of UI element 1 of scroll area 1 of group 1 of group 1 of window "DeepL" of process "DeepL" + + if exists of text area 1 of group 6 of group 3 of group 1 of UI Element 1 of scroll area 1 of group 1 of group 1 of window "DeepL" of process "DeepL" + set translation to value of text area 1 of group 6 of group 3 of group 1 of UI Element 1 of scroll area 1 of group 1 of group 1 of window "DeepL" of process "DeepL" + end if + if ((current date) > endDate) then exit repeat end if @@ -65,7 +69,9 @@ on run translate end repeat end tell - set the clipboard to translation + if translation is not "" + set the clipboard to translation + end if end if end run \ No newline at end of file diff --git a/commands/apps/deepl/images/deepl.png b/commands/apps/deepl/images/deepl.png index 12bf69809..f1cce3041 100644 Binary files a/commands/apps/deepl/images/deepl.png and b/commands/apps/deepl/images/deepl.png differ diff --git a/commands/apps/devutils/backslash.sh b/commands/apps/devutils/backslash.sh new file mode 100755 index 000000000..3ff0c60b5 --- /dev/null +++ b/commands/apps/devutils/backslash.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Backslash Escape/Unescape +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Escape (or unescape) backslashes in your current clipboard string +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://backslash?clipboard diff --git a/commands/apps/devutils/base64encode.sh b/commands/apps/devutils/base64encode.sh new file mode 100755 index 000000000..9e7c82963 --- /dev/null +++ b/commands/apps/devutils/base64encode.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Base64 String Encode/Decode +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Decode the Base64 string in clipboard (if it’s decodable) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://base64encode?clipboard diff --git a/commands/apps/devutils/base64image.sh b/commands/apps/devutils/base64image.sh new file mode 100755 index 000000000..df8d9e4a4 --- /dev/null +++ b/commands/apps/devutils/base64image.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Base64 Image Encode/Decode +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Decode the Base64 string in clipboard to an image (if it’s decodable) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://base64image?clipboard diff --git a/commands/apps/devutils/cronparser.sh b/commands/apps/devutils/cronparser.sh new file mode 100755 index 000000000..d563d7f4e --- /dev/null +++ b/commands/apps/devutils/cronparser.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Cron Job Parser +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Parse the cron job expression in clipboard (if it’s a valid cron expression) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://cronparser?clipboard diff --git a/commands/apps/devutils/cssformatter.sh b/commands/apps/devutils/cssformatter.sh new file mode 100755 index 000000000..eb1a320f5 --- /dev/null +++ b/commands/apps/devutils/cssformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title CSS Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as CSS +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://cssformatter?clipboard diff --git a/commands/apps/devutils/csv2json.sh b/commands/apps/devutils/csv2json.sh new file mode 100755 index 000000000..624e65591 --- /dev/null +++ b/commands/apps/devutils/csv2json.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title CSV to JSON +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert your current clipboard from CSV to JSON +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://csv2json?clipboard diff --git a/commands/apps/devutils/erbformatter.sh b/commands/apps/devutils/erbformatter.sh new file mode 100755 index 000000000..7a87ed390 --- /dev/null +++ b/commands/apps/devutils/erbformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title ERB Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as ERB +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://erbformatter?clipboard diff --git a/commands/apps/devutils/hashing.sh b/commands/apps/devutils/hashing.sh new file mode 100755 index 000000000..8d302ba6c --- /dev/null +++ b/commands/apps/devutils/hashing.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Hash Generator +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Calculate the hash of your current clipboard string +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://hashing?clipboard diff --git a/commands/apps/devutils/html2jsx.sh b/commands/apps/devutils/html2jsx.sh new file mode 100755 index 000000000..91b95c95d --- /dev/null +++ b/commands/apps/devutils/html2jsx.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title HTML to JSX +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert the HTML string in clipboard to JSX +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://html2jsx?clipboard diff --git a/commands/apps/devutils/htmlencode.sh b/commands/apps/devutils/htmlencode.sh new file mode 100755 index 000000000..6d5bd97f1 --- /dev/null +++ b/commands/apps/devutils/htmlencode.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title HTML Entity Encode/Decode +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Escape (or unescape) the HTML entities your current clipboard string +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://htmlencode?clipboard diff --git a/commands/apps/devutils/htmlformatter.sh b/commands/apps/devutils/htmlformatter.sh new file mode 100755 index 000000000..8f0c1baa5 --- /dev/null +++ b/commands/apps/devutils/htmlformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title HTML Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as HTML +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://htmlformatter?clipboard diff --git a/commands/apps/devutils/htmlpreview.sh b/commands/apps/devutils/htmlpreview.sh new file mode 100755 index 000000000..c8132f5a5 --- /dev/null +++ b/commands/apps/devutils/htmlpreview.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title HTML Preview +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Show a HTML preview of your current clipboard string +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://htmlpreview?clipboard diff --git a/commands/apps/devutils/images/devutils.png b/commands/apps/devutils/images/devutils.png new file mode 100644 index 000000000..bc3ac2048 Binary files /dev/null and b/commands/apps/devutils/images/devutils.png differ diff --git a/commands/apps/devutils/jsformatter.sh b/commands/apps/devutils/jsformatter.sh new file mode 100755 index 000000000..0518254b5 --- /dev/null +++ b/commands/apps/devutils/jsformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title JS Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as JavaScript +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://jsformatter?clipboard diff --git a/commands/apps/devutils/json2csv.sh b/commands/apps/devutils/json2csv.sh new file mode 100755 index 000000000..51db45228 --- /dev/null +++ b/commands/apps/devutils/json2csv.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title JSON to CSV +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert your current clipboard from JSON to CSV +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://json2csv?clipboard diff --git a/commands/apps/devutils/json2yaml.sh b/commands/apps/devutils/json2yaml.sh new file mode 100755 index 000000000..63110b3f4 --- /dev/null +++ b/commands/apps/devutils/json2yaml.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title JSON to YAML +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert your current clipboard from JSON to YAML +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://json2yaml?clipboard diff --git a/commands/apps/devutils/jsonformatter.sh b/commands/apps/devutils/jsonformatter.sh new file mode 100755 index 000000000..52059fa94 --- /dev/null +++ b/commands/apps/devutils/jsonformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title JSON Format/Validate +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Format the JSON string currently in your clipboard (if it’s a valid JSON) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://jsonformatter?clipboard diff --git a/commands/apps/devutils/jwt.sh b/commands/apps/devutils/jwt.sh new file mode 100755 index 000000000..cb7c3c84a --- /dev/null +++ b/commands/apps/devutils/jwt.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title JWT Debugger +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Decode and verify the current JWT token in your clipboard +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://jwt?clipboard diff --git a/commands/apps/devutils/lessformatter.sh b/commands/apps/devutils/lessformatter.sh new file mode 100755 index 000000000..5cc0911b7 --- /dev/null +++ b/commands/apps/devutils/lessformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title LESS Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as LESS +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://lessformatter?clipboard diff --git a/commands/apps/devutils/loremipsum.sh b/commands/apps/devutils/loremipsum.sh new file mode 100755 index 000000000..a90e7954e --- /dev/null +++ b/commands/apps/devutils/loremipsum.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Lorem Ipsum Generator +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Get some randomly generated lorem ipsum strings +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://loremipsum?clipboard diff --git a/commands/apps/devutils/markdownpreview.sh b/commands/apps/devutils/markdownpreview.sh new file mode 100755 index 000000000..574911ff2 --- /dev/null +++ b/commands/apps/devutils/markdownpreview.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Markdown Preview +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Preview the markdown string currently in your clipboard +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://markdownpreview?clipboard diff --git a/commands/apps/devutils/numberbase.sh b/commands/apps/devutils/numberbase.sh new file mode 100755 index 000000000..0ca5b90b4 --- /dev/null +++ b/commands/apps/devutils/numberbase.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Number Base Converter +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert numbers between bases (oct, hex, binary, etc.) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://numberbase?clipboard diff --git a/commands/apps/devutils/qrcode.sh b/commands/apps/devutils/qrcode.sh new file mode 100755 index 000000000..02db9894b --- /dev/null +++ b/commands/apps/devutils/qrcode.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title QR Code Reader/Generator +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Generate a QR code from your current clipboard string +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://qrcode?clipboard diff --git a/commands/apps/devutils/querystringparser.sh b/commands/apps/devutils/querystringparser.sh new file mode 100755 index 000000000..0a2c39d8b --- /dev/null +++ b/commands/apps/devutils/querystringparser.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title URL Parser +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Parse the URL string currently in your clipboard +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://querystringparser?clipboard diff --git a/commands/apps/devutils/regextester.sh b/commands/apps/devutils/regextester.sh new file mode 100755 index 000000000..05a4e385d --- /dev/null +++ b/commands/apps/devutils/regextester.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title RegExp Tester +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Test your regular expression with a string and inspect matches, groups, etc. +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://regextester?clipboard diff --git a/commands/apps/devutils/scssformatter.sh b/commands/apps/devutils/scssformatter.sh new file mode 100755 index 000000000..270c5bfc3 --- /dev/null +++ b/commands/apps/devutils/scssformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title SCSS Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as SCSS +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://scssformatter?clipboard diff --git a/commands/apps/devutils/sqlformatter.sh b/commands/apps/devutils/sqlformatter.sh new file mode 100755 index 000000000..b0c226940 --- /dev/null +++ b/commands/apps/devutils/sqlformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title SQL Formatter +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Format the SQL string currently in your clipboard +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://sqlformatter?clipboard diff --git a/commands/apps/devutils/stringcaseconverter.sh b/commands/apps/devutils/stringcaseconverter.sh new file mode 100755 index 000000000..2ae092ad9 --- /dev/null +++ b/commands/apps/devutils/stringcaseconverter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title String Case Converter +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert a string in clipboard into various naming conventions +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://stringcaseconverter?clipboard diff --git a/commands/apps/devutils/stringinspect.sh b/commands/apps/devutils/stringinspect.sh new file mode 100755 index 000000000..08099a079 --- /dev/null +++ b/commands/apps/devutils/stringinspect.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title String Inspector +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Inspect your current clipboard string (length, words count, unicode, etc.) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://stringinspect?clipboard diff --git a/commands/apps/devutils/textdiff.sh b/commands/apps/devutils/textdiff.sh new file mode 100755 index 000000000..dd9ce842e --- /dev/null +++ b/commands/apps/devutils/textdiff.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Text Diff Checker +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Compare two texts and find diff (per characters, words, lines, etc.) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://textdiff?clipboard diff --git a/commands/apps/devutils/unixtime.sh b/commands/apps/devutils/unixtime.sh new file mode 100755 index 000000000..97bea637d --- /dev/null +++ b/commands/apps/devutils/unixtime.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title Unix Time Converter +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Parse and display UNIX the timestamp string currently in your clipboard +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://unixtime?clipboard diff --git a/commands/apps/devutils/urlencode.sh b/commands/apps/devutils/urlencode.sh new file mode 100755 index 000000000..1c13ce18b --- /dev/null +++ b/commands/apps/devutils/urlencode.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title URL Encode/Decode +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Decode the current URL string in your clipboard (if any) +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://urlencode?clipboard diff --git a/commands/apps/devutils/uuidtool.sh b/commands/apps/devutils/uuidtool.sh new file mode 100755 index 000000000..66923e435 --- /dev/null +++ b/commands/apps/devutils/uuidtool.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title UUID/ULID Generate/Decode +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Decode the UUID in your clipboard (if any), or generate UUIDs +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://uuidtool?clipboard diff --git a/commands/apps/devutils/xmlformatter.sh b/commands/apps/devutils/xmlformatter.sh new file mode 100755 index 000000000..04a56537e --- /dev/null +++ b/commands/apps/devutils/xmlformatter.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title XML Beautify/Minify +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Beautify or minify your current clipboard as XML +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://xmlformatter?clipboard diff --git a/commands/apps/devutils/yaml2json.sh b/commands/apps/devutils/yaml2json.sh new file mode 100755 index 000000000..c7b763c59 --- /dev/null +++ b/commands/apps/devutils/yaml2json.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.icon images/devutils.png +# @raycast.title YAML to JSON +# @raycast.mode silent +# @raycast.packageName DevUtils.app + +# Documentation: +# @raycast.description Convert your current clipboard from YAML to JSON +# @raycast.author DevUtils.app +# @raycast.authorURL https://devutils.app + +open devutils://yaml2json?clipboard diff --git a/commands/apps/dictionary/images/dictionary.icns b/commands/apps/dictionary/images/dictionary.icns new file mode 100644 index 000000000..15ff65526 Binary files /dev/null and b/commands/apps/dictionary/images/dictionary.icns differ diff --git a/commands/apps/dictionary/look-up-in-dictionary.applescript b/commands/apps/dictionary/look-up-in-dictionary.applescript new file mode 100755 index 000000000..ae45bba0e --- /dev/null +++ b/commands/apps/dictionary/look-up-in-dictionary.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Look up in Dictionary +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/dictionary.icns +# @raycast.packageName Dictionary + +# Documentation: +# @raycast.description Look up selected text in Dictionary +# @raycast.author yayiji +# @raycast.authorURL https://github.com/yayiji + +tell application "System Events" + keystroke "c" using {command down} + delay 0.1 + do shell script "open dict://" & the clipboard +end + diff --git a/commands/apps/downie/download-video.sh b/commands/apps/downie/download-video.sh new file mode 100755 index 000000000..800158baf --- /dev/null +++ b/commands/apps/downie/download-video.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Download Video +# @raycast.mode silent +# Optional parameters: +# @raycast.icon images/downie.png +# @raycast.packageName Downie + +# Documentation: +# @raycast.description Download video from Pasteboard link +# @raycast.author Clu Soh +# @raycast.authorURL https://twitter.com/designedbyclu + +regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]' +pasteboard=$(pbpaste) + +if [[ $pasteboard =~ $regex ]] +then + open "downie://XUOpenLink?url=$pasteboard" + echo "Downloading in Downie" +else + echo "Seem like is not a URL you copied" +fi + + + + diff --git a/commands/apps/downie/images/downie.png b/commands/apps/downie/images/downie.png new file mode 100644 index 000000000..10710511d Binary files /dev/null and b/commands/apps/downie/images/downie.png differ diff --git a/commands/apps/espanso/images/espanso.png b/commands/apps/espanso/images/espanso.png index f442ede66..c9a2794b0 100644 Binary files a/commands/apps/espanso/images/espanso.png and b/commands/apps/espanso/images/espanso.png differ diff --git a/commands/apps/eudic/images/eudic.png b/commands/apps/eudic/images/eudic.png new file mode 100644 index 000000000..dc156d2b6 Binary files /dev/null and b/commands/apps/eudic/images/eudic.png differ diff --git a/commands/apps/eudic/look-up-in-eudic.applescript b/commands/apps/eudic/look-up-in-eudic.applescript new file mode 100755 index 000000000..d34bf73aa --- /dev/null +++ b/commands/apps/eudic/look-up-in-eudic.applescript @@ -0,0 +1,29 @@ +#!/usr/bin/osascript + +# Dependency: Eudic required +# Install via Mac App Store: https://apps.apple.com/app/id402380914 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Look up Word +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/eudic.png +# @raycast.argument1 { "type": "text", "placeholder": "word" } +# @raycast.packageName Eudic + +# Documentation: +# @raycast.description look up in eudic +# @raycast.author jingyi +# @raycast.authorURL https://jingyi.blog + +on run argv + # FIXME known issue of Eudic. Force open it + do shell script "open -b com.eusoft.eudic" + do shell script "open -b com.eusoft.eudic" + tell application id "com.eusoft.eudic" + activate + show dic with word (item 1 of argv) + end tell +end run diff --git a/commands/apps/evernote/images/evernote.png b/commands/apps/evernote/images/evernote.png index 55e299c5d..7281a5ba5 100644 Binary files a/commands/apps/evernote/images/evernote.png and b/commands/apps/evernote/images/evernote.png differ diff --git a/commands/apps/expressvpn/expressvpn-connect.applescript b/commands/apps/expressvpn/expressvpn-connect.applescript new file mode 100755 index 000000000..df6e770ff --- /dev/null +++ b/commands/apps/expressvpn/expressvpn-connect.applescript @@ -0,0 +1,26 @@ +#!/usr/bin/osascript + +# You need ExpressVPN for this script: https://www.expressvpn.com/latest#mac + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Connect +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/expressvpn_logo.svg +# @raycast.packageName ExpressVPN + +# Documentation: +# @raycast.author Amir Hossein SamadiPour +# @raycast.authorURL https://github.com/SamadiPour + +tell application "ExpressVPN" + if state = "connected" then + do shell script "echo Already Connected." + else if state = "connecting" then + do shell script "echo Please wait. Connecting..." + else if state = "ready" then + connect + end if +end tell diff --git a/commands/apps/expressvpn/expressvpn-disconnect.applescript b/commands/apps/expressvpn/expressvpn-disconnect.applescript new file mode 100755 index 000000000..3c2e5bc78 --- /dev/null +++ b/commands/apps/expressvpn/expressvpn-disconnect.applescript @@ -0,0 +1,24 @@ +#!/usr/bin/osascript + +# You need ExpressVPN for this script: https://www.expressvpn.com/latest#mac + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Disconnect +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/expressvpn_logo.svg +# @raycast.packageName ExpressVPN + +# Documentation: +# @raycast.author Amir Hossein SamadiPour +# @raycast.authorURL https://github.com/SamadiPour + +tell application "ExpressVPN" + if state = "connected" or state = "connecting" then + disconnect + else if state = "ready" then + do shell script "echo Already Disconnected..." + end if +end tell diff --git a/commands/apps/expressvpn/expressvpn-reconnect.applescript b/commands/apps/expressvpn/expressvpn-reconnect.applescript new file mode 100755 index 000000000..58a38b287 --- /dev/null +++ b/commands/apps/expressvpn/expressvpn-reconnect.applescript @@ -0,0 +1,27 @@ +#!/usr/bin/osascript + +# You need ExpressVPN for this script: https://www.expressvpn.com/latest#mac + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Reconnect +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/expressvpn_logo.svg +# @raycast.packageName ExpressVPN + +# Documentation: +# @raycast.author Amir Hossein SamadiPour +# @raycast.authorURL https://github.com/SamadiPour + +tell application "ExpressVPN" + if state = "connected" and not (state = "connecting") then + disconnect + delay 0.5 + connect + else if state = "ready" then + connect + end if +end tell +do shell script "echo Reconnecting..." diff --git a/commands/apps/expressvpn/images/expressvpn_logo.svg b/commands/apps/expressvpn/images/expressvpn_logo.svg new file mode 100644 index 000000000..80f9afe24 --- /dev/null +++ b/commands/apps/expressvpn/images/expressvpn_logo.svg @@ -0,0 +1,9 @@ + + + Logo/Monogram/ExpressVPN_Monogram_Logo_Red + + + + + + \ No newline at end of file diff --git a/commands/apps/ferdi/images/ferdi.png b/commands/apps/ferdi/images/ferdi.png index a30e18384..68ebc011a 100644 Binary files a/commands/apps/ferdi/images/ferdi.png and b/commands/apps/ferdi/images/ferdi.png differ diff --git a/commands/apps/find-my/.env.example b/commands/apps/find-my/.env.example new file mode 100644 index 000000000..6e3a6c985 --- /dev/null +++ b/commands/apps/find-my/.env.example @@ -0,0 +1,3 @@ +ICLOUD_EMAIL= +ICLOUD_PASSWORD= +DEVICE= \ No newline at end of file diff --git a/commands/apps/find-my/README.md b/commands/apps/find-my/README.md new file mode 100644 index 000000000..55057353e --- /dev/null +++ b/commands/apps/find-my/README.md @@ -0,0 +1,58 @@ +# Find My Phone Raycast + +I lose my phone often, so I made this. + +This is a Node.js script that uses Playwright to automate iCloud Find My and trigger a sound on your Apple device. It's perfect for people like me who misplace their phones and want a quick, automated way to make them ring—with Raycast. + +## Usage + +```sh +git clone https://github.com/vsvaidya27/fmp-raycast +cd fmp-raycast +npm install +cp .env.example .env +# Edit .env with your real credentials +chmod +x fmp.js +``` + +### Add to Raycast + +1. Open Raycast and go to **Extensions**. +2. Click **Add**. +3. Select **Add Script Directory**. +4. Choose the `fmp-raycast` directory you just cloned. +5. Set fmp as your alias for calling the script. + +Now you can trigger the script directly from Raycast! + +## How it works + +- Automates login to iCloud Find My using Playwright +- Selects your device by name +- Triggers the "Play Sound" feature to help you locate your device + +**Note:** You'll need to provide your iCloud credentials and device name in the `.env` file. Sometimes a 2FA check may pop up, but usually they allow you to bypass this and manual intervention is not neccesary (since you often need the very thing you are trying to find for 2FA). + +--- + +## 🛠 Troubleshooting + +### If you get the error `env: node: No such file or directory` + +Raycast uses a limited shell environment, so it may not find your Node.js install. + +To fix it: + +1. Run this in Terminal to find your full Node path: + ```bash + which node + ``` +2. Edit the top of `fmp.js`: + Replace: + ```sh + #!/usr/bin/env node + ``` + With: + ```sh + #!/full/path/to/node + ``` diff --git a/commands/apps/find-my/fmp.js b/commands/apps/find-my/fmp.js new file mode 100755 index 000000000..e672b032b --- /dev/null +++ b/commands/apps/find-my/fmp.js @@ -0,0 +1,62 @@ +#!/usr/bin/env node + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Find My Phone (Auto Sound) +// @raycast.mode silent +// @raycast.packageName FindMy +// @raycast.icon images/find-my-icon.png + +require('dotenv').config(); +const { chromium } = require('playwright'); + +(async () => { + const browser = await chromium.launch({ headless: false }); + const page = await browser.newPage(); + + // 1. Go to iCloud Find Devices + await page.goto('https://www.icloud.com/find'); + + // 2. Click "Sign In" + await page.waitForSelector('text=Sign In', { timeout: 20000 }); + await page.click('text=Sign In'); + + // 3. Wait for the Apple login iframe to appear + const frameLocator = page.frameLocator('iframe[name="aid-auth-widget"]'); + + // 4. Wait for the email/phone input inside the iframe + await frameLocator.getByRole('textbox', { name: 'Email or Phone Number' }).waitFor({ timeout: 20000 }); + + // 5. Fill in the email/phone + await frameLocator.getByRole('textbox', { name: 'Email or Phone Number' }).fill(process.env.ICLOUD_EMAIL); + + // 6. Click the right-arrow button + await frameLocator.getByRole('button').first().click(); + + // 7. Wait for the "Continue with Password" button to appear, then click it + await frameLocator.getByRole('button', { name: /Continue with Password/i }).waitFor({ timeout: 20000 }); + await frameLocator.getByRole('button', { name: /Continue with Password/i }).click(); + + // 8. Wait for password input + await frameLocator.getByRole('textbox', { name: 'Password' }).waitFor({ timeout: 20000 }); + await frameLocator.getByRole('textbox', { name: 'Password' }).fill(process.env.ICLOUD_PASSWORD); + + // 9. Click the arrow button to continue + await frameLocator.getByRole('button').first().click(); + + // 10. Wait for 2FA if needed; Hopefully not because this kinda defeats the purpose of automation even though its prob for the best security-wise :( + console.log('If prompted, please complete 2FA in the browser window. :('); + + // 12. Click on your iPhone using the precise selector inside the second iframe + await page.locator('iframe').nth(1).contentFrame().getByTitle(process.env.DEVICE).getByTestId('show-device-name').click(); + + // 13. Wait for the device details panel to load + await page.waitForTimeout(2000); + + // 14. Click the "Play Sound" button + await page.locator('iframe').nth(1).contentFrame().getByRole('button', { name: 'Play Sound' }).click(); + + console.log('✅ Play Sound triggered for ' + process.env.DEVICE + '!'); + await browser.close(); +})(); + diff --git a/commands/apps/find-my/images/find-my-icon.png b/commands/apps/find-my/images/find-my-icon.png new file mode 100644 index 000000000..0862bfec8 Binary files /dev/null and b/commands/apps/find-my/images/find-my-icon.png differ diff --git a/commands/apps/find-my/package.json b/commands/apps/find-my/package.json new file mode 100644 index 000000000..6e278971c --- /dev/null +++ b/commands/apps/find-my/package.json @@ -0,0 +1,16 @@ +{ + "name": "findmyraycast", + "version": "1.0.0", + "main": "fmp.js", + "scripts": { + "start": "node fmp.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "dotenv": "^16.5.0", + "playwright": "^1.52.0" + } +} diff --git a/commands/apps/focus/focus-preferences.sh b/commands/apps/focus/focus-preferences.sh new file mode 100755 index 000000000..df8e08772 --- /dev/null +++ b/commands/apps/focus/focus-preferences.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Focus Preferences +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Open focus preferences. + +open "focus://preferences" \ No newline at end of file diff --git a/commands/apps/focus/focus-start-break-5.sh b/commands/apps/focus/focus-start-break-5.sh new file mode 100755 index 000000000..21a4151c6 --- /dev/null +++ b/commands/apps/focus/focus-start-break-5.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Take 5 Minutes Break +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Take 5 minutes break. + +open "focus://break?minutes=5" \ No newline at end of file diff --git a/commands/apps/focus/focus-start-custom-break.sh b/commands/apps/focus/focus-start-custom-break.sh new file mode 100755 index 000000000..17e70dcab --- /dev/null +++ b/commands/apps/focus/focus-start-custom-break.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start Custom Break +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Start a custom break. If you don't enter any values, it uses the last break duration. + +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "optional": true, "percentEncoded": true } + +open "focus://break?minutes=${1}" \ No newline at end of file diff --git a/commands/apps/focus/focus-start-custom-session.sh b/commands/apps/focus/focus-start-custom-session.sh new file mode 100755 index 000000000..acbdc6187 --- /dev/null +++ b/commands/apps/focus/focus-start-custom-session.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start Custom Focus Session +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Start a custom focus session. If you don't enter any values, it starts an untimed focus session. + +# @raycast.argument1 { "type": "text", "placeholder": "Hours", "optional": true, "percentEncoded": true } +# @raycast.argument2 { "type": "text", "placeholder": "Minutes", "optional": true, "percentEncoded": true } + +open "focus://focus?hours=${1}&minutes=${2}" \ No newline at end of file diff --git a/commands/apps/focus/focus-start-session-25.sh b/commands/apps/focus/focus-start-session-25.sh new file mode 100755 index 000000000..fc420e318 --- /dev/null +++ b/commands/apps/focus/focus-start-session-25.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start 25 minutes Focus Session +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Start a 25 minutes focus session. + +open "focus://focus?minutes=25" \ No newline at end of file diff --git a/commands/apps/focus/focus-start-session.sh b/commands/apps/focus/focus-start-session.sh new file mode 100755 index 000000000..fa15d74eb --- /dev/null +++ b/commands/apps/focus/focus-start-session.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start Focus Session (Focus) +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Start an untimed focus session. + +open "focus://focus" \ No newline at end of file diff --git a/commands/apps/focus/focus-stop-break.sh b/commands/apps/focus/focus-stop-break.sh new file mode 100755 index 000000000..98d3d577e --- /dev/null +++ b/commands/apps/focus/focus-stop-break.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Stop Break (Unbreak) +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Stop break and continues the current focus session. + +open "focus://unbreak" \ No newline at end of file diff --git a/commands/apps/focus/focus-stop-session.sh b/commands/apps/focus/focus-stop-session.sh new file mode 100755 index 000000000..e9ede82e7 --- /dev/null +++ b/commands/apps/focus/focus-stop-session.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Stop Focus Session (Unfocus) +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Stop the current focus session. + +open "focus://unfocus" \ No newline at end of file diff --git a/commands/apps/focus/focus-toggle-focus.sh b/commands/apps/focus/focus-toggle-focus.sh new file mode 100755 index 000000000..c2ea55240 --- /dev/null +++ b/commands/apps/focus/focus-toggle-focus.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Focus required +# Install from: https://heyfocus.com + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Focus Session +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/focus-logo.png +# @raycast.packageName Focus + +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description Toggle between start session (untimed) and stop session. + +open "focus://toggle" \ No newline at end of file diff --git a/commands/apps/focus/images/focus-logo.png b/commands/apps/focus/images/focus-logo.png new file mode 100644 index 000000000..5b9f56471 Binary files /dev/null and b/commands/apps/focus/images/focus-logo.png differ diff --git a/commands/apps/goodlinks/goodlinks-last-unread-link.sh b/commands/apps/goodlinks/goodlinks-last-unread-link.sh new file mode 100755 index 000000000..5a836b9a4 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-last-unread-link.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Last Unread Link +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Open the last unread link in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/last" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-open-link.sh b/commands/apps/goodlinks/goodlinks-open-link.sh new file mode 100755 index 000000000..799b2170e --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-open-link.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Link +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Open a link in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +# @raycast.argument1 { "type": "text", "placeholder": "URL", "percentEncoded": true} + +open "goodlinks://x-callback-url/open?url=${1}" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-random-unread-link.sh b/commands/apps/goodlinks/goodlinks-random-unread-link.sh new file mode 100755 index 000000000..f7f0b0284 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-random-unread-link.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Random Unread Link +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Open a random unread link in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/random" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-read-list.sh b/commands/apps/goodlinks/goodlinks-read-list.sh new file mode 100755 index 000000000..a848ccf76 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-read-list.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Read List +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Show Read list in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/read" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-save-link.sh b/commands/apps/goodlinks/goodlinks-save-link.sh new file mode 100755 index 000000000..e43e39d82 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-save-link.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Save Link +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Saves a new link to GoodLinks +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +# @raycast.argument1 { "type": "text", "placeholder": "URL", "percentEncoded": true} +# @raycast.argument2 { "type": "text", "placeholder": "Tags", "optional": true, "percentEncoded": true} +# @raycast.argument3 { "type": "text", "placeholder": "Title", "optional": true, "percentEncoded": true} + +open "goodlinks://x-callback-url/save?url=${1}&tags=${2}&title=${3}&quick=1" + +echo "Link saved!" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-starred-list.sh b/commands/apps/goodlinks/goodlinks-starred-list.sh new file mode 100755 index 000000000..9400ca572 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-starred-list.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Starred List +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Show Starred list in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/starred" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-tagged-links.sh b/commands/apps/goodlinks/goodlinks-tagged-links.sh new file mode 100755 index 000000000..d639db804 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-tagged-links.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Tag +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Show links tagged with the specified tag in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +# @raycast.argument1 { "type": "text", "placeholder": "name", "percentEncoded": true} + +open "goodlinks://x-callback-url/tag?name=${1}" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-unread-list.sh b/commands/apps/goodlinks/goodlinks-unread-list.sh new file mode 100755 index 000000000..8ea202150 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-unread-list.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Unread List +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Show Unread list in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/unread" \ No newline at end of file diff --git a/commands/apps/goodlinks/goodlinks-untagged-list.sh b/commands/apps/goodlinks/goodlinks-untagged-list.sh new file mode 100755 index 000000000..4cdac21d2 --- /dev/null +++ b/commands/apps/goodlinks/goodlinks-untagged-list.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Install GoodLinks via Mac App Store: https://apps.apple.com/app/id1474335294 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Untagged List +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/goodlinks.png +# @raycast.packageName GoodLinks + +# Documentation: +# @raycast.description Show Untagged list in the GoodLinks app +# @raycast.author Filip Chabik +# @raycast.authorURL https://github.com/hadret + +open "goodlinks://x-callback-url/untagged" \ No newline at end of file diff --git a/commands/apps/goodlinks/images/goodlinks.png b/commands/apps/goodlinks/images/goodlinks.png new file mode 100644 index 000000000..1080610c1 Binary files /dev/null and b/commands/apps/goodlinks/images/goodlinks.png differ diff --git a/commands/apps/hyper/hyper-run-shell-command.applescript b/commands/apps/hyper/hyper-run-shell-command.applescript new file mode 100755 index 000000000..c592a0762 --- /dev/null +++ b/commands/apps/hyper/hyper-run-shell-command.applescript @@ -0,0 +1,51 @@ +#!/usr/bin/osascript + +# Note: Hyper required +# Install via Hyper.is: https://hyper.is/ + +# Dependency: This script requires `hyperalfred` (https://github.com/gjuchault/hyperalfred) +# Install via Hyper: `hyper i hyperalfred` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Run Shell Command +# @raycast.mode silent +# @raycast.packageName Hyper + +# Optional parameters: +# @raycast.icon images/hyper.png +# @raycast.currentDirectoryPath ~ +# @raycast.argument1 { "type": "text", "placeholder": "Command" } + +# Documentation: +# @raycast.description Run a terminal using Hyper +# @raycast.author Eliot Hertenstein +# @raycast.authorURL https://github.com/eIiot + +on run argv + write_to_file( (item 1 of argv) , "./.hyper_plugins/hyperalfred.txt", false) + try + tell application "Hyper" to activate + on error e + log "Hyper is required (https://hyper.is)" + -- return false + end try +end run + +on write_to_file(this_data, target_file, append_data) + try + tell application "System Events" to exists file target_file + if not the result then do shell script "> " & quoted form of target_file + set the open_target_file to open for access target_file with write permission + if append_data is false then set eof of the open_target_file to 0 + write this_data to the open_target_file starting at eof + close access the open_target_file + return true + on error e + try + log "hyperalfred is required (https://github.com/gjuchault/hyperalfred)." + close access target_file + end try + return false + end try +end write_to_file \ No newline at end of file diff --git a/commands/apps/hyper/images/hyper.png b/commands/apps/hyper/images/hyper.png new file mode 100644 index 000000000..13e6fc300 Binary files /dev/null and b/commands/apps/hyper/images/hyper.png differ diff --git a/commands/apps/iconsur/iconsur.sh b/commands/apps/iconsur/iconsur.sh index 5c94e62ae..2a1ae92bf 100755 --- a/commands/apps/iconsur/iconsur.sh +++ b/commands/apps/iconsur/iconsur.sh @@ -27,9 +27,17 @@ if [ -z "$t" ]; then exit 1 fi +# Workaround for the error message +exec 2>/dev/null + # Test file -if [ ! -d "/Applications/$1.app" ]; then - echo "Application not found, make sure it's in /Application folder" +appPath="" +if [ -d "/Applications/$1.app" ]; then + appPath="/Applications/$1.app" +elif [ -d "$HOME/Applications/$1.app" ]; then + appPath="$HOME/Applications/$1.app" +else + echo "Application not found, make sure it's in Applications folder" exit 2 fi @@ -42,17 +50,18 @@ if [ $omit -eq 0 ] && [ $3 = "y" -o $3 = "Y" ]; then loc="-l" fi + if [ $2 ] && [ $omit -eq 0 ]; then - echo $2|sudo -S iconsur set "/Applications/$1.app" $loc + echo $2|sudo -S iconsur set "$appPath" $loc if [ ${PIPESTATUS[1]} -eq 1 ]; then echo "Password incorrect" - exit 0 + exit 2 fi else - iconsur set "/Applications/$1.app" $loc + iconsur set "$appPath" $loc 1>/dev/null if [ ${PIPESTATUS[0]} -eq 1 ]; then echo "It didn't work, try again with password" - exit 0 + exit 2 fi fi diff --git a/commands/apps/iterm/iterm-open-profile-in-new-window.applescript b/commands/apps/iterm/iterm-open-profile-in-new-window.applescript new file mode 100755 index 000000000..6ef8fd3b7 --- /dev/null +++ b/commands/apps/iterm/iterm-open-profile-in-new-window.applescript @@ -0,0 +1,34 @@ +#!/usr/bin/osascript + +# Dependency: requires iTerm (https://iterm2.com) +# Install via Homebrew: `brew install --cask iterm2` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open profile +# @raycast.packageName iTerm +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.argument1 { "type": "text", "placeholder": "Placeholder" } + +# Documentation: +# @raycast.author sunrisewestern +# @raycast.authorURL https://github.com/sunrisewestern + +on is_running(appName) + tell application "System Events" to (name of processes) contains appName +end is_running + +on run {argv} + set iTermRunning to is_running("iTerm2") + tell application "iTerm" + activate + if not (iTermRunning) then + delay 0.5 + close the current window + end if + create window with profile argv + end tell +end run diff --git a/commands/apps/lungo/images/lungo.png b/commands/apps/lungo/images/lungo.png new file mode 100644 index 000000000..30d64f85d Binary files /dev/null and b/commands/apps/lungo/images/lungo.png differ diff --git a/commands/apps/lungo/lungo-activate.sh b/commands/apps/lungo/lungo-activate.sh new file mode 100755 index 000000000..77a5c67d9 --- /dev/null +++ b/commands/apps/lungo/lungo-activate.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Note: Lungo v2.0.4 required +# Install via Mac App Store: https://apps.apple.com/app/id1263070803 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Activate +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/lungo.png +# @raycast.packageName Lungo + +# Documentation: +# @raycast.author Lungo +# @raycast.authorURL https://sindresorhus.com/lungo +# @raycast.description Deactivate Lungo. +# @raycast.argument1 { "type": "text", "placeholder": "hours", "optional": true, "percentEncoded": true } +# @raycast.argument2 { "type": "text", "placeholder": "minutes", "optional": true, "percentEncoded": true } + +open --background "lungo:activate?hours=$1&minutes=$2" diff --git a/commands/apps/lungo/lungo-deactivate.sh b/commands/apps/lungo/lungo-deactivate.sh new file mode 100755 index 000000000..3a3a8c5c6 --- /dev/null +++ b/commands/apps/lungo/lungo-deactivate.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Lungo v2.0.4 required +# Install via Mac App Store: https://apps.apple.com/app/id1263070803 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Deactivate +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/lungo.png +# @raycast.packageName Lungo + +# Documentation: +# @raycast.author Lungo +# @raycast.authorURL https://sindresorhus.com/lungo +# @raycast.description Deactivate Lungo. + +open --background lungo:deactivate diff --git a/commands/apps/lungo/lungo-toggle.sh b/commands/apps/lungo/lungo-toggle.sh new file mode 100755 index 000000000..e149f04e7 --- /dev/null +++ b/commands/apps/lungo/lungo-toggle.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Note: Lungo v2.0.4 required +# Install via Mac App Store: https://apps.apple.com/app/id1263070803 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/lungo.png +# @raycast.packageName Lungo + +# Documentation: +# @raycast.author Lungo +# @raycast.authorURL https://sindresorhus.com/lungo +# @raycast.description Toggle Lungo. +# @raycast.argument1 { "type": "text", "placeholder": "hours", "optional": true, "percentEncoded": true } +# @raycast.argument2 { "type": "text", "placeholder": "minutes", "optional": true, "percentEncoded": true } + +open --background "lungo:toggle?hours=$1&minutes=$2" diff --git a/commands/apps/mail/copy-captcha-from-mail.py b/commands/apps/mail/copy-captcha-from-mail.py new file mode 100755 index 000000000..de5cae47b --- /dev/null +++ b/commands/apps/mail/copy-captcha-from-mail.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 + +# Copy the verification code from Mail. +# +# Dependency: This script requires the `emlx` package. +# Install it via `pip install emlx`. +# +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title CaptchaFromMail +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/mail.png +# @raycast.packageName Mail + +# Documentation: +# @raycast.description Copy the captcha from the emlx file. +# @raycast.author RealTong +# @raycast.authorURL https://raycast.com/RealTong + +import os +import re +import pyperclip +import emlx + + +def extract_captcha_from_emlx(emlx_path): + if emlx_file is None or os.path.exists(emlx_file) is False: + print("Mail not found") + return + email = emlx.read(emlx_path) + headers = email.headers + content = email.html + subject = headers["Subject"] + captcha_match_keyword = [ + "验证码", + "动态密码", + "代码", + "确认", + "码", + "verification", + "code", + "confirm", + ] + content_pattern = r"\b[0-9]{6}\b" + subject_pattern = r"\b[a-zA-Z0-9]{6}\b" + # 判断内容中是否包含验证码关键字, 只有包含关键字的邮件才会查找验证码 + for keyword in captcha_match_keyword: + if keyword in subject: + if re.search(subject_pattern, subject): + captcha = re.search(subject_pattern, subject).group() + pyperclip.copy(captcha) + print("Verification code successfully copied to clipboard:", captcha) + return + if re.search(content_pattern, content): + captcha = re.search(content_pattern, content).group() + pyperclip.copy(captcha) + print("Verification code successfully copied to clipboard:", captcha) + return + else: + print("Verification code not found") + else: + print("Not a verification code email") + + +def get_latest_emlx_file(folder): + latest_emlx_file = None + latest_mod_time = 0 + for root, dirs, files in os.walk(folder): + for file in files: + if file.endswith(".emlx"): + file_path = os.path.join(root, file) + mod_time = os.path.getmtime(file_path) + if mod_time > latest_mod_time: + latest_mod_time = mod_time + latest_emlx_file = file_path + + return latest_emlx_file + + +if __name__ == "__main__": + try: + import emlx + + os.listdir(f"/") + except ImportError: + print("emlx not installed, please run 'pip install emlx' to install it") + exit(1) + except OSError: + print( + "Currently there is no Full Disk Access permission, please grant Full Disk Access permission to the terminal in System Preferences > Security & Privacy > Privacy > Full Disk Access." + ) + exit(1) + mail_path = f"{os.path.expanduser('~')}/Library/Mail/V10/" + emlx_file = get_latest_emlx_file(mail_path) + extract_captcha_from_emlx(emlx_file) diff --git a/commands/apps/mail/images/mail.png b/commands/apps/mail/images/mail.png new file mode 100644 index 000000000..0ae662ac3 Binary files /dev/null and b/commands/apps/mail/images/mail.png differ diff --git a/commands/apps/medo/add-task.sh b/commands/apps/medo/add-task.sh new file mode 100755 index 000000000..567b829ce --- /dev/null +++ b/commands/apps/medo/add-task.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Note: Medo v1.0 required +# Install via Github Repo: https://github.com/Aayush9029/Medo + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Add Task +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/medo.png +# @raycast.argument1 { "type": "text", "placeholder": "Title" } +# @raycast.argument2 { "type": "text", "placeholder": "Priority", "default": "low","optional": true} +# @raycast.packageName Medo + +# Documentation: +# @raycast.description Add a new task +# @raycast.author Aayush +# @raycast.authorURL https://github.com/Aayush9029 + +open "medo://add-task?title=$1&p=$2" diff --git a/commands/apps/medo/images/medo.png b/commands/apps/medo/images/medo.png new file mode 100644 index 000000000..e9311e695 Binary files /dev/null and b/commands/apps/medo/images/medo.png differ diff --git a/commands/apps/medo/medo-float-large.sh b/commands/apps/medo/medo-float-large.sh new file mode 100755 index 000000000..44579222d --- /dev/null +++ b/commands/apps/medo/medo-float-large.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Medo v1.0 required +# Install via Github Repo: https://github.com/Aayush9029/Medo + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Medo Float Large +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/medo.png +# @raycast.packageName Medo + +# Documentation: +# @raycast.description Add a new task with priority +# @raycast.author Aayush +# @raycast.authorURL https://github.com/Aayush9029 + +open "medo://show-large" diff --git a/commands/apps/medo/medo-float-small.sh b/commands/apps/medo/medo-float-small.sh new file mode 100755 index 000000000..c483ae15e --- /dev/null +++ b/commands/apps/medo/medo-float-small.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Medo v1.0 required +# Install via Github Repo: https://github.com/Aayush9029/Medo + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Medo Float Small +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/medo.png +# @raycast.packageName Medo + +# Documentation: +# @raycast.description Add a new task with priority +# @raycast.author Aayush +# @raycast.authorURL https://github.com/Aayush9029 + +open "medo://show-small" diff --git a/commands/apps/medo/medo-float.sh b/commands/apps/medo/medo-float.sh new file mode 100755 index 000000000..3d0046790 --- /dev/null +++ b/commands/apps/medo/medo-float.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: Medo v1.0 required +# Install via Github Repo: https://github.com/Aayush9029/Medo + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Medo Float +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/medo.png +# @raycast.packageName Medo + +# Documentation: +# @raycast.description Add a new task with priority +# @raycast.author Aayush +# @raycast.authorURL https://github.com/Aayush9029 + +open "medo://show-medium" diff --git a/commands/apps/meetingbar/images/meetingbar.png b/commands/apps/meetingbar/images/meetingbar.png index 6603a7feb..5104e656d 100644 Binary files a/commands/apps/meetingbar/images/meetingbar.png and b/commands/apps/meetingbar/images/meetingbar.png differ diff --git a/commands/apps/menubarx/close-last-menubarx-tab.sh b/commands/apps/menubarx/close-last-menubarx-tab.sh new file mode 100755 index 000000000..156b42524 --- /dev/null +++ b/commands/apps/menubarx/close-last-menubarx-tab.sh @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Close Last Tab +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/menubarx_logo.png +# @raycast.packageName MenubarX + +# Documentation: +# @raycast.description Close last viewed tab in MenubarX +# @raycast.author Clu Soh +# @raycast.authorURL https://twitter.com/designedbyclu + +tell application "MenubarX" to activate +delay 0.1 +tell application "System Events" to tell process "MenubarX" + key code 13 using {shift down, command down} +end tell +do shell script "echo Closed tab" \ No newline at end of file diff --git a/commands/apps/menubarx/images/menubarx_logo.png b/commands/apps/menubarx/images/menubarx_logo.png new file mode 100644 index 000000000..51cdfe016 Binary files /dev/null and b/commands/apps/menubarx/images/menubarx_logo.png differ diff --git a/commands/apps/menubarx/open-in-menubarx.sh b/commands/apps/menubarx/open-in-menubarx.sh new file mode 100755 index 000000000..ee0463b5f --- /dev/null +++ b/commands/apps/menubarx/open-in-menubarx.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open in MenubarX +# @raycast.mode silent +# Optional parameters: +# @raycast.icon images/menubarx_logo.png +# @raycast.packageName MenubarX + +# Documentation: +# @raycast.description Open Pasteboard link in MenubarX +# @raycast.author Clu Soh +# @raycast.authorURL https://twitter.com/designedbyclu + +regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]' +pasteboard=$(pbpaste) + +if [[ $pasteboard =~ $regex ]] +then + open "menubarx://open/?xurl=$pasteboard" + echo "Opened in MenubarX" +else + echo "Seem like is not a URL you copied" +fi + + + + diff --git a/commands/apps/menubarx/open-tab-in-menubar.applescript b/commands/apps/menubarx/open-tab-in-menubar.applescript new file mode 100755 index 000000000..63dc77949 --- /dev/null +++ b/commands/apps/menubarx/open-tab-in-menubar.applescript @@ -0,0 +1,77 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Tabs +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/menubarx_logo.png +# @raycast.packageName MenubarX +# @raycast.argument1 { "type": "text", "placeholder": "Tabs 1~9" } + +# Documentation: +# @raycast.description Open X Tab in your menubar +# @raycast.author Clu Soh +# @raycast.authorURL https://twitter.com/designedbyclu + + +on run argv + set tabNum to item 1 of argv + + if tabNum is equal to "1" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "1" using command down + end tell + else if tabNum is equal to "2" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "2" using command down + end tell + else if tabNum is equal to "3" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "3" using command down + end tell + else if tabNum is equal to "4" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "4" using command down + end tell + else if tabNum is equal to "5" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "5" using command down + end tell + else if tabNum is equal to "6" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "6" using command down + end tell + else if tabNum is equal to "7" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "7" using command down + end tell + else if tabNum is equal to "8" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "8" using command down + end tell + else if tabNum is equal to "9" then + tell application "MenubarX" to activate + delay 0.1 + tell application "System Events" to tell process "MenubarX" + keystroke "9" using command down + end tell + end if +end run diff --git a/commands/apps/mullvad/connect.sh b/commands/apps/mullvad/connect.sh index 94390e13e..1ec0e6c65 100755 --- a/commands/apps/mullvad/connect.sh +++ b/commands/apps/mullvad/connect.sh @@ -30,7 +30,5 @@ if [ $success -ne 0 ]; then exit 1 fi -status=$(mullvad status --location) -relay=$(echo "$status" | sed -n '2 s/Relay: //p') -location=$(echo "$status" | sed -n '5 s/Location: //p') -echo "Successfully connected to $relay ($location)" +status=$(mullvad status) +echo "$status" diff --git a/commands/apps/mullvad/images/connect.png b/commands/apps/mullvad/images/connect.png index d1f1c0115..ffe9a3c69 100644 Binary files a/commands/apps/mullvad/images/connect.png and b/commands/apps/mullvad/images/connect.png differ diff --git a/commands/apps/mullvad/images/disconnect.png b/commands/apps/mullvad/images/disconnect.png index 3f40430e6..e0e0f86fc 100644 Binary files a/commands/apps/mullvad/images/disconnect.png and b/commands/apps/mullvad/images/disconnect.png differ diff --git a/commands/apps/mullvad/images/location.png b/commands/apps/mullvad/images/location.png index 90a243f54..37606d553 100644 Binary files a/commands/apps/mullvad/images/location.png and b/commands/apps/mullvad/images/location.png differ diff --git a/commands/apps/mullvad/images/reconnect.png b/commands/apps/mullvad/images/reconnect.png index c2608dc1d..b1739c613 100644 Binary files a/commands/apps/mullvad/images/reconnect.png and b/commands/apps/mullvad/images/reconnect.png differ diff --git a/commands/apps/mullvad/images/search.png b/commands/apps/mullvad/images/search.png index c71ac4871..2f649bda3 100644 Binary files a/commands/apps/mullvad/images/search.png and b/commands/apps/mullvad/images/search.png differ diff --git a/commands/apps/mullvad/images/status.png b/commands/apps/mullvad/images/status.png index be54c2e11..cc2dc1fe5 100644 Binary files a/commands/apps/mullvad/images/status.png and b/commands/apps/mullvad/images/status.png differ diff --git a/commands/apps/mullvad/location.sh b/commands/apps/mullvad/location.sh index fb8c28098..c8c15836e 100755 --- a/commands/apps/mullvad/location.sh +++ b/commands/apps/mullvad/location.sh @@ -41,7 +41,5 @@ if [ $success -ne 0 ]; then exit 1 fi -status=$(mullvad status --location) -relay=$(echo "$status" | sed -n '2 s/Relay: //p') -location=$(echo "$status" | sed -n '5 s/Location: //p') -echo "Successfully connected to $relay ($location)" +status=$(mullvad status) +echo "$status" diff --git a/commands/apps/mullvad/reconnect.sh b/commands/apps/mullvad/reconnect.sh index e7bac7ec8..22ab16e68 100755 --- a/commands/apps/mullvad/reconnect.sh +++ b/commands/apps/mullvad/reconnect.sh @@ -36,6 +36,4 @@ if [[ $status == *"Tunnel status: Disconnected"* ]]; then exit 0 fi -relay=$(echo "$status" | sed -n '2 s/Relay: //p') -location=$(echo "$status" | sed -n '5 s/Location: //p') -echo "Successfully reconnected to $relay ($location)" +echo "$status" diff --git a/commands/apps/mullvad/status.sh b/commands/apps/mullvad/status.sh index f7846adf3..69b860c46 100755 --- a/commands/apps/mullvad/status.sh +++ b/commands/apps/mullvad/status.sh @@ -25,7 +25,7 @@ if ! command -v mullvad &> /dev/null; then exit 1 fi -status=$(mullvad status --location) +status=$(mullvad status) success=$? if [ $success -ne 0 ]; then @@ -33,10 +33,8 @@ if [ $success -ne 0 ]; then exit 1 fi -if [[ $status == *"Tunnel status: Disconnected"* ]]; then +if [[ $status == *"Disconnected"* ]]; then echo "❌ Disconnected and unsecured" else - relay=$(echo "$status" | sed -n '2 s/Relay: //p') - location=$(echo "$status" | sed -n '5 s/Location: //p') - echo "✅ Connected to $relay ($location)" + echo "✅ $status" fi diff --git a/commands/apps/noteplan3/images/noteplan3.png b/commands/apps/noteplan3/images/noteplan3.png index 6a7120c59..eb3593b54 100644 Binary files a/commands/apps/noteplan3/images/noteplan3.png and b/commands/apps/noteplan3/images/noteplan3.png differ diff --git a/commands/apps/noteplan3/images/screenshot.png b/commands/apps/noteplan3/images/screenshot.png index 5e7659a5a..0043635ef 100644 Binary files a/commands/apps/noteplan3/images/screenshot.png and b/commands/apps/noteplan3/images/screenshot.png differ diff --git a/commands/apps/notes/create-note-from-clipboard.applescript b/commands/apps/notes/create-note-from-clipboard.applescript index e54c6bf7b..f131fd31a 100755 --- a/commands/apps/notes/create-note-from-clipboard.applescript +++ b/commands/apps/notes/create-note-from-clipboard.applescript @@ -21,6 +21,6 @@ on run argv " tell application "Notes" activate - make new note at folder "Notes" with properties {name: (item 1 of argv), body:content} + make new note at folder "Notes" with properties {name:"", body:content} end tell end run diff --git a/commands/apps/notes/images/notes.png b/commands/apps/notes/images/notes.png index 24b40cf55..a45bf3cca 100644 Binary files a/commands/apps/notes/images/notes.png and b/commands/apps/notes/images/notes.png differ diff --git a/commands/apps/obsidian/images/obsidian.png b/commands/apps/obsidian/images/obsidian.png index 82524a69b..9953391cf 100644 Binary files a/commands/apps/obsidian/images/obsidian.png and b/commands/apps/obsidian/images/obsidian.png differ diff --git a/commands/apps/one-thing/images/one-thing.png b/commands/apps/one-thing/images/one-thing.png new file mode 100644 index 000000000..a3cf706c4 Binary files /dev/null and b/commands/apps/one-thing/images/one-thing.png differ diff --git a/commands/apps/one-thing/one-thing-clear-text.sh b/commands/apps/one-thing/one-thing-clear-text.sh new file mode 100755 index 000000000..feb544499 --- /dev/null +++ b/commands/apps/one-thing/one-thing-clear-text.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Note: One Thing required +# Install via Mac App Store: https://apps.apple.com/app/id1604176982 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Clear Text +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/one-thing.png +# @raycast.packageName One Thing + +# Documentation: +# @raycast.author One Thing +# @raycast.authorURL https://sindresorhus.com/one-thing +# @raycast.description Clear the text shown in One Thing app. + +open --background "one-thing:?text=" diff --git a/commands/apps/one-thing/one-thing-set-text.sh b/commands/apps/one-thing/one-thing-set-text.sh new file mode 100755 index 000000000..0d7aeb199 --- /dev/null +++ b/commands/apps/one-thing/one-thing-set-text.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Note: One Thing required +# Install via Mac App Store: https://apps.apple.com/app/id1604176982 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set Text +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ./images/one-thing.png +# @raycast.packageName One Thing + +# Documentation: +# @raycast.author One Thing +# @raycast.authorURL https://sindresorhus.com/one-thing +# @raycast.description Set the text shown in One Thing app. +# @raycast.argument1 { "type": "text", "placeholder": "text", "percentEncoded": true } + +open --background "one-thing:?text=$1" diff --git a/commands/apps/openvpn/images/openvpn.png b/commands/apps/openvpn/images/openvpn.png index 7422eae7b..330b474c8 100644 Binary files a/commands/apps/openvpn/images/openvpn.png and b/commands/apps/openvpn/images/openvpn.png differ diff --git a/commands/apps/plash/images/plash.png b/commands/apps/plash/images/plash.png index 6c5553ad6..2ec76f0d0 100644 Binary files a/commands/apps/plash/images/plash.png and b/commands/apps/plash/images/plash.png differ diff --git a/commands/apps/playground/images/swift-playground-logo.png b/commands/apps/playground/images/swift-playground-logo.png index bd3f94654..80b5c8895 100644 Binary files a/commands/apps/playground/images/swift-playground-logo.png and b/commands/apps/playground/images/swift-playground-logo.png differ diff --git a/commands/apps/playground/images/swift-playground-screenshot.png b/commands/apps/playground/images/swift-playground-screenshot.png index 239756966..c0124effa 100644 Binary files a/commands/apps/playground/images/swift-playground-screenshot.png and b/commands/apps/playground/images/swift-playground-screenshot.png differ diff --git a/commands/apps/pulse-secure/images/pulse-secure.png b/commands/apps/pulse-secure/images/pulse-secure.png index bb003d111..4648f8f93 100644 Binary files a/commands/apps/pulse-secure/images/pulse-secure.png and b/commands/apps/pulse-secure/images/pulse-secure.png differ diff --git a/commands/apps/quip/.gitignore b/commands/apps/quip/.gitignore new file mode 100644 index 000000000..47d560798 --- /dev/null +++ b/commands/apps/quip/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +tmp/ +quip_config.ini +quip-new-*.py +__pycache__ diff --git a/commands/apps/quip/README.org b/commands/apps/quip/README.org new file mode 100644 index 000000000..7553f741e --- /dev/null +++ b/commands/apps/quip/README.org @@ -0,0 +1,39 @@ +#+title: Raycast script commands for Quip + +This set of script commands makes it possible to easily create and add text to different types of Quip documents. They complement the existing Raycast [[https://www.raycast.com/justin0u0/quip][Quip extension]], which provides support for searching and viewing Quip documents. + +With these scripts you can create commands to do one of two actions: + +- =create=: Create new Quip documents in predefined folders, optionally based on predefined templates (e.g. type =mnote Meeting title= to automatically create a new document in your "Meeting notes" folder, using an appropriate template). You can define as many different "create" actions as you need. +- =add=: Add text to an existing Quip document, optionally formatted as list items (e.g. type =todo Update the documentation= to add a todo item to your "Action items" document). You can define as many "add" actions as you need. + +You can customize the behavior during and after these actions, including the following: +- Open the created/updated document automatically (and whether to use the Quip app or the web browser for this) +- Copy the URL of the created/updated document to the clipboard. +- Prepend the current date to the title of newly created documents or added text. +- Use different templates for each type of document created. +- The Quip folder in which to store each type of created document. +- Produce notifications after each command finishes execution. + +* Configuration and use + +To get set up, do the following: + +1. Check out this repository and add the =quip= directory as a Script Directory in the Raycast preferences: + [[file:images/raycast-script-directory-prefs.png]] +2. Copy =quip_config.template.ini= to =quip_config.ini= and customize it to your needs. You need to set at least the following values: + - =APIToken= to your Quip personal API token. You can get one at https://quip.com/api/personal-token (the URL may be different if you are using a Quip Enterprise instance with a custom domain). + - If you are using a custom Quip domain, modify =BaseURL= and =APIURL= accordingly. + - Configure the actions you want. See the examples in the template for details on how to configure them. + - *Note:* if you want to populate Quip secrets and other values from a password manager, see =quip_config.chezmoi.template.ini= for an example which inserts those values from entries kept in KeePassXC. Instructions are at the top of the file. +3. Once your configuration is complete, run from Raycast the "Set up Quip commands" command. This will ask you for confirmation and then generate scripts corresponding to your configuration, which will be loaded automatically by Raycast. + [[file:images/raycast-setup-quip-commands.png]] + [[file:images/raycast-generate-quip-commands-output.png]] +4. You can now use the generated commands to create or add text to Quip documents. You can of course configure aliases or hotkeys for the commands you need the most in the Raycast Script Commands settings. + [[file:images/raycast-quip-commands.png]] + [[file:images/raycast-script-command-settings.png]] +5. Note that you can also run the generated scripts from the command line to execute the corresponding actions. For example: + #+begin_src shell +./quip-new-note.py "New note title" + #+end_src +6. If you need to update or modify your config (e.g. to add or remove actions), make sure you rerun the "Set up Quip commands" command afterwards, to ensure the scripts are kept up to date. diff --git a/commands/apps/quip/images/raycast-generate-quip-commands-output.png b/commands/apps/quip/images/raycast-generate-quip-commands-output.png new file mode 100644 index 000000000..941cf969d Binary files /dev/null and b/commands/apps/quip/images/raycast-generate-quip-commands-output.png differ diff --git a/commands/apps/quip/images/raycast-quip-commands.png b/commands/apps/quip/images/raycast-quip-commands.png new file mode 100644 index 000000000..c6c755cd4 Binary files /dev/null and b/commands/apps/quip/images/raycast-quip-commands.png differ diff --git a/commands/apps/quip/images/raycast-script-command-settings.png b/commands/apps/quip/images/raycast-script-command-settings.png new file mode 100644 index 000000000..40b4bcab6 Binary files /dev/null and b/commands/apps/quip/images/raycast-script-command-settings.png differ diff --git a/commands/apps/quip/images/raycast-script-directory-prefs.png b/commands/apps/quip/images/raycast-script-directory-prefs.png new file mode 100644 index 000000000..ab29c7075 Binary files /dev/null and b/commands/apps/quip/images/raycast-script-directory-prefs.png differ diff --git a/commands/apps/quip/images/raycast-setup-quip-commands.png b/commands/apps/quip/images/raycast-setup-quip-commands.png new file mode 100644 index 000000000..17919b218 Binary files /dev/null and b/commands/apps/quip/images/raycast-setup-quip-commands.png differ diff --git a/commands/apps/quip/quip-new.template.py b/commands/apps/quip/quip-new.template.py new file mode 100755 index 000000000..1a5c31e40 --- /dev/null +++ b/commands/apps/quip/quip-new.template.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title {{commandtitle}} +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon /Applications/Quip.app/Contents/Resources/AppIcon.icns +# @raycast.argument1 { "type": "text", "placeholder": "{{commandargplaceholder}}", "optional": {{opendocifemptyarg}} } +# @raycast.packageName Quip utilities + +# Documentation: +# @raycast.description Configure your Quip API token and other defaults in quip_config.ini +# @raycast.author zzamboni +# @raycast.authorURL https://raycast.com/zzamboni + +import sys +import re +import quip_utils + +# Determine the document type to create from the script filename. +match = re.search('quip-new-(.+)\.py', sys.argv[0]) +if match: + doc_type = match.group(1) + if len(sys.argv) > 1: + arg = sys.argv[1] + else: + arg = None + quip_utils.quip_new_doc(doc_type, arg) +else: + quip_utils.fail(f"Error: Could not determine document type to use - incorrect script name.") diff --git a/commands/apps/quip/quip.py b/commands/apps/quip/quip.py new file mode 100644 index 000000000..b39eafee0 --- /dev/null +++ b/commands/apps/quip/quip.py @@ -0,0 +1,819 @@ +# Copyright 2014 Quip +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +"""A Quip API client library. + +For full API documentation, visit https://quip.com/api/. + +Typical usage: + + client = quip.QuipClient(access_token=...) + user = client.get_authenticated_user() + starred = client.get_folder(user["starred_folder_id"]) + print "There are", len(starred["children"]), "items in your starred folder" + +In addition to standard getters and setters, we provide a few convenience +methods for document editing. For example, you can use `add_to_first_list` +to append items (in Markdown) to the first bulleted or checklist in a +given document, which is useful for automating a task list. +""" + +import datetime +import json +import logging +import ssl +import sys +import time +import xml.etree.cElementTree + +PY3 = sys.version_info > (3,) + +if PY3: + import urllib.request + import urllib.parse + import urllib.error + + Request = urllib.request.Request + urlencode = urllib.parse.urlencode + urlopen = urllib.request.urlopen + HTTPError = urllib.error.HTTPError + + iteritems = dict.items + +else: + import urllib + import urllib2 + + Request = urllib2.Request + urlencode = urllib.urlencode + urlopen = urllib2.urlopen + HTTPError = urllib2.HTTPError + + iteritems = dict.iteritems + + +try: + reload(sys) + sys.setdefaultencoding('utf8') +except: + # Can't change default encoding usually... + pass + +try: + ssl.PROTOCOL_TLSv1_1 +except AttributeError: + raise Exception( + "Using the Quip API requires an SSL library that supports TLS versions " + ">= 1.1; your Python + OpenSSL installation must be upgraded.") +# After 2017-02, the Quip API HTTPS endpoint requires TLS version 1.1 or later; +# TLS version 1.0 is disabled due to extensive security vulnerabilities. +# +# - macOS: At this time of this writing, macOS ships with Python 2.7 and +# OpenSSL, but the version of OpenSSL is outdated and only supports TLS 1.0. +# (This is even true of the most recent version of macOS (Sierra) with all +# security patches installed; see +# https://eclecticlight.co/2016/03/23/the-tls-mess-in-os-x-el-capitan/ .) +# +# To use this module on a macOS system, you will need to install your own +# copy of Python and OpenSSL. Simple suggestions: +# +# 1) Install Homebrew from http://brew.sh; run "brew install openssl python" +# 2) Install Miniconda from https://conda.io/miniconda.html +# +# - Google App Engine (GAE): Per App Engine's documentation, you must request +# version 2.7.11 of the "ssl" library in your app.yaml file. See: +# https://cloud.google.com/appengine/docs/python/sockets/ssl_support + + +class QuipError(Exception): + def __init__(self, code, message, http_error): + Exception.__init__(self, "%d: %s" % (code, message)) + self.code = code + self.http_error = http_error + + +class QuipClient(object): + """A Quip API client""" + # Edit operations + APPEND, \ + PREPEND, \ + AFTER_SECTION, \ + BEFORE_SECTION, \ + REPLACE_SECTION, \ + DELETE_SECTION = range(6) + + # Folder colors + MANILA, \ + RED, \ + ORANGE, \ + GREEN, \ + BLUE = range(5) + + def __init__(self, access_token=None, client_id=None, client_secret=None, + base_url=None, request_timeout=None): + """Constructs a Quip API client. + + If `access_token` is given, all of the API methods in the client + will work to read and modify Quip documents. + + Otherwise, only `get_authorization_url` and `get_access_token` + work, and we assume the client is for a server using the Quip API's + OAuth endpoint. + """ + self.access_token = access_token + self.client_id = client_id + self.client_secret = client_secret + self.base_url = base_url if base_url else "https://platform.quip.com" + self.request_timeout = request_timeout if request_timeout else 10 + + def get_authorization_url(self, redirect_uri, state=None): + """Returns the URL the user should be redirected to to sign in.""" + return self._url( + "oauth/login", redirect_uri=redirect_uri, state=state, + response_type="code", client_id=self.client_id) + + def get_access_token(self, redirect_uri, code, + grant_type="authorization_code", + refresh_token=None): + """Exchanges a verification code for an access_token. + + Once the user is redirected back to your server from the URL + returned by `get_authorization_url`, you can exchange the `code` + argument with this method. + """ + return self._fetch_json( + "oauth/access_token", redirect_uri=redirect_uri, code=code, + grant_type=grant_type, refresh_token=refresh_token, + client_id=self.client_id, client_secret=self.client_secret) + + def get_authenticated_user(self): + """Returns the user corresponding to our access token.""" + return self._fetch_json("users/current") + + def get_user(self, id): + """Returns the user with the given ID.""" + return self._fetch_json("users/" + id) + + def get_users(self, ids): + """Returns a dictionary of users for the given IDs.""" + return self._fetch_json("users/", post_data={"ids": ",".join(ids)}) + + def update_user(self, user_id, picture_url=None): + return self._fetch_json("users/update", post_data={ + "user_id": user_id, + "picture_url": picture_url, + }) + + def get_contacts(self): + """Returns a list of the users in the authenticated user's contacts.""" + return self._fetch_json("users/contacts") + + def get_folder(self, id): + """Returns the folder with the given ID.""" + return self._fetch_json("folders/" + id) + + def get_folders(self, ids): + """Returns a dictionary of folders for the given IDs.""" + return self._fetch_json("folders/", post_data={"ids": ",".join(ids)}) + + def new_folder(self, title, parent_id=None, color=None, member_ids=[]): + return self._fetch_json("folders/new", post_data={ + "title": title, + "parent_id": parent_id, + "color": color, + "member_ids": ",".join(member_ids), + }) + + def update_folder(self, folder_id, color=None, title=None): + return self._fetch_json("folders/update", post_data={ + "folder_id": folder_id, + "color": color, + "title": title, + }) + + def add_folder_members(self, folder_id, member_ids): + """Adds the given users to the given folder.""" + return self._fetch_json("folders/add-members", post_data={ + "folder_id": folder_id, + "member_ids": ",".join(member_ids), + }) + + def remove_folder_members(self, folder_id, member_ids): + """Removes the given users from the given folder.""" + return self._fetch_json("folders/remove-members", post_data={ + "folder_id": folder_id, + "member_ids": ",".join(member_ids), + }) + + def get_teams(self): + """Returns the teams for the user corresponding to our access token.""" + return self._fetch_json("teams/current") + + def get_messages(self, thread_id, max_created_usec=None, count=None): + """Returns the most recent messages for the given thread. + + To page through the messages, use max_created_usec, which is the + sort order for the returned messages. + + count should be an integer indicating the number of messages you + want returned. The maximum is 100. + """ + return self._fetch_json( + "messages/" + thread_id, max_created_usec=max_created_usec, + count=count) + + def new_message(self, thread_id, content=None, **kwargs): + """Sends a message on the given thread. + + `content` is plain text, not HTML. + """ + args = { + "thread_id": thread_id, + "content": content, + } + args.update(kwargs) + return self._fetch_json("messages/new", post_data=args) + + def get_thread(self, id): + """Returns the thread with the given ID.""" + return self._fetch_json("threads/" + id) + + def get_threads(self, ids): + """Returns a dictionary of threads for the given IDs.""" + return self._fetch_json("threads/", post_data={"ids": ",".join(ids)}) + + def get_recent_threads(self, max_updated_usec=None, count=None, **kwargs): + """Returns the recently updated threads for a given user.""" + return self._fetch_json( + "threads/recent", max_updated_usec=max_updated_usec, + count=count, **kwargs) + + def get_matching_threads( + self, query, count=None, only_match_titles=False, **kwargs): + """Returns the recently updated threads for a given user.""" + return self._fetch_json("threads/search", query=query, count=count, + only_match_titles=only_match_titles, **kwargs) + + def add_thread_members(self, thread_id, member_ids): + """Adds the given folder or user IDs to the given thread.""" + return self._fetch_json("threads/add-members", post_data={ + "thread_id": thread_id, + "member_ids": ",".join(member_ids), + }) + + def delete_thread(self, thread_id): + """Deletes the thread with the given thread id or secret""" + return self._fetch_json("threads/delete", post_data={ + "thread_id": thread_id, + }) + + def remove_thread_members(self, thread_id, member_ids): + """Removes the given folder or user IDs from the given thread.""" + return self._fetch_json("threads/remove-members", post_data={ + "thread_id": thread_id, + "member_ids": ",".join(member_ids), + }) + + def move_thread(self, thread_id, source_folder_id, destination_folder_id): + """Moves the given thread from the source folder to the destination one. + """ + self.add_thread_members(thread_id, [destination_folder_id]) + self.remove_thread_members(thread_id, [source_folder_id]) + + def new_chat(self, message, title=None, member_ids=[]): + """Creates a chat with the given title and members, and send the + initial message.""" + return self._fetch_json("threads/new-chat", post_data={ + "message": message, + "title": title, + "member_ids": ",".join(member_ids), + }) + + def new_document(self, content, format="html", title=None, member_ids=[]): + """Creates a new document from the given content. + + To create a document in a folder, include the folder ID in the list + of member_ids, e.g., + + client = quip.QuipClient(...) + user = client.get_authenticated_user() + client.new_document(..., member_ids=[user["archive_folder_id"]]) + + """ + return self._fetch_json("threads/new-document", post_data={ + "content": content, + "format": format, + "title": title, + "member_ids": ",".join(member_ids), + }) + + def copy_document(self, thread_id, folder_ids=None, member_ids=None, + title=None, values=None, **kwargs): + """Copies the given document, optionally replaces template variables + in the document with values in 'values' arg. The values argument + must be a dictionary that contains string keys and values that + are either strings, numbers or dictionaries. + """ + + args = {"thread_id": thread_id} + if folder_ids: + args["folder_ids"] = ",".join(folder_ids) + if member_ids: + args["member_ids"] = ",".join(member_ids) + if title: + args["title"] = title + if values: + args["values"] = json.dumps(values) + args.update(kwargs) + return self._fetch_json("threads/copy-document", post_data=args) + + def merge_comments(self, original_id, children_ids, ignore_user_ids=[]): + """Given an original document and a set of exact duplicates, copies + all comments and messages on the duplicates to the original. + + Impersonates the commentors if the access token used has + permission, but does not add them to the thread. + """ + import re + threads = self.get_threads(children_ids + [original_id]) + original_section_ids = re.findall(r" id='([a-zA-Z0-9]{11})'", + threads[original_id]["html"]) + for thread_id in children_ids: + thread = threads[thread_id] + child_section_ids = re.findall(r" id='([a-zA-Z0-9]{11})'", + thread["html"]) + parent_map = dict(zip(child_section_ids, original_section_ids)) + messages = self.get_messages(thread_id) + for message in reversed(messages): + if message["author_id"] in ignore_user_ids: + continue + kwargs = { + "user_id": message["author_id"], + "frame": "bubble", + "service_id": message["id"], + } + if "parts" in message: + kwargs["parts"] = json.dumps(message["parts"]) + else: + kwargs["content"] = message["text"] + if "annotation" in message: + section_id = None + if "highlight_section_ids" in message["annotation"]: + section_id = message["annotation"][ + "highlight_section_ids"][0] + else: + anno_loc = thread["html"].find( + '= 0 and loc >= 0: + section_id = thread["html"][loc + 4:loc + 15] + if section_id and section_id in parent_map: + kwargs["section_id"] = parent_map[section_id] + if "files" in message: + attachments = [] + for blob_info in message["files"]: + blob = self.get_blob(thread_id, blob_info["hash"]) + new_blob = self.put_blob( + original_id, blob, name=blob_info["name"]) + attachments.append(new_blob["id"]) + if attachments: + kwargs["attachments"] = ",".join(attachments) + self.new_message(original_id, **kwargs) + + def edit_document(self, thread_id, content, operation=APPEND, format="html", + section_id=None, **kwargs): + """Edits the given document, adding the given content. + + `operation` should be one of the constants described above. If + `operation` is relative to another section of the document, you must + also specify the `section_id`. + """ + + # Since our cell ids in 10x contain ';', which is a valid cgi + # parameter separator, we are replacing them with '_' in 10x cell + # sections. This should be no op for all other sections. + section_id = None if not section_id else section_id.replace(";", "_") + + args = { + "thread_id": thread_id, + "content": content, + "location": operation, + "format": format, + "section_id": section_id + } + args.update(kwargs) + return self._fetch_json("threads/edit-document", post_data=args) + + def add_to_first_list(self, thread_id, *items, **kwargs): + """Adds the given items to the first list in the given document. + + client = quip.QuipClient(...) + client.add_to_first_list(thread_id, "Try the Quip API") + + """ + items = [item.replace("\n", " ") for item in items] + args = { + "thread_id": thread_id, + "content": "\n\n".join(items), + "format": "markdown", + "operation": self.AFTER_SECTION + } + args.update(kwargs) + if "section_id" not in args: + first_list = self.get_first_list( + thread_id, kwargs.pop("document_html", None)) + if first_list: + args["section_id"] = self.get_last_list_item_id(first_list) + if not args.get("section_id"): + args["operation"] = self.APPEND + args["content"] = "\n\n".join([" * %s" % i for i in items]) + return self.edit_document(**args) + + def add_to_spreadsheet(self, thread_id, *rows, **kwargs): + """Adds the given rows to the named (or first) spreadsheet in the + given document. + + client = quip.QuipClient(...) + client.add_to_spreadsheet(thread_id, ["5/1/2014", 2.24]) + + """ + content = "".join(["%s" % "".join( + ["%s" % cell for cell in row]) for row in rows]) + if kwargs.get("name"): + spreadsheet = self.get_named_spreadsheet(kwargs["name"], thread_id) + else: + spreadsheet = self.get_first_spreadsheet(thread_id) + if kwargs.get("add_to_top"): + section_id = self.get_first_row_item_id(spreadsheet) + operation = self.BEFORE_SECTION + else: + section_id = self.get_last_row_item_id(spreadsheet) + operation = self.AFTER_SECTION + return self.edit_document( + thread_id=thread_id, + content=content, + section_id=section_id, + operation=operation) + + def update_spreadsheet_row(self, thread_id, header, value, updates, **args): + """Finds the row where the given header column is the given value, and + applies the given updates. Updates is a dict from header to + new value. In both cases headers can either be a string that matches, or + "A", "B", "C", 1, 2, 3 etc. If no row is found, adds a new one. + + client = quip.QuipClient(...) + client.update_spreadsheet_row( + thread_id, "customer", "Acme", {"Billed": "6/24/2015"}) + + """ + response = None + if args.get("name"): + spreadsheet = self.get_named_spreadsheet(args["name"], thread_id) + else: + spreadsheet = self.get_first_spreadsheet(thread_id) + headers = self.get_spreadsheet_header_items(spreadsheet) + row = self.find_row_from_header(spreadsheet, header, value) + if row: + ids = self.get_row_ids(row) + for head, val in iteritems(updates): + index = self.get_index_of_header(headers, head) + if not index or index >= len(ids) or not ids[index]: + continue + response = self.edit_document( + thread_id=thread_id, + content=val, + format="markdown", + section_id=ids[index], + operation=self.REPLACE_SECTION, + **args) + else: + updates[header] = value + response = self.add_spreadsheet_row( + thread_id, spreadsheet, updates, headers=headers, **args) + return response + + def add_spreadsheet_row( + self, thread_id, spreadsheet, updates, headers=None, **args): + if not headers: + headers = self.get_spreadsheet_header_items(spreadsheet) + indexed_items = {} + extra_items = [] + for head, val in iteritems(updates): + index = self.get_index_of_header( + headers, head, default=None) + if index is None or index in indexed_items: + extra_items.append(val) + else: + indexed_items[index] = val + cells = [] + if indexed_items: + for i in range(max(indexed_items.keys()) + 1): + if i in indexed_items: + cells.append(indexed_items[i]) + elif len(extra_items): + cells.append(extra_items.pop(0)) + else: + cells.append("") + cells.extend(extra_items) + content = "%s" % "".join( + ["%s" % cell for cell in cells]) + section_id = self.get_last_row_item_id(spreadsheet) + response = self.edit_document( + thread_id=thread_id, + content=content, + section_id=section_id, + operation=self.AFTER_SECTION, + **args) + return response + + def toggle_checkmark(self, thread_id, item, checked=True): + """Sets the checked state of the given list item to the given state. + + client = quip.QuipClient(...) + list = client.get_first_list(thread_id) + client.toggle_checkmark(thread_id, list[0]) + + """ + if checked: + item.attrib["class"] = "checked" + else: + item.attrib["class"] = "" + return self.edit_document(thread_id=thread_id, + content=xml.etree.cElementTree.tostring(item), + section_id=item.attrib["id"], + operation=self.REPLACE_SECTION) + + def get_first_list(self, thread_id=None, document_html=None): + """Returns the `ElementTree` of the first list in the document. + + The list can be any type (bulleted, numbered, or checklist). + If `thread_id` is given, we download the document. If you have + already downloaded the document, you can specify `document_html` + directly. + """ + return self._get_container(thread_id, document_html, "ul", 0) + + def get_last_list(self, thread_id=None, document_html=None): + """Like `get_first_list`, but the last list in the document.""" + return self._get_container(thread_id, document_html, "ul", -1) + + def get_section(self, section_id, thread_id=None, document_html=None): + if not document_html: + document_html = self.get_thread(thread_id).get("html") + if not document_html: + return None + tree = self.parse_document_html(document_html) + element = list(tree.iterfind(".//*[@id='%s']" % section_id)) + if not element: + return None + return element[0] + + def get_named_spreadsheet(self, name, thread_id=None, document_html=None): + if not document_html: + document_html = self.get_thread(thread_id).get("html") + if not document_html: + return None + tree = self.parse_document_html(document_html) + element = list(tree.iterfind(".//*[@title='%s']" % name)) + if not element: + return None + return element[0] + + def _get_container(self, thread_id, document_html, container, index): + if not document_html: + document_html = self.get_thread(thread_id).get("html") + if not document_html: + return None + tree = self.parse_document_html(document_html) + lists = list(tree.iter(container)) + if not lists: + return None + try: + return lists[index] + except IndexError: + return None + + def get_last_list_item_id(self, list_tree): + """Returns the last item in the given list `ElementTree`.""" + items = list(list_tree.iter("li")) + return items[-1].attrib["id"] if items else None + + def get_first_list_item_id(self, list_tree): + """Like `get_last_list_item_id`, but the first item in the list.""" + for item in list_tree.iter("li"): + return item.attrib["id"] + return None + + def get_first_spreadsheet(self, thread_id=None, document_html=None): + """Returns the `ElementTree` of the first spreadsheet in the document. + + If `thread_id` is given, we download the document. If you have + already downloaded the document, you can specify `document_html` + directly. + """ + return self._get_container(thread_id, document_html, "table", 0) + + def get_last_spreadsheet(self, thread_id=None, document_html=None): + """Like `get_first_spreadsheet`, but the last spreadsheet.""" + return self._get_container(thread_id, document_html, "table", -1) + + def get_last_row_item_id(self, spreadsheet_tree): + """Returns the last row in the given spreadsheet `ElementTree`.""" + items = list(spreadsheet_tree.iter("tr")) + return items[-1].attrib["id"] if items else None + + def get_first_row_item_id(self, spreadsheet_tree): + """Returns the last row in the given spreadsheet `ElementTree`.""" + items = list(spreadsheet_tree.iter("tr")) + return items[1].attrib["id"] if items else None + + def get_row_items(self, row_tree): + """Returns the text of items in the given row `ElementTree`.""" + return [(list(x.itertext()) or [None])[0] for x in row_tree] + + def get_row_ids(self, row_tree): + """Returns the ids of items in the given row `ElementTree`.""" + return [x.attrib["id"] for x in row_tree] + + def get_spreadsheet_header_items(self, spreadsheet_tree): + """Returns the header row in the given spreadsheet `ElementTree`.""" + return self.get_row_items(list(spreadsheet_tree.iterfind(".//tr"))[0]) + + def get_index_of_header(self, header_items, header, default=0): + """Find the index of the given header in the items""" + if header: + header = str(header) + lower_headers = [str(h).lower() for h in header_items] + if header in header_items: + return header_items.index(header) + elif header.lower() in lower_headers: + return lower_headers.index(header.lower()) + elif header.isdigit(): + return int(header) + elif len(header) == 1: + char = ord(header.upper()) + if ord('A') < char < ord('Z'): + return char - ord('A') + 1 + else: + pass + return default + + def find_row_from_header(self, spreadsheet_tree, header, value): + """Find the row in the given spreadsheet `ElementTree` where header is + value. + """ + headers = self.get_spreadsheet_header_items(spreadsheet_tree) + index = self.get_index_of_header(headers, header) + for row in spreadsheet_tree.iterfind(".//tr"): + if len(row) <= index: + continue + cell = row[index] + if cell.tag != "td": + continue + if list(cell.itertext())[0].lower() == value.lower(): + return row + + def parse_spreadsheet_contents(self, spreadsheet_tree): + """Returns a python-friendly representation of the given spreadsheet + `ElementTree` + """ + import collections + spreadsheet = { + "id": spreadsheet_tree.attrib.get("id"), + "headers": self.get_spreadsheet_header_items(spreadsheet_tree), + "rows": [], + } + for row in spreadsheet_tree.iterfind(".//tr"): + value = { + "id": row.attrib.get("id"), + "cells": collections.OrderedDict(), + } + for i, cell in enumerate(row): + if cell.tag != "td": + continue + data = { + "id": cell.attrib.get("id"), + } + images = list(cell.iter("img")) + if images: + data["content"] = images[0].attrib.get("src") + else: + data["content"] = list(cell.itertext())[0].replace( + u"\u200b", "") + style = cell.attrib.get("style") + if style and "background-color:#" in style: + sharp = style.find("#") + data["color"] = style[sharp + 1:sharp + 7] + value["cells"][spreadsheet["headers"][i]] = data + if len(value["cells"]): + spreadsheet["rows"].append(value) + return spreadsheet + + def parse_document_html(self, document_html): + """Returns an `ElementTree` for the given Quip document HTML""" + document_xml = "" + document_html + "" + return xml.etree.cElementTree.fromstring(document_xml.encode("utf-8")) + + def parse_micros(self, usec): + """Returns a `datetime` for the given microsecond string""" + return datetime.datetime.utcfromtimestamp(usec / 1000000.0) + + def get_blob(self, thread_id, blob_id): + """Returns a file-like object with the contents of the given blob from + the given thread. + + The object is described in detail here: + https://docs.python.org/2/library/urllib2.html#urllib2.urlopen + """ + request = Request( + url=self._url("blob/%s/%s" % (thread_id, blob_id))) + if self.access_token: + request.add_header("Authorization", "Bearer " + self.access_token) + try: + return urlopen(request, timeout=self.request_timeout) + except HTTPError as error: + try: + # Extract the developer-friendly error message from the response + message = json.loads(error.read().decode())["error_description"] + except Exception: + raise error + raise QuipError(error.code, message, error) + + def put_blob(self, thread_id, blob, name=None): + """Uploads an image or other blob to the given Quip thread. Returns an + ID that can be used to add the image to the document of the thread. + + blob can be any file-like object. Requires the 'requests' module. + """ + import requests + url = "blob/" + thread_id + headers = None + if self.access_token: + headers = {"Authorization": "Bearer " + self.access_token} + if name: + blob = (name, blob) + try: + response = requests.request( + "post", self._url(url), timeout=self.request_timeout, + files={"blob": blob}, headers=headers) + response.raise_for_status() + return response.json() + except requests.RequestException as error: + try: + # Extract the developer-friendly error message from the response + message = error.response.json()["error_description"] + except Exception: + raise error + raise QuipError(error.response.status_code, message, error) + + def new_websocket(self, **kwargs): + """Gets a websocket URL to connect to. + """ + return self._fetch_json("websockets/new", **kwargs) + + def _fetch_json(self, path, post_data=None, **args): + request = Request(url=self._url(path, **args)) + if post_data: + post_data = dict((k, v) for k, v in post_data.items() + if v or isinstance(v, int)) + request_data = urlencode(self._clean(**post_data)) + if PY3: + request.data = request_data.encode() + else: + request.data = request_data + + if self.access_token: + request.add_header("Authorization", "Bearer " + self.access_token) + try: + return json.loads( + urlopen( + request, timeout=self.request_timeout).read().decode()) + except HTTPError as error: + try: + # Extract the developer-friendly error message from the response + message = json.loads(error.read().decode())["error_description"] + except Exception: + raise error + raise QuipError(error.code, message, error) + + def _clean(self, **args): + return dict((k, str(v) if isinstance(v, int) else v.encode("utf-8")) + for k, v in args.items() if v or isinstance(v, int)) + + def _url(self, path, **args): + url = self.base_url + "/1/" + path + args = self._clean(**args) + if args: + url += "?" + urlencode(args) + return url diff --git a/commands/apps/quip/quip_config.chezmoi.template.ini b/commands/apps/quip/quip_config.chezmoi.template.ini new file mode 100644 index 000000000..851977cc4 --- /dev/null +++ b/commands/apps/quip/quip_config.chezmoi.template.ini @@ -0,0 +1,158 @@ +# Template example for creating quip_config.ini with chezmoi +# (https://www.chezmoi.io/) using values stored in KeePassXC. I use this +# template to generate my personal configuration file. I keep in KeepassXC two +# items: +# +# - "Quip personal token", which contains my API token in the Password field, +# and has two custom attributes named "BaseURL" and "APIURL", which are used +# to populate the corresponding fields below. +# +# - "Quip documents", which contains custom attributes for the FolderID, +# TemplateID and DocID values for all sections. For example, the FolderID for +# "Note" items is called "Note.FolderID". +# +# You need to configure chezmoi to know where to find your KeePassXC database, +# and your Keyfile if you use one. My config file ~/.config/chezmoi/chezmoi.toml +# looks like this: +# +# [keepassxc] +# database = "/path/to/my/KeePassXC/Passwords.kdbx" +# args = ["-k", "/path/to/my/KeePassXC/keyfile.keyx"] +# +# If you don't use chezmoi for all your dotfiles, you can generate a single file +# by running chezmoi like this: +# +# chezmoi execute-template -o quip_config.ini < quip_config.chezmoi.template.ini +# +# Note: if you use 1Password, you can also use chezmoi, or use the native `op +# inject` (https://developer.1password.com/docs/cli/reference/commands/inject/) + + +# Values in the DEFAULT section are inherited for all the other sections, but +# you can override any of them in the individual sections below. +[DEFAULT] +### +### Authentication +### + +# Quip API token. Get one at https://quip.com/api/personal-token +APIToken = {{ (keepassxc "Quip personal token").Password }} + +### +### Behaviors for document creation +### + +# Prepend date to the title of new documents? +PrependDate = yes +# Whether to automatically open the created documents +OpenDoc = yes +# Whether to copy the URL of newly created documents to the clipboard +CopyURLToClipboard = no +# Whether to open documents in the app or in the browser +UseQuipApp = yes +# Default values for Raycast command metadata +CommandTitle = New ${section} in Quip +CommandArgPlaceholder = ${section} title +# You can set a default FolderID here. If not set, new documents are placed +# in your top-level "Private" Quip folder +# FolderID = +# Default action, can be "create" or "add" +Action = create +# Produce a notification at the end? +Notify = no +# Whether the command should accept an empty argument and in that case just open +# the document (this applies only to 'add' actions) +OpenDocIfEmptyArg = no + +### +### URLs. Defaults should be OK for most users. +### + +# Quip base URL to use +BaseURL = {{ keepassxcAttribute "Quip personal token" "BaseURL" }} +# Quip API URL to use +APIURL = {{ keepassxcAttribute "Quip personal token" "APIURL" }} + +### +### Each section below defines a new "document type", which can be stored in +### different folders and override any of the defaults. +### +### The section names are arbitrary, and you should define at least the FolderID +### attribute for each of them (but it's not mandatory) +### The document/folder IDs can be obtained by using the "Copy Link" menu +### option in Quip. The ID is the part that comes right after the hostname +### in the URL. For example: https://quip.com/A7RmAB1oNeuL +### + +### Below custom sections for different document types + +## First the 'create' actions, which create new documents in different folders, +## with different templates. + +[doc] +# Document without a folder, created in the default location. + +[Note] +# Quip Folder ID for general notes. +FolderID = {{ keepassxcAttribute "Quip documents" "Note.FolderID" }} + +[Meeting notes] +# Quip Folder ID for meeting notes. +FolderID = {{ keepassxcAttribute "Quip documents" "Meetings.FolderID" }} +# Meeting notes template +TemplateID = {{ keepassxcAttribute "Quip documents" "Meetings.TemplateID" }} +# Some custom metadata for the Raycast command +CommandArgPlaceholder = Meeting title + +[Project page] +# Quip Folder ID for project pages +FolderID = {{ keepassxcAttribute "Quip documents" "Project.FolderID" }} +# Project notes template +TemplateID = {{ keepassxcAttribute "Quip documents" "Project.TemplateID" }} +# Project don't get the date prepended +PrependDate = no +# Metadata for the Raycast command +CommandArgPlaceholder = Project name + +[Training/course notes] +FolderID = {{ keepassxcAttribute "Quip documents" "Training.FolderID" }} + +## Now the 'add' actions, which add text to an existing document. These sections +## will not work until you add the appropriate 'DocID' parameter. + +# Command to add todo items to an existing Quip document. +[TODO] +action = add +# The ID of the document where the text should be added +DocID = {{ keepassxcAttribute "Quip documents" "TODO.DocID" }} +# Prepend the date to the text? +PrependDate = no +# Produce a notification and don't open the doc. But if an empty argument is +# given, open the document. +Notify = yes +OpenDoc = no +OpenDocIfEmptyArg = yes +# Add the text as a list item? Value can be "todo", "bullet" or "num". Anything +# else adds is as regular text. Note that the text you add can contain Markdown +# markup. +ListType = todo + +# Command to add items to a "brag document" (a doc where I keep a record of my +# accomplishments). +[BRAG item] +action = add +# The ID of the document where the text should be added +DocID = {{ keepassxcAttribute "Quip documents" "BRAG.DocID" }} +# Prepend the date to the text? +PrependDate = yes +# Produce a notification and don't open the doc. But if an empty argument is +# given, open the document. +Notify = yes +OpenDoc = no +OpenDocIfEmptyArg = yes +# Add the text as a list item? Value can be "todo", "bullet" or "num". Anything +# else adds is as regular text. Note that the text you add can contain Markdown +# markup. +ListType = none +# Metadata for the Raycast command +CommandArgPlaceholder = BRAG text diff --git a/commands/apps/quip/quip_config.template.ini b/commands/apps/quip/quip_config.template.ini new file mode 100644 index 000000000..6183ba753 --- /dev/null +++ b/commands/apps/quip/quip_config.template.ini @@ -0,0 +1,135 @@ +# You must configure at least the APIToken in the DEFAULT section. +# +# Please note: Do NOT quote values in this file. + +# Values in the DEFAULT section are inherited for all the other sections, but +# you can override any of them in the individual sections below. +[DEFAULT] +### +### Authentication +### + +# Quip API token. Get one at https://quip.com/api/personal-token +APIToken = + +### +### Behaviors for document creation +### + +# Prepend date to the title of new documents? +PrependDate = yes +# Whether to automatically open the created documents +OpenDoc = yes +# Whether to copy the URL of newly created documents to the clipboard +CopyURLToClipboard = no +# Whether to open documents in the app or in the browser +UseQuipApp = yes +# Default values for Raycast command metadata +CommandTitle = New ${section} in Quip +CommandArgPlaceholder = ${section} title +# You can set a default FolderID here. If not set, new documents are placed +# in your top-level "Private" Quip folder +# FolderID = +# Default action, can be "create" or "add" +Action = create +# Produce a notification at the end? +Notify = no +# Whether the command should accept an empty argument and in that case just open +# the document (this applies only to 'add' actions) +OpenDocIfEmptyArg = no + +### +### URLs. Defaults should be OK for most users. +### + +# Quip base URL to use +BaseURL = https://quip.com/ +# Quip API URL to use +APIURL = https://platform.quip.com + +### +### Each section below defines a new "document type", which can be stored in +### different folders and override any of the defaults. +### +### The section names are arbitrary, and you should define at least the FolderID +### attribute for each of them (but it's not mandatory) +### The document/folder IDs can be obtained by using the "Copy Link" menu +### option in Quip. The ID is the part that comes right after the hostname +### in the URL. For example: https://quip.com/A7RmAB1oNeuL +### + +### Below custom sections for different document types + +## First the 'create' actions, which create new documents in different folders, +## with different templates. + +[doc] +# Document without a folder, created in the default location. + +[Note] +# Quip Folder ID for general notes. +# FolderID = + +[Meeting notes] +# Quip Folder ID for meeting notes. +# FolderID = +# Meeting notes template, if you want to use one +# TemplateID = +# Some custom metadata for the Raycast command +CommandArgPlaceholder = Meeting title + +[Project page] +# Quip Folder ID for project pages +# FolderID = +# Project notes template +# TemplateID = +# Project don't get the date prepended +PrependDate = no +# Metadata for the Raycast command +CommandArgPlaceholder = Project name + +[Training/course notes] +# Quip folder ID for storing course notes +# FolderID = + +## Now the 'add' actions, which add text to an existing document. These sections +## will not work until you add the appropriate 'DocID' parameter. + +# Command to add todo items to an existing Quip document. +[TODO] +action = add +# The ID of the document where the text should be added +# THIS PARAMETER IS MANDATORY for 'add' actions. +# DocID = +# Prepend the date to the text? +PrependDate = no +# Produce a notification and don't open the doc. But if an empty argument is +# given, open the document. +Notify = yes +OpenDoc = no +OpenDocIfEmptyArg = yes +# Add the text as a list item? Value can be "todo", "bullet" or "num". Anything +# else adds is as regular text. Note that the text you add can contain Markdown +# markup. +ListType = todo + +# Command to add items to a "brag document" (a doc where I keep a record of my +# accomplishments). +[BRAG item] +action = add +# The ID of the document where the text should be added +# THIS PARAMETER IS MANDATORY for 'add' actions. +# DocID = +# Prepend the date to the text? +PrependDate = yes +# Produce a notification and don't open the doc. But if an empty argument is +# given, open the document. +Notify = yes +OpenDoc = no +OpenDocIfEmptyArg = yes +# Add the text as a list item? Value can be "todo", "bullet" or "num". Anything +# else adds is as regular text. Note that the text you add can contain Markdown +# markup. +ListType = none +# Metadata for the Raycast command +CommandArgPlaceholder = BRAG text diff --git a/commands/apps/quip/quip_utils.py b/commands/apps/quip/quip_utils.py new file mode 100755 index 000000000..fb7b35d95 --- /dev/null +++ b/commands/apps/quip/quip_utils.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python3 +# +# Utility library for interacting with the Quip API and for other common +# functions. +# +# Diego Zamboni + +import quip +import os +import sys +import subprocess +import re +from datetime import datetime +from configparser import ConfigParser, ExtendedInterpolation + +config = None +config_file = "quip_config.ini" + +# Custom config interpolation class that allows interpolating the current +# section name. +# Code from https://stackoverflow.com/a/47360765 +class ExtendedSectionInterpolation(ExtendedInterpolation): + def before_get(self, parser, section, option, value, defaults): + defaults.maps.append({'section': section}) + return super().before_get(parser, section, option, value, defaults) + +# Print error message and exit with a non-zero code. +def fail(message): + red = "\u001b[31m" + print(red + message) + sys.exit(1) + +# Produce a macOS notification message +def notify(title, text): + CMD = ''' + on run argv + display notification (item 2 of argv) with title (item 1 of argv) + end run + ''' + subprocess.call(['osascript', '-e', CMD, title, text]) + +# Read configuration file into global config variable. +def readConfig(filename=config_file): + global config + config = ConfigParser(interpolation=ExtendedSectionInterpolation()) + files_read = config.read(filename) + if filename not in files_read: + fail(f"Could not read config file '{filename}'.") + +# Check whether the APIToken field has a non-empty value and exit if it doesn't. +# Does not verify that it's valid. +def checkAPIToken(doc_type): + if config[doc_type].get('APIToken', "") == "": + fail(f"Error: Please configure APIToken in {config_file}.") + +# Put a string in the macOS clipboard using the pbcopy command. +# +# Function originally from +# https://gist.github.com/XuankangLin/7ec82f80a0044a52330720244de2d15a modified +# to automatically call encode('utf_8') on its argument, with the assumption +# that it's a string. +def setClipboardData(text): + p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE) + p.stdin.write(text.encode('utf_8')) + p.stdin.close() + retcode = p.wait() + +def quip_open(thing, doc_type='DEFAULT'): + # thing can be a DocID or a URL. DocIDs are 11 or 12 characters long + if len(thing) in [11,12]: + url = config[doc_type].get('BaseURL', 'https://quip.com/') + thing + else: + url = thing + app_args=[] + if config[doc_type].getboolean('UseQuipApp'): + app_args=["-a", "Quip"] + try: + open_args=["/usr/bin/open", *app_args, url] + # We use Popen to put the open process in the background. + pid = subprocess.Popen(open_args).pid + except OSError as e: + fail(f"Execution failed: {e}") + +# Normalize a string by lowercasing and replacing whitespace with dashes. +def normalize(s): + return re.sub('\W+', '-', s.lower()) + +# Create a new document in Quip. +# +# The document is created according to the configuration associated with the +# given doc_type. This indicates parameters such as the APIToken to use, whether +# to prepend the current date to the text, and the folder in which the document +# should be stored. See quip_config.ini for the full list of available +# configuration parameters. +# +def quip_new_doc(doc_type, text): + readConfig() + if not config.has_section(doc_type): + # Map section names to their "normalized" variants used in the filenames + denormalized_types = {} + for t in config.sections(): + denormalized_types[normalize(t)] = t + if doc_type in denormalized_types: + doc_type = denormalized_types[doc_type] + else: + fail(f"Error: Quip document type '{doc_type}' is not defined in {config_file}.") + checkAPIToken(doc_type) + + # Prepend date to the text if needed + if text and config[doc_type].getboolean('PrependDate'): + dateformat = config[doc_type].get('DateFormat', "%Y-%m-%d") + text = datetime.now().strftime(dateformat) + " " + text + + # What to do? + action = config[doc_type].get('action', 'create') + # Notification message to produce at the end + message_title = "" + message_body = "" + + try: + client = quip.QuipClient(access_token=config[doc_type]['APIToken'], base_url=config[doc_type]['APIURL']) + + if action == 'create': + # print(f"Creating new note '{text}' in folder {folder_id}...") + folders = [] + folderID = config[doc_type].get('FolderID',None) + if folderID: + folders = [folderID] + templateID = config[doc_type].get('TemplateID', None) + # If TemplateID is given, use it to create the doc, otherwise create an empty one + if templateID: + result = client.copy_document(templateID, folder_ids=[folderID], title=text) + else: + result = client.new_document(content=text, format="markdown", member_ids=folders) + message_title = f"New {doc_type} created" + message_body = message_title + elif action == 'add': + listmarkup = { "todo": "[] ", "bullet": "- ", "num": "1. " } + listtype = config[doc_type].get('ListType', 'none') + docid = config[doc_type].get('DocID', None) + if not docid: + fail(f"Error: no DocID provided, needed for 'add' action.") + if text: + if listtype in listmarkup: + text = listmarkup[listtype] + text + result = client.edit_document(docid, text, format='markdown', section_id='') + message_title = f"New {doc_type} added to document" + message_body = message_title + else: + if config[doc_type].getboolean('OpenDocIfEmptyArg'): + message_title = f"Opening {doc_type} document" + quip_open(docid, doc_type) + sys.exit(0) + else: + fail(f"Error: Invalid action value '{action}', should be 'create' or 'add'.") + + except Exception as e: + if e.code == 401: + fail(f"Please configure/verify your Quip API token in {config_file}") + elif e.code == 400: + fail(f"Please configure/verify folder ID for [{doc_type}] in {config_file}") + else: + fail(f"Received a Quip error:", e, file=sys.stderr) + + if result: + url = result['thread']['link'] + if url: + if config[doc_type].getboolean('CopyURLToClipboard'): + setClipboardData(url) + message_body = message_body + f", URL copied to clipboard" + + if config[doc_type].getboolean('OpenDoc'): + message_body = message_body + f", opening {url}" + quip_open(url, doc_type) + message_body = message_body + "." + print(message_body) + if config[doc_type].getboolean('Notify'): + notify(message_title, message_body) + else: + fail(f"Something went wrong, could not get the document URL.") + else: + fail(f"Something went wrong, could not create document.") diff --git a/commands/apps/quip/set-up-quip-commands.py b/commands/apps/quip/set-up-quip-commands.py new file mode 100755 index 000000000..089ecf438 --- /dev/null +++ b/commands/apps/quip/set-up-quip-commands.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set up Quip commands +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon /Applications/Quip.app/Contents/Resources/AppIcon.icns +# @raycast.packageName Quip utilities +# @raycast.needsConfirmation true + +# Documentation: +# @raycast.description Create script commands for creating Quip documents, based on the configuration in quip_config.ini. +# @raycast.author diego_zamboni +# @raycast.authorURL https://raycast.com/diego_zamboni + +import quip_utils +import os +import glob + +# Read template +cmd_template="quip-new.template.py" +with open(cmd_template, 'r') as file: + template = file.read() + +blue = "\u001b[34m" +yellow = "\u001b[33m" +green = "\u001b[32m" +red = "\u001b[31m" + +print(f"Reading quip_config.ini...") +quip_utils.readConfig() +doc_types = quip_utils.config.sections() +quip_utils.checkAPIToken('DEFAULT') +print(blue + f"The configuration file contains the following document types: {' '.join(doc_types)}") + +print(yellow + f"Removing old scripts before creating new ones...") +for file in glob.glob("quip-new-*.py"): + print(yellow + f" {file}") + os.remove(file) + +for type in doc_types: + new_script = template + normalized_type = quip_utils.normalize(type) + filename = f"quip-new-{normalized_type}.py" + print(blue + f"Creating script for '{type}': ", end="") + # Replace config values in template + template_values = {} + for k,v in quip_utils.config[type].items(): + # If it's a boolean value, convert it to a JSON-style boolean (i.e. "true" or "false", all lowercase) + if v in quip_utils.config.BOOLEAN_STATES.keys(): + v = str(quip_utils.config[type].getboolean(k)).lower() + template_k = "{{" + k + "}}" + new_script = new_script.replace(template_k, v) + with open(filename, 'w') as file: + file.write(new_script) + print(f"{green}{filename}") diff --git a/commands/apps/raycast/celebrate.sh b/commands/apps/raycast/celebrate.sh new file mode 100755 index 000000000..672c88528 --- /dev/null +++ b/commands/apps/raycast/celebrate.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Celebrate +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🎉 +# @raycast.argument1 { "type": "text", "placeholder": "Times (Default: 1)", "optional": true } +# @raycast.argument2 { "type": "text", "placeholder": "Interval (Default: 0)", "optional": true } +# @raycast.packageName Raycast + +# Documentation: +# @raycast.description Set Confetti to run for a number of times and during intervals +# @raycast.author Fatpandac +# @raycast.authorURL https://github.com/Fatpandac + +times=1 +interval=0 + +if [ -n "$1" ]; then + times=$1 +fi +if [ -n "$2" ]; then + interval=$(($2)) +fi + +for i in $(seq 1 $times); do + open raycast://confetti + echo "Celebrate 🎉" + sleep $interval +done diff --git a/commands/apps/reminders/images/reminders.png b/commands/apps/reminders/images/reminders.png new file mode 100644 index 000000000..24462e08e Binary files /dev/null and b/commands/apps/reminders/images/reminders.png differ diff --git a/commands/apps/reminders/reminders-create-reminder.sh b/commands/apps/reminders/reminders-create-reminder.sh new file mode 100755 index 000000000..c31fc6ff1 --- /dev/null +++ b/commands/apps/reminders/reminders-create-reminder.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `Quick reminder for Raycast` installed: +https://www.icloud.com/shortcuts/62a0cedf7bce488eb0bde4b8a3a8b0de + +# @raycast.title Add Reminder +# @raycast.author Andrei Nedelcu +# @raycast.authorURL https://dinosaurgame.net +# @raycast.description Add a new reminder. +# +# @raycast.icon images/reminders.png +# +# @raycast.mode silent +# @raycast.packageName Create Reminder +# @raycast.schemaVersion 1 +# @raycast.argument1 { "type": "text", "placeholder": "What", "percentEncoded": false} +# @raycast.argument2 { "type": "text", "placeholder": "When", "optional": true, "percentEncoded": false} + +if test -z "$2" +then + echo "${1}" | shortcuts run "Quick reminder for Raycast" +else + echo "${1}, ${2}" | shortcuts run "Quick reminder for Raycast" +fi + +echo "Reminder created!" \ No newline at end of file diff --git a/commands/apps/safari/safari-bing-edge-user-agent.applescript b/commands/apps/safari/safari-bing-edge-user-agent.applescript new file mode 100755 index 000000000..75f74c2d6 --- /dev/null +++ b/commands/apps/safari/safari-bing-edge-user-agent.applescript @@ -0,0 +1,27 @@ +#!/usr/bin/osascript +# Check "Safari > Advanced > Develop" first. +# This script works on the English Safari menu. + +# @raycast.title Open Bing with Edge User-Agent +# @raycast.description Open Bing in Safari with Edge User-Agent +# @raycast.author smxl +# @raycast.authorURL https://github.com/smxl + +# @raycast.icon images/safari.png +# @raycast.mode silent +# @raycast.packageName Safari +# @raycast.schemaVersion 1 + +tell application "Safari" + activate + set theURL to "https://www.bing.com" + set newTab to make new tab at end of tabs of window 1 + set current tab of window 1 to newTab + set theUserAgent to "Microsoft Edge ¡ª MacOS" + set URL of newTab to theURL + tell application "System Events" + tell process "Safari" + click menu item theUserAgent of menu "User Agent" of menu item "User Agent" of menu "Develop" of menu bar 1 + end tell + end tell +end tell \ No newline at end of file diff --git a/commands/apps/safari/safari-download-url.applescript b/commands/apps/safari/safari-download-url.applescript new file mode 100755 index 000000000..8fd9a716a --- /dev/null +++ b/commands/apps/safari/safari-download-url.applescript @@ -0,0 +1,28 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Download Current URL +# @raycast.mode silent + +# Optional parameters: +# @raycast.packageName Safari +# @raycast.icon images/safari.png + +# @Documentation: +# @raycast.author Michael Bianco +# @raycast.authorURL https://github.com/iloveitaly +# @raycast.description Download the currently active tab's URL. + +tell application "Safari" + activate + set currentTab to current tab of window 1 + set theURL to URL of currentTab +end tell + +-- Simulate pressing Option key and clicking the link +tell application "System Events" + keystroke "l" using {command down} -- Select the address bar (Cmd + L) + delay 0.5 + keystroke return using {option down} -- Press Option + Return to download the file +end tell diff --git a/commands/apps/script-kit/images/kit_logo.png b/commands/apps/script-kit/images/kit_logo.png deleted file mode 100644 index bd843dc98..000000000 Binary files a/commands/apps/script-kit/images/kit_logo.png and /dev/null differ diff --git a/commands/apps/script-kit/import-scripts-from-script-kit.py b/commands/apps/script-kit/import-scripts-from-script-kit.py deleted file mode 100755 index 8e5ed5f4d..000000000 --- a/commands/apps/script-kit/import-scripts-from-script-kit.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python3 - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Import scripts from Script Kit -# @raycast.mode fullOutput - -# Optional parameters: -# @raycast.icon ./images/kit_logo.png -# @raycast.packageName Script Kit - -# Documentation: -# @raycast.description Convert all Script Kit scripts to Raycast Script Commands -# @raycast.author Achille Lacoin -# @raycast.authorURL https://github.com/pomdtr - -import json -import os -import string -import sys -import glob - -db_path = os.path.join(os.path.expanduser("~"), ".kit", "db", "scripts.json") -if not os.path.exists(db_path): - print( - "Kit is required! Installation Link -> https://www.scriptkit.com/", - file=sys.stderr, - ) - sys.exit(1) - -with open(db_path) as f: - scripts_db = json.load(f) - -with open("template.txt") as f: - RAYCAST_SCRIPT_TEMPLATE = string.Template(f.read()) - -for file in glob.glob("scripts/*.sh"): - os.remove(file) - -for script in scripts_db["scripts"]: - if script["exclude"]: - print("Skipping {} since it is excluded!".format(script["command"])) - continue - print("Importing {}...".format(script["command"])) - raycast_script_content = RAYCAST_SCRIPT_TEMPLATE.safe_substitute( - { - "description": script["description"], - "title": script["name"], - "author": script["author"], - "command": script["command"] - } - ) - output_path = os.path.join("scripts", script["command"] + ".sh") - with open(output_path, "w") as f: - f.write(raycast_script_content) - -print("\nImported {} scripts.".format(len(scripts_db["scripts"]))) diff --git a/commands/apps/script-kit/scripts/.gitignore b/commands/apps/script-kit/scripts/.gitignore deleted file mode 100644 index d6b7ef32c..000000000 --- a/commands/apps/script-kit/scripts/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/commands/apps/script-kit/template.txt b/commands/apps/script-kit/template.txt deleted file mode 100755 index b04ad4600..000000000 --- a/commands/apps/script-kit/template.txt +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title $title -# @raycast.mode silent - -# Optional parameters: -# @raycast.packageName Script Kit -# @raycast.argument1 { "type": "text", "placeholder": "arg", "optional": true, "percentEncoded": true } -# @raycast.icon ../images/kit_logo.png - -# Documentation: -# @raycast.description $description -# @raycast.author $author - -curl --unix-socket "$HOME/.kit/kit.sock" --header "Content-Type: application/json" \ - --data "{\"script\":\"$command\",\"args\": [\"$1\"]}" \ - "http://localhost" >/dev/null 2>&1 diff --git a/commands/apps/session/images/session.png b/commands/apps/session/images/session.png index 7e67e1f71..894b26a48 100644 Binary files a/commands/apps/session/images/session.png and b/commands/apps/session/images/session.png differ diff --git a/commands/apps/sip/images/sip.png b/commands/apps/sip/images/sip.png index d5c8074d9..35cfdfd2c 100644 Binary files a/commands/apps/sip/images/sip.png and b/commands/apps/sip/images/sip.png differ diff --git a/commands/apps/spotify/images/create.png b/commands/apps/spotify/images/create.png deleted file mode 100644 index e591ec423..000000000 Binary files a/commands/apps/spotify/images/create.png and /dev/null differ diff --git a/commands/apps/spotify/images/logo.png b/commands/apps/spotify/images/logo.png deleted file mode 100644 index a954bdf1a..000000000 Binary files a/commands/apps/spotify/images/logo.png and /dev/null differ diff --git a/commands/apps/stickies/images/stickies.png b/commands/apps/stickies/images/stickies.png new file mode 100644 index 000000000..cd3651bb8 Binary files /dev/null and b/commands/apps/stickies/images/stickies.png differ diff --git a/commands/apps/stickies/new-floating-sticky.applescript b/commands/apps/stickies/new-floating-sticky.applescript new file mode 100755 index 000000000..3f3d2dc21 --- /dev/null +++ b/commands/apps/stickies/new-floating-sticky.applescript @@ -0,0 +1,23 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title New Floating Sticky Note +# @raycast.mode silent +# @raycast.packageName Stickies + +# Optional parameters: +# @raycast.icon images/stickies.png + +# Documentation: +# @raycast.description This script creates a new floating note in the Apple Stickies application +# @raycast.author Annie Ma +# @raycast.authorURL http://www.anniema.co/ + +tell application "Stickies" + activate + tell application "System Events" + keystroke "n" using command down + keystroke "f" using command down & option down + end tell +end tell \ No newline at end of file diff --git a/commands/apps/sublime/open-with-sublime.applescript b/commands/apps/sublime/open-with-sublime.applescript new file mode 100755 index 000000000..5e0715e38 --- /dev/null +++ b/commands/apps/sublime/open-with-sublime.applescript @@ -0,0 +1,29 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open with Sublime +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon https://cdn.worldvectorlogo.com/logos/sublime-text.svg +# @raycast.packageName Sublime + +# Documentation: +# @raycast.author Rock Hu +# @raycast.authorURL https://twitter.com/0xRock +# @raycast.description Open currently focused directory in Sublime + +set targetApp to path to application "Sublime Text" + +tell application "Finder" + set theSelection to selection + if theSelection is {} then + if exists Finder window 1 then + set currentDir to target of Finder window 1 as alias + open currentDir using targetApp + end if + else + open theSelection using targetApp + end if +end tell \ No newline at end of file diff --git a/commands/apps/surfshark/images/surfshark.png b/commands/apps/surfshark/images/surfshark.png index c623ab0aa..e0da67808 100644 Binary files a/commands/apps/surfshark/images/surfshark.png and b/commands/apps/surfshark/images/surfshark.png differ diff --git a/commands/apps/tailscale/images/screenshot.png b/commands/apps/tailscale/images/screenshot.png index 209c2a500..65cdf21fc 100644 Binary files a/commands/apps/tailscale/images/screenshot.png and b/commands/apps/tailscale/images/screenshot.png differ diff --git a/commands/apps/tailscale/images/tailscale-icon.png b/commands/apps/tailscale/images/tailscale-icon.png index 364952118..6e6497c53 100644 Binary files a/commands/apps/tailscale/images/tailscale-icon.png and b/commands/apps/tailscale/images/tailscale-icon.png differ diff --git a/commands/apps/tailscale/images/tailscale-iconDark.png b/commands/apps/tailscale/images/tailscale-iconDark.png index 26078477a..ebaa8bd3f 100644 Binary files a/commands/apps/tailscale/images/tailscale-iconDark.png and b/commands/apps/tailscale/images/tailscale-iconDark.png differ diff --git a/commands/apps/tailscale/tailscale-switch.sh b/commands/apps/tailscale/tailscale-switch.sh index ad40265e9..e174480c8 100755 --- a/commands/apps/tailscale/tailscale-switch.sh +++ b/commands/apps/tailscale/tailscale-switch.sh @@ -15,9 +15,15 @@ # @Documentation: # @raycast.description Switches Tailscale networks + +# Original author # @raycast.author Ross Zurowski # @raycast.authorURL https://github.com/rosszurowski +# Contributor +# @raycast.author Daniel Schoemer +# @raycast.authorURL https://github.com/quatauta + ts="" if command -v tailscale &> /dev/null; then @@ -29,12 +35,11 @@ else exit 1 fi -$ts logout -$ts up +"${ts}" switch --list | # List all Tailscale accounts " " +grep -vF -e 'ID' -e '*' | # Omit the header line and the current account marked with "*" +awk '{ print $1 }' | # Print only the account ID of not-connected accounts +head -n1 | # Print only the first not-connected account +xargs -r -n1 "${ts}" switch # Switch to the selected account -if command -v jq &> /dev/null; then - account=$($ts status --json | jq -r '.User[(.Self.UserID | tostring)].LoginName') - echo "Connected as $account" -else - echo "Connected" -fi +tailnet="$("${ts}" switch --list | awk '/\*/ { print $2 }')" +echo "Switched to ${tailnet}" diff --git a/commands/apps/terminal-translate/translate.sh b/commands/apps/terminal-translate/translate.sh new file mode 100755 index 000000000..328f9ed0b --- /dev/null +++ b/commands/apps/terminal-translate/translate.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: requires translate-shell +# Install with Homebrew: `npm install terminal-translate -g` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Translate +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon 📖 +# @raycast.argument1 { "type": "text", "placeholder": "Word or Sentence" } +# @raycast.packageName Terminal Translate + +# Documentation: +# @raycast.description Translate word or sentence. +# @raycast.author Fatpandac +# @raycast.authorURL https://github.com/Fatpandac + +if ! command -v tl &> /dev/null; then + echo "trans command is required (https://github.com/ShanaMaid/terminal-translate)."; + exit 1; +fi + +tl $1 diff --git a/commands/apps/things/images/screenshot.png b/commands/apps/things/images/screenshot.png index 20bc1a8fa..28898bc9b 100644 Binary files a/commands/apps/things/images/screenshot.png and b/commands/apps/things/images/screenshot.png differ diff --git a/commands/apps/things/images/things.png b/commands/apps/things/images/things.png index 12b3611a8..4f90e1e10 100644 Binary files a/commands/apps/things/images/things.png and b/commands/apps/things/images/things.png differ diff --git a/commands/apps/timing/images/timing-logo.png b/commands/apps/timing/images/timing-logo.png new file mode 100644 index 000000000..994f821bd Binary files /dev/null and b/commands/apps/timing/images/timing-logo.png differ diff --git a/commands/apps/timing/timing-start-timer.js b/commands/apps/timing/timing-start-timer.js new file mode 100755 index 000000000..650d72cba --- /dev/null +++ b/commands/apps/timing/timing-start-timer.js @@ -0,0 +1,70 @@ +#!/usr/bin/osascript -l JavaScript + +// Note: Timing.app is required with an Expert or Connect subscription +// Learn more and install: https://timingapp.com + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Start Timer +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon images/timing-logo.png +// @raycast.argument1 { "type": "text", "placeholder": "Project", "optional": true } +// @raycast.argument2 { "type": "text", "placeholder": "Title", "optional": true } +// @raycast.argument3 { "type": "text", "placeholder": "Duration", "optional": true } +// @raycast.packageName Timing + +// Documentation: +// @raycast.description Start a timer +// @raycast.author Landen Danyluk +// @raycast.authorURL https://github.com/landendanyluk + +function run(argv) { + const timing = Application('TimingHelper'); + + // throw if AppleScript support is not enabled + if (!timing.scriptingSupportAvailable()) { + console.log('Scripting support requires an Expert or Connect subscription'); + throw new Error(); + } + + // throw if both project and title are empty + if (!(argv[0] || argv[1])) { + console.log("Please enter a project name or title"); + throw new Error(); + } + + let project; + if (argv[0] !== "") { + // check if project exists + const projects = timing.projects.whose({ name: argv[0] }); + if (!projects.length) { + console.log("Project does not exist"); + throw new Error(); + } else { + // if there's more than one project with the same name, choose the first one in the list + project = projects[0]; + } + } + const withTitle = argv[1]; + const forAbout = Number(argv[2]) * 60; + if (isNaN(forAbout)) { + console.log("Please enter a valid duration"); + throw new Error(); + } + + // JXA will complain if a key is present but undefined, so we have to add them like this + const options = {}; + if (project) { + options.project = project; + } + if (withTitle) { + options.withTitle = withTitle; + } + if (forAbout) { + options.forAbout = forAbout; + } + + timing.startTimer(options); +} diff --git a/commands/apps/timing/timing-stop-timer.js b/commands/apps/timing/timing-stop-timer.js new file mode 100755 index 000000000..f7047370b --- /dev/null +++ b/commands/apps/timing/timing-stop-timer.js @@ -0,0 +1,30 @@ +#!/usr/bin/osascript -l JavaScript + +// Note: Timing.app is required with an Expert or Connect subscription +// Learn more and install: https://timingapp.com + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Stop Timer +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon images/timing-logo.png +// @raycast.packageName Timing + +// Documentation: +// @raycast.description Stop the active timer +// @raycast.author Landen Danyluk +// @raycast.authorURL https://github.com/landendanyluk + +function run() { + const timing = Application('TimingHelper'); + + // throw if AppleScript support is not enabled + if (!timing.scriptingSupportAvailable()) { + console.log('Scripting support requires an Expert or Connect subscription'); + throw new Error(); + } + + timing.stopCurrentTimer({ notification: true }); +} diff --git a/commands/apps/todoist/create-task.template.sh b/commands/apps/todoist/create-task.template.sh index a54b2e74a..ec44c264c 100755 --- a/commands/apps/todoist/create-task.template.sh +++ b/commands/apps/todoist/create-task.template.sh @@ -1,24 +1,23 @@ #!/bin/bash # Required parameters: -# @raycast.author Faris Aziz -# @raycast.authorURL https://github.com/farisaziz12 # @raycast.schemaVersion 1 # @raycast.title Create Task # @raycast.mode silent -# @raycast.packageName Todoist -# @raycast.description Creates Todoist task -# @raycast.needsConfirmation false -# @raycast.argument1 { "type": "text", "placeholder": "Buy Milk", "optional": false, } -# @raycast.argument2 { "type": "text", "placeholder": "Due (Defaults to Tomorrow)", "optional": true, } - # Optional parameters: # @raycast.icon images/todoist-logo.png +# @raycast.packageName Todoist +# @raycast.argument1 { "type": "text", "placeholder": "Call Mom Tomorrow at 5" } + +# Documentation: +# @raycast.description Create Task +# @raycast.author Faris Aziz +# @raycast.authorURL https://github.com/farisaziz12 # Get your API Token from: https://todoist.com/prefs/integrations -API_TOKEN= +API_TOKEN="APITOKENHERE" if [ -z "$API_TOKEN" ]; then echo "Todoist API token is missing."; @@ -26,16 +25,11 @@ if [ -z "$API_TOKEN" ]; then fi TASK="$1" -DUE="Tomorrow" - -if [[ $2 != "" ]]; then - DUE=$2 -fi if [[ $TASK != "" ]]; then - curl -s "https://api.todoist.com/rest/v1/tasks" \ + curl "https://api.todoist.com/rest/v2/tasks" \ -X POST \ - --data '{"content": "'"$TASK"'", "due_string": "'"$DUE"'"}' \ + --data '{"content": "'"$TASK"'"}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_TOKEN" diff --git a/commands/apps/todoist/images/todoist-logo.png b/commands/apps/todoist/images/todoist-logo.png index fbbb63239..77058d6e3 100644 Binary files a/commands/apps/todoist/images/todoist-logo.png and b/commands/apps/todoist/images/todoist-logo.png differ diff --git a/commands/apps/tunnelblick/images/tunnelblick.png b/commands/apps/tunnelblick/images/tunnelblick.png index db23cc0ca..e4b99e210 100644 Binary files a/commands/apps/tunnelblick/images/tunnelblick.png and b/commands/apps/tunnelblick/images/tunnelblick.png differ diff --git a/commands/apps/warp/images/warp.png b/commands/apps/warp/images/warp.png new file mode 100644 index 000000000..5ad45335b Binary files /dev/null and b/commands/apps/warp/images/warp.png differ diff --git a/commands/apps/warp/warp-reauth.sh b/commands/apps/warp/warp-reauth.sh new file mode 100755 index 000000000..dc449114d --- /dev/null +++ b/commands/apps/warp/warp-reauth.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Dependency: Cloudflare WARP https://developers.cloudflare.com/warp-client/setting-up/macOS +# Note: Cloudflare WARP must be installed, but CLI works properly only if GUI-client is not running + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Reauthenticate +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/warp.png + +# @Documentation: +# @raycast.packageName WARP +# @raycast.description Force WARP reauthentication +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://github.com/danirukun + + +if ! command -v warp-cli &> /dev/null; then + echo "WARP is required (https://developers.cloudflare.com/warp-client/setting-up/macOS)"; + exit 1; +fi + +warp-cli access-reauth +echo "Opening WARP authentication page" diff --git a/commands/apps/warp/warp-start.sh b/commands/apps/warp/warp-start.sh new file mode 100755 index 000000000..482a9733b --- /dev/null +++ b/commands/apps/warp/warp-start.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Dependency: Cloudflare WARP https://developers.cloudflare.com/warp-client/setting-up/macOS +# Note: Cloudflare WARP must be installed, but CLI works properly only if GUI-client is not running + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Connect +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/warp.png + +# @Documentation: +# @raycast.packageName WARP +# @raycast.description Create a connection to WARP +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + +if ! command -v warp-cli &> /dev/null; then + echo "WARP is required (https://developers.cloudflare.com/warp-client/setting-up/macOS)"; + exit 1; +fi + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + warp-cli status | grep Status | grep -qv Connected +} + +function poll_until_connected () { + (( loops=0 )) + (( max_loops=200 )) # 200 * 0.1 is 20 seconds. Bash doesn't support floats + + while isnt_connected; do + sleep 0.1 # can't use a variable here, bash doesn't have floats + (( loops=loops+1 )) + [ "$loops" -gt "$max_loops" ] && break + done + + [ "$loops" -le "$max_loops" ] +} + +if isnt_connected; then + warp-cli connect + if poll_until_connected; then + echo "Connected to WARP" + else + echo "Couldn't connect to WARP" + warp-cli disconnect + exit 1 + fi +else + echo "Already connected to WARP" + exit 1 +fi + + diff --git a/commands/apps/warp/warp-status.sh b/commands/apps/warp/warp-status.sh new file mode 100755 index 000000000..ed59fd2a9 --- /dev/null +++ b/commands/apps/warp/warp-status.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Dependency: Cloudflare WARP https://developers.cloudflare.com/warp-client/setting-up/macOS +# Note: Cloudflare WARP must be installed, but CLI works properly only if GUI-client is not running + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title WARP Status +# @raycast.mode inline +# @raycast.refreshTime 30s + +# Optional parameters: +# @raycast.icon images/warp.png + +# @Documentation: +# @raycast.packageName WARP +# @raycast.description Check WARP connection +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + +if ! command -v warp-cli &> /dev/null; then + echo "WARP is required (https://developers.cloudflare.com/warp-client/setting-up/macOS)"; + exit 1; +fi + +status=$(warp-cli status | grep Status | awk 'NF>1{print $NF}') + +if [ "$status" == "Connected" ] || [ "$status" == "Disconnected" ]; then + echo "$status" + exit 0 +fi + +echo "🚨 Can't check status" +exit 1 diff --git a/commands/apps/warp/warp-stop.sh b/commands/apps/warp/warp-stop.sh new file mode 100755 index 000000000..ab30756ba --- /dev/null +++ b/commands/apps/warp/warp-stop.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Dependency: Cloudflare WARP https://developers.cloudflare.com/warp-client/setting-up/macOS +# Note: Cloudflare WARP must be installed, but CLI works properly only if GUI-client is not running + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Disconnect +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/warp.png + +# @Documentation: +# @raycast.packageName WARP +# @raycast.description Disconnect from WARP +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + + +if ! command -v warp-cli &> /dev/null; then + echo "WARP is required (https://developers.cloudflare.com/warp-client/setting-up/macOS)"; + exit 1; +fi + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + warp-cli status | grep Status | grep -qv Connected +} + + +if isnt_connected; then + echo "WARP is not connected" + exit 1 +else + warp-cli disconnect + echo "Disconnected from WARP" +fi diff --git a/commands/apps/warp/warp-toggle.sh b/commands/apps/warp/warp-toggle.sh new file mode 100755 index 000000000..58eadc495 --- /dev/null +++ b/commands/apps/warp/warp-toggle.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# Dependency: Cloudflare WARP https://developers.cloudflare.com/warp-client/setting-up/macOS +# Note: Cloudflare WARP must be installed, but CLI works properly only if GUI-client is not running + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle WARP +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/warp.png + +# @Documentation: +# @raycast.packageName WARP +# @raycast.description Toggle Connection +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + + +if ! command -v warp-cli &> /dev/null; then + echo "WARP is required (https://developers.cloudflare.com/warp-client/setting-up/macOS)"; + exit 1; +fi + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + warp-cli status | grep Status | grep -qv Connected +} + +function poll_until_connected () { + (( loops=0 )) + (( max_loops=200 )) # 200 * 0.1 is 20 seconds. Bash doesn't support floats + + while isnt_connected; do + sleep 0.1 # can't use a variable here, bash doesn't have floats + (( loops=loops+1 )) + [ "$loops" -gt "$max_loops" ] && break + done + + [ "$loops" -le "$max_loops" ] +} + +if isnt_connected; then + warp-cli connect + if poll_until_connected; then + echo "Connected to WARP" + else + echo "Couldn't connect to WARP" + warp-cli disconnect + exit 1 + fi +else + warp-cli disconnect + echo "Disconnected from WARP" +fi diff --git a/commands/apps/webstorm/images/webstorm.png b/commands/apps/webstorm/images/webstorm.png new file mode 100644 index 000000000..ee69ea62d Binary files /dev/null and b/commands/apps/webstorm/images/webstorm.png differ diff --git a/commands/apps/webstorm/open-workspace.template.sh b/commands/apps/webstorm/open-workspace.template.sh new file mode 100755 index 000000000..8c2fb4761 --- /dev/null +++ b/commands/apps/webstorm/open-workspace.template.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +# Note: WebStorm required +# Install via via JetBrains Toolbox https://www.jetbrains.com/toolbox-app/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open +# @raycast.mode compact +# +# Optional parameters: +# @raycast.icon images/webstorm.png +# @raycast.packageName WebStorm +# +# Arguments +# @raycast.argument1 { "type": "text", "placeholder": "Workspace", "optional": true } +# @raycast.argument2 { "type": "text", "placeholder": "Close Others? [yes/no]", "optional": true } +# +# Documentation: +# @raycast.description Open WebStorm projects +# @raycast.author Daniel Stovv +# @raycast.authorURL https://github.com/stovv +# +# Configuration +# 1. Please make sure for WebStorm installed and WebStorm CLI available in $PATH +# https://www.jetbrains.com/help/webstorm/working-with-the-ide-features-from-command-line.html#standalone +# 2. Configure always open projects in new window Preferences -> Appearance & Behavior -> System Settings -> Project -> Open project in [ Select: New Window ] +# 3. Add more workspaces by example + +if ! command -v webstorm &> /dev/null; then + echo "WebStorm CLI is required (https://www.jetbrains.com/help/webstorm/working-with-the-ide-features-from-command-line.html#standalone)."; + exit 1; +fi + +# Main program + +# Arguments +WORKSPACE=$1 +CLOSE_OTHER=$2 + +PROCESS=$(pgrep -f webstorm) +if [ "${CLOSE_OTHER}" = "yes" ] && [ "${PROCESS}" != "" ] ;then + echo "Kill WebStorm..." + kill -9 "${PROCESS}" +fi + +# Example: +if [[ "${WORKSPACE}" = "workspace_name" ]];then + # TODO: change paths to projects + webstorm nosplash ~/Project/someProject ~/Project/someOtherProject + echo "Workspace ${WORKSPACE} opened!" + exit 0 +fi + +webstorm nosplash dontReopenProjects +echo "WebStorm projects dialog opened!" \ No newline at end of file diff --git a/commands/apps/wikipedia/images/wikipedia.png b/commands/apps/wikipedia/images/wikipedia.png index a08a1b7d6..97c3644c3 100644 Binary files a/commands/apps/wikipedia/images/wikipedia.png and b/commands/apps/wikipedia/images/wikipedia.png differ diff --git a/commands/bookmarks/open-script-commands-repository.sh b/commands/bookmarks/open-script-commands-repository.sh deleted file mode 100755 index 032fef1b6..000000000 --- a/commands/bookmarks/open-script-commands-repository.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Open Script Commands Repository -# @raycast.packageName Bookmarks -# @raycast.mode silent - -# Optional parameters: -# @raycast.icon 📜 - -# Documentation: -# @raycast.description Open the GitHub repository for Script Commands provided by the community. - -open https://github.com/raycast/script-commands diff --git a/commands/browsing/Youtube Shorts in video player.sh b/commands/browsing/Youtube Shorts in video player.sh new file mode 100755 index 000000000..04cf549c1 --- /dev/null +++ b/commands/browsing/Youtube Shorts in video player.sh @@ -0,0 +1,64 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Youtube Shorts in video player +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📹 + +# Documentation: +# @raycast.description Opens current Youtube Shorts video in the normal video player by replacing "/shorts/" with "/v/" in the url. +# @raycast.author Kailash Yellareddy +# @raycast.authorURL https://github.com/kyellareddy + +# ------------------------------------------------------------------- +# | # This script currently supports Safari and Google Chrome. | +# | # Replace "Safari" in line 21 with either "Safari" or "Chrome" | +# ------------------------------------------------------------------- + +set browser to "Safari" + + +if browser="Safari" + tell application "Safari" + tell front window + if its document exists then + set CurrentUrl to URL of current tab + end if + end tell + end tell + + set inputText to CurrentUrl + set findText to "shorts" + set replaceText to "v" + + set newText to do shell script "sed 's|" & quoted form of findText & "|" & quoted form of replaceText & "|g' <<< " & quoted form of inputText + + tell application "Safari" + tell window 1 + tell current tab + set URL to {newText} + end tell + end tell + end tell +end if + +if browser="Chrome" + tell application "Google Chrome" + set frontIndex to active tab index of front window + get URL of tab frontIndex of front window + set CurrentUrl to URL of tab frontIndex of front window + end tell + + set inputText to CurrentUrl + set findText to "shorts" + set replaceText to "v" + + set newText to do shell script "sed 's|" & quoted form of findText & "|" & quoted form of replaceText & "|g' <<< " & quoted form of inputText + + tell application "Google Chrome" + set URL of active tab of window 1 to {newText} + end tell +end if diff --git a/commands/browsing/convert-twitter-to-nitter.js b/commands/browsing/convert-twitter-to-nitter.js new file mode 100755 index 000000000..0a163466c --- /dev/null +++ b/commands/browsing/convert-twitter-to-nitter.js @@ -0,0 +1,35 @@ +#!/usr/bin/env node +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Convert Twitter to Nitter +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon 🐔 + +// Documentation: +// @raycast.description Convert Twitter link to Nitter +// @raycast.author cSharp +// @raycast.authorURL https://github.com/noidwasavailable + +// Example Twitter link: https://twitter.com/Cron/status/1644010827647975425 +const child_process = require('child_process'); +let link = child_process.execSync("pbpaste").toString(); + +if (!link) { + console.error('No link provided'); + return; +} + +try { + link = link.replace('twitter.com', 'nitter.net'); + console.log(`Opening ${link}`); + child_process.execSync(`open "${link}"`); + return; +} catch (error) { + console.error('Invalid link provided'); + return; +} diff --git a/commands/browsing/git-io.sh b/commands/browsing/git-io.sh new file mode 100755 index 000000000..209e22a07 --- /dev/null +++ b/commands/browsing/git-io.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Shorten URL from GitHub +# @raycast.mode silent +# @raycast.packageName Browsing + +# Optional parameters: +# @raycast.icon images/git-io.png + +# Documentation: +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit +# @raycast.description Shorten any github.com URL + +regex='(https?)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]?(github)\.(com|io)' +getLink=$(pbpaste) + +if [[ $getLink =~ $regex ]] +then + result=$(curl -i https://git.io -F "url=$getLink" | grep Location) + location="Location: " + resultCleanup=${result//$location/} + + if [[ $result != "Error" ]] + then + echo $resultCleanup | pbcopy + echo "Copied URL: $resultCleanup" + else + echo "URL cannot be shortened" + exit 1 + fi +else + echo "String in clipboard is not a valid URL" + exit 1 +fi diff --git a/commands/browsing/images/chrome-icon.png b/commands/browsing/images/chrome-icon.png new file mode 100644 index 000000000..e3fb307b6 Binary files /dev/null and b/commands/browsing/images/chrome-icon.png differ diff --git a/commands/browsing/images/git-io.png b/commands/browsing/images/git-io.png new file mode 100644 index 000000000..f539787c7 Binary files /dev/null and b/commands/browsing/images/git-io.png differ diff --git a/commands/browsing/images/shlink.png b/commands/browsing/images/shlink.png new file mode 100644 index 000000000..bb7b49403 Binary files /dev/null and b/commands/browsing/images/shlink.png differ diff --git a/commands/browsing/new-browser-window.sh b/commands/browsing/new-browser-window.sh new file mode 100755 index 000000000..fd47f650b --- /dev/null +++ b/commands/browsing/new-browser-window.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title New Browser Window +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 🌐 +# @raycast.packageName Browser Utils + +# Documentation: +# @raycast.description Open new window in default browser +# @raycast.author Levi Nelson +# @raycast.authorURL https://github.com/LeviticusNelson + +# https://stackoverflow.com/a/66026925/13949806 +defaultBrowser=$(plutil -p ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist | grep 'https' -b3 |awk 'NR==3 {split($4, arr, "\""); print arr[2]}') +open --new -b "$defaultBrowser" diff --git a/commands/browsing/open-chrome-without-cors.sh b/commands/browsing/open-chrome-without-cors.sh new file mode 100755 index 000000000..d4ee84fce --- /dev/null +++ b/commands/browsing/open-chrome-without-cors.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open without CORS +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/chrome-icon.png +# @raycast.packageName Chrome +# @raycast.needsConfirmation false + +# Documentation: +# @raycast.description Open chrome with web security option disabled. +# @raycast.author Tahsin Yazkan +# @raycast.authorURL https://github.com/thsnyzkn + +open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security + diff --git a/commands/browsing/open-in-guest-profile.sh b/commands/browsing/open-in-guest-profile.sh new file mode 100755 index 000000000..c35579059 --- /dev/null +++ b/commands/browsing/open-in-guest-profile.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open in guest profile +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.packageName Browser + +# Documentation: +# @raycast.description Open current website in guest profile/mode +# @raycast.author JD Solanki +# @raycast.authorURL https://github.com/jd-solanki + +############################################ +## Set your browser app ## +## "Google Chrome" ## +## "Brave Browser" ## +############################################ + +browser="Google Chrome" + +URL=$(osascript -e "tell application \"$browser\" to get URL of active tab of first window") + +open -a "$browser" -n --args --guest --new-window "$URL" + diff --git a/commands/browsing/open-multiple-websites-on-safari.template.sh b/commands/browsing/open-multiple-websites-on-safari.template.sh new file mode 100755 index 000000000..0f16d29fe --- /dev/null +++ b/commands/browsing/open-multiple-websites-on-safari.template.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Multiple Websites on Safari +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📚 +# @raycast.packageName Browsing + +# Documentation: +# @raycast.description Open multiple websites on Safari using list of URLs +# @raycast.author Yasutaka Nishii +# @raycast.authorURL https://github.com/ystknsh + +# Set list of URLs +urls=( + "https://example.com" + "https://example.org" + "https://example.net" + "https://example.jp" + "https://example.io" + "https://example.ai" +) + +# Make AppleScript commands +applescript_command="tell application \"Safari\" + make new document with properties {URL:\"${urls[0]}\"} + tell window 1" + +for ((i=1; i<${#urls[@]}; i++)); do + applescript_command+=" + make new tab with properties {URL:\"${urls[$i]}\"}" +done + +applescript_command+=" + end tell +end tell" + +# Execute AppleScript +osascript -e "$applescript_command" + +# Set Safari window to front(Optional) +osascript < /dev/null; then + echo "jq is required (https://stedolan.github.io/jq/)."; + exit 1; +fi + +if [ -z "$1" ]; then + URL=$(pbpaste) +else + URL=$1 +fi + +if [[ $URL =~ ^https?://[a-zA-Z0-9./?=_-]*$ ]]; then + SHORT_URL=$(curl --location --silent --request POST ''"$PROTOCOL"'/rest/v1/short-urls' \ + --header 'Content-Type: application/json' \ + --header 'X-Api-Key: '"$APIKEY"'' \ + --data-raw '{ + "longUrl": "'"$URL"'", + "validateUrl": false, + "tags": [ + "'$TAG'" + ], + "findIfExists": true, + "domain": "'"$BASEURL"'" + }' | jq -r '.shortUrl') + + if [ -n "$SHORT_URL" ]; then + echo "$SHORT_URL" | pbcopy + echo "Copied $SHORT_URL to your clipboard" + else + echo "Error: Could not create short URL" + exit 1 + fi + +else + echo "Invalid URL \"$URL\"" + exit 1 +fi diff --git a/commands/browsing/short-url-emoji.sh b/commands/browsing/short-url-emoji.sh new file mode 100755 index 000000000..575708edc --- /dev/null +++ b/commands/browsing/short-url-emoji.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Shorten URL with Emojis +# @raycast.mode compact +# @raycast.packageName Browsing + +# Optional parameters: +# @raycast.icon 🔗 + +# Documentation: +# @raycast.author Samuel Henry +# @raycast.authorURL https://bne.sh +# @raycast.description Transform the clipboard contents to a short Emoji URL + +regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]' +pasteboardString=$(pbpaste) + +if [[ $pasteboardString =~ $regex ]] +then + result=$(curl "https://bne.sh/api/shorten?url=$pasteboardString") + echo $result | ruby -r json -e 'puts JSON.parse(STDIN.read)["url"]' | pbcopy; echo -n `pbpaste` +else + echo "String in clipboard is a not valid URL" + exit 1 +fi diff --git a/commands/browsing/to-private-browsing.sh b/commands/browsing/to-private-browsing.sh new file mode 100755 index 000000000..b16171571 --- /dev/null +++ b/commands/browsing/to-private-browsing.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +############################################ +## Set your browser app ## +## "Google Chrome" ## +## "Brave Browser" ## +############################################ + +browser="Google Chrome" + +# @raycast.title Current Website to Private Browser +# @raycast.author raulanatol +# @raycast.authorURL https://github.com/raulanatol +# @raycast.description Open the current site in a private browser + +# @raycast.icon 🥽 +# @raycast.mode silent +# @raycast.packageName Browser +# @raycast.schemaVersion 1 + +URL=$(osascript -e "tell application \"$browser\" to get URL of active tab of first window") + +open -a "$browser" -n --args --incognito --new-window "$URL" + diff --git a/commands/communication/call-with-iphone.sh b/commands/communication/call-with-iphone.sh new file mode 100755 index 000000000..72e2d98e6 --- /dev/null +++ b/commands/communication/call-with-iphone.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Call with iPhone +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📱 +# @raycast.argument1 { "type": "text", "placeholder": "+1 514 555 1212" } +# @raycast.packageName Communication + +# Documentation: +# @raycast.description Place a telephone call via your iPhone on Wi-Fi. +# @raycast.author Alexander JH Steffen +# @raycast.authorURL https://github.com/alexjsteffen + +sleep 1 +open "tel://$1" + + diff --git a/commands/communication/duckduckgo-email-protection/README.md b/commands/communication/duckduckgo-email-protection/README.md new file mode 100644 index 000000000..75c8267aa --- /dev/null +++ b/commands/communication/duckduckgo-email-protection/README.md @@ -0,0 +1,35 @@ + +# What is DuckDuckGo Email Protection? +DuckDuckGo Email Protection is an email protection service (currently invite-only). After having been invited, DDG provides you with an intermediary e-mail address (you@duck.com). Any e-mail sent to this address will be stripped of its analytics components, before being forwarded to your actual e-mail address (you@you.com). + +![ddg-email-protection-marketing](images/ddg-email-protection-marketing.png) + + +# About this Script Command +This script command lets you quickly generate a unique @duck.com address that is connected to your own e-mail address. Just like your personal you@duck.com address, the unique addresses will also forward any e-mail to your own e-mail address, after having been stripped of any tracking or analytics modules. + +![Raycast screenshot](images/script-command-screenshot.png) + + +At the same time, DuckDuckGo allows you to create unique private e-mail addresses. These are randomly generated @duck.com addresses that also forward to your actual e-mail address. These are basically 'throw-away' e-mail addresses that you can use for any reason. + +# Requirements +In order to configure this script command, you have to have been invited into the E-mail protection service beta. Currently, the only way to do this is through the DuckDuckGo app (iOS/Android). After you have been invited, you will need to extract your authorization ID from the DuckDuckGo desktop browser extension. + +# Configuring DDG Email Protection Script command +Completing the following commands should allow you to generate new unique @duck.com addresses from Raycast. Note: this explanation assumes the use of FireFox. + +1. First, make sure you've set-up the DDG extension on Firefox (or Chrome) +2. Then, navigate go to about:debugging#/runtime/this-firefox +3. In the list of installed extension, look for DuckDuckGo Privacy Essentials and click 'Inspect' +4. In the inspector, navigate to the Network tab +5. Click on the extension icon, and click on 'Create new Duck Address' (bottom) +6. A new POST request will have appeared in the network tab, select it +7. In the 'Request Headers' section, look for 'Authorization' +8. Copy the string of randomized characters AFTER "Bearer " +9. Open Raycast and paste the string in the Configure script command. You will receive a confirmation should the string be correct. + +![Locate authorization](images/locate-authorization-id.png) + +# Cleanup +After configuring the script command, it is wise to disable the configuration command from Raycast settings. \ No newline at end of file diff --git a/commands/communication/duckduckgo-email-protection/configure-@duck.com-script-command.applescript b/commands/communication/duckduckgo-email-protection/configure-@duck.com-script-command.applescript new file mode 100755 index 000000000..b7fa5d014 --- /dev/null +++ b/commands/communication/duckduckgo-email-protection/configure-@duck.com-script-command.applescript @@ -0,0 +1,35 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Configure +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/duckduckgo_logo.png +# @raycast.argument1 { "type": "text", "placeholder": "@duck.com authorizationID" } +# @raycast.packageName DuckDuckGo Email Protection + +# Documentation: +# @raycast.description Use this script command to configure your @duck.com authorizationID +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run argv + set prefix to do shell script "curl -X POST https://quack.duckduckgo.com/api/email/addresses --header 'Authorization: Bearer " & (item 1 of argv) & "'" + if text 3 through 9 of prefix is "address" then + setAuthorizationID(item 1 of argv) + else + tell me to error "Could not configure authorizationID. Duck.com API result: " & prefix + end if +end run + +on setAuthorizationID(authorizationID) + try + return do shell script "defaults write com.dpe.ddgEmailProtection AuthorizationID " & authorizationID + on error + tell me to error "Authorization ID not set, please run configure script command" + end try +end setAuthorizationID + + diff --git a/commands/communication/duckduckgo-email-protection/generate-unique-email-address.applescript b/commands/communication/duckduckgo-email-protection/generate-unique-email-address.applescript new file mode 100755 index 000000000..ccdc7c4dd --- /dev/null +++ b/commands/communication/duckduckgo-email-protection/generate-unique-email-address.applescript @@ -0,0 +1,36 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Generate Unique Address +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/duckduckgo_logo.png +# @raycast.packageName DuckDuckGo Email Protection + +# Documentation: +# @raycast.description This script command generates a unique private @duck.com email address. +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run + set prefix to do shell script "curl -X POST https://quack.duckduckgo.com/api/email/addresses --header 'Authorization: Bearer " & getAuthorizationID() & "'" + if text 3 through 9 of prefix is "address" then + set uniqueAddress to text 13 through -3 of prefix & "@duck.com" + set the clipboard to uniqueAddress + return uniqueAddress & " copied to clipboard!" + else + tell me to error "An error has occured: " & prefix + end if +end run + +on getAuthorizationID() + try + return do shell script "defaults read com.dpe.ddgEmailProtection AuthorizationID" + on error + tell me to error "Authorization ID not set, please run configure script command" + end try +end getAuthorizationID + + diff --git a/commands/communication/duckduckgo-email-protection/images/ddg-email-protection-marketing.png b/commands/communication/duckduckgo-email-protection/images/ddg-email-protection-marketing.png new file mode 100644 index 000000000..0612e3762 Binary files /dev/null and b/commands/communication/duckduckgo-email-protection/images/ddg-email-protection-marketing.png differ diff --git a/commands/communication/duckduckgo-email-protection/images/duckduckgo_logo.png b/commands/communication/duckduckgo-email-protection/images/duckduckgo_logo.png new file mode 100644 index 000000000..495de528d Binary files /dev/null and b/commands/communication/duckduckgo-email-protection/images/duckduckgo_logo.png differ diff --git a/commands/communication/duckduckgo-email-protection/images/locate-authorization-id.png b/commands/communication/duckduckgo-email-protection/images/locate-authorization-id.png new file mode 100644 index 000000000..5c1666d87 Binary files /dev/null and b/commands/communication/duckduckgo-email-protection/images/locate-authorization-id.png differ diff --git a/commands/communication/duckduckgo-email-protection/images/script-command-screenshot.png b/commands/communication/duckduckgo-email-protection/images/script-command-screenshot.png new file mode 100644 index 000000000..797445c71 Binary files /dev/null and b/commands/communication/duckduckgo-email-protection/images/script-command-screenshot.png differ diff --git a/commands/communication/emojis/random-emoji.sh b/commands/communication/emojis/random-emoji.sh new file mode 100755 index 000000000..1209694c3 --- /dev/null +++ b/commands/communication/emojis/random-emoji.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Random Emoji +# @raycast.mode silent +# @raycast.packageName Emojis + +# Optional parameters: +# @raycast.icon 🎲 + +# Documentation: +# @raycast.description Copy a random emoji to the clipboard. +# @raycast.author Tomohiro Nishimura +# @raycast.authorURL https://github.com/Sixeight + +LANG="en_US.UTF-8" + +if ! command -v jq &> /dev/null; then + echo "jq command is required (https://github.com/jqlang/jq)."; + exit 1; +fi + +IFS=$'\n' read -d '' -r -a EMOJIS < <(curl -s https://raw.githubusercontent.com/github/gemoji/master/db/emoji.json | jq -r '.[] | .emoji' && printf '\0') +EMOJI="${EMOJIS[$RANDOM % ${#EMOJIS[@]}]}" +echo -n "$EMOJI" | pbcopy +echo "$EMOJI" diff --git a/commands/communication/let-me-google-that.sh b/commands/communication/let-me-google-that.sh new file mode 100755 index 000000000..7a5c174de --- /dev/null +++ b/commands/communication/let-me-google-that.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Let Me Google That +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤡 +# @raycast.packageName Communication + +# Documentation: +# @raycast.description Let Me Google That For You +# @raycast.author Leo Fritsch +# @raycast.authorURL https://github.com/leofritsch + +# Get the content of the clipboard +clipboard=$(pbpaste) + +# change spaces to plus signs +url_encoded=$(echo "${clipboard}" | sed 's/ /+/g') + +# Construct the URL string with the encoded clipboard content +url="https://letmegooglethat.com/?q=${url_encoded}" + +# Copy the URL to the clipboard +echo "${url}" | pbcopy +echo -e "Copied to clipboard: ${url}" \ No newline at end of file diff --git a/commands/communication/mail/open-most-recent-email.applescript b/commands/communication/mail/open-most-recent-email.applescript new file mode 100755 index 000000000..d1fee8840 --- /dev/null +++ b/commands/communication/mail/open-most-recent-email.applescript @@ -0,0 +1,42 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Most Recent Email +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon ✉️ +# @raycast.packageName Mail + +# Documentation: +# @raycast.description Open the last received email in your inbox in Mail.app +# @raycast.author Ben Yoon +# @raycast.authorURL https://github.com/benyn + +tell application "Mail" + if not (first message of inbox exists) then + # Trigger a check for new email just in case. + check for new mail + log "No emails found in your inbox. Checking for new email." + return + end if + + # Get the first email from each account inbox and find the one that was received last. + # `first message of inbox` is inadequate since it refers to + # the first message of the first account inbox. + set lastReceivedMessage to missing value + repeat with accountInbox in mailboxes of inbox + if first message of accountInbox exists then + set firstMessage to first message of accountInbox + if lastReceivedMessage is missing value then + set lastReceivedMessage to firstMessage + else if (date received of lastReceivedMessage) < (date received of firstMessage) then + set lastReceivedMessage to firstMessage + end if + end if + end repeat + open lastReceivedMessage + # Show nothing at the end (prevent "missing value" from being shown). + log "" +end tell diff --git a/commands/communication/slack/add-slack-reminder.template.sh b/commands/communication/slack/add-slack-reminder.template.sh new file mode 100755 index 000000000..de149ec0f --- /dev/null +++ b/commands/communication/slack/add-slack-reminder.template.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# API: https://api.slack.com/methods/reminders.add + +# Parameters + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Add Reminder +# @raycast.mode silent + +# Optional parameters: +# @raycast.packageName Slack +# @raycast.icon ⏰ +# @raycast.argument1 { "type": "text", "placeholder": "What" } +# @raycast.argument2 { "type": "text", "placeholder": "When" } + +# Documentation: +# @raycast.description Create a Slack reminder +# @raycast.author Zeb Pykosz +# @raycast.authorURL https://github.com/zebapy + +# Configuration + +# To create a new API token, do the following: +# 1. Create a new Slack app at https://api.slack.com/authentication/basics +# 2. Add `reminders:write` to the user token scopes +# 3. Install the app to your workplace +# 4. Insert your OAuth access token below +API_TOKEN="" + +if [[ -z "$API_TOKEN" ]] +then + echo "No API token provided" + exit 1 +fi + +RESPONSE=$( +curl \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer $API_TOKEN" \ + --request POST \ + --data "{ 'text': '$1', 'time': '$2' }" \ + --silent \ + --output /dev/null \ + --show-error \ + --fail \ + "https://slack.com/api/reminders.add" +) + +if [[ "$RESPONSE" =~ "error" ]] +then + echo "Failed to add reminder in Slack" + exit 1 +else + echo "Added reminder '$1 $2' in Slack!" + exit 0 +fi diff --git a/commands/communication/slack/slack-dev-mode.sh b/commands/communication/slack/slack-dev-mode.sh new file mode 100755 index 000000000..cd90d1cd5 --- /dev/null +++ b/commands/communication/slack/slack-dev-mode.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Launch Dev Mode +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/slack-logo.png +# @raycast.packageName Slack + +# Documentation: +# @raycast.description Open Slack with the Developer Menu enabled. ⌘⌥I to access the Developer Menu. If you find it's not working, quit Slack and run this command again. +# @raycast.author Cody Carrell +# @raycast.authorURL https://raycast.com/sourcecody + +SLACK_DEVELOPER_MENU=true open /Applications/Slack.app diff --git a/commands/communication/zoom/rename-profile.applescript b/commands/communication/zoom/rename-profile.applescript new file mode 100755 index 000000000..06d04f460 --- /dev/null +++ b/commands/communication/zoom/rename-profile.applescript @@ -0,0 +1,70 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Rename Profile +# @raycast.description Rename your profile in Zoom Meeting App (Mac Only) and cliclick. +# @raycast.mode silent +# @raycast.packageName Zoom +# @raycast.argument1 { "type": "text", "placeholder": "AFK for?" } + +# Optional parameters: +# @raycast.icon images/zoom-logo.png + +# Documentation: +# @raycast.author Leo Voon +# @raycast.authorURL https://github.com/leovoon + +on run argv + + tell application "System Events" + tell application process "zoom.us" + set frontmost to true + set windowIsOpen to false + set participantsWindow to missing value + set renameWindow to missing value + + repeat with w in windows + if name of w contains "Participants" then + set windowIsOpen to true + set participantsWindow to w + exit repeat + end if + end repeat + + delay 0.5 + set foundRename to false + -- Hover on name + do shell script "/opt/homebrew/bin/cliclick m:" & 1183 & "," & 124 + delay 0.5 + + -- Hover on More button + do shell script "/opt/homebrew/bin/cliclick m:" & 1400 & "," & 124 + delay 0.5 + + -- Click More button + do shell script "/opt/homebrew/bin/cliclick c:" & 1400 & "," & 124 + delay 0.5 + + -- Click Arrow Down + do shell script "/opt/homebrew/bin/cliclick kp:arrow-down kp:arrow-down kp:return" + delay 0.5 + + -- Target Rename and Hit Return Key + do shell script "/opt/homebrew/bin/cliclick kp:return" + + -- Edit Input, modify here for your needs + delay 0.5 + set newName to "YOUR NAME -" & ( item 1 of argv ) + delay 0.5 + do shell script "/opt/homebrew/bin/cliclick c:" & 888 & "," & 430 + delay 0.5 + key code 51 using {command down} + keystroke newName + delay 0.5 + do shell script "/opt/homebrew/bin/cliclick c:" & 880 & "," & 517 + + + end tell + end tell +end run \ No newline at end of file diff --git a/commands/conversions/change-case/camelcase.py b/commands/conversions/change-case/camelcase.py index 2ab1bcd50..922392a42 100755 --- a/commands/conversions/change-case/camelcase.py +++ b/commands/conversions/change-case/camelcase.py @@ -131,15 +131,24 @@ def upcase(m): def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() -from utils import getClipboardData, titlecase_plus, setClipboardData +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s clipboard = str(getClipboardData()) result = titlecase_plus(clipboard).replace(" ", "") diff --git a/commands/conversions/change-case/kebabcase.py b/commands/conversions/change-case/kebabcase.py index 966ac56b8..43f182b36 100755 --- a/commands/conversions/change-case/kebabcase.py +++ b/commands/conversions/change-case/kebabcase.py @@ -21,14 +21,25 @@ def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s + clipboard = str(getClipboardData()) result = clipboard.lower().replace(" ", "-").replace("_", "-") setClipboardData(result) diff --git a/commands/conversions/change-case/lowercase.py b/commands/conversions/change-case/lowercase.py index adafa8f36..dbf96ff11 100755 --- a/commands/conversions/change-case/lowercase.py +++ b/commands/conversions/change-case/lowercase.py @@ -21,14 +21,25 @@ def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s + clipboard = str(getClipboardData()) result = clipboard.lower() setClipboardData(result) diff --git a/commands/conversions/change-case/snakecase.py b/commands/conversions/change-case/snakecase.py index df620551d..68b1badd9 100755 --- a/commands/conversions/change-case/snakecase.py +++ b/commands/conversions/change-case/snakecase.py @@ -17,19 +17,32 @@ # @raycast.description Change to clipboard text to snake case import subprocess +import re def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s + clipboard = str(getClipboardData()) -result = clipboard.lower().replace(" ", "_").replace("-", "_") +result = re.sub(r"([a-z])([A-Z])", r"\1_\2", clipboard) +result = result.lower().replace(" ", "_").replace("-", "_") setClipboardData(result) print(result) diff --git a/commands/conversions/change-case/titlecase.py b/commands/conversions/change-case/titlecase.py index 6fbe3b229..08cd316b3 100755 --- a/commands/conversions/change-case/titlecase.py +++ b/commands/conversions/change-case/titlecase.py @@ -128,18 +128,28 @@ def upcase(m): return always_uppercase_re.sub(upcase, text) - def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s + clipboard = str(getClipboardData()) result = titlecase_plus(clipboard) setClipboardData(result) diff --git a/commands/conversions/change-case/uppercase.py b/commands/conversions/change-case/uppercase.py index 9dec4af5d..87ef17048 100755 --- a/commands/conversions/change-case/uppercase.py +++ b/commands/conversions/change-case/uppercase.py @@ -21,14 +21,25 @@ def getClipboardData(): p = subprocess.Popen(["pbpaste"], stdout=subprocess.PIPE) data = p.stdout.read() - return data.decode("utf-8") - + return tryDecode(data) def setClipboardData(data): p = subprocess.Popen(["pbcopy"], stdin=subprocess.PIPE) - p.stdin.write(data.encode("utf-8")) + p.stdin.write(tryEncode(data)) p.stdin.close() +def tryDecode(s): + try: + return s.decode('utf-8') + except: + return s + +def tryEncode(s): + try: + return s.encode('utf-8') + except: + return s + clipboard = str(getClipboardData()) result = clipboard.upper() setClipboardData(result) diff --git a/commands/conversions/clipboard-ocr.sh b/commands/conversions/clipboard-ocr.sh new file mode 100755 index 000000000..3d314879e --- /dev/null +++ b/commands/conversions/clipboard-ocr.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Dependency: `brew install pngpaste tesseract` +# pngpaste required to grab image from clipboard +# tesseract required to OCR + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title OCR Image +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon 📋 +# @raycast.packageName Clipboard + +# Documentation: +# @raycast.description OCR Image from Clipboard +# @raycast.author xxchan +# @raycast.authorURL https://github.com/xxchan + +# credit to @laixintao https://www.kawabangga.com/posts/4876 + +pngpaste - | tesseract stdin stdout diff --git a/commands/conversions/clipboard-to-markdown.js b/commands/conversions/clipboard-to-markdown.js new file mode 100755 index 000000000..231aa8bae --- /dev/null +++ b/commands/conversions/clipboard-to-markdown.js @@ -0,0 +1,101 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Clipboard to Markdown +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon 📋 +// @raycast.packageName Conversions + +// Documentation: +// @raycast.description Automatically take the content found in the clipboard and turn it into Markdown +// @raycast.author Alessandra Pereyra +// @raycast.authorURL https://github.com/alessandrapereyra + +// Based on the code from +// https://github.com/raycast/script-commands/blob/master/commands/conversions/create-markdown-table.js + +const child_process = require("child_process"); + +function pbpaste() { + return child_process.execSync("pbpaste").toString(); +} + +function pbcopy(data) { + return new Promise(function (resolve, reject) { + const child = child_process.spawn("pbcopy"); + + child.on("error", function (err) { + reject(err); + }); + + child.on("close", function (err) { + resolve(data); + }); + + child.stdin.write(data); + child.stdin.end(); + }); +} + +function processLine(content) { + if ( + content.startsWith("* ") || + content.startsWith("- ") || + content.startsWith("+ ") + ) { + return "* " + processContent(content.substring(2)); + } + return processContent(content); +} + +function processLines(content) { + const lines = content.split("\n"); + const markdownLines = lines.map((line) => { + return processLine(line); + }); + return markdownLines.join("\n"); +} + +function processImageURL(content) { + return `![Image](${content})`; +} + +function processURL(content) { + return `[${content}](${content})`; +} + +function processText(content) { + return content; +} + +function processContent(content) { + if (content.startsWith("http")) { + if (content.match(/\.(jpeg|jpg|gif|png|bmp|tiff)$/) != null) { + return processImageURL(content); + } else { + return processURL(content); + } + } else { + return processText(content); + } +} + +function processStoredContent(content) { + if (content.includes("\n")) { + return processLines(content); + } else { + return processContent(content); + } +} + +const storedClipboardContent = pbpaste(); + +let markdown = processStoredContent(storedClipboardContent); + +pbcopy(markdown); diff --git a/commands/conversions/create-markdown-table.js b/commands/conversions/create-markdown-table.js new file mode 100755 index 000000000..fb42ad0ab --- /dev/null +++ b/commands/conversions/create-markdown-table.js @@ -0,0 +1,61 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Markdown Table +// @raycast.packageName Conversions +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon 🧱 +// @raycast.argument1 { "type": "text", "placeholder": "Columns" } +// @raycast.argument2 { "type": "text", "placeholder": "Rows" } + +// Documentation: +// @raycast.description Create a markdown table template +// @raycast.author Ryan Nystrom +// @raycast.authorURL https://github.com/rnystrom + +const child_process = require("child_process"); + +function pbcopy(data) { + return new Promise(function (resolve, reject) { + const child = child_process.spawn("pbcopy"); + + child.on("error", function (err) { + reject(err); + }); + + child.on("close", function (err) { + resolve(data); + }); + + child.stdin.write(data); + child.stdin.end(); + }); +} + +let [columns, rows] = process.argv.slice(2); +columns = Math.max(parseInt(columns), 1); +rows = Math.max(parseInt(rows), 1); + +let emptyTemplate = " "; +let headerTemplate = "---"; +let rowArr = Array(columns + 1).fill("|"); + +let lines = []; + +// header +lines.push(rowArr.join(emptyTemplate)); +// header spacer |---| +lines.push(rowArr.join(headerTemplate)); + +// rows +for (let i = 0; i < rows; i++) { + lines.push(rowArr.join(emptyTemplate)); +} + +pbcopy(lines.join("\n")); diff --git a/commands/conversions/google-docs-to-markdown.sh b/commands/conversions/google-docs-to-markdown.sh new file mode 100755 index 000000000..031653152 --- /dev/null +++ b/commands/conversions/google-docs-to-markdown.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Dependency: requires the google-docs-to-markdown npm package: https://github.com/Mr0grog/google-docs-to-markdown + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Convert Google Docs Rich Text HTML to Markdown +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📋 +# @raycast.packageName Conversions +# @raycast.description A script to take the HTML pastboard type filled by google docs and convert it to nicely formatted markdown + +# Documentation: +# @raycast.author Michael Bianco +# @raycast.authorURL https://github.com/iloveitaly + +set -euo pipefail + +swift - <'): + # Format headers with emojis and bold text + if line.startswith('# '): + line = f"⚫️ **{line[2:].strip()}**\n" + elif line.startswith('## '): + line = f"◾️ **{line[3:].strip()}**\n" + elif line.startswith('### '): + line = f"▪️ **{line[4:].strip()}**\n" + elif line.startswith('#### '): + line = f"🔹 **{line[5:].strip()}**\n" + elif line.startswith('##### '): + line = f"📌 **{line[6:].strip()}**\n" + elif line.startswith('###### '): + line = f"🔰 **{line[7:].strip()}**\n" + else: + # Format bold text + line = re.sub(r'(?')) and not next.startswith(('*', '-', '```', '|', '>')): + result.append('') + + return '\n'.join(result) + +if __name__ == "__main__": + try: + markdown_text = paste() + converted_text = convert_markdown(markdown_text) + copy(converted_text) + print("✅ Markdown converted and copied to clipboard") + except Exception as e: + print(f"❌ Error during conversion: {str(e)}") \ No newline at end of file diff --git a/commands/conversions/paste-as-plain-text.applescript b/commands/conversions/paste-as-plain-text.applescript new file mode 100755 index 000000000..027ec6b99 --- /dev/null +++ b/commands/conversions/paste-as-plain-text.applescript @@ -0,0 +1,21 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Paste and Match Style +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📋 +# @raycast.packageName Conversions +# @raycast.description A script to click the "Paste and Match Style" menu item, even if it's disabled + +# Documentation: +# @raycast.author Michael Bianco +# @raycast.authorURL https://github.com/iloveitaly + +tell application "System Events" + tell process 1 where frontmost is true + click menu item "Paste and Match Style" of menu "Edit" of menu bar 1 + end tell +end tell diff --git a/commands/conversions/qr-code-screenshot-to-text.sh b/commands/conversions/qr-code-screenshot-to-text.sh new file mode 100755 index 000000000..6aa5e9622 --- /dev/null +++ b/commands/conversions/qr-code-screenshot-to-text.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Screenshot QR Code to Clipboard +# @raycast.mode silent +# @raycast.packageName QR Code +# +# Optional parameters: +# @raycast.icon images/qrcode.icns +# @raycast.currentDirectoryPath ~ +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Decode QR Code from screenshot to clipboard using https://qrserver.com/ +# @raycast.author Diego Lopes +# @raycast.authorURL https://github.com/Dihgg + + +if ! command -v jq &> /dev/null; then + echo "jq command is required (https://stedolan.github.io/jq/)." + exit 1 +fi + +TEMP_DIR=$(mktemp -d) + +FILE="$TEMP_DIR/screenshot.png" + +screencapture -i "$FILE" + +if ! test -f "$FILE"; then + printf "Please capture a QR code" + exit 1 +fi + +curl -s --location --request POST 'https://api.qrserver.com/v1/read-qr-code/' --form file=@"$TEMP_DIR"/screenshot.png >> "$TEMP_DIR"/qr-code.json + +DATA=$(jq -r '.[0].symbol[0].data' "$TEMP_DIR/qr-code.json") + +if [ "$DATA" == "null" ]; then + ERROR=$(jq .[0].symbol[0].error "$TEMP_DIR/qr-code.json") + printf "%s" "$ERROR" + exit 1 +fi + +echo "$DATA" | pbcopy + +printf "Gathered QR Code Content to Clipboard" +exit 0; + + diff --git a/commands/conversions/qrcode-generate.sh b/commands/conversions/qrcode-generate.sh new file mode 100755 index 000000000..635b0e1cb --- /dev/null +++ b/commands/conversions/qrcode-generate.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# @raycast.title QR Code Generation +# @raycast.description QR Code Generation +# @raycast.author wyhaya +# @raycast.authorURL https://github.com/wyhaya + +# @raycast.icon images/qrcode.png +# @raycast.mode fullOutput +# @raycast.packageName Conversions +# @raycast.schemaVersion 1 +# @raycast.argument1 { "type": "text", "placeholder": "Content" } + +echo $1 | curl -s qrcode.show -d @- diff --git a/commands/conversions/raw-html-to-rich-text-clipboard.sh b/commands/conversions/raw-html-to-rich-text-clipboard.sh new file mode 100755 index 000000000..080808fae --- /dev/null +++ b/commands/conversions/raw-html-to-rich-text-clipboard.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Dependency: This script requires `pandoc`: https://pandoc.org/installing.html + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Convert Raw HTML to Rich Text on Clipboard +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📋 +# @raycast.packageName Conversions +# @raycast.description This script will convert raw HTML on your clipboard to rich text. It requires pandoc to be installed on your system. + +# Documentation: +# @raycast.author Michael Bianco +# @raycast.authorURL https://github.com/iloveitaly + +pbpaste | pandoc -f html -t rtf -s | pbcopy -pboard general -Prefer rtf \ No newline at end of file diff --git a/commands/conversions/rich-text-clipboard-to-markdown.sh b/commands/conversions/rich-text-clipboard-to-markdown.sh index 7cde8493f..5bf7d5d1d 100755 --- a/commands/conversions/rich-text-clipboard-to-markdown.sh +++ b/commands/conversions/rich-text-clipboard-to-markdown.sh @@ -20,4 +20,4 @@ if ! command -v pandoc &> /dev/null; then fi export LC_CTYPE=UTF-8 -osascript -e 'the clipboard as "HTML"'| perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | pandoc --from=html --to=gfm | pbcopy +osascript -e 'the clipboard as «class RTF »' | perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | pandoc --from=rtf --to=gfm | pbcopy diff --git a/commands/conversions/space-fixer.sh b/commands/conversions/space-fixer.sh new file mode 100755 index 000000000..ef716c82a --- /dev/null +++ b/commands/conversions/space-fixer.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +# Add spaces between Chinese and English, number or symbols. +# +# Dependency: This script requires the `https://www.npmjs.com/package/pangu` package. +# Install it via `pip install pangu` or `pnpm install -g pangu` or `npm install -g pangu`. +# +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Space Fixer +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📝 +# @raycast.packageName Conversions + +# Documentation: +# @raycast.description Add spaces between Chinese and English, number or symbols. +# @raycast.author RealTong +# @raycast.authorURL https://raycast.com/RealTong + +# pip, pnp paths +export PATH="$HOME/.pyenv/shims:$HOME/Library/pnpm:$PATH" +# nvm paths +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +# npm paths +NPM_BIN_PATH=$(which npm) +if [[ -n "$NPM_BIN_PATH" ]]; then + NPM_DIR=$(dirname "$NPM_BIN_PATH") + export PATH="$NPM_DIR:$PATH" +fi + +pangu_path=$(which pangu) + +if [ -z "$pangu_path" ]; then + echo "Error: pangu not found in PATH" + exit 1 +fi + +input=$(pbpaste) + +if [ -z "$input" ]; then + echo "Input is empty" + exit 1 +fi + +# Call pangu : pangu -t "text" + +output=$($pangu_path -t "$input") +if [ -z "$output" ]; then + echo "Output is empty" + exit 1 +fi + +echo $output | pbcopy +echo "Fixed Chinese text has been copied to the clipboard" diff --git a/commands/culture/prayer-times.sh b/commands/culture/prayer-times.sh new file mode 100755 index 000000000..09655832e --- /dev/null +++ b/commands/culture/prayer-times.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# You may need to install coreutils via homebrew to make this script work (gdate function). +# +# Homebrew: https://brew.sh/ +# Coreutils: https://formulae.brew.sh/formula/coreutils + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Prayer Times +# @raycast.mode inline +# @raycast.packageName Culture + +# Optional parameters: +# @raycast.icon 🕌 + +# Documentation +# @raycast.author Emircan Erkul +# @raycast.authorURL https://emircanerkul.com +# @raycast.description Prayer Times grabbed from the aladhan.com. + +data=$(curl -s -L 'http://api.aladhan.com/v1/timingsByCity?city=derince&country=turkey&method=13') + +imsak=$(echo "$data" | jq --raw-output '.data.timings.Imsak') +gunes=$(echo $data | jq --raw-output '.data.timings.Sunrise') +ogle=$(echo "$data" | jq --raw-output '.data.timings.Dhuhr') +ikindi=$(echo "$data" | jq --raw-output '.data.timings.Asr') +aksam=$(echo "$data" | jq --raw-output '.data.timings.Maghrib') +yatsi=$(echo "$data" | jq --raw-output '.data.timings.Isha') + +NOW=$(gdate +%s) + +if [ $(($(gdate -d "$imsak" +%s) - $NOW)) -gt 0 ]; then + REMANINING=$(($(gdate -d "$imsak" +%s) - $NOW)) +elif [ $(($(gdate -d "$gunes" +%s) - $NOW)) -gt 0 ]; then + REMANINING=$(($(gdate -d "$gunes" +%s) - $NOW)) +elif [ $(($(gdate -d "$ogle" +%s) - $NOW)) -gt 0 ]; then + REMANINING=$(($(gdate -d "$ogle" +%s) - $NOW)) +elif [ $(($(gdate -d "$ikindi" +%s) - $NOW)) -gt 0 ]; then + REMANINING=$(($(gdate -d "$ikindi" +%s) - $NOW)) +elif [ $(($(gdate -d "$aksam" +%s) - $NOW)) -gt 0 ]; then + REMANINING=$(($(gdate -d "$aksam" +%s) - $NOW)) +else + REMANINING=$(($(gdate -d "$yatsi" +%s) - $NOW)) +fi + +if [ $REMANINING -gt 0 ]; then + if [ $(($REMANINING / 3600)) -gt 0 ]; then + REMANINING="$(($REMANINING / 3600))h $(($REMANINING / 60 % 60))m $(($REMANINING % 60))s" + elif [ $(($REMANINING / 60 % 60)) -gt 0 ]; then + REMANINING="$(($REMANINING / 60 % 60))m $(($REMANINING % 60))s" + else + REMANINING="$(($REMANINING % 60))s" + fi + REMANINING="☾ $REMANINING ☽" +else + REMANINING="" +fi + +output="$REMANINING $imsak ⚙︎ $gunes ⚙︎ $ogle ⚙︎ $ikindi ⚙︎ $aksam ⚙︎ $yatsi" + +echo $output diff --git a/commands/dashboard/current-weather.sh b/commands/dashboard/current-weather.sh index e930cb933..eecf63464 100755 --- a/commands/dashboard/current-weather.sh +++ b/commands/dashboard/current-weather.sh @@ -15,9 +15,18 @@ ## (see https://github.com/chubin/wttr.in/blob/master/share/static/malformed-response.html). # @raycast.refreshTime 1h -output=$(curl -s https://wttr.in/?format="%c+%f+%w{;}%l") +# get your ip +IP=$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com | sed -r 's/^"|"$//g') -IFS='{;}' read -ra array <<< "$output" -IFS=',' read -ra location <<< "${array[1]}" +# configure +UNIT="m" # celsius +# UNIT="u" # fahrenheit -echo "${array[0]} - ${location[0]}" \ No newline at end of file +# Automatic location +LOCATION=$(curl --silent "https://ipapi.co/${IP}/postal/") # automatic location +CITY=$(curl --silent "https://ipapi.co/${IP}/city/") # for output +# Manual location +# LOCATION="Berlin" # use this if you want to manually set your location +# CITY="${LOCATION}" + +curl --silent "https://wttr.in/${LOCATION}?format=${CITY}:+%c+%f+%w&${UNIT}" diff --git a/commands/dashboard/fear-index.sh b/commands/dashboard/fear-index.sh new file mode 100755 index 000000000..1756889f8 --- /dev/null +++ b/commands/dashboard/fear-index.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Fear Index +# @raycast.mode inline +# @raycast.refreshTime 12h + +# Optional parameters: +# @raycast.packageName Fear & Greed Index +# @raycast.icon 😱 + +# Documentation: +# @raycast.description Fear & Greed Index from CNN +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit + +url="https://money.cnn.com/data/fear-and-greed/" +result=$(curl -s $url ) + +result=$(echo "$result" | sed -e 's/(Fear)/↓/g') +result=$(echo "$result" | sed -e 's/(Greed)/↑/g') + +greedNow=$(echo "$result" | sed -n -e 's/.*
  • Fear & Greed Now: *\([^<]*\).*/\1/p') +greedPrevious=$(echo "$result" | sed -n -e 's/.*
  • Fear & Greed Previous Close: *\([^<]*\).*/\1/p') +greedWeek=$(echo "$result" | sed -n -e 's/.*
  • Fear & Greed 1 Week Ago: *\([^<]*\).*/\1/p') +greedMonth=$(echo "$result" | sed -n -e 's/.*
  • Fear & Greed 1 Month Ago: *\([^<]*\).*/\1/p') +greedYear=$(echo "$result" | sed -n -e 's/.*
  • Fear & Greed 1 Year Ago: *\([^<]*\).*/\1/p') + +echo "H:$greedNow D:$greedPrevious W:$greedWeek M:$greedMonth Y:$greedYear" diff --git a/commands/dashboard/firebase/example/Firebase-Realtime-Database.png b/commands/dashboard/firebase/example/Firebase-Realtime-Database.png new file mode 100644 index 000000000..4b3f3ed56 Binary files /dev/null and b/commands/dashboard/firebase/example/Firebase-Realtime-Database.png differ diff --git a/commands/dashboard/firebase/example/Result-Dark-Mode.png b/commands/dashboard/firebase/example/Result-Dark-Mode.png new file mode 100644 index 000000000..cc8bded56 Binary files /dev/null and b/commands/dashboard/firebase/example/Result-Dark-Mode.png differ diff --git a/commands/dashboard/firebase/example/Result-Light-Mode.png b/commands/dashboard/firebase/example/Result-Light-Mode.png new file mode 100644 index 000000000..0e8e6739c Binary files /dev/null and b/commands/dashboard/firebase/example/Result-Light-Mode.png differ diff --git a/commands/dashboard/firebase/firebase-authentication-get-token.template.sh b/commands/dashboard/firebase/firebase-authentication-get-token.template.sh new file mode 100755 index 000000000..51a505e68 --- /dev/null +++ b/commands/dashboard/firebase/firebase-authentication-get-token.template.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# !!! This script is only template, you can use it to write own script to get your data from Firebase project !!! +# If you use Firebase email and password authentication service, this script generates an authentication token +# and copy it to your clipboard. + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Get Authorization Token +# @raycast.mode compact +# @raycast.packageName Firebase Authentication + +# Optional parameters: +# @raycast.icon images/firebase.png +# +# Documentation: +# @raycast.description Get token from Firebase Authentication service +# @raycast.author João Melo +# @raycast.authorURL https://github.com/joaopcm + + +# you can find API_KEY on "Project settings -> General" page in Firebase +WEB_API_KEY="" +# you need to create an user with email and password on "Authentication -> Users" page in Firebase +EMAIL="" +PASSWORD="" + +if ! jq --version download &> /dev/null; then + echo "download jq is required (https://stedolan.github.io/jq/)."; + exit 1; +fi + +if [ -z "$WEB_API_KEY" ] || [ -z "$EMAIL" ] || [ -z "$PASSWORD" ]; then + echo "Error: You must provide WEB_API_KEY, EMAIL, and PASSWORD variables" + exit 1 +fi + +# Generate the request body +json_data=$( jq -n -c \ + --arg email "$EMAIL" \ + --arg password "$PASSWORD" \ + --arg returnSecureToken true '$ARGS.named' ) + +# Get data from Firebase Authentication service and copy the token to clipboard +curl -X POST \ + "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=$WEB_API_KEY" \ + --header 'Accept: */*' \ + --header 'User-Agent: Raycast' \ + --header 'Content-Type: application/json' \ + --data-raw "$json_data" | jq -r '.idToken' | pbcopy + +echo 'Authorization token copied to your clipboard!' diff --git a/commands/dashboard/firebase/firebase-realtime-db-get-data.template.sh b/commands/dashboard/firebase/firebase-realtime-db-get-data.template.sh new file mode 100755 index 000000000..83b520446 --- /dev/null +++ b/commands/dashboard/firebase/firebase-realtime-db-get-data.template.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# !!! This script is only template, you can use it to write own script to get your data from Firebase Realtime Database !!! +# I'm using an Arduino ESP-32 as outside weather station and I'm storing the temperature, humidity and barometric pressure into Firebase Realtime Database. +# I wrote this script to see those values directly in Raycast. This script is changing the text color based on the Light/Dark mode. +# Check example folder to see the result of my script and my Firebase Realtime Database structure. + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Get data from Firebase +# @raycast.mode inline +# @raycast.refreshTime 10m +# @raycast.packageName Firebase + +# Optional parameters: +# @raycast.icon images/firebase.png +# +# Documentation: +# @raycast.description Get values from Firebase Realtime Database +# @raycast.author Marek Mašek +# @raycast.authorURL https://github.com/marekmasek + + +# you can find API_KEY on "Project settings -> General" page in Firebase +WEB_API_KEY="" +# you need to create an user with email and password on "Authentication -> Users" page in Firebase +EMAIL="" +PASSWORD="" +# This is URL to your Realtime Database in Firebase, example of DB_URL: "https://${database-name}.${database-location}.firebasedatabase.app" +DB_URL="" + +if ! jq --version download &> /dev/null; then + echo "download jq is required (https://stedolan.github.io/jq/)."; + exit 1; +fi + +# Generate access token +TOKEN=$(curl -s -H "Content-Type: application/json" -d '{"email": "'$EMAIL'", "password": "'$PASSWORD'", "returnSecureToken": true}' 'https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key='$WEB_API_KEY | jq -r '.idToken') + +# Get data from Firebase Realtime Database +RESPONSE=$(curl -s $DB_URL'/.json?auth='$TOKEN) + +# This script is changing color of the output text based on the light/dark mode activated in macOS +COLOR_MODE=$(defaults read -g AppleInterfaceStyle 2>/dev/null) +MAIN_COLOR="\u001b[97m" + +if [ ${COLOR_MODE:-"Light"} == "Light" ]; then +MAIN_COLOR="\u001b[30m" +fi + +# Get specific field values, round them and print the output +echo $RESPONSE | jq -r 'def colors: + { + "main": "'$MAIN_COLOR'", + "reset": "\u001b[0m", +}; colors.reset + "Temp: " + colors.main + (.outside.temp*10.0|round/10.0|tostring) + " °C" + colors.reset +" Hum: " + colors.main + (.outside.humidity|round|tostring) + " %" + colors.reset + " BP: " + colors.main + (.outside.airPressure*10.0|round/10.0|tostring) + " hPa" + colors.reset + " Room Temp: " + colors.main + (.inside.temp*10.0|round/10.0|tostring) + " °C"' diff --git a/commands/dashboard/firebase/images/firebase.png b/commands/dashboard/firebase/images/firebase.png new file mode 100644 index 000000000..7e8999b91 Binary files /dev/null and b/commands/dashboard/firebase/images/firebase.png differ diff --git a/commands/dashboard/images/youtube.png b/commands/dashboard/images/youtube.png new file mode 100644 index 000000000..7f0395a7d Binary files /dev/null and b/commands/dashboard/images/youtube.png differ diff --git a/commands/dashboard/mood-meter/add-mood.js b/commands/dashboard/mood-meter/add-mood.js new file mode 100755 index 000000000..5dfade187 --- /dev/null +++ b/commands/dashboard/mood-meter/add-mood.js @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Add Mood +// @raycast.mode silent +// @raycast.packageName Dashboard +// +// Optional parameters: +// @raycast.icon ☕️ +// @raycast.argument1 { "type": "text", "placeholder": "mood rating 1-5",} +// @raycast.argument2 { "type": "text", "placeholder": "Day number", "optional":true } + + +// Documentation: +// @raycast.description Add mood value to current or specified date +// @raycast.author Federico Miraglia +// @raycast.authorURL https://github.com/Mitra98t + + +const { exec } = require('child_process') +const fs = require("fs") +const homedir = require('os').homedir(); +const filePath = `${homedir}/.moodTable.json` +let now = new Date() + +if (!fs.existsSync(filePath)) { + exec(`echo '{}' > ${filePath}`) +} + + +let json = fs.readFileSync(filePath) +let parsedMoods = JSON.parse(json) +var moodVal = Number(process.argv.slice(2)[0]) +var dayNum = Number(process.argv.slice(2)[1]) + +if (parsedMoods[now.getFullYear()] == null) { + parsedMoods[now.getFullYear()] = [[], [], [], [], [], [], [], [], [], [], [], []] + fs.writeFileSync(filePath, JSON.stringify(parsedMoods)) +} + +if (moodVal > 0 && moodVal <= 5) { + let dayVal = dayNum && dayNum > 0 && dayNum <= 31 ? dayNum : now.getDate() + let index = parsedMoods[now.getFullYear()][now.getMonth()].findIndex(d => d.date == dayVal) + if (index != -1) + parsedMoods[now.getFullYear()][now.getMonth()][index] = { date: dayVal, mood: moodVal } + else + parsedMoods[now.getFullYear()][now.getMonth()].push({ date: dayVal, mood: moodVal }) + fs.writeFileSync(filePath, JSON.stringify(parsedMoods)) + console.log("Added mood for today ☕️") +} +else console.log("Mood must be between 1 and 5") diff --git a/commands/dashboard/mood-meter/display-mood-month.js b/commands/dashboard/mood-meter/display-mood-month.js new file mode 100755 index 000000000..e0355f3f9 --- /dev/null +++ b/commands/dashboard/mood-meter/display-mood-month.js @@ -0,0 +1,91 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Display Mood Month +// @raycast.mode inline +// @raycast.refreshTime 5s +// @raycast.packageName Dashboard +// +// Optional parameters: +// @raycast.icon ☕️ + +// Documentation: +// @raycast.description Displays month mood table +// @raycast.author Federico Miraglia +// @raycast.authorURL https://github.com/Mitra98t + + +const { exec } = require('child_process') +const fs = require("fs") +const homedir = require('os').homedir(); +const filePath = `${homedir}/.moodTable.json` + +if (!fs.existsSync(filePath)) { + exec(`echo '{}' > ${filePath}`) +} +let json = fs.readFileSync(filePath) +let parsedMoods = JSON.parse(json) +let now = new Date() +let bars = { full: "▓", empty: "░" } + +if (parsedMoods[now.getFullYear()] == null) { + parsedMoods[now.getFullYear()] = [[], [], [], [], [], [], [], [], [], [], [], []] + fs.writeFileSync(filePath, JSON.stringify(parsedMoods)) + console.log("loading...") +} + +let resArr = []; +for (let i = 0; i < daysInMonth(now.getMonth(), now.getFullYear()); i++) { + let toAdd = 0 + for (const day of parsedMoods[now.getFullYear()][now.getMonth()]) { + if (day.date - 1 == i) { + toAdd = day.mood + } + } + resArr.push(toAdd) +} + + +let res = ""; +for (const day of resArr) { + let val = "" + switch (day) { + case 1: + val = `\x1b[38;5;88m${bars.full}\x1b[0m` + break; + case 2: + val = `\x1b[38;5;166m${bars.full}\x1b[0m` + break; + case 3: + val = `\x1b[38;5;214m${bars.full}\x1b[0m` + break; + case 4: + val = `\x1b[38;5;70m${bars.full}\x1b[0m` + break; + case 5: + val = `\x1b[38;5;46m${bars.full}\x1b[0m` + break; + + default: + val = `${bars.empty}` + break; + } + res += val +} + + +console.log(res) + +function daysInMonth(month, year) { + return month <= 6 + ? (month % 2 == 0 ? 31 : month == 1 ? isLeapYear(year) ? 29 : 28 : 30) + : (month % 2 == 0 ? 30 : 31) +} + +function isLeapYear(year) { + return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); +} diff --git a/commands/dashboard/mood-meter/display-mood-year.js b/commands/dashboard/mood-meter/display-mood-year.js new file mode 100755 index 000000000..5d2c8c78e --- /dev/null +++ b/commands/dashboard/mood-meter/display-mood-year.js @@ -0,0 +1,106 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Display Mood Year +// @raycast.mode fullOutput +// @raycast.packageName Dashboard +// +// Optional parameters: +// @raycast.icon ☕️ +// @raycast.argument1 { "type": "text", "placeholder": "Year", "optional": true} + +// Documentation: +// @raycast.description Displays year mood table +// @raycast.author Federico Miraglia +// @raycast.authorURL https://github.com/Mitra98t + + +const { exec } = require('child_process') +const fs = require("fs") +const homedir = require('os').homedir(); +const filePath = `${homedir}/.moodTable.json` +const monthNames = ["January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December" +]; + +if (!fs.existsSync(filePath)) { + exec(`echo '{}' > ${filePath}`) +} + +let json = fs.readFileSync(filePath) +let parsedMoods = JSON.parse(json) +let now = new Date() +let yearVal = Number(process.argv.slice(2)[0]) +let bars = { full: "▓", empty: "░" } + +if (parsedMoods[now.getFullYear()] == null) { + parsedMoods[now.getFullYear()] = [[], [], [], [], [], [], [], [], [], [], [], []] + fs.writeFileSync(filePath, JSON.stringify(parsedMoods)) +} + +let nowYear = yearVal && yearVal > 0 ? yearVal : now.getFullYear() +if (parsedMoods[nowYear] == null) { + console.log("Empty year!") + return +} +let resArr = []; +// * Mese parte da 0 (ottimo per index) +for (const month in parsedMoods[nowYear]) { + resArr.push([]); + for (let i = 0; i < daysInMonth(month, nowYear); i++) { + let toAdd = 0 + let dayIndex = parsedMoods[nowYear][month].findIndex(d => d.date == i + 1) + if (dayIndex != -1) + toAdd = parsedMoods[nowYear][month][dayIndex].mood + resArr[month].push(toAdd) + } +} + +let res = ""; +for (const month in resArr) { + res += `${monthNames[month]}\n` + for (const day of resArr[month]) { + let val = "" + + switch (day) { + case 1: + val = `\x1b[38;5;88m${bars.full}\x1b[0m` + break; + case 2: + val = `\x1b[38;5;166m${bars.full}\x1b[0m` + break; + case 3: + val = `\x1b[38;5;214m${bars.full}\x1b[0m` + break; + case 4: + val = `\x1b[38;5;70m${bars.full}\x1b[0m` + break; + case 5: + val = `\x1b[38;5;46m${bars.full}\x1b[0m` + break; + + default: + val = `${bars.empty}` + break; + } + res += val + } + if (month != 11) + res += `\n` +} + +console.log(res) + +function daysInMonth(month, year) { + return month <= 6 + ? (month % 2 == 0 ? 31 : month == 1 ? isLeapYear(year) ? 29 : 28 : 30) + : (month % 2 == 0 ? 30 : 31) +} + +function isLeapYear(year) { + return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); +} \ No newline at end of file diff --git a/commands/dashboard/open-ai-usage.sh b/commands/dashboard/open-ai-usage.sh new file mode 100755 index 000000000..fa3514992 --- /dev/null +++ b/commands/dashboard/open-ai-usage.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` +# I made this thanks to article by htnosm below +# https://htnosm.hatenablog.com/entry/2023/04/02/090000 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Check Usage of OpenAI API +# @raycast.mode inline +# @raycast.packageName System + +# +# Optional parameters: +# @raycast.icon 💲 +# +# Documentation: +# @raycast.description Get total usage of OpenAI API +# @raycast.author nagauta +# @raycast.authorURL https://github.com/nagauta + +_ORGANIZATION="" +_OPENAI_APIKEY="" + +_START_DATE="$(date -u +'%Y-%m')-01" +_END_DATE="$(date -u -v+1m +'%Y-%m')-01" +echo +TOTAL_USAGE=$(curl -sSf "https://api.openai.com/dashboard/billing/usage?end_date=${_END_DATE}&start_date=${_START_DATE}" \ +-H "authorization: Bearer ${_OPENAI_APIKEY}" \ +| jq -r '"$" + (.total_usage | round / 100 | tostring)') + +echo "Total Usage: ${TOTAL_USAGE}, Period: ${_START_DATE}-${_END_DATE}" \ No newline at end of file diff --git a/commands/dashboard/open-weather/weather-current.template.sh b/commands/dashboard/open-weather/weather-current.template.sh new file mode 100755 index 000000000..9faa211b2 --- /dev/null +++ b/commands/dashboard/open-weather/weather-current.template.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Current Weather +# @raycast.mode inline +# @raycast.refreshTime 30m +# @raycast.packageName OpenWeather + +# Optional parameters: +# @raycast.icon ⛅️ +# +# Documentation: +# @raycast.description Get current weather from OpenWeather +# @raycast.author Marek Mašek +# @raycast.authorURL https://github.com/marekmasek + +# you can generate API KEY here: https://home.openweathermap.org/api_keys +API_KEY="" +# city which will be used +CITY="prague" + +if ! jq --version download &> /dev/null; then + echo "download jq is required (https://stedolan.github.io/jq/)."; + exit 1; +fi + +# Get location coordinates +LOCATION_INFO=$(curl -s 'https://photon.komoot.io/api/?lang=en&limit=1&q='$CITY) + +LAT=$( jq -r '.features[0].geometry.coordinates[1]' <<< "${LOCATION_INFO}" ) +LON=$( jq -r '.features[0].geometry.coordinates[0]' <<< "${LOCATION_INFO}" ) + +# Get weather forecast from OpenWeather +RESPONSE=$(curl -s 'https://api.openweathermap.org/data/2.5/onecall?lat='$LAT'&lon='$LON'&units=metric&appid='$API_KEY) + +# This script is changing color of the output text based on the light/dark mode activated in macOS +COLOR_MODE=$(defaults read -g AppleInterfaceStyle 2>/dev/null) +MAIN_COLOR="\e[97m" + +if [ ${COLOR_MODE:-"Light"} == "Light" ]; then + MAIN_COLOR="\e[30m" +fi + +# Build output string +CURRENT_TEMP=$( jq -r '.current.temp*10.0|round/10.0|tostring' <<< "${RESPONSE}" ) + +# Print output string +printf "Temp: $MAIN_COLOR$CURRENT_TEMP °C" diff --git a/commands/dashboard/open-weather/weather-forecast.template.sh b/commands/dashboard/open-weather/weather-forecast.template.sh new file mode 100755 index 000000000..c25174437 --- /dev/null +++ b/commands/dashboard/open-weather/weather-forecast.template.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Dependency: This script requires `jq` cli installed: https://stedolan.github.io/jq/ +# Install via homebrew: `brew install jq` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Weather Forecast +# @raycast.mode inline +# @raycast.refreshTime 30m +# @raycast.packageName OpenWeather + +# Optional parameters: +# @raycast.icon ⛅️ +# +# Documentation: +# @raycast.description Get weather forecast from OpenWeather +# @raycast.author Marek Mašek +# @raycast.authorURL https://github.com/marekmasek + +# you can generate API KEY here: https://home.openweathermap.org/api_keys +API_KEY="" +# city which will be used +CITY="prague" + +if ! jq --version download &> /dev/null; then + echo "download jq is required (https://stedolan.github.io/jq/)."; + exit 1; +fi + +# Get location coordinates +LOCATION_INFO=$(curl -s 'https://photon.komoot.io/api/?lang=en&limit=1&q='$CITY) + +LAT=$( jq -r '.features[0].geometry.coordinates[1]' <<< "${LOCATION_INFO}" ) +LON=$( jq -r '.features[0].geometry.coordinates[0]' <<< "${LOCATION_INFO}" ) + +# Get weather forecast from OpenWeather +RESPONSE=$(curl -s 'https://api.openweathermap.org/data/2.5/onecall?lat='$LAT'&lon='$LON'&units=metric&appid='$API_KEY) + +# This script is changing color of the output text based on the light/dark mode activated in macOS +COLOR_MODE=$(defaults read -g AppleInterfaceStyle 2>/dev/null) +MAIN_COLOR="\e[97m" +RESET_COLOR="\e[0m" + +if [ ${COLOR_MODE:-"Light"} == "Light" ]; then + MAIN_COLOR="\e[30m" +fi + +# Build output string +OUTPUT_STRING= + +for i in {0..3} +do + WORKDAY=$( date -r $( jq -r '.daily['$i'].dt' <<< "${RESPONSE}") +%a) + TEMP_DAY=$( jq -r '.daily['$i'].temp.day*10.0|round/10.0|tostring' <<< "${RESPONSE}" ) + TEMP_NIGHT=$( jq -r '.daily['$i'].temp.night*10.0|round/10.0|tostring' <<< "${RESPONSE}" ) + + OUTPUT_STRING="$OUTPUT_STRING $WORKDAY: $MAIN_COLOR$TEMP_DAY°$RESET_COLOR / $MAIN_COLOR$TEMP_NIGHT°$RESET_COLOR" +done + +# Print output string +printf "$OUTPUT_STRING C" diff --git a/commands/dashboard/tesla.template.sh b/commands/dashboard/tesla.template.sh new file mode 100755 index 000000000..7d9ddad25 --- /dev/null +++ b/commands/dashboard/tesla.template.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Tesla +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon 🚘 + +# Documentation: +# @raycast.description Get the status of your Tesla vehicle +# @raycast.author Mortada Sarheed +# @raycast.authorURL https://github.com/mSarheed + +### SETUP ### +## Get your token ## +# On iOS you can use the app Auth app for Tesla link: https://apps.apple.com/us/app/auth-app-for-tesla/id1552058613 +# On Android you can use the app Tesla Tokens link: https://play.google.com/store/apps/details?id=net.leveugle.teslatokens&hl=en&gl=US +# Retrieve your refresh token and paste it into the varibale $refresh token + +# ONLY relevant if you have multiple Tesla Vehicles and on the same Tesla Account. +#If you have multiple Tesla Vehicles, please identify the ID of your vehicle. You can use this tool https://tesla-info.com/tesla-token.php to get the vehicle ID + +refresh_token='' + +url="https://tesla-info.com/api/control_v2.php?refresh=$refresh_token&request=get_data" + +data=$(curl -s "$url") + +# Name of vehicle +name=$(echo $data | grep -o '"display_name":"[^"]*"' | awk -F':' '{print $2}' | tr -d '"') + +# State +state=$(echo $data | grep -o '"state":[^,]*' | awk -F':' '{print $2}' | tr -d '"') +# Uppercase first letter +state="$(tr '[:lower:]' '[:upper:]' <<< ${state:0:1})${state:1}" +if [ "$state" == "Online" ]; then + state="\033[32m$state\033[0m ✅" +else + state="\033[31m$state\033[0m 💤" +fi + +# Vehicle locked or not +locked=$(echo $data | grep -o '"locked":[^,]*' | awk -F':' '{print $2}' | tr -d '"') +locked=$(echo $locked | tr -d ' ') + +if [ "$locked" = true ]; then + locked="\033[32mLocked\033[0m" +else + locked="\033[31mUnlocked\033[0m" +fi + +# Sentry mode +sentry=$(echo $data | grep -o '"dashcam_state":"[^"]*"' | awk -F':' '{print $2}' | tr -d '"') + +if [ "$sentry" == "Recording" ]; then + sentry="\033[31mRecording\033[0m" +else + sentry="\033[32mOff\033[0m" +fi + +battery_level=$(echo $data | grep -o '"battery_level":[^,]*' | awk -F':' '{print $2}' | tr -d '"') + +est_battery_range=$(echo $data | grep -o '"est_battery_range":[^,]*' | awk -F':' '{print $2}' | tr -d '"') +# Tesla shows the battery range estimate miles. If you need to show this in kilometeres instead, just uncomment the line below +est_battery_range=$(echo "$est_battery_range * 1.60934" | bc) +# Limit kilometers to no decimals +est_battery_range=$(printf "%.0f\n" "$est_battery_range") + +charging_state=$(echo $data | grep -o '"charging_state":"[^"]*"' | awk -F':' '{print $2}' | tr -d '"') + +minutes_to_full_charge=$(echo $data | grep -o '"minutes_to_full_charge":[^,]*' | awk -F':' '{print $2}' | tr -d '"') + +charge_limit=$(echo $data | grep -o '"charge_limit_soc":[^,]*' | awk -F':' '{print $2}' | tr -d '"') + +if [ "$name" == "" ]; then + echo -e "⚠️ \033[31mSORRY! - Something went wrong.\033[0m ⚠️" + echo -e '' + echo -e "\033[31mEither a bad token or the API service is down!\033[0m" +else + echo -e "🚘 Status of: \033[34m$name\033[0m 🚘" + echo '' + + echo -e "➡️ Vehicle State: $state" + echo '' + + echo -e "➡️ Doors: $locked 🔐" + echo '' + + echo -e "➡️ Sentry: $sentry 📸" + echo '' + + echo -e "➡️ Battery: \033[34m$battery_level%\033[0m 🔋" + echo '' + + echo -e "➡️ Est. range: \033[34m$est_battery_range km\033[0m 🛣️" + echo '' + + if [ "$charging_state" == "Charging" ]; then + echo -e "➡️ SoC Limit: \033[34m$charge_limit%\033[0m ⚡️" + echo '' + echo -e "➡️ Time left to charge limit: \033[34m$minutes_to_full_charge minutes\033[0m ⏰" + else + echo -e "➡️ Charging state: \033[31mNot charging\033[0m 🔌" + fi +fi \ No newline at end of file diff --git a/commands/dashboard/youtube-statistics.template.rb b/commands/dashboard/youtube-statistics.template.rb new file mode 100755 index 000000000..61be44262 --- /dev/null +++ b/commands/dashboard/youtube-statistics.template.rb @@ -0,0 +1,56 @@ +#!/usr/bin/env ruby + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title YouTube Statistics +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.packageName YouTube Statistics +# @raycast.icon images/youtube.png + +# Documentation: +# @raycast.description Shows YouTube Subscribers, Views and Videos +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit + +require "json" +require "net/http" +require "uri" + +# Channel ID is required +# To find your ID please follow instructions here: https://support.google.com/youtube/answer/3250431?hl=en +CHANNEL_ID = "" + +# Channel KEY is required +# To create your credentials please follow instructions here: https://developers.google.com/youtube/registering_an_application +CHANNEL_KEY = "" + +uri = URI("https://www.googleapis.com/youtube/v3/channels?part=statistics&id=#{CHANNEL_ID}&key=#{CHANNEL_KEY}&part=snippet") + +req = Net::HTTP::Get.new(uri) + +req_options = { + use_ssl: uri.scheme == "https", +} + +res = Net::HTTP.start(uri.hostname, uri.port, req_options) { |http| + http.request(req) +} + +if res.code == "200" + result = JSON.parse(res.body) + item = result["items"][0] + statistics = item["statistics"] + + title = item["snippet"]["title"] + subs = statistics["subscriberCount"] + views = statistics["viewCount"] + videos = statistics["videoCount"] + + puts "Channel: #{title}, Subs: #{subs}, Views: #{views}, Videos: #{videos}" +else + puts "Failed loading statistics" + exit(1) +end diff --git a/commands/dashboards/iperf-speed-test.template.sh b/commands/dashboards/iperf-speed-test.template.sh new file mode 100755 index 000000000..1e5f7d759 --- /dev/null +++ b/commands/dashboards/iperf-speed-test.template.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Dependency: This script requires `iPerf` to be installed: https://iperf.fr/iperf-download.php +# Install via homebrew: `brew install iperf` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Speed Test +# @raycast.mode inline +# @raycast.refreshTime 1h +# @raycast.packageName iPerf + +# Optional parameters: +# @raycast.icon 💾 + +# Documentation: +# @raycast.description Runs an iPerf Speed Test. +# @raycast.author Sam Wright +# @raycast.authorURL https://raycast.com/samywamy10 + +# Add the IP address of your iPerf server here +ip_address='192.168.86.44' + +if ! command -v iperf &> /dev/null; then + echo "iperf command is required ('brew install iperf' or https://iperf.fr/iperf-download.php)."; + exit 1; +fi + +{ iperf3 -c $ip_address | grep 'sender' | tail -n 1 | awk '{print $7 " " $8}' && date +'%-I:%M%p'; } | tr '\n' ' ' | awk '{$3="@ "$3; print $0}' + diff --git a/commands/developer-utils/aws/amazon-s3-download.sh b/commands/developer-utils/aws/amazon-s3-download.sh new file mode 100755 index 000000000..fcd54b887 --- /dev/null +++ b/commands/developer-utils/aws/amazon-s3-download.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title S3 Download +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon images/amazon-s3.png +# @raycast.packageName AWS + +# Documentation: +# @raycast.description Download from Amazon S3 via URL +# @raycast.argument1 { "type": "text", "placeholder": "s3://bucket/key" } +# @raycast.author Chris Cook +# @raycast.authorURL https://github.com/zirkelc + +URL=$1 + +# Ensure AWS CLI is installed +if ! command -v aws &> /dev/null; then + echo "AWS CLI not found. Please install AWS CLI." + echo "Installation instructions: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html" + exit 1 +fi + +# Try matching different S3 URL patterns +# https://dev.to/aws-builders/format-and-parse-amazon-s3-url-5e10 +if [[ $URL =~ ^https?://s3\.([a-z0-9-]+)\.amazonaws\.com/([^/]+)(/(.*))?$ ]]; then + # Regional hostname with path-style + # Example: https://s3.us-east-1.amazonaws.com/bucket/key + BUCKET="${BASH_REMATCH[2]}" + KEY="${BASH_REMATCH[4]}" +elif [[ $URL =~ ^https?://([^/]+)\.s3\.([a-z0-9-]+)\.amazonaws\.com(/(.*))?$ ]]; then + # Regional hostname with virtual-hosted-style + # Example: https://bucket.s3.us-east-1.amazonaws.com/key + BUCKET="${BASH_REMATCH[1]}" + KEY="${BASH_REMATCH[4]}" +elif [[ $URL =~ ^https?://s3\.amazonaws\.com/([^/]+)(/(.*))?$ ]]; then + # Legacy hostname with path-style + # Example: https://s3.amazonaws.com/bucket/key + BUCKET="${BASH_REMATCH[1]}" + KEY="${BASH_REMATCH[3]}" +elif [[ $URL =~ ^https?://([^/]+)\.s3\.amazonaws\.com(/(.*))?$ ]]; then + # Legacy hostname with virtual-hosted-style + # Example: https://bucket.s3.amazonaws.com/key + BUCKET="${BASH_REMATCH[1]}" + KEY="${BASH_REMATCH[3]}" +elif [[ $URL =~ ^s3://([^/]+)(/(.*))?$ ]]; then + # S3 URI + # Example: s3://bucket/key + BUCKET="${BASH_REMATCH[1]}" + KEY="${BASH_REMATCH[3]}" +else + echo "Invalid URL: $URL" + echo "URL must match recognized S3 patterns." + echo "Patterns:" + echo "- Global S3 URI: s3://bucket/key" + echo "- Regional Path-Style URL: https://s3.region.amazonaws.com/bucket/key" + echo "- Regional Virtual-Hosted-Style URL: https://bucket.s3.region.amazonaws.com/key" + echo "- Legacy Path-Style URL: https://s3.amazonaws.com/bucket/key" + echo "- Legacy Virtual-Hosted-Style URL: https://bucket.s3.amazonaws.com/key" + exit 1 +fi + +# Trim leading slash from KEY if present +KEY="${KEY#/}" + +# Check for empty bucket +if [[ -z "$BUCKET" ]]; then + echo "Error extracting bucket from URL: $URL" + exit 1 +fi + +DOWNLOAD_FOLDER="$HOME/Downloads" + +# Ensure download folder exists +if [ ! -d "$DOWNLOAD_FOLDER" ]; then + echo "Download folder does not exist" + exit 1 +fi + +# Print bucket and key +echo "Bucket: $BUCKET" +echo "Key: ${KEY:-}" +echo "Download: $DOWNLOAD_FOLDER" +echo "" + +if [ -z "$KEY" ]; then + # No key provided, download entire bucket + DOWNLOAD_PATH="$DOWNLOAD_FOLDER/$BUCKET" + echo "Downloading entire bucket s3://$BUCKET to $DOWNLOAD_PATH..." + RECURSIVE="--recursive" +else + # Check if the key ends with a slash, indicating it's likely a directory + if [[ "$KEY" == */ ]]; then + DOWNLOAD_PATH="$DOWNLOAD_FOLDER/$BUCKET/$KEY" + echo "Downloading directory s3://$BUCKET/$KEY to $DOWNLOAD_PATH..." + RECURSIVE="--recursive" + else + # Check if the object exists as a file + if aws s3api head-object --bucket "$BUCKET" --key "$KEY" &>/dev/null; then + # It's a file + FILENAME=$(basename "$KEY") + DOWNLOAD_PATH="$DOWNLOAD_FOLDER/$FILENAME" + echo "Downloading file s3://$BUCKET/$KEY to $DOWNLOAD_PATH..." + RECURSIVE="" + else + # It might be a directory without a trailing slash or it doesn't exist + # Try to list objects with this prefix + if aws s3api list-objects-v2 --bucket "$BUCKET" --prefix "$KEY/" --max-items 1 --query 'Contents[0].Key' --output text &>/dev/null; then + # It's a directory + DOWNLOAD_PATH="$DOWNLOAD_FOLDER/$BUCKET/$KEY" + echo "Downloading directory s3://$BUCKET/$KEY to $DOWNLOAD_PATH..." + RECURSIVE="--recursive" + else + echo "Error: No file or directory found at s3://$BUCKET/$KEY" + exit 1 + fi + fi + fi +fi + +# Perform the download +if aws s3 cp "s3://$BUCKET/${KEY:+$KEY}" "$DOWNLOAD_PATH" $RECURSIVE; then + echo "Downloaded successfully." + if [[ -n "$RECURSIVE" ]]; then + open "$DOWNLOAD_FOLDER/$BUCKET" + else + open "$DOWNLOAD_FOLDER" + fi +else + echo "Download failed. Error code: $?" + exit 1 +fi diff --git a/commands/developer-utils/aws/aws-sso-util.sh b/commands/developer-utils/aws/aws-sso-util.sh new file mode 100755 index 000000000..3507e2dd7 --- /dev/null +++ b/commands/developer-utils/aws/aws-sso-util.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Dependency: This script requires `aws-sso-util` installed: https://github.com/benkehoe/aws-sso-util +# Install via pipx: `pipx install aws-sso-util` following the instructions on https://github.com/benkehoe/aws-sso-util + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Single Sign-On +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/aws-sso-util.png +# @raycast.packageName AWS + +# Documentation: +# @raycast.description Login to AWS using aws-sso-util +# @raycast.author David Molinero +# @raycast.authorURL https://github.com/doktor500 + +export PATH="$PATH:${HOME}/.local/bin/"; + +if ! aws-sso-util &> /dev/null; then + echo "aws-sso-util is required (https://github.com/benkehoe/aws-sso-util)"; + exit 1; +fi + +aws-sso-util login --all; diff --git a/commands/developer-utils/aws/images/amazon-s3.png b/commands/developer-utils/aws/images/amazon-s3.png new file mode 100644 index 000000000..1dbadf37a Binary files /dev/null and b/commands/developer-utils/aws/images/amazon-s3.png differ diff --git a/commands/developer-utils/aws/images/aws-sso-util.png b/commands/developer-utils/aws/images/aws-sso-util.png new file mode 100644 index 000000000..ff27a5ef4 Binary files /dev/null and b/commands/developer-utils/aws/images/aws-sso-util.png differ diff --git a/commands/developer-utils/brew/brew-cask-upgrade.sh b/commands/developer-utils/brew/brew-cask-upgrade.sh new file mode 100755 index 000000000..a37e928cc --- /dev/null +++ b/commands/developer-utils/brew/brew-cask-upgrade.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Dependency: This script requires brew-cask-upgrade cli installed: https://github.com/buo/homebrew-cask-upgrade +# Install via Homebrew: brew tap buo/cask-upgrade + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Cask Upgrade +# @raycast.mode fullOutput +# @raycast.packageName Brew +# +# Optional parameters: +# @raycast.icon 🍺 +# +# Documentation: +# @raycast.description Updates brew and upgrades every outdated app +# @raycast.author LanikSJ +# @raycast.authorURL https://github.com/LanikSJ + +if ! command -v brew &> /dev/null; then + echo "brew command is required (https://brew.sh)."; + exit 1; +fi + +if ! command -v brew cu &> /dev/null; then + echo "brew cask upgrade command is required (https://github.com/buo/homebrew-cask-upgrade)."; + exit 1; +fi + +brew cu -ay diff --git a/commands/developer-utils/brew/brew-uninstall-application.sh b/commands/developer-utils/brew/brew-uninstall-application.sh new file mode 100755 index 000000000..fc05dcca6 --- /dev/null +++ b/commands/developer-utils/brew/brew-uninstall-application.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Uninstall +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 🍺 +# @raycast.argument1 { "type": "text", "placeholder": "Application" } +# @raycast.packageName Brew + +# Documentation: +# @raycast.description Uninstalls an Specified Application Using Homebrew +# @raycast.author StevenRCE0 +# @raycast.authorURL https://github.com/StevenRCE0 + +if ! command -v brew &> /dev/null; then + echo "brew command is required (https://brew.sh)."; + exit 1; +fi + +# Workaround for the error message +exec 2>/dev/null + +brew cat --cask "$1"; +if [[ ${PIPESTATUS[0]} -ne 0 ]]; then + brew cat "$1"; + if [[ ${PIPESTATUS[0]} -ne 0 ]]; then + echo "That's not a cask nor a formula. Check the spelling or try uninstalling it manually."; + exit 2; + fi + echo "brew uninstall --force --zap \"$1\"" | pbcopy; +else + echo "brew uninstall --cask --force --zap \"$1\"" | pbcopy; +fi + +echo "Copied command to clipboard."; diff --git a/commands/developer-utils/cheat.sh b/commands/developer-utils/cheat.sh index 2f3fb8f76..6a26292a2 100755 --- a/commands/developer-utils/cheat.sh +++ b/commands/developer-utils/cheat.sh @@ -19,10 +19,14 @@ language=$1 question=${2// /+} # Available styles: https://cht.sh/:styles-demo -style="native" +style="paraiso-dark" +# get a random answer each time +randnum=$((1 + (RANDOM%4))) + +# https://github.com/chubin/cheat.sh#usage if [ -z "$question" ]; then curl -s cht.sh/$language?style=$style else - curl -s cht.sh/$language/$question?style=$style + curl -s cht.sh/$language/$question/$randnum?style=$style fi diff --git a/commands/developer-utils/clear_xcode.sh b/commands/developer-utils/clear_xcode.sh index 8fcb47678..49083f353 100755 --- a/commands/developer-utils/clear_xcode.sh +++ b/commands/developer-utils/clear_xcode.sh @@ -21,6 +21,6 @@ xcrun simctl delete unavailable rm -rf ~/Library/Developer/Xcode/Archives rm -rf ~/Library/Developer/Xcode/DerivedData -rm -rf ~/Library/Developer/Xcode/iOS Device Logs +rm -rf ~/Library/Developer/Xcode/iOS\ Device\ Logs/ echo "Junk removed!" diff --git a/commands/developer-utils/cloudflare/images/cloudflare-logo.png b/commands/developer-utils/cloudflare/images/cloudflare-logo.png index bcc521c7f..13fab19bd 100644 Binary files a/commands/developer-utils/cloudflare/images/cloudflare-logo.png and b/commands/developer-utils/cloudflare/images/cloudflare-logo.png differ diff --git a/commands/developer-utils/copy-focused-finder-window-path.sh b/commands/developer-utils/copy-focused-finder-window-path.sh new file mode 100755 index 000000000..a6ffd3e49 --- /dev/null +++ b/commands/developer-utils/copy-focused-finder-window-path.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Copy Focused Finder Window Path +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📁 +# @raycast.packageName Developer Utils + +# Documentation: +# @raycast.description Copies full path of the currently focused Finder window +# @raycast.author Vishal Telangre +# @raycast.authorURL https://github.com/vishaltelangre + +path=$(osascript <<'EOF' + tell application "Finder" + if exists Finder window 1 then + get the POSIX path of (target of Finder window 1 as alias) + else + get the POSIX path of (desktop as alias) + end if + end tell +EOF +) +echo $path | tr -d '\n' | pbcopy +echo "Copied $path to clipboard" diff --git a/commands/developer-utils/copy-ssh-public-key.sh b/commands/developer-utils/copy-ssh-public-key.sh new file mode 100755 index 000000000..42361686f --- /dev/null +++ b/commands/developer-utils/copy-ssh-public-key.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Copy SSH Public Key +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🔑 +# @raycast.packageName Developer Utils + +# Documentation: +# @raycast.description Copying the default SSH public key to the clipboard +# @raycast.author Angelos Michalopoulos +# @raycast.authorURL https://github.com/miagg + +if [ -f "$HOME/.ssh/id_rsa.pub" ]; then + pbcopy < "$HOME/.ssh/id_rsa.pub" +elif [ -f "$HOME/.ssh/id_dsa.pub" ]; then + pbcopy < "$HOME/.ssh/id_dsa.pub" +elif [ -f "$HOME/.ssh/id_ed25519.pub" ]; then + pbcopy < "$HOME/.ssh/id_ed25519.pub" +else + echo "No SSH public key was found" + exit 1 +fi + +echo "SSH public key was copied to the clipboard" + diff --git a/commands/developer-utils/create-image-from-code.sh b/commands/developer-utils/create-image-from-code.sh index a95720a2c..2a3aa7792 100755 --- a/commands/developer-utils/create-image-from-code.sh +++ b/commands/developer-utils/create-image-from-code.sh @@ -7,7 +7,7 @@ # Optional parameters: # @raycast.icon ./images/ray-so.png -# @raycast.argument1 { "type": "text", "placeholder": "Title", "optional": true } +# @raycast.argument1 { "type": "text", "placeholder": "Title", "optional": true, "percentEncoded": true } # Documentation: # @raycast.description Create beautiful images of your code with https://ray.so @@ -23,22 +23,16 @@ BACKGROUND="true" DARK_MODE="true" # Set padding. Available options: 16, 32, 64 or 128 PADDING="64" -# Set language. Available options: shell, c-like (C++), csharp, clojure, coffeescript, crystal, css, d, dart, diff, dockerfile, elm, erlang, fortran, gherkin, +# Set language. Available options: shell, cpp (C/C++), csharp, clojure, coffeescript, crystal, css, d, dart, diff, dockerfile, elm, erlang, fortran, gherkin, # go, groovy, haskell, xml, java, javascript, json, jsx, julia, kotlin, latex, lisp, lua, markdown, mathematica, octave, nginx, objectivec, ocaml (F#), perl, php, # powershell, python, r, ruby, rust, scala, smalltalk, sql, swift, typescript, (for Tsx, use jsx), twig, verilog, vhdl, xquery, yaml LANGUAGE="auto" # Main: - -if [[ -z "$1" ]] -then - TITLE="Untitled-1" -else - TITLE=$(php -r "echo urlencode(\"$1\");") -fi +TITLE=${1:-"Untitled"} CODE=$(pbpaste | base64) # Urlencode any + symbols in the base64 encoded string CODE=${CODE//+/%2B} -open "https://ray.so/?colors=$COLORS&background=$BACKGROUND&darkMode=$DARK_MODE&padding=$PADDING&title=$TITLE&code=$CODE&language=$LANGUAGE" +open "https://ray.so?#title=$TITLE&code=$CODE&colors=$COLORS&background=$BACKGROUND&darkMode=$DARK_MODE&padding=$PADDING&title=$TITLE&code=$CODE&language=$LANGUAGE" diff --git a/commands/developer-utils/delete-current-line.applescript b/commands/developer-utils/delete-current-line.applescript new file mode 100755 index 000000000..b80fce527 --- /dev/null +++ b/commands/developer-utils/delete-current-line.applescript @@ -0,0 +1,20 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Delete Current Line +# @raycast.mode silent +# @raycast.packageName Developer Utilities + +# Optional parameters: +# @raycast.icon ⌨️ + +# Documentation: +# @raycast.description This script deletes the line at cursor position. +# @raycast.author Annie Ma +# @raycast.authorURL http://www.anniema.co/ + +tell application "System Events" + keystroke "k" using control down + keystroke (ASCII character 8) using command down +end tell diff --git a/commands/developer-utils/docker/images/docker.png b/commands/developer-utils/docker/images/docker.png index a1a2db229..60b8e2fe6 100644 Binary files a/commands/developer-utils/docker/images/docker.png and b/commands/developer-utils/docker/images/docker.png differ diff --git a/commands/developer-utils/docker/run-docker.sh b/commands/developer-utils/docker/run-docker.sh new file mode 100755 index 000000000..3333bf035 --- /dev/null +++ b/commands/developer-utils/docker/run-docker.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Dependency: This script requires `docker for mac` to be installed: https://docs.docker.com/docker-for-mac/install/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Run +# @raycast.mode compact +# @raycast.packageName Docker + +# Optional parameters: +# @raycast.icon ▶️ +# @raycast.needsConfirmation true +# @raycast.argument1 { "type": "text", "placeholder": "Port Machine" } +# @raycast.argument2 { "type": "text", "placeholder": "Port Docker" } +# @raycast.argument3 { "type": "text", "placeholder": "Image", "percentEncoded": true} + +# Documentation: +# @raycast.description Runs a Docker container +# @raycast.author Fabián Delgado +# @raycase.authorURL https://github.com/fabdelgado + +if ! command -v docker &> /dev/null; then + echo "docker for mac is required (https://docs.docker.com/docker-for-mac/install/)."; + exit 1; +fi + +if ! [[ "$(docker image inspect $3 2> /dev/null)" == "" ]]; then + docker pull $3 +fi + +docker run -d --rm -p $(($1)):$(($2)) $3 + +echo "Successfully running ${3}🚀" \ No newline at end of file diff --git a/commands/developer-utils/docker/stop-docker.sh b/commands/developer-utils/docker/stop-docker.sh new file mode 100755 index 000000000..54266420c --- /dev/null +++ b/commands/developer-utils/docker/stop-docker.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Dependency: This script requires `docker for mac` to be installed: https://docs.docker.com/docker-for-mac/install/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Stop +# @raycast.mode compact +# @raycast.packageName Docker + +# Optional parameters: +# @raycast.icon ⏹️ +# @raycast.needsConfirmation true +# @raycast.argument1 { "type": "text", "placeholder": "Image", "percentEncoded": true} + +# Documentation: +# @raycast.description Stops a Docker container +# @raycast.author Fabián Delgado +# @raycase.authorURL https://github.com/fabdelgado + +if ! command -v docker &> /dev/null; then + echo "docker for mac is required (https://docs.docker.com/docker-for-mac/install/)."; + exit 1; +fi + +docker stop $1 + +echo "Successfully stopped $1 ⏹️" \ No newline at end of file diff --git a/commands/developer-utils/generate-ulid.sh b/commands/developer-utils/generate-ulid.sh new file mode 100755 index 000000000..8b50b5bbf --- /dev/null +++ b/commands/developer-utils/generate-ulid.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Dependency: This script requires `ulid` installed: https://github.com/ulid/javascript +# Install via npm: `npm install -g ulid` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Generate ULID +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 💻 +# @raycast.packageName Developer Utilities + +# Documentation: +# @raycast.description Generates a ULID and copies it to the clipboard. +# @raycast.author David Molinero +# @raycast.authorURL https://github.com/doktor500 + +NODE_PATH=$(which node | xargs readlink | xargs dirname); + +export PATH="$PATH:${NODE_PATH}"; + +if ! ulid &> /dev/null; then + echo "ulid is required (https://github.com/ulid/javascript)"; + exit 1; +fi + +id=$(ulid); +echo "$id" | pbcopy; +echo "$id"; diff --git a/commands/developer-utils/genpasswd.py b/commands/developer-utils/genpasswd.py index 1219c62d5..8aa42cdb1 100755 --- a/commands/developer-utils/genpasswd.py +++ b/commands/developer-utils/genpasswd.py @@ -74,19 +74,23 @@ def superset( return result - -sets = sys.argv[1] -if sets.isdigit(): - sets = int(sets) +# stops a crash if this doesn't exist +if len(sys.argv) > 1: + sets = sys.argv[1] + if sets.isdigit(): + sets = int(sets) else: # do not crash, set fallback value sets = 3 - - -s_len = sys.argv[2] -if s_len.isdigit(): - s_len = int(s_len) +# stops a crash if this doesn't exist +if len(sys.argv) > 2: + s_len = sys.argv[2] + if s_len.isdigit(): + s_len = int(s_len) else: s_len = 6 -print(superset(length=sets, set_length=s_len)) +# This auto copies the password to the user's clipboard +generatedPassword = superset(length=sets, set_length=s_len) +subprocess.run("pbcopy", universal_newlines=True, input=generatedPassword) +print(generatedPassword) diff --git a/commands/developer-utils/get-ttfb.sh b/commands/developer-utils/get-ttfb.sh new file mode 100755 index 000000000..802c09271 --- /dev/null +++ b/commands/developer-utils/get-ttfb.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Get TTFB (Time to First Byte) +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon 🕐 +# @raycast.packageName Developer Utils + +# Documentation: +# @raycast.description Get the TTFB (Time to First Byte) of a website +# @raycast.author Angelos Michalopoulos +# @raycast.authorURL https://github.com/miagg +# @raycast.argument1 { "type": "text", "placeholder": "URL" } + +if [ -z "$1" ]; then + echo "Please provide a domain" + exit 1 +fi + +# If no url scheme is provided, add https:// +if [[ "$1" == http* ]]; then + url="$1" +else + url="https://$1" +fi + +echo "Pinging: $url..." + +curl -o /dev/null \ + -H 'Cache-Control: no-cache' \ + -s \ + -w "\nLookup time:\t\t\t%{time_namelookup}\nConnect time:\t\t%{time_connect}\nSSL handshake time:\t%{time_appconnect}\nPre-Transfer time:\t%{time_pretransfer}\nRedirect time:\t\t%{time_redirect}\nTime to first byte:\t%{time_starttransfer}\n\nTotal time:\t\t\t%{time_total}\n" \ + --fail \ + --silent \ + --show-error \ + "$url" diff --git a/commands/developer-utils/git/images/git.png b/commands/developer-utils/git/images/git.png index 1c6362dc4..46569b177 100644 Binary files a/commands/developer-utils/git/images/git.png and b/commands/developer-utils/git/images/git.png differ diff --git a/commands/developer-utils/github/github-contributions.template.sh b/commands/developer-utils/github/github-contributions.template.sh new file mode 100755 index 000000000..131154d49 --- /dev/null +++ b/commands/developer-utils/github/github-contributions.template.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title GitHub Contributions +# @raycast.mode inline +# @raycast.refreshTime 2h + +# Optional parameters: +# @raycast.packageName GitHub Contributions +# @raycast.icon images/github-logo.png +# @raycast.iconDark images/github-logo-iconDark.png + +# Documentation: +# @raycast.description Show GitHub user contributions from the current year +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit + +# GitHub username is required +username="" + +url="https://github.com/users/${username}/contributions" +result=$(curl -s $url ) +resultFilter=$(echo "$result" | sed -n -e '/

    /,/<\/h2>/p') +resultCleanup=$(echo "$resultFilter" | sed -e 's/<[^>]*>//g') + +echo $resultCleanup diff --git a/commands/developer-utils/github/github-repository-stars_all_repos_template.rb b/commands/developer-utils/github/github-repository-stars_all_repos_template.rb new file mode 100755 index 000000000..6e327ccef --- /dev/null +++ b/commands/developer-utils/github/github-repository-stars_all_repos_template.rb @@ -0,0 +1,93 @@ +#!/usr/bin/env ruby + +# How to use this script? +# It's a template which needs further setup. Duplicate the file, +# remove `.template.` from the filename, set an API token. + +# Parameters + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Repository Statistics +# @raycast.mode inline +# @raycast.refreshTime 1h + +# Optional parameters: +# @raycast.packageName GitHub +# @raycast.icon ⭐️ + +# Documentation: +# @raycast.description Show statistics of your GitHub repositories. +# @raycast.author Valdir Junior +# @raycast.authorURL https://github.com/valdirjunior011 + +# Configuration + +# Insert a token with access to your repository (https://github.com/settings/tokens) +$api_token = "" + +# Owner of the repositories +$owner = "" + +# Main program + +require "json" +require "net/http" +require "uri" + +if $api_token.nil? + puts "API token not provided" + exit(1) +end + +uri = URI("https://api.github.com/users/#{$owner}/repos") +req = Net::HTTP::Get.new(uri) +req["Authorization"] = "token #{$api_token}" + +req_options = { + use_ssl: uri.scheme == "https", +} + +res = Net::HTTP.start(uri.hostname, uri.port, req_options) { |http| + http.request(req) +} + +if res.code == "200" + repositories = JSON.parse(res.body) + + total_stars = 0 + total_forks = 0 + total_subscribers = 0 + + repositories.each do |repo| + repo_name = repo["full_name"] + url = repo["html_url"] + + repo_uri = URI("https://api.github.com/repos/#{repo_name}") + repo_req = Net::HTTP::Get.new(repo_uri) + repo_req["Authorization"] = "token #{$api_token}" + + repo_res = Net::HTTP.start(repo_uri.hostname, repo_uri.port, req_options) { |http| + http.request(repo_req) + } + + if repo_res.code == "200" + result = JSON.parse(repo_res.body) + + stars = result["stargazers_count"] + forks = result["forks_count"] + subscribers = result["subscribers_count"] + + total_stars += stars + total_forks += forks + total_subscribers += subscribers + + else + puts "Failed loading statistics for #{repo_name}" + end + end + + puts "Owner: #{$owner} Total Stars: #{total_stars}, Forks: #{total_forks}, Subs: #{total_subscribers}" +else + puts "Failed loading repositories for #{$owner}" +end \ No newline at end of file diff --git a/commands/developer-utils/github/github-review-requests.template.rb b/commands/developer-utils/github/github-review-requests.template.rb new file mode 100755 index 000000000..8d1e59a7b --- /dev/null +++ b/commands/developer-utils/github/github-review-requests.template.rb @@ -0,0 +1,71 @@ +#!/usr/bin/env ruby + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Show Review Requests +# @raycast.mode inline +# @raycast.description Display number of Pull Requests requesting your review +# +# Optional parameters: +# @raycast.packageName GitHub +# @raycast.icon images/github-logo.png +# @raycast.iconDark images/github-logo-iconDark.png +# +# Conditional parameters: +# @raycast.refreshTime 5m +# +# Credits +# @raycast.author Vince Picone +# @raycast.authorURL https://github.com/vpicone + +require 'json' +require 'net/http' +require 'uri' + +# Insert a personal access token (https://github.com/settings/tokens) +# No additional permissions are required, leave all the options unchecked +API_TOKEN = '' + +if API_TOKEN.empty? + puts 'No API token provided' + exit(1) +end + +RED = 31 +GREEN = 32 +YELLOW = 33 + + +uri = URI('https://api.github.com/graphql') +req = Net::HTTP::Post.new(uri) +req['Authorization'] = "token #{API_TOKEN}" +req.body = '{ "query": "query {search(query:\"type:pr is:open user-review-requested:@me\",type:ISSUE,first:10){issueCount edges{node{...on PullRequest{number title url}}}}}" }' +req_options = { + use_ssl: uri.scheme == 'https' +} + +res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| + http.request(req) +end + +if res.code == '200' + result = JSON.parse(res.body) + + review_requests = result['data']['search']['edges'] + review_requests_count = result['data']['search']['issueCount'] + + if review_requests_count == 0 + message = "No open review requests 🎉" + puts "\e[#{GREEN}m#{message}\e[0m" + else + color = (review_requests_count <= 5) ? YELLOW : RED + message = "You have #{review_requests_count} open review requests" + puts "\e[#{color}m#{message}\e[0m" + review_requests.each do |pr| + puts "##{pr['node']['number']} #{pr['node']['title']} (#{pr['node']['url']})" + end + end +else + puts 'Failed loading GitHub review requests' + exit(1) +end diff --git a/commands/developer-utils/gitlab/images/gitlab.png b/commands/developer-utils/gitlab/images/gitlab.png index 82f995a30..6bc104476 100644 Binary files a/commands/developer-utils/gitlab/images/gitlab.png and b/commands/developer-utils/gitlab/images/gitlab.png differ diff --git a/commands/developer-utils/google/images/google-psi-logo.png b/commands/developer-utils/google/images/google-psi-logo.png index 0f19613ae..63ae58539 100644 Binary files a/commands/developer-utils/google/images/google-psi-logo.png and b/commands/developer-utils/google/images/google-psi-logo.png differ diff --git a/commands/developer-utils/images/cheat.png b/commands/developer-utils/images/cheat.png index 4c8bef208..9fe82e46c 100644 Binary files a/commands/developer-utils/images/cheat.png and b/commands/developer-utils/images/cheat.png differ diff --git a/commands/developer-utils/images/flutter.png b/commands/developer-utils/images/flutter.png index 0fb504633..b0930f7ae 100644 Binary files a/commands/developer-utils/images/flutter.png and b/commands/developer-utils/images/flutter.png differ diff --git a/commands/developer-utils/images/genpasswd-iconDark.png b/commands/developer-utils/images/genpasswd-iconDark.png index 18c2b8652..3d4c4909b 100644 Binary files a/commands/developer-utils/images/genpasswd-iconDark.png and b/commands/developer-utils/images/genpasswd-iconDark.png differ diff --git a/commands/developer-utils/images/genpasswd.png b/commands/developer-utils/images/genpasswd.png index a5c480ef3..872ebf593 100644 Binary files a/commands/developer-utils/images/genpasswd.png and b/commands/developer-utils/images/genpasswd.png differ diff --git a/commands/developer-utils/images/go.png b/commands/developer-utils/images/go.png index 2a5e3d238..0913dd6b9 100644 Binary files a/commands/developer-utils/images/go.png and b/commands/developer-utils/images/go.png differ diff --git a/commands/developer-utils/images/ia-logo.jpg b/commands/developer-utils/images/ia-logo.jpg index fa28b1ba1..69372d39a 100644 Binary files a/commands/developer-utils/images/ia-logo.jpg and b/commands/developer-utils/images/ia-logo.jpg differ diff --git a/commands/developer-utils/images/jwt-logo.png b/commands/developer-utils/images/jwt-logo.png index 64377950f..8f355c2e7 100644 Binary files a/commands/developer-utils/images/jwt-logo.png and b/commands/developer-utils/images/jwt-logo.png differ diff --git a/commands/developer-utils/images/microlink.png b/commands/developer-utils/images/microlink.png new file mode 100644 index 000000000..b11420cf0 Binary files /dev/null and b/commands/developer-utils/images/microlink.png differ diff --git a/commands/developer-utils/images/pa11y-logo.png b/commands/developer-utils/images/pa11y-logo.png index 0e492640c..a76c575ca 100644 Binary files a/commands/developer-utils/images/pa11y-logo.png and b/commands/developer-utils/images/pa11y-logo.png differ diff --git a/commands/developer-utils/images/ray-so.png b/commands/developer-utils/images/ray-so.png index 426b9703c..6e91ca061 100644 Binary files a/commands/developer-utils/images/ray-so.png and b/commands/developer-utils/images/ray-so.png differ diff --git a/commands/developer-utils/images/run-bash-command.png b/commands/developer-utils/images/run-bash-command.png index 45582a020..891b11179 100644 Binary files a/commands/developer-utils/images/run-bash-command.png and b/commands/developer-utils/images/run-bash-command.png differ diff --git a/commands/developer-utils/ip/get-external-ip-v4.sh b/commands/developer-utils/ip/get-external-ip-v4.sh index c9fad244a..e7aeb87fe 100755 --- a/commands/developer-utils/ip/get-external-ip-v4.sh +++ b/commands/developer-utils/ip/get-external-ip-v4.sh @@ -13,5 +13,5 @@ # @raycast.description Copies the external IPv4 to the clipboard. ip=$(curl -4 -s -m 5 https://api.ipify.org) -echo $ip | pbcopy +echo $ip | tr -d '\n' | pbcopy echo "Copied $ip" diff --git a/commands/developer-utils/ip/get-external-ip-v6.sh b/commands/developer-utils/ip/get-external-ip-v6.sh index 561c41a97..35fc4ac31 100755 --- a/commands/developer-utils/ip/get-external-ip-v6.sh +++ b/commands/developer-utils/ip/get-external-ip-v6.sh @@ -13,5 +13,5 @@ # @raycast.description Copies the external IPv6 to the clipboard. ip=$(curl -6 -s -m 5 https://api64.ipify.org) -echo $ip | pbcopy +echo $ip | tr -d '\n' | pbcopy echo "Copied $ip" diff --git a/commands/developer-utils/ip/get-local-ip-v4.sh b/commands/developer-utils/ip/get-local-ip-v4.sh index 3f4612d69..7a080b9fc 100755 --- a/commands/developer-utils/ip/get-local-ip-v4.sh +++ b/commands/developer-utils/ip/get-local-ip-v4.sh @@ -14,5 +14,5 @@ ip=$(ifconfig | grep 'inet.*broadcast' | awk '{print $2}') IFS=' ' read -ra array <<< "$ip" -echo ${array[0]} | pbcopy +echo ${array[0]} | tr -d '\n' | pbcopy echo "Copied $ip" diff --git a/commands/developer-utils/ip/get-local-ip-v6.sh b/commands/developer-utils/ip/get-local-ip-v6.sh index 9c0f56bb6..e5778a3dd 100755 --- a/commands/developer-utils/ip/get-local-ip-v6.sh +++ b/commands/developer-utils/ip/get-local-ip-v6.sh @@ -14,5 +14,5 @@ ip=$(ifconfig | grep 'inet6.*%en' | awk '{print $2}') IFS=' ' read -ra array <<< "$ip" -echo ${array[0]} | pbcopy +echo ${array[0]} | tr -d '\n' | pbcopy echo "Copied $ip" diff --git a/commands/developer-utils/is-it-up.sh b/commands/developer-utils/is-it-up.sh index 2e754b952..dde2acae3 100755 --- a/commands/developer-utils/is-it-up.sh +++ b/commands/developer-utils/is-it-up.sh @@ -10,7 +10,7 @@ # @raycast.packageName Developer Utils # # Optional parameters: -# @raycast.icon 🩺 +# @raycast.icon 🌐 # @raycast.argument1 { "type": "text", "placeholder": "Website" } # # Documentation: @@ -23,7 +23,19 @@ if ! command -v jq &> /dev/null; then exit 1; fi -status_code=$(curl --silent "https://isitup.org/$1.json" | jq '.status_code') +# Get the url from the user input +url=$1 + +# Remove any protocol prefix (http:// or https://) +url=${url#*://} + +# Remove any www. prefix +url=${url#www.} + +# Remove any trailing slash +url=${url%/} + +status_code=$(curl --silent "https://isitup.org/${url}.json" | jq '.status_code') # Sample output: # @@ -37,16 +49,16 @@ status_code=$(curl --silent "https://isitup.org/$1.json" | jq '.status_code') # } case $status_code in - 1) echo "Up: $1" + 1) echo "$1 is up!" exit 0 ;; - 2) echo "Down: $1" + 2) echo "$1 is down." exit 0 ;; 3) echo "Invalid domain: $1" exit 1 ;; - *) echo "Unknown status code ($status_code): $1" + *) echo "Error: unknown status code ($status_code): $1" exit 1 ;; esac diff --git a/commands/developer-utils/join-lines.sh b/commands/developer-utils/join-lines.sh new file mode 100755 index 000000000..93ce8b6e8 --- /dev/null +++ b/commands/developer-utils/join-lines.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Join Clipboard Lines by Delimiter +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🛠 +# @raycast.argument1 { "type": "text", "placeholder": "delimiter", "optional": true } +# @raycast.packageName Developer Utilities + +# Documentation: +# @raycast.description Join multiple lines of text from the clipboard into a single line, separated by a specified delimiter. +# @raycast.author decaylala +# @raycast.authorURL https://github.com/decaylala + +pbpaste | awk -v d="$1" 'BEGIN {ORS=d} {print}' | awk -v d="$1" 'sub(d "$", "")' | pbcopy +echo 'Copied to clipboard' diff --git a/commands/developer-utils/microlink.sh b/commands/developer-utils/microlink.sh new file mode 100755 index 000000000..5df5492fe --- /dev/null +++ b/commands/developer-utils/microlink.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Dependency: This script requires `microlink` CLI installed: https://microlink.io/docs/api/getting-started/cli +# Install via npm: `npm install -g microlink` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Microlink API +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon images/microlink.png +# @raycast.argument1 { "type": "text", "placeholder": "url", "optional": false } + +# Documentation: +# @raycast.description Microlink API integration +# @raycast.author Kiko Beats +# @raycast.authorURL https://github.com/kikobeats + +microlink "$1" diff --git a/commands/developer-utils/minikube/minikube-config-set.sh b/commands/developer-utils/minikube/minikube-config-set.sh new file mode 100755 index 000000000..b33e1e414 --- /dev/null +++ b/commands/developer-utils/minikube/minikube-config-set.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Config Set +# @raycast.mode compact +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon ⚙️ + +# Documentation: +# @raycast.description Pause Minikube cluster +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz +# @raycast.argument1 { "type": "text", "placeholder": "property name" } +# @raycast.argument2 { "type": "text", "placeholder": "property value" } + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube config set "$1" "$2" + +echo "Set $1 to $2" diff --git a/commands/developer-utils/minikube/minikube-pause.sh b/commands/developer-utils/minikube/minikube-pause.sh new file mode 100755 index 000000000..d71db923e --- /dev/null +++ b/commands/developer-utils/minikube/minikube-pause.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Pause +# @raycast.mode compact +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon ⏸ + +# Documentation: +# @raycast.description Pause Minikube cluster +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube pause + +echo "Cluster paused" diff --git a/commands/developer-utils/minikube/minikube-start.sh b/commands/developer-utils/minikube/minikube-start.sh new file mode 100755 index 000000000..ef3d7193d --- /dev/null +++ b/commands/developer-utils/minikube/minikube-start.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start +# @raycast.mode compact +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon 🚀 + +# Documentation: +# @raycast.description Start Minikube cluster +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube start + +echo "Cluster started 🚀" diff --git a/commands/developer-utils/minikube/minikube-status.sh b/commands/developer-utils/minikube/minikube-status.sh new file mode 100755 index 000000000..0fef89a87 --- /dev/null +++ b/commands/developer-utils/minikube/minikube-status.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Status +# @raycast.mode fullOutput +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon ℹ️ + +# Documentation: +# @raycast.description Show Minikube cluster status +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube status diff --git a/commands/developer-utils/minikube/minikube-stop.sh b/commands/developer-utils/minikube/minikube-stop.sh new file mode 100755 index 000000000..fef1a424c --- /dev/null +++ b/commands/developer-utils/minikube/minikube-stop.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Stop +# @raycast.mode compact +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon 🤖 + +# Documentation: +# @raycast.description Stops a running Minikube cluster +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube stop + +echo "Cluster stopped" diff --git a/commands/developer-utils/minikube/minikube-unpause.sh b/commands/developer-utils/minikube/minikube-unpause.sh new file mode 100755 index 000000000..a1faccc6e --- /dev/null +++ b/commands/developer-utils/minikube/minikube-unpause.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `minikube` to be installed: https://minikube.sigs.k8s.io/docs/start/ + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Unpause +# @raycast.mode compact +# @raycast.packageName Minikube + +# Optional parameters: +# @raycast.icon ⏸ + +# Documentation: +# @raycast.description Pause Minikube cluster +# @raycast.author Daniils Petrovs +# @raycast.authorURL https://danpetrov.xyz + +if ! command -v minikube &> /dev/null; then + echo "minikube is required (https://minikube.sigs.k8s.io)."; + exit 1; +fi + +minikube unpause + +echo "Cluster unpaused" diff --git a/commands/developer-utils/run-command-in-finder.sh b/commands/developer-utils/run-command-in-finder.sh index 5dba6c30e..2c7486a31 100755 --- a/commands/developer-utils/run-command-in-finder.sh +++ b/commands/developer-utils/run-command-in-finder.sh @@ -16,7 +16,13 @@ # @raycast.description Runs the specified command in the path of the frontmost Finder window. dir=$(osascript <<'EOF' - tell application "Finder" to get the POSIX path of (target of front window as alias) + tell application "Finder" + if exists Finder window 1 then + get the POSIX path of (target of Finder window 1 as alias) + else + get the POSIX path of (desktop as alias) + end if + end tell EOF ) -( cd "$dir" && $@ ) \ No newline at end of file +( cd "$dir" && $@ ) diff --git a/commands/developer-utils/toggle_ssh_proxy_tunnel.template.sh b/commands/developer-utils/toggle_ssh_proxy_tunnel.template.sh new file mode 100755 index 000000000..80f8e054d --- /dev/null +++ b/commands/developer-utils/toggle_ssh_proxy_tunnel.template.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# Raycast Script Command +# +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle SSH SOCKS Tunnel +# @raycast.mode silent +# +# Optional parameters: +# @raycast.icon 🔒 +# @raycast.packageName Developer Utilities +# +# Documentation: +# @raycast.description Toggles an SSH SOCKS proxy tunnel on and off. +# @raycast.author Andrii Barabash +# @raycast.authorURL https://github.com/AndriiBarabash + +# --- Configuration --- +# Replace these with your own values +SSH_USER="" +SSH_HOST="" +SSH_PORT="" +INTERFACE="" # e.g., "Wi-Fi" or "Ethernet" +PROXY_PORT="" # e.g., 1080 +# --- End Configuration --- + +if pgrep -f "ssh -D $PROXY_PORT" >/dev/null; then + echo "SSH SOCKS tunnel is running. Turning it off..." + + # Kill the SSH process + pkill -f "ssh -D $PROXY_PORT" + + # Disable the SOCKS proxy + networksetup -setsocksfirewallproxystate "$INTERFACE" off + + echo "Tunnel and proxy disabled." +else + echo "SSH SOCKS tunnel is not running. Turning it on..." + + # Start the SSH tunnel + ssh -D "$PROXY_PORT" -f -C -q -N -p "$SSH_PORT" "$SSH_USER"@"$SSH_HOST" + + # Enable the SOCKS proxy + networksetup -setsocksfirewallproxy "$INTERFACE" 127.0.0.1 "$PROXY_PORT" + networksetup -setsocksfirewallproxystate "$INTERFACE" on + + echo "Tunnel and proxy enabled." +fi diff --git a/commands/developer-utils/view-scripting-dictionary.sh b/commands/developer-utils/view-scripting-dictionary.sh new file mode 100755 index 000000000..aba167141 --- /dev/null +++ b/commands/developer-utils/view-scripting-dictionary.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title View Scripting Dictionary +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📖 +# @raycast.argument1 { "type": "text", "placeholder": "Application", "optional": true } +# @raycast.packageName Developer Utils + +# Documentation: +# @raycast.description Opens the Scripting Dictionary for the given application, defaulting to the active application if none is provided. +# @raycast.author Stephen Kaplan +# @raycast.authorURL https://github.com/SKaplanOfficial + +if [ -z "$1" ]; then + open -a "Script Editor" "$(osascript -e "tell application \"System Events\" to get POSIX path of application file of (first application process whose frontmost is true)")" + exit +fi +open -a "Script Editor" "$(osascript -e "POSIX path of (path to application \"$1\")")" + diff --git a/commands/developer-utils/images/vscode.png b/commands/developer-utils/vscode/images/vscode.png similarity index 100% rename from commands/developer-utils/images/vscode.png rename to commands/developer-utils/vscode/images/vscode.png diff --git a/commands/developer-utils/open-folder-in-vscode.applescript b/commands/developer-utils/vscode/open-folder-in-vscode.applescript similarity index 94% rename from commands/developer-utils/open-folder-in-vscode.applescript rename to commands/developer-utils/vscode/open-folder-in-vscode.applescript index cbf07e5ba..e44687e4b 100755 --- a/commands/developer-utils/open-folder-in-vscode.applescript +++ b/commands/developer-utils/vscode/open-folder-in-vscode.applescript @@ -10,7 +10,7 @@ # @raycast.icon images/vscode.png # # Documentation: -# @raycast.description Opens current topmost directory in VSCode +# @raycast.description Opens current topmost directory in VS Code # @raycast.author chohner # @raycast.authorURL https://github.com/chohner diff --git a/commands/developer-utils/vscode/open-project-in-vscode.sh b/commands/developer-utils/vscode/open-project-in-vscode.sh new file mode 100755 index 000000000..3b686fecc --- /dev/null +++ b/commands/developer-utils/vscode/open-project-in-vscode.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Project +# @raycast.mode compact +# @raycast.packageName VS Code + +# Optional parameters: +# @raycast.icon images/vscode.png +# @raycast.argument1 { "type": "text", "placeholder": "Directory Name", "optional": false } + +# Documentation +# @raycast.description Finds path to the given directory which must be a VS Code or Git project and opens it with VS Code +# @raycast.author Maksim Zemlyanikin +# @raycast.authorURL https://github.com/Maksimka101 + +directory=$1 +foundDirectory='' +if [ -z $directory ]; then + echo "Empty directory is not allowed" + exit 1 +fi + +set +e +directories=$(find $HOME -name $directory -type d -maxdepth 5) +for dir in $directories; do + if [[ -n "$(find $dir -name .vscode -maxdepth 1)" || -n "$(find $dir -name .git -maxdepth 1)" ]]; then + foundDirectory=$dir + fi +done + +if [ -n $foundDirectory ]; then + echo "Project directory is $foundDirectory" + if [ -n $(which code) ]; then + code -n $foundDirectory + else + open -n -b \"com.microsoft.VSCode\" --args $foundDirectory + fi +else + echo "No such directory in '$HOME' with name $1" +fi +exit 0 diff --git a/commands/developer-utils/xcode/images/xcode.png b/commands/developer-utils/xcode/images/xcode.png new file mode 100644 index 000000000..cfc576b9a Binary files /dev/null and b/commands/developer-utils/xcode/images/xcode.png differ diff --git a/commands/developer-utils/xcode/xcode-last-project.sh b/commands/developer-utils/xcode/xcode-last-project.sh new file mode 100755 index 000000000..4635e9bf1 --- /dev/null +++ b/commands/developer-utils/xcode/xcode-last-project.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Last Project +# @raycast.mode silent +# @raycast.packageName Developer Utilities +# +# Optional parameters: +# @raycast.icon images/xcode.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Open the last Xcode project +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +mdfind "(kMDItemContentType =='com.apple.xcode.project') || (kMDItemContentType == 'com.apple.dt.document.workspace') || (kMDItemContentType == 'com.apple.dt.playground')" -0 | xargs -0 ls -t | head -1 | cut -f1 -d: | awk '{print "\x27" $0 "\x27" }' | xargs open \ No newline at end of file diff --git a/commands/developer-utils/xcode/xcode-recent-project.sh b/commands/developer-utils/xcode/xcode-recent-project.sh new file mode 100755 index 000000000..bd1ec1dff --- /dev/null +++ b/commands/developer-utils/xcode/xcode-recent-project.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Recent Project +# @raycast.mode silent +# @raycast.packageName Developer Utilities +# @raycast.argument1 { "type": "text", "placeholder": "Project name", "percentEncoded": true} +# +# Optional parameters: +# @raycast.icon images/xcode.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Open recent Xcode project +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +mdfind "(kMDItemFSName == '*$1*'c) && ((kMDItemContentType =='com.apple.xcode.project') || (kMDItemContentType == 'com.apple.dt.document.workspace') || (kMDItemContentType == 'com.apple.dt.playground'))" -0 | xargs -0 ls -t | head -1 | cut -f1 -d: | awk '{print "\x27" $0 "\x27" }' | xargs open \ No newline at end of file diff --git a/commands/extensions.json b/commands/extensions.json index 1cadc6eb2..ded9889a8 100644 --- a/commands/extensions.json +++ b/commands/extensions.json @@ -18,7 +18,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-04T18:14:11+00:00", + "createdAt" : "2021-02-04T18:14:11Z", "currentDirectoryPath" : null, "description" : "Increase brightness of Elgato Key Light by 5%.", "filename" : "elgato-key-light-increase-brightness.template.rb", @@ -27,7 +27,7 @@ "dark" : null, "light" : "images\/elgato.png" }, - "identifier" : "1a5ced3b0eed17feb59e06d3b82a3235", + "identifier" : "0efbf0fc0112b8007548e0036851da5a", "isTemplate" : true, "language" : "ruby", "mode" : "silent", @@ -37,7 +37,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Increase Brightness", - "updatedAt" : "2021-02-04T18:14:11+00:00" + "updatedAt" : "2021-02-04T18:14:11Z" }, { "authors" : [ @@ -46,7 +46,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-04T18:14:11+00:00", + "createdAt" : "2021-02-04T18:14:11Z", "currentDirectoryPath" : null, "description" : "Turn on Elgato Key Light.", "filename" : "elgato-key-light-turn-on.template.rb", @@ -55,7 +55,7 @@ "dark" : null, "light" : "images\/elgato.png" }, - "identifier" : "7a42a1bde2de4c6d198d04a2f527ea4a", + "identifier" : "6bded1a4b3b945dff30a380936a1741f", "isTemplate" : true, "language" : "ruby", "mode" : "silent", @@ -65,7 +65,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Turn On", - "updatedAt" : "2021-02-04T18:14:11+00:00" + "updatedAt" : "2021-02-04T18:14:11Z" }, { "authors" : [ @@ -74,7 +74,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-04T18:14:11+00:00", + "createdAt" : "2021-02-04T18:14:11Z", "currentDirectoryPath" : null, "description" : "Turn off Elgato Key Light.", "filename" : "elgato-key-light-turn-off.template.rb", @@ -83,7 +83,7 @@ "dark" : null, "light" : "images\/elgato.png" }, - "identifier" : "ae1a70aec03ee5e74c3b504ab0bd5873", + "identifier" : "d5b4e7d38d50f78801983fed1ab9c710", "isTemplate" : true, "language" : "ruby", "mode" : "silent", @@ -93,7 +93,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Turn Off", - "updatedAt" : "2021-02-04T18:14:11+00:00" + "updatedAt" : "2021-02-04T18:14:11Z" }, { "authors" : [ @@ -102,7 +102,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-04T18:14:11+00:00", + "createdAt" : "2021-02-04T18:14:11Z", "currentDirectoryPath" : null, "description" : "Decrease brightness of Elgato Key Light by 5%.", "filename" : "elgato-key-light-decrease-brightness.template.rb", @@ -111,7 +111,7 @@ "dark" : null, "light" : "images\/elgato.png" }, - "identifier" : "e507bdea0b66b92dfeb1753d50336677", + "identifier" : "6b6890b0f6e356b44fd73d3d7e30c902", "isTemplate" : true, "language" : "ruby", "mode" : "silent", @@ -121,7 +121,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Decrease Brightness", - "updatedAt" : "2021-02-04T21:22:04+00:00" + "updatedAt" : "2021-02-04T21:22:04Z" } ] }, @@ -147,7 +147,7 @@ }, "identifier" : "e46e06b26b98f5f9b2e390565bb48a1b", "isTemplate" : true, - "language" : "zx", + "language" : "node", "mode" : "inline", "needsConfirmation" : null, "packageName" : "Philips Hue", @@ -175,7 +175,7 @@ }, "identifier" : "fb89b0817302263bcaae8586039493f8", "isTemplate" : true, - "language" : "zx", + "language" : "node", "mode" : "silent", "needsConfirmation" : null, "packageName" : "Philips Hue", @@ -203,7 +203,7 @@ }, "identifier" : "f6fb1c021d088eac4eeabfbe0ffcff23", "isTemplate" : true, - "language" : "zx", + "language" : "node", "mode" : "inline", "needsConfirmation" : null, "packageName" : "Philips Hue", @@ -231,7 +231,7 @@ }, "identifier" : "6f9d2bf502507e1a6d6ab2fe57c71e94", "isTemplate" : true, - "language" : "zx", + "language" : "node", "mode" : "silent", "needsConfirmation" : null, "packageName" : "Philips Hue", @@ -249,6 +249,34 @@ "name" : "Conversions", "path" : "conversions", "scriptCommands" : [ + { + "authors" : [ + { + "name" : "RealTong", + "url" : "https:\/\/raycast.com\/RealTong" + } + ], + "createdAt" : "2024-03-21T12:03:11+08:00", + "currentDirectoryPath" : null, + "description" : "Add spaces between Chinese and English, number or symbols.", + "filename" : "space-fixer.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📝" + }, + "identifier" : "01ce6b040aecd6bcd05519b1880154c6", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Space Fixer", + "updatedAt" : "2024-03-22T18:09:49+08:00" + }, { "authors" : [ { @@ -303,7 +331,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Rich Text to Markdown", - "updatedAt" : "2021-07-23T17:21:58-04:00" + "updatedAt" : "2024-08-28T20:37:53+08:00" }, { "authors" : null, @@ -354,7 +382,63 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "What Day Is...", - "updatedAt" : "2021-02-21T22:11:45+00:00" + "updatedAt" : "2021-02-21T22:11:45Z" + }, + { + "authors" : [ + { + "name" : "Michael Bianco", + "url" : "https:\/\/github.com\/iloveitaly" + } + ], + "createdAt" : "2023-08-16T08:02:16-06:00", + "currentDirectoryPath" : null, + "description" : "A script to take the HTML pastboard type filled by google docs and convert it to nicely formatted markdown", + "filename" : "google-docs-to-markdown.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "2b7d768fc7ffd6b6990173914031c150", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Convert Google Docs Rich Text HTML to Markdown", + "updatedAt" : "2023-08-16T08:02:16-06:00" + }, + { + "authors" : [ + { + "name" : "atzzCokeK", + "url" : "https:\/\/github.com\/atzzCokeK" + } + ], + "createdAt" : "2023-10-10T22:38:42+09:00", + "currentDirectoryPath" : null, + "description" : "Quickly and simply generate a markdown formatted link with your specified URL and title.", + "filename" : "inputs-to-markdown-link.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🔗" + }, + "identifier" : "f7dee34add22537a9662c9fc31f36827", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Simple Markdown Link Generator", + "updatedAt" : "2023-10-17T22:58:55+09:00" }, { "authors" : [ @@ -382,7 +466,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Trim Newlines and Tabs", - "updatedAt" : "2021-08-23T10:12:46+00:00" + "updatedAt" : "2021-08-23T10:12:46Z" }, { "authors" : [ @@ -468,6 +552,118 @@ "title" : "Unicode Superscript", "updatedAt" : "2021-04-12T10:16:23-07:00" }, + { + "authors" : [ + { + "name" : "wyhaya", + "url" : "https:\/\/github.com\/wyhaya" + } + ], + "createdAt" : "2021-11-04T03:59:40+08:00", + "currentDirectoryPath" : null, + "description" : "QR Code Generation", + "filename" : "qrcode-generate.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/qrcode.png" + }, + "identifier" : "df265285ae7ca5b6305aaada0055f872", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "QR Code Generation", + "updatedAt" : "2021-11-04T03:59:40+08:00" + }, + { + "authors" : [ + { + "name" : "Maxim Borzov", + "url" : "https:\/\/github.com\/borzov" + } + ], + "createdAt" : "2024-05-21T11:23:12+03:00", + "currentDirectoryPath" : null, + "description" : "Convert Markdown formatting to Telegram format, excluding processing inside code blocks or quotes", + "filename" : "markdown-to-telegram.py", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔄" + }, + "identifier" : "14c19002feb2ab3f839073ec5eda7c30", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Convert Markdown to Telegram Format", + "updatedAt" : "2024-05-21T11:23:12+03:00" + }, + { + "authors" : [ + { + "name" : "Ryan Nystrom", + "url" : "https:\/\/github.com\/rnystrom" + } + ], + "createdAt" : "2021-11-03T16:00:51-04:00", + "currentDirectoryPath" : null, + "description" : "Create a markdown table template", + "filename" : "create-markdown-table.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🧱" + }, + "identifier" : "94dda699695f45d3562beb2acc1bed61", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Markdown Table", + "updatedAt" : "2021-11-03T20:04:02Z" + }, + { + "authors" : [ + { + "name" : "Michael Bianco", + "url" : "https:\/\/github.com\/iloveitaly" + } + ], + "createdAt" : "2022-03-31T08:03:29-06:00", + "currentDirectoryPath" : null, + "description" : "A script to click the \"Paste and Match Style\" menu item, even if it's disabled", + "filename" : "paste-as-plain-text.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "a9b5ccbfa4a899aa9435317bc6d839a2", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Paste and Match Style", + "updatedAt" : "2022-03-31T14:05:46Z" + }, { "authors" : [ { @@ -522,7 +718,63 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Unix Time Reader From Clipboard", - "updatedAt" : "2021-03-30T15:34:59+00:00" + "updatedAt" : "2021-03-30T15:34:59Z" + }, + { + "authors" : [ + { + "name" : "Diego Lopes", + "url" : "https:\/\/github.com\/Dihgg" + } + ], + "createdAt" : "2021-11-04T07:20:46-03:00", + "currentDirectoryPath" : "~", + "description" : "Decode QR Code from screenshot to clipboard using https:\/\/qrserver.com\/", + "filename" : "qr-code-screenshot-to-text.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/qrcode.icns" + }, + "identifier" : "dd588b0008181dc53aab2019603ca17b", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "QR Code", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Screenshot QR Code to Clipboard", + "updatedAt" : "2021-11-04T07:20:46-03:00" + }, + { + "authors" : [ + { + "name" : "Alessandra Pereyra", + "url" : "https:\/\/github.com\/alessandrapereyra" + } + ], + "createdAt" : "2022-09-08T18:50:04-05:00", + "currentDirectoryPath" : null, + "description" : "Automatically take the content found in the clipboard and turn it into Markdown", + "filename" : "clipboard-to-markdown.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "f45f6235a350476d4f5f896a12250d19", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Clipboard to Markdown", + "updatedAt" : "2022-09-08T18:50:04-05:00" }, { "authors" : [ @@ -608,6 +860,34 @@ "title" : "Vaporwave Text", "updatedAt" : "2021-04-12T10:16:23-07:00" }, + { + "authors" : [ + { + "name" : "xxchan", + "url" : "https:\/\/github.com\/xxchan" + } + ], + "createdAt" : "2023-01-31T01:00:23+01:00", + "currentDirectoryPath" : null, + "description" : "OCR Image from Clipboard", + "filename" : "clipboard-ocr.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "1fa48d4acba0f0992f2e9b9bf586703d", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Clipboard", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "OCR Image", + "updatedAt" : "2023-01-31T01:00:23+01:00" + }, { "authors" : [ { @@ -663,6 +943,34 @@ "schemaVersion" : 1, "title" : "Convert Epoch to Human-Readable Date", "updatedAt" : "2021-03-30T17:29:45+08:00" + }, + { + "authors" : [ + { + "name" : "Michael Bianco", + "url" : "https:\/\/github.com\/iloveitaly" + } + ], + "createdAt" : "2023-07-03T15:03:20-06:00", + "currentDirectoryPath" : null, + "description" : "This script will convert raw HTML on your clipboard to rich text. It requires pandoc to be installed on your system.", + "filename" : "raw-html-to-rich-text-clipboard.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "8acc19746e49d7fc76584c8ea631b545", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Conversions", + "path" : "conversions\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Convert Raw HTML to Rich Text on Clipboard", + "updatedAt" : "2023-07-03T21:06:13Z" } ], "subGroups" : [ @@ -696,7 +1004,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Title Case", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" }, { "authors" : [ @@ -724,7 +1032,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Kebab Case", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" }, { "authors" : [ @@ -752,7 +1060,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Snake Case", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" }, { "authors" : [ @@ -780,7 +1088,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Uppercase", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" }, { "authors" : [ @@ -808,7 +1116,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Lowercase", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" }, { "authors" : [ @@ -836,7 +1144,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Camel Case", - "updatedAt" : "2021-03-24T04:47:26-04:00" + "updatedAt" : "2022-02-22T15:13:31+01:00" } ] } @@ -846,6 +1154,34 @@ "name" : "Browsing", "path" : "browsing", "scriptCommands" : [ + { + "authors" : [ + { + "name" : "JD Solanki", + "url" : "https:\/\/github.com\/jd-solanki" + } + ], + "createdAt" : "2021-09-24T08:28:06+01:00", + "currentDirectoryPath" : null, + "description" : "Open current website in guest profile\/mode", + "filename" : "open-in-guest-profile.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "7e65f41bd6407a5464ce4b1289b0abad", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open in guest profile", + "updatedAt" : "2022-10-31T11:55:21Z" + }, { "authors" : [ { @@ -874,6 +1210,34 @@ "title" : "Shorten URL with Bitly", "updatedAt" : "2021-02-12T11:49:03+01:00" }, + { + "authors" : [ + { + "name" : "Eliot Hertenstein", + "url" : "https:\/\/github.com\/eIiot" + } + ], + "createdAt" : "2022-02-06T18:08:25-08:00", + "currentDirectoryPath" : null, + "description" : "Create a short URL using Shlink", + "filename" : "shlink-create-short-url.template.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/shlink.png" + }, + "identifier" : "19917e997ea6a87adb283ca739ec7f4f", + "isTemplate" : true, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Shlink", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Short URL", + "updatedAt" : "2022-02-20T23:31:37-08:00" + }, { "authors" : [ { @@ -881,7 +1245,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-11-09T17:16:09+00:00", + "createdAt" : "2020-11-09T17:16:09Z", "currentDirectoryPath" : null, "description" : "Shorten the URL in your Clipboard with Tiny URL.", "filename" : "shorten-url.sh", @@ -890,7 +1254,7 @@ "dark" : null, "light" : "🔗" }, - "identifier" : "3ace97396b27d3677bdd47488bb7c31e", + "identifier" : "87e7fd07ae15344a2c3bbdfa528403ab", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -933,8 +1297,64 @@ { "authors" : [ { - "name" : "Kirill Gorbachyonok", - "url" : "https:\/\/github.com\/japanese-goblinn" + "name" : "Yasutaka Nishii", + "url" : "https:\/\/github.com\/ystknsh" + } + ], + "createdAt" : "2024-08-29T16:26:42+09:00", + "currentDirectoryPath" : null, + "description" : "Open multiple websites on Safari using list of URLs", + "filename" : "open-multiple-websites-on-safari.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📚" + }, + "identifier" : "be278c484ca03c82e901a345ff6e6b72", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browsing", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Multiple Websites on Safari", + "updatedAt" : "2024-09-03T11:24:41Z" + }, + { + "authors" : [ + { + "name" : "raulanatol", + "url" : "https:\/\/github.com\/raulanatol" + } + ], + "createdAt" : "2021-09-24T08:28:06+01:00", + "currentDirectoryPath" : null, + "description" : "Open the current site in a private browser", + "filename" : "to-private-browsing.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🥽" + }, + "identifier" : "9f2e428dc1c53dc016ace6bb81f7e155", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Current Website to Private Browser", + "updatedAt" : "2021-09-24T08:28:06+01:00" + }, + { + "authors" : [ + { + "name" : "Kirill Gorbachyonok", + "url" : "https:\/\/github.com\/japanese-goblinn" } ], "createdAt" : "2020-11-08T20:30:05+03:00", @@ -958,6 +1378,34 @@ "title" : "Copy Current Window URLs", "updatedAt" : "2020-11-23T12:53:48-05:00" }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-11-16T15:01:51+01:00", + "currentDirectoryPath" : null, + "description" : "Shorten any github.com URL", + "filename" : "git-io.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/git-io.png" + }, + "identifier" : "2ca33ad632de2d16f4bbbaa3806b3843", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browsing", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Shorten URL from GitHub", + "updatedAt" : "2021-11-16T15:01:51+01:00" + }, { "authors" : [ { @@ -986,6 +1434,34 @@ "title" : "Screenshot Website", "updatedAt" : "2020-11-28T13:47:03-05:00" }, + { + "authors" : [ + { + "name" : "Levi Nelson", + "url" : "https:\/\/github.com\/LeviticusNelson" + } + ], + "createdAt" : "2022-09-20T11:37:44-07:00", + "currentDirectoryPath" : null, + "description" : "Open new window in default browser", + "filename" : "new-browser-window.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🌐" + }, + "identifier" : "982df81504688c40ed7c99f11913cdd2", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Browser Utils", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "New Browser Window", + "updatedAt" : "2022-09-20T11:37:44-07:00" + }, { "authors" : [ { @@ -1014,6 +1490,90 @@ "title" : "Peek a link", "updatedAt" : "2021-02-04T15:17:52-05:00" }, + { + "authors" : [ + { + "name" : "Samuel Henry", + "url" : "https:\/\/bne.sh" + } + ], + "createdAt" : "2022-06-20T10:20:50+10:00", + "currentDirectoryPath" : null, + "description" : "Transform the clipboard contents to a short Emoji URL", + "filename" : "short-url-emoji.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔗" + }, + "identifier" : "e811b99614fa16b00c890cede57aee7b", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Browsing", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Shorten URL with Emojis", + "updatedAt" : "2022-06-20T10:20:50+10:00" + }, + { + "authors" : [ + { + "name" : "Kailash Yellareddy", + "url" : "https:\/\/github.com\/kyellareddy" + } + ], + "createdAt" : "2023-07-25T21:56:55+05:30", + "currentDirectoryPath" : null, + "description" : "Opens current Youtube Shorts video in the normal video player by replacing \"\/shorts\/\" with \"\/v\/\" in the url.", + "filename" : "Youtube Shorts in video player.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📹" + }, + "identifier" : "9bdd39853c92b430aa2dcff8f1dfb7ec", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Youtube Shorts In Video Player", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Youtube Shorts in video player", + "updatedAt" : "2023-07-25T16:29:37Z" + }, + { + "authors" : [ + { + "name" : "Tahsin Yazkan", + "url" : "https:\/\/github.com\/thsnyzkn" + } + ], + "createdAt" : "2023-01-31T03:02:13+03:00", + "currentDirectoryPath" : null, + "description" : "Open chrome with web security option disabled.", + "filename" : "open-chrome-without-cors.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/chrome-icon.png" + }, + "identifier" : "a6e07f1845ea9de231cf3c943d0aa522", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : false, + "packageName" : "Chrome", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open without CORS", + "updatedAt" : "2023-01-31T03:02:13+03:00" + }, { "authors" : [ { @@ -1040,7 +1600,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Current Page URL", - "updatedAt" : "2020-11-23T12:53:48-05:00" + "updatedAt" : "2022-02-22T10:00:48Z" }, { "authors" : [ @@ -1069,6 +1629,34 @@ "schemaVersion" : 1, "title" : "Copy Current Page URL", "updatedAt" : "2021-05-10T00:36:12+02:00" + }, + { + "authors" : [ + { + "name" : "cSharp", + "url" : "https:\/\/github.com\/noidwasavailable" + } + ], + "createdAt" : "2023-08-10T17:56:44+09:00", + "currentDirectoryPath" : null, + "description" : "Convert Twitter link to Nitter", + "filename" : "convert-twitter-to-nitter.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🐔" + }, + "identifier" : "42048eefcf9facbebf2aeef19f24c2e8", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Convert Twitter To Nitter", + "path" : "browsing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Convert Twitter to Nitter", + "updatedAt" : "2023-08-10T17:56:44+09:00" } ] }, @@ -1181,7 +1769,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Finder", - "updatedAt" : "2021-05-31T10:08:39+00:00" + "updatedAt" : "2021-05-31T10:08:39Z" }, { "authors" : [ @@ -1209,7 +1797,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Devdocs", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : null, @@ -1232,7 +1820,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Applications", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, @@ -1255,7 +1843,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open URL From Clipboard", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -1395,7 +1983,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Dash", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -1448,6 +2036,29 @@ "title" : "Open Desktop", "updatedAt" : "2021-04-27T16:34:55-04:00" }, + { + "authors" : null, + "createdAt" : "2020-09-30T12:56:01+01:00", + "currentDirectoryPath" : null, + "description" : "Opens the last file that was downloaded", + "filename" : "open-last-downloaded.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/folder-downloads.png" + }, + "identifier" : "3ad14a4406ddef3807e797a606132af0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Navigation", + "path" : "navigation\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Last Downloaded", + "updatedAt" : "2022-03-30T20:25:55Z" + }, { "authors" : null, "createdAt" : "2020-09-30T12:56:01+01:00", @@ -1520,7 +2131,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Clipboard URL on Desktop", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, @@ -1567,35 +2178,34 @@ "schemaVersion" : 1, "title" : "Open Downloads", "updatedAt" : "2021-04-28T11:35:25-04:00" - } - ] - }, - { - "name" : "Google Maps", - "path" : "google-maps", - "scriptCommands" : [ + }, { - "authors" : null, - "createdAt" : "2021-02-19T09:10:21+00:00", + "authors" : [ + { + "name" : "Chris Bailey", + "url" : "https:\/\/raycast.com\/that70schris" + } + ], + "createdAt" : "2024-08-13T00:40:38-04:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "google-maps.sh", - "hasArguments" : true, + "description" : "Easily hide your foremost application", + "filename" : "hide-application.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/google-map.png" + "light" : "🫥" }, - "identifier" : "43ab852f28e3b03e0e66fe5309f259b1", + "identifier" : "47f61692f25fabb33a1748ded306439c", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Google Maps", - "path" : "google-maps\/", + "packageName" : "Navigation", + "path" : "navigation\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search Google Maps", - "updatedAt" : "2021-05-10T08:44:51+02:00" + "title" : "Hide Current Application", + "updatedAt" : "2024-08-13T00:40:38-04:00" } ] }, @@ -1607,114 +2217,395 @@ ], "subGroups" : [ { - "name" : "Samsung Tv", - "path" : "samsung-tv", + "name" : "Denon AVR", + "path" : "denon-avr", "scriptCommands" : [ { "authors" : [ { - "name" : "Darryl Brooks", - "url" : "https:\/\/github.com\/DarrylBrooks97" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-08-20T17:37:33-05:00", + "createdAt" : "2022-02-09T11:13:32+01:00", "currentDirectoryPath" : null, - "description" : "Turns off a Samsung TV.", - "filename" : "turn-off.template.py", + "description" : "Powers off a modern Denon AVR if it is currently powered on", + "filename" : "power-off.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/logo.png" + "light" : "images\/denon_logo.png" }, - "identifier" : "3d94ec3aa6c87dc268d5331e3dcd5f6b", - "isTemplate" : true, - "language" : "python", + "identifier" : "fab79cda1a0e2629cbda49e0f90547c4", + "isTemplate" : false, + "language" : "applescript", "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Samsung TV", - "path" : "remote-control\/samsung-tv\/", + "packageName" : "Denon AVR", + "path" : "remote-control\/denon-avr\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Turn Off TV", - "updatedAt" : "2021-08-23T10:12:10+00:00" + "title" : "Power Off", + "updatedAt" : "2022-02-09T10:16:51Z" }, { "authors" : [ { - "name" : "Darryl Brooks", - "url" : "https:\/\/github.com\/DarrylBrooks97" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-08-20T17:37:33-05:00", + "createdAt" : "2022-02-09T11:13:32+01:00", "currentDirectoryPath" : null, - "description" : "Turns on a Samsung TV.", - "filename" : "turn-on.template.py", - "hasArguments" : false, + "description" : "Helperscript to configure Denon AVR Script Commands", + "filename" : "configure.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/logo.png" + "light" : "images\/denon_logo.png" }, - "identifier" : "8502bb2e79d9a698a2c729d0f9b18925", - "isTemplate" : true, - "language" : "python", + "identifier" : "81f31547ecb4c9fa94c1f3ff80a16dae", + "isTemplate" : false, + "language" : "applescript", "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Samsung TV", - "path" : "remote-control\/samsung-tv\/", + "packageName" : "Denon AVR", + "path" : "remote-control\/denon-avr\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Turn On TV", - "updatedAt" : "2021-08-23T10:12:10+00:00" - } - ] - }, - { - "name" : "Lg Tv", - "path" : "lg-tv", - "scriptCommands" : [ + "title" : "Configure", + "updatedAt" : "2022-02-09T10:16:51Z" + }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-07-09T02:52:48+02:00", + "createdAt" : "2022-02-09T11:13:32+01:00", "currentDirectoryPath" : null, - "description" : "Close the application by its ID.", - "filename" : "close-app.sh", - "hasArguments" : true, + "description" : "Increases the volume of your Denon AVR by one unit", + "filename" : "volume-up.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/lg.png" + "light" : "images\/denon_logo.png" }, - "identifier" : "139825c01bb2a7ea16cbbe87c4b0eea7", + "identifier" : "5faba9ab561f16071df3aae37783ec75", "isTemplate" : false, - "language" : "bash", - "mode" : "silent", + "language" : "applescript", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "LG TV", - "path" : "remote-control\/lg-tv\/", + "packageName" : "Denon AVR", + "path" : "remote-control\/denon-avr\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close App", - "updatedAt" : "2021-07-09T02:52:48+02:00" + "title" : "Volume Up", + "updatedAt" : "2022-02-09T10:16:51Z" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-07-09T02:52:48+02:00", + "createdAt" : "2022-02-09T11:13:32+01:00", "currentDirectoryPath" : null, - "description" : "Open the application with the given payload.", - "filename" : "open-app-with-payload.sh", - "hasArguments" : true, + "description" : "Decreases the volume of your Denon AVR by one unit", + "filename" : "volume-down.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/lg.png" + "light" : "images\/denon_logo.png" + }, + "identifier" : "9d67ff8a8aa5d86f53abf5a999eecd4d", + "isTemplate" : false, + "language" : "applescript", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Denon AVR", + "path" : "remote-control\/denon-avr\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Volume Down", + "updatedAt" : "2022-02-09T10:16:51Z" + }, + { + "authors" : [ + { + "name" : "Rediwed", + "url" : "github.com\/Rediwed" + } + ], + "createdAt" : "2022-02-09T11:13:32+01:00", + "currentDirectoryPath" : null, + "description" : "Powers on a modern Denon AVR if it is currently powered off", + "filename" : "power-on.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/denon_logo.png" + }, + "identifier" : "61d307f4135abdf1944ff25f7ab77c84", + "isTemplate" : false, + "language" : "applescript", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Denon AVR", + "path" : "remote-control\/denon-avr\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Power On", + "updatedAt" : "2022-02-09T10:16:51Z" + } + ] + }, + { + "name" : "Ddc", + "path" : "ddc", + "scriptCommands" : [ + + ], + "subGroups" : [ + { + "name" : "X86", + "path" : "x86", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "goodhyun", + "url" : null + } + ], + "createdAt" : "2022-02-24T17:18:38+09:00", + "currentDirectoryPath" : null, + "description" : "This script will switch the external display screen to DP.", + "filename" : "screen-dp.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📺" + }, + "identifier" : "604dc19d758c3ba4240bd41436ecfc69", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "External Display", + "path" : "remote-control\/ddc\/x86\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Switch to DP", + "updatedAt" : "2022-02-24T08:21:35Z" + }, + { + "authors" : [ + { + "name" : "goodhyun", + "url" : null + } + ], + "createdAt" : "2022-02-24T17:18:38+09:00", + "currentDirectoryPath" : null, + "description" : "This script will switch the external display screen to HDMI.", + "filename" : "screen-hdmi.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📺" + }, + "identifier" : "5c5b8dce88c2fb37b74dfd96eacdfcb6", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "External Display", + "path" : "remote-control\/ddc\/x86\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Switch to HDMI", + "updatedAt" : "2022-02-24T08:21:35Z" + } + ] + }, + { + "name" : "Arm64", + "path" : "arm64", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "goodhyun", + "url" : null + } + ], + "createdAt" : "2022-02-24T17:18:38+09:00", + "currentDirectoryPath" : null, + "description" : "This script will switch the external display screen to DP.", + "filename" : "screen-dp.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📺" + }, + "identifier" : "604dc19d758c3ba4240bd41436ecfc69", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "External Display", + "path" : "remote-control\/ddc\/arm64\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Switch to DP", + "updatedAt" : "2022-02-24T08:21:35Z" + }, + { + "authors" : [ + { + "name" : "goodhyun", + "url" : null + } + ], + "createdAt" : "2022-02-24T17:18:38+09:00", + "currentDirectoryPath" : null, + "description" : "This script will switch the external display screen to HDMI.", + "filename" : "screen-hdmi.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📺" + }, + "identifier" : "5c5b8dce88c2fb37b74dfd96eacdfcb6", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "External Display", + "path" : "remote-control\/ddc\/arm64\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Switch to HDMI", + "updatedAt" : "2022-02-24T08:21:35Z" + } + ] + } + ] + }, + { + "name" : "Samsung TV", + "path" : "samsung-tv", + "readme" : "remote-control\/samsung-tv\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Darryl Brooks", + "url" : "https:\/\/github.com\/DarrylBrooks97" + } + ], + "createdAt" : "2021-08-20T17:37:33-05:00", + "currentDirectoryPath" : null, + "description" : "Turns off a Samsung TV.", + "filename" : "turn-off.template.py", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/logo.png" + }, + "identifier" : "3d94ec3aa6c87dc268d5331e3dcd5f6b", + "isTemplate" : true, + "language" : "python", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Samsung TV", + "path" : "remote-control\/samsung-tv\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Turn Off TV", + "updatedAt" : "2021-08-23T10:12:10Z" + }, + { + "authors" : [ + { + "name" : "Darryl Brooks", + "url" : "https:\/\/github.com\/DarrylBrooks97" + } + ], + "createdAt" : "2021-08-20T17:37:33-05:00", + "currentDirectoryPath" : null, + "description" : "Turns on a Samsung TV.", + "filename" : "turn-on.template.py", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/logo.png" + }, + "identifier" : "8502bb2e79d9a698a2c729d0f9b18925", + "isTemplate" : true, + "language" : "python", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Samsung TV", + "path" : "remote-control\/samsung-tv\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Turn On TV", + "updatedAt" : "2021-08-23T10:12:10Z" + } + ] + }, + { + "name" : "LG TV", + "path" : "lg-tv", + "readme" : "remote-control\/lg-tv\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-07-09T02:52:48+02:00", + "currentDirectoryPath" : null, + "description" : "Close the application by its ID.", + "filename" : "close-app.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/lg.png" + }, + "identifier" : "139825c01bb2a7ea16cbbe87c4b0eea7", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "LG TV", + "path" : "remote-control\/lg-tv\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close App", + "updatedAt" : "2021-07-09T02:52:48+02:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-07-09T02:52:48+02:00", + "currentDirectoryPath" : null, + "description" : "Open the application with the given payload.", + "filename" : "open-app-with-payload.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/lg.png" }, "identifier" : "e78c3c2e7bc669488295056a0bb5b127", "isTemplate" : false, @@ -3031,7 +3922,7 @@ "url" : "https:\/\/github.com\/pitnikola" } ], - "createdAt" : "2021-02-05T13:43:54+00:00", + "createdAt" : "2021-02-05T13:43:54Z", "currentDirectoryPath" : null, "description" : "Calculate percentage increase between \"from\" and \"to\" values.", "filename" : "calculate-growth.sh", @@ -3040,7 +3931,7 @@ "dark" : null, "light" : "📈" }, - "identifier" : "43e4892095abfafb6a7ad5bb50c3c602", + "identifier" : "a733748a4340860d44b583174bed4aa8", "isTemplate" : false, "language" : "bash", "mode" : "compact", @@ -3050,7 +3941,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Calculate Growth %", - "updatedAt" : "2021-02-05T13:43:54+00:00" + "updatedAt" : "2021-02-05T13:43:54Z" }, { "authors" : [ @@ -3078,7 +3969,116 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Wolfram Alpha", - "updatedAt" : "2021-04-28T20:59:27+00:00" + "updatedAt" : "2021-04-28T20:59:27Z" + }, + { + "authors" : [ + { + "name" : "cSharp", + "url" : "https:\/\/github.com\/noidwasavailable" + } + ], + "createdAt" : "2023-09-06T00:23:42+09:00", + "currentDirectoryPath" : null, + "description" : "nCr: Calculate combinations", + "filename" : "calculate-combinations.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "𝐂" + }, + "identifier" : "7d453c1dd055288ddc8c81714ed8194b", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Calculate Combinations", + "path" : "math\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "nCr: Calculate Combinations", + "updatedAt" : "2023-09-06T00:23:42+09:00" + }, + { + "authors" : [ + { + "name" : "Matt Gleich", + "url" : "https:\/\/mattglei.ch" + } + ], + "createdAt" : "2022-02-04T00:21:07-05:00", + "currentDirectoryPath" : null, + "description" : "Evaluate LaTeX expressions and get the product copied to your clipboard", + "filename" : "latex-calculator.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🧮" + }, + "identifier" : "99c77768765823d1f57e72e84d005f64", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Math", + "path" : "math\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "LaTeX Calculator", + "updatedAt" : "2022-02-04T10:14:08Z" + }, + { + "authors" : [ + { + "name" : "Samuel Barton", + "url" : "https:\/\/github.com\/samueldbarton" + } + ], + "createdAt" : "2024-11-18T09:32:56-06:00", + "currentDirectoryPath" : null, + "description" : "Calculate the CAGR between \"from\" and \"to\" values over given \"years,\" then copy the result.", + "filename" : "calculate-CAGR.sh", + "hasArguments" : true, + "icon" : null, + "identifier" : "5acd1b95964396ecfbe1aee4841ddb0a", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Math", + "path" : "math\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Calculate CAGR Percentage", + "updatedAt" : "2024-11-18T09:32:56-06:00" + }, + { + "authors" : [ + { + "name" : "Matt Gleich", + "url" : "https:\/\/mattglei.ch" + } + ], + "createdAt" : "2021-11-17T11:41:42-05:00", + "currentDirectoryPath" : null, + "description" : "Generate a number between a given range (inclusive) and then copy the value", + "filename" : "random-number.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🔢" + }, + "identifier" : "36ce3407031e4f15536ed06711a94b08", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Math", + "path" : "math\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Generate Random Number", + "updatedAt" : "2021-11-17T11:41:42-05:00" } ] }, @@ -3112,7 +4112,7 @@ "refreshTime" : "1h", "schemaVersion" : 1, "title" : "Current Weather", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "updatedAt" : "2022-07-01T16:07:45+02:00" }, { "authors" : [ @@ -3170,6 +4170,34 @@ "title" : "Speedtest", "updatedAt" : "2021-02-27T15:39:22-08:00" }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2022-02-23T23:10:21+01:00", + "currentDirectoryPath" : null, + "description" : "Fear & Greed Index from CNN", + "filename" : "fear-index.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "😱 " + }, + "identifier" : "7862558b671bcea3f416d6bb8901d12f", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Fear & Greed Index", + "path" : "dashboard\/", + "refreshTime" : "12h", + "schemaVersion" : 1, + "title" : "Fear Index", + "updatedAt" : "2022-02-23T23:10:21+01:00" + }, { "authors" : [ { @@ -3205,7 +4233,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-01-27T23:15:56+00:00", + "createdAt" : "2021-01-27T23:15:56Z", "currentDirectoryPath" : null, "description" : "Shows the followers, favorites and friends count of your Twitter account.", "filename" : "twitter-statistics.template.rb", @@ -3214,7 +4242,7 @@ "dark" : null, "light" : "images\/twitter.png" }, - "identifier" : "f1a519a4eafaa91bf8e2179e20acc1f0", + "identifier" : "1bde64c963c2cc5e3ffc510d7568f210", "isTemplate" : true, "language" : "ruby", "mode" : "inline", @@ -3331,7 +4359,35 @@ "refreshTime" : "5m", "schemaVersion" : 1, "title" : "Crypto", - "updatedAt" : "2021-03-01T16:54:23+00:00" + "updatedAt" : "2021-03-01T16:54:23Z" + }, + { + "authors" : [ + { + "name" : "nagauta", + "url" : "https:\/\/github.com\/nagauta" + } + ], + "createdAt" : "2023-05-04T00:27:11+09:00", + "currentDirectoryPath" : null, + "description" : "Get total usage of OpenAI API", + "filename" : "open-ai-usage.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "💲" + }, + "identifier" : "0ddcc5df2535bb2a723ebcd790f2e937", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "dashboard\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Check Usage of OpenAI API", + "updatedAt" : "2023-05-04T14:08:10+09:00" }, { "authors" : [ @@ -3340,7 +4396,7 @@ "url" : "https:\/\/github.com\/designedbyclu" } ], - "createdAt" : "2021-05-10T13:42:50+08:00", + "createdAt" : "2021-02-04T00:45:59-08:00", "currentDirectoryPath" : null, "description" : "Checking DOGE coin price", "filename" : "doge.sh", @@ -3349,7 +4405,7 @@ "dark" : null, "light" : "images\/dogecoin-logo.png" }, - "identifier" : "5ef2d6fa688d7beb5849da1bfcf41b17", + "identifier" : "ef5ccfacde23ff614355afb1f378cc1b", "isTemplate" : false, "language" : "bash", "mode" : "inline", @@ -3387,16 +4443,44 @@ "refreshTime" : "1h", "schemaVersion" : 1, "title" : "NextDNS Status", - "updatedAt" : "2021-01-26T14:46:55+00:00" + "updatedAt" : "2021-01-26T14:46:55Z" }, { "authors" : [ { - "name" : "Thomas Paul Mann", + "name" : "Mortada Sarheed", + "url" : "https:\/\/github.com\/mSarheed" + } + ], + "createdAt" : "2023-02-06T09:47:01+01:00", + "currentDirectoryPath" : null, + "description" : "Get the status of your Tesla vehicle", + "filename" : "tesla.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🚘" + }, + "identifier" : "92b07ce3fd4dd31dc4dde74af562bc59", + "isTemplate" : true, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Tesla.Template", + "path" : "dashboard\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Tesla", + "updatedAt" : "2023-02-06T08:49:49Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-12-01T15:19:07+00:00", + "createdAt" : "2020-12-01T15:19:07Z", "currentDirectoryPath" : null, "description" : "See the year progress on your desktop.", "filename" : "year-progress.sh", @@ -3405,7 +4489,7 @@ "dark" : null, "light" : "⏱" }, - "identifier" : "b2f18259bc9ceb6889bd3f3c6a6022e1", + "identifier" : "f91b94065511ac6266f5b2499368af3a", "isTemplate" : false, "language" : "bash", "mode" : "inline", @@ -3417,6 +4501,34 @@ "title" : "Year Progress", "updatedAt" : "2021-01-28T17:52:04+03:00" }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-11-09T10:29:38+01:00", + "currentDirectoryPath" : null, + "description" : "Shows YouTube Subscribers, Views and Videos", + "filename" : "youtube-statistics.template.rb", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/youtube.png" + }, + "identifier" : "561f7ed8faa600880f0a583a964d481f", + "isTemplate" : true, + "language" : "ruby", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "YouTube Statistics", + "path" : "dashboard\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "YouTube Statistics", + "updatedAt" : "2021-11-09T09:49:02Z" + }, { "authors" : [ { @@ -3424,7 +4536,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-15T15:57:43+00:00", + "createdAt" : "2021-02-15T15:57:43Z", "currentDirectoryPath" : null, "description" : "Keep track of your stock portfolio.", "filename" : "stock-portfolio.rb", @@ -3433,7 +4545,7 @@ "dark" : null, "light" : "📈" }, - "identifier" : "29df612d786611c3379557e77fdcc787", + "identifier" : "116c44f780e379c97aaa32826ff6dbb8", "isTemplate" : false, "language" : "ruby", "mode" : "inline", @@ -3443,7 +4555,7 @@ "refreshTime" : "1h", "schemaVersion" : 1, "title" : "Stocks", - "updatedAt" : "2021-02-15T16:05:12+00:00" + "updatedAt" : "2021-02-15T16:05:12Z" }, { "authors" : [ @@ -3452,7 +4564,7 @@ "url" : "https:\/\/github.com\/jesse-c" } ], - "createdAt" : "2021-01-16T14:01:54+00:00", + "createdAt" : "2021-01-16T14:01:54Z", "currentDirectoryPath" : null, "description" : "Show the time from elsewhere in the world", "filename" : "world-time.sh", @@ -3461,7 +4573,7 @@ "dark" : null, "light" : "🕐" }, - "identifier" : "488cb8d0c156cff41b04f10b76d16696", + "identifier" : "0fe9fe7b1ee089f32c2d6fc739e8364b", "isTemplate" : false, "language" : "bash", "mode" : "inline", @@ -3475,6 +4587,220 @@ } ], "subGroups" : [ + { + "name" : "Mood Meter", + "path" : "mood-meter", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Federico Miraglia", + "url" : "https:\/\/github.com\/Mitra98t" + } + ], + "createdAt" : "2021-10-07T10:32:15+02:00", + "currentDirectoryPath" : null, + "description" : "Add mood value to current or specified date ", + "filename" : "add-mood.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "☕️" + }, + "identifier" : "0e526e9f9e5f652b170303c129ed23b0", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Dashboard", + "path" : "dashboard\/mood-meter\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Add Mood", + "updatedAt" : "2021-10-07T10:32:15+02:00" + }, + { + "authors" : [ + { + "name" : "Federico Miraglia", + "url" : "https:\/\/github.com\/Mitra98t" + } + ], + "createdAt" : "2021-10-07T10:32:15+02:00", + "currentDirectoryPath" : null, + "description" : "Displays month mood table ", + "filename" : "display-mood-month.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "☕️" + }, + "identifier" : "e48bdecd3f81809ea28118f115a94d95", + "isTemplate" : false, + "language" : "node", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Dashboard", + "path" : "dashboard\/mood-meter\/", + "refreshTime" : "5s", + "schemaVersion" : 1, + "title" : "Display Mood Month", + "updatedAt" : "2021-10-07T10:32:15+02:00" + }, + { + "authors" : [ + { + "name" : "Federico Miraglia", + "url" : "https:\/\/github.com\/Mitra98t" + } + ], + "createdAt" : "2021-10-07T10:32:15+02:00", + "currentDirectoryPath" : null, + "description" : "Displays year mood table ", + "filename" : "display-mood-year.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "☕️" + }, + "identifier" : "7c2a11ff6675fb93687733d284c4b862", + "isTemplate" : false, + "language" : "node", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Dashboard", + "path" : "dashboard\/mood-meter\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Display Mood Year", + "updatedAt" : "2021-10-07T10:32:15+02:00" + } + ] + }, + { + "name" : "Open Weather", + "path" : "open-weather", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Marek Mašek", + "url" : "https:\/\/github.com\/marekmasek" + } + ], + "createdAt" : "2022-04-03T20:33:02+02:00", + "currentDirectoryPath" : null, + "description" : "Get current weather from OpenWeather", + "filename" : "weather-current.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⛅️" + }, + "identifier" : "e3d36b7b7215c9fabcc2ca76608cd650", + "isTemplate" : true, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "OpenWeather", + "path" : "dashboard\/open-weather\/", + "refreshTime" : "30m", + "schemaVersion" : 1, + "title" : "Current Weather", + "updatedAt" : "2022-04-03T20:33:02+02:00" + }, + { + "authors" : [ + { + "name" : "Marek Mašek", + "url" : "https:\/\/github.com\/marekmasek" + } + ], + "createdAt" : "2022-04-03T20:33:02+02:00", + "currentDirectoryPath" : null, + "description" : "Get weather forecast from OpenWeather", + "filename" : "weather-forecast.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⛅️" + }, + "identifier" : "99c2bb05fdc937398f9b0ca9c21c3de0", + "isTemplate" : true, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "OpenWeather", + "path" : "dashboard\/open-weather\/", + "refreshTime" : "30m", + "schemaVersion" : 1, + "title" : "Weather Forecast", + "updatedAt" : "2022-04-03T20:33:02+02:00" + } + ] + }, + { + "name" : "Firebase", + "path" : "firebase", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Marek Mašek", + "url" : "https:\/\/github.com\/marekmasek" + } + ], + "createdAt" : "2022-03-30T22:44:18+02:00", + "currentDirectoryPath" : null, + "description" : "Get values from Firebase Realtime Database", + "filename" : "firebase-realtime-db-get-data.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/firebase.png" + }, + "identifier" : "dd152410f57df463a043081efbc26960", + "isTemplate" : true, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Firebase", + "path" : "dashboard\/firebase\/", + "refreshTime" : "10m", + "schemaVersion" : 1, + "title" : "Get data from Firebase", + "updatedAt" : "2022-03-30T22:44:18+02:00" + }, + { + "authors" : [ + { + "name" : "João Melo", + "url" : "https:\/\/github.com\/joaopcm" + } + ], + "createdAt" : "2022-12-30T14:08:40-03:00", + "currentDirectoryPath" : null, + "description" : "Get token from Firebase Authentication service", + "filename" : "firebase-authentication-get-token.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/firebase.png" + }, + "identifier" : "d4bf22f455beb60e3044429453e05102", + "isTemplate" : true, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Firebase Authentication", + "path" : "dashboard\/firebase\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Get Authorization Token", + "updatedAt" : "2022-12-30T17:11:26Z" + } + ] + }, { "name" : "Countdowns", "path" : "countdowns", @@ -3597,7 +4923,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Set Frontmost App as Default Browser", - "updatedAt" : "2021-08-06T19:23:46+02:00" + "updatedAt" : "2024-04-22T16:22:28+10:00" }, { "authors" : [ @@ -3655,6 +4981,34 @@ "title" : "Uninstall with AppCleaner", "updatedAt" : "2021-03-18T14:47:46-03:00" }, + { + "authors" : [ + { + "name" : "Raphael-KR", + "url" : "https:\/\/github.com\/Raphael-KR" + } + ], + "createdAt" : "2025-08-23T18:49:50+09:00", + "currentDirectoryPath" : null, + "description" : "Toggle natural trackpad\/mouse scrolling setting for macOS 15.6.1+", + "filename" : "toggle-natural-scrolling-macos15.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🖱" + }, + "identifier" : "3ccaeabe09d36538f01f592bc7b3e51e", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Natural Scrolling (macOS 15+)", + "updatedAt" : "2025-08-25T09:08:49Z" + }, { "authors" : [ { @@ -3673,7 +5027,7 @@ }, "identifier" : "344e66ee76bea921b245701f7c638ece", "isTemplate" : false, - "language" : "sh", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, "packageName" : "System", @@ -3686,30 +5040,58 @@ { "authors" : [ { - "name" : "Marc Klingen", - "url" : "https:\/\/github.com\/marcklingen" + "name" : "benyn", + "url" : "github.com\/benyn" } ], - "createdAt" : "2021-01-06T16:39:46+01:00", + "createdAt" : "2023-05-06T14:02:11-07:00", "currentDirectoryPath" : null, - "description" : "Set Chrome as the default browser.", - "filename" : "default-browser-chrome.sh", + "description" : "Close all notification alerts staying on screen, e.g., Calendar notifications.", + "filename" : "dismiss-notifications.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🧭" + "light" : "🔕" }, - "identifier" : "2a0c01b1e76f05a9859ed5e6299d3f35", + "identifier" : "d1d5f97ad62a6692d70fc17da0a71157", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Browsing", + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Dismiss Notifications", + "updatedAt" : "2025-05-18T15:56:50-07:00" + }, + { + "authors" : [ + { + "name" : "Alexander Steffen", + "url" : "https:\/\/github.com\/alexjsteffen" + } + ], + "createdAt" : "2022-02-20T17:12:23-08:00", + "currentDirectoryPath" : null, + "description" : "Close all open Finder windows. ", + "filename" : "close-finder-windows.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔪" + }, + "identifier" : "9ea2842daeb65fb34b307cce6ed0bb58", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", "path" : "system\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Switch Default Browser to Chrome", - "updatedAt" : "2021-01-13T00:41:47+01:00" + "title" : "Close All Finder Windows", + "updatedAt" : "2022-02-20T17:12:23-08:00" }, { "authors" : [ @@ -3746,7 +5128,7 @@ "url" : "https:\/\/github.com\/jesse-c" } ], - "createdAt" : "2020-12-18T16:52:19+00:00", + "createdAt" : "2020-12-18T16:52:19Z", "currentDirectoryPath" : null, "description" : "Sample a color from anywhere on your screen.", "filename" : "sample-color.swift", @@ -3755,7 +5137,7 @@ "dark" : null, "light" : "🎨" }, - "identifier" : "3fa985727c54b02c6d0b8d526c4b79ee", + "identifier" : "4600a7cb879326d93a1fa82615819092", "isTemplate" : false, "language" : "swift", "mode" : "silent", @@ -3770,58 +5152,58 @@ { "authors" : [ { - "name" : "Yan Smaliak", - "url" : "https:\/\/github.com\/ysmaliak" + "name" : "Jelte Lagendijk", + "url" : "https:\/\/raycast.com\/j3lte" } ], - "createdAt" : "2021-06-23T23:17:52+03:00", + "createdAt" : "2024-04-22T08:23:05+02:00", "currentDirectoryPath" : null, - "description" : "Shows caffeinate status and time left if it's running", - "filename" : "caffeinate-status.swift", - "hasArguments" : false, + "description" : "Set the position of the Dock in the screen", + "filename" : "dock-set-position.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "☕️" + "light" : "🤖" }, - "identifier" : "ea698b6674bb57715a2b7c4a06fc428c", + "identifier" : "4d015ec34744b1b005c63343cace870a", "isTemplate" : false, - "language" : "swift", - "mode" : "inline", - "needsConfirmation" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, "packageName" : "System", "path" : "system\/", - "refreshTime" : "30s", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Caffeinate", - "updatedAt" : "2021-06-24T14:36:25+03:00" + "title" : "Dock Position", + "updatedAt" : "2024-04-22T08:23:05+02:00" }, { "authors" : [ { - "name" : "Marcos Sánchez-Dehesa", - "url" : "https:\/\/www.github.com\/dehesa" + "name" : "Yan Smaliak", + "url" : "https:\/\/github.com\/ysmaliak" } ], - "createdAt" : "2021-05-10T12:37:10+02:00", + "createdAt" : "2021-06-23T23:17:52+03:00", "currentDirectoryPath" : null, - "description" : "Toggles on\/off a Sidecar screen.", - "filename" : "sidecar-toggle.template.applescript", + "description" : "Shows caffeinate status and time left if it's running", + "filename" : "caffeinate-status.swift", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🖥" + "light" : "☕️" }, - "identifier" : "c540dc7c7d533614110ed18f301844c5", - "isTemplate" : true, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : null, + "identifier" : "ea698b6674bb57715a2b7c4a06fc428c", + "isTemplate" : false, + "language" : "swift", + "mode" : "inline", + "needsConfirmation" : false, "packageName" : "System", "path" : "system\/", - "refreshTime" : null, + "refreshTime" : "30s", "schemaVersion" : 1, - "title" : "Sidecar Switch", - "updatedAt" : "2021-07-23T17:39:55-04:00" + "title" : "Caffeinate", + "updatedAt" : "2021-06-24T14:36:25+03:00" }, { "authors" : [ @@ -3851,34 +5233,6 @@ "title" : "Restart the Finder", "updatedAt" : "2021-03-09T10:35:42+01:00" }, - { - "authors" : [ - { - "name" : "Marc Klingen", - "url" : "https:\/\/github.com\/marcklingen" - } - ], - "createdAt" : "2021-01-06T16:39:46+01:00", - "currentDirectoryPath" : null, - "description" : "Set Safari as the default browser.", - "filename" : "default-browser-safari.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "🧭" - }, - "identifier" : "689695ca945a84934eb23d8db5067c52", - "isTemplate" : false, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Browsing", - "path" : "system\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Switch Default Browser to Safari", - "updatedAt" : "2021-01-13T00:41:47+01:00" - }, { "authors" : null, "createdAt" : "2020-09-30T12:56:51+01:00", @@ -4012,7 +5366,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Add Spacer to Dock", - "updatedAt" : "2021-03-08T00:46:38+00:00" + "updatedAt" : "2021-03-08T00:46:38Z" }, { "authors" : [ @@ -4042,6 +5396,34 @@ "title" : "Refresh Wallpaper", "updatedAt" : "2021-06-04T16:35:43-04:00" }, + { + "authors" : [ + { + "name" : "Marcos Sánchez-Dehesa", + "url" : "https:\/\/github.com\/dehesa" + } + ], + "createdAt" : "2023-02-22T16:16:58+11:00", + "currentDirectoryPath" : null, + "description" : "Set Google Chrome as the default browser.", + "filename" : "default-browser-chrome.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/chrome.png" + }, + "identifier" : "2d63f1a6bc8d207d320f0e6faf37b1c0", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Default to Chrome", + "updatedAt" : "2023-02-22T16:16:58+11:00" + }, { "authors" : [ { @@ -4070,6 +5452,34 @@ "title" : "Disable Caffeinate", "updatedAt" : "2021-06-23T19:47:11+03:00" }, + { + "authors" : [ + { + "name" : "BhEaN", + "url" : "https:\/\/github.com\/bhean" + } + ], + "createdAt" : "2021-11-03T21:02:51+01:00", + "currentDirectoryPath" : null, + "description" : "Toggle Night Shift mode (until tomorrow\/sunrise). Required [nightlight](https:\/\/github.com\/smudge\/nightlight)", + "filename" : "nightshift.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🌘" + }, + "identifier" : "574594655373e8a41dd88ae601f9466d", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Night Shift", + "updatedAt" : "2021-11-03T21:02:51+01:00" + }, { "authors" : [ { @@ -4101,58 +5511,86 @@ { "authors" : [ { - "name" : "Antonio Dal Sie", - "url" : "https:\/\/github.com\/exodusanto" + "name" : "Marcos Sánchez-Dehesa", + "url" : "https:\/\/github.com\/dehesa" } ], - "createdAt" : "2021-04-08T11:08:42+02:00", + "createdAt" : "2023-02-22T16:16:58+11:00", "currentDirectoryPath" : null, - "description" : "Do Not Disturb", - "filename" : "do-not-disturb.sh", - "hasArguments" : true, + "description" : "Set Firefox as the default browser.", + "filename" : "default-browser-firefox.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🔕" + "light" : "images\/firefox.png" }, - "identifier" : "7d8dda695f270869220063893beb9160", + "identifier" : "4299cbf700855d5ae55f6a730ff28a85", "isTemplate" : false, - "language" : "bash", - "mode" : "compact", + "language" : "applescript", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "System", + "packageName" : "Browser", "path" : "system\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Do Not Disturb", - "updatedAt" : "2021-04-08T12:10:22+02:00" + "title" : "Default to Firefox", + "updatedAt" : "2024-01-05T16:03:05-08:00" }, { "authors" : [ { - "name" : "Marc Klingen", - "url" : "https:\/\/github.com\/marcklingen" + "name" : "Fahim Faisal", + "url" : "https:\/\/github.com\/i3p9" } ], - "createdAt" : "2021-01-06T16:39:46+01:00", + "createdAt" : "2022-03-13T18:10:53+06:00", "currentDirectoryPath" : null, - "description" : "Set Chromium as the default browser.", - "filename" : "default-browser-chromium.sh", + "description" : "Get Battery percentage, time remaining, charge status, charger wattage, total cycles etc.", + "filename" : "battery-info.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🧭" + "light" : "🔋" }, - "identifier" : "fc09042c7bdd90f91d4db06fd872aaba", + "identifier" : "682c9017c86e7caafe835fb510cb33e1", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Browsing", + "packageName" : "System", + "path" : "system\/", + "refreshTime" : "3m", + "schemaVersion" : 1, + "title" : "Battery Info", + "updatedAt" : "2022-03-16T15:16:35+06:00" + }, + { + "authors" : [ + { + "name" : "Antonio Dal Sie", + "url" : "https:\/\/github.com\/exodusanto" + } + ], + "createdAt" : "2021-04-08T11:08:42+02:00", + "currentDirectoryPath" : null, + "description" : "Do Not Disturb", + "filename" : "do-not-disturb.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🔕" + }, + "identifier" : "7d8dda695f270869220063893beb9160", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "System", "path" : "system\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Switch Default Browser to Chromium", - "updatedAt" : "2021-01-13T00:41:47+01:00" + "title" : "Do Not Disturb", + "updatedAt" : "2021-11-16T14:59:56+01:00" }, { "authors" : [ @@ -4236,7 +5674,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Move Desktop to Trash", - "updatedAt" : "2021-07-06T15:39:42+00:00" + "updatedAt" : "2021-07-06T15:39:42Z" }, { "authors" : [ @@ -4264,7 +5702,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Kill AirDrop Processes", - "updatedAt" : "2021-04-06T23:07:39+00:00" + "updatedAt" : "2021-04-06T23:07:39Z" }, { "authors" : [ @@ -4284,7 +5722,7 @@ }, "identifier" : "aa330e29461867df6c3f22fc9b9a2c68", "isTemplate" : false, - "language" : "sh", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, "packageName" : "System", @@ -4294,6 +5732,146 @@ "title" : "Capture Screen Selection to Desktop", "updatedAt" : "2021-08-07T19:28:35-07:00" }, + { + "authors" : [ + { + "name" : "Marcos Sánchez-Dehesa", + "url" : "https:\/\/github.com\/dehesa" + } + ], + "createdAt" : "2023-02-22T16:16:58+11:00", + "currentDirectoryPath" : null, + "description" : "Set Arc as the default browser.", + "filename" : "default-browser-arc.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/arc.png" + }, + "identifier" : "bfadc3d5abe379f7bfaee8db90c11379", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Default to Arc", + "updatedAt" : "2024-01-05T16:03:05-08:00" + }, + { + "authors" : [ + { + "name" : "Jelte Lagendijk", + "url" : "https:\/\/raycast.com\/j3lte" + } + ], + "createdAt" : "2024-04-22T08:23:05+02:00", + "currentDirectoryPath" : null, + "description" : "Set the Dock autohide", + "filename" : "dock-set-autohide.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "2e9f26f5c37a3f3c74cae49c82fc0fd5", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Dock Set Autohide", + "updatedAt" : "2024-04-22T08:23:05+02:00" + }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-11-17T17:41:07+01:00", + "currentDirectoryPath" : null, + "description" : "Resize and center the frontmost window to any custom size.", + "filename" : "custom-window.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/custom-window-size.png" + }, + "identifier" : "13a15c297e5092141c7507de2af3385f", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Custom Window Size", + "updatedAt" : "2021-11-17T17:41:07+01:00" + }, + { + "authors" : [ + { + "name" : "Federico Zivolo", + "url" : "https:\/\/github.com\/FezVrasta" + } + ], + "createdAt" : "2024-01-20T13:56:53+01:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "toggle-desktop-widget.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔄" + }, + "identifier" : "79982c901bf4cd65eda80b5f7039d1d0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Toggle Desktop Widget", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Desktop Widgets", + "updatedAt" : "2024-01-22T22:39:53Z" + }, + { + "authors" : [ + { + "name" : "Marcos Sánchez-Dehesa", + "url" : "https:\/\/github.com\/dehesa" + } + ], + "createdAt" : "2023-02-22T16:16:58+11:00", + "currentDirectoryPath" : null, + "description" : "Set Chromium as the default browser.", + "filename" : "default-browser-chromium.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/chrome-icon.png" + }, + "identifier" : "3502698721f8a80ac7cf5e3e3909f615", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Default to Chromium", + "updatedAt" : "2023-02-22T16:16:58+11:00" + }, { "authors" : [ { @@ -4345,34 +5923,6 @@ "title" : "Quit All Applications", "updatedAt" : "2021-03-27T23:04:19-04:00" }, - { - "authors" : [ - { - "name" : "Marc Klingen", - "url" : "https:\/\/github.com\/marcklingen" - } - ], - "createdAt" : "2021-01-06T16:39:46+01:00", - "currentDirectoryPath" : null, - "description" : "Set Firefox as the default browser.", - "filename" : "default-browser-firefox.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "🧭" - }, - "identifier" : "32fb2d5ade10d7f8567165c2d546252a", - "isTemplate" : false, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Browsing", - "path" : "system\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Switch Default Browser to Firefox", - "updatedAt" : "2021-01-13T00:41:47+01:00" - }, { "authors" : [ { @@ -4391,7 +5941,7 @@ }, "identifier" : "e888ca0de9036c3e6f270c06ffa9904b", "isTemplate" : false, - "language" : "sh", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, "packageName" : "System", @@ -4457,6 +6007,34 @@ "title" : "Move Downloads to Trash", "updatedAt" : "2020-12-30T22:13:18+08:00" }, + { + "authors" : [ + { + "name" : "zhe", + "url" : "https:\/\/github.com\/wmszhe" + } + ], + "createdAt" : "2022-07-22T17:53:33+08:00", + "currentDirectoryPath" : null, + "description" : "Use macOS Vision API Identification pictures, if it contain a QR code, Copy the QR code content to the clipboard, If do not include QR codes, identify text content and supplement to clipboard", + "filename" : "ocr.swift", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🖼" + }, + "identifier" : "83aec5a2b407fa4ad1c7c485b8c49199", + "isTemplate" : false, + "language" : "swift", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Productivity", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "OCR", + "updatedAt" : "2024-06-22T16:19:22+09:00" + }, { "authors" : [ { @@ -4475,7 +6053,7 @@ }, "identifier" : "1b20aab42e5e5b6af164dbbcaedb0dfc", "isTemplate" : false, - "language" : "sh", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, "packageName" : "System", @@ -4488,18 +6066,74 @@ { "authors" : [ { - "name" : "Yohanes Bandung Bondowoso", - "url" : "https:\/\/github.com\/ybbond" + "name" : "StepaniaH", + "url" : "https:\/\/github.com\/StepaniaH" } ], - "createdAt" : "2021-03-03T20:29:30+07:00", + "createdAt" : "2024-12-16T23:44:40+08:00", "currentDirectoryPath" : null, - "description" : "Toggle flip (rotate) or revert the to °", - "filename" : "toggle-flip-screen.template.applescript", - "hasArguments" : false, + "description" : "This is a simple Python script for recursively renaming video and picture files within a directory. Type the root directory's absolute path, and it will scan all the video and picture files in it and rename them according to the folder where they are located as the format `--`.", + "filename" : "rename-videos-pictures.py", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🖥" + "light" : "📂" + }, + "identifier" : "360d8e4290996f7b2b40dc6e388e30f2", + "isTemplate" : false, + "language" : "python", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Rename Videos Pictures", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Rename Video", + "updatedAt" : "2024-12-18T23:56:00+08:00" + }, + { + "authors" : [ + { + "name" : "Marcos Sánchez-Dehesa", + "url" : "https:\/\/github.com\/dehesa" + } + ], + "createdAt" : "2023-02-22T16:16:58+11:00", + "currentDirectoryPath" : null, + "description" : "Set Safari as the default browser.", + "filename" : "default-browser-safari.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "b56ccc81272dbe8beb92bdcdb77e8dce", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Browser", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Default to Safari", + "updatedAt" : "2024-01-05T16:03:05-08:00" + }, + { + "authors" : [ + { + "name" : "Yohanes Bandung Bondowoso", + "url" : "https:\/\/github.com\/ybbond" + } + ], + "createdAt" : "2021-03-03T20:29:30+07:00", + "currentDirectoryPath" : null, + "description" : "Toggle flip (rotate) or revert the to °", + "filename" : "toggle-flip-screen.template.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🖥" }, "identifier" : "334e278cca7425e66cb394fbd049f0b4", "isTemplate" : true, @@ -4541,6 +6175,122 @@ "title" : "Toggle Hidden Files", "updatedAt" : "2020-11-23T12:53:48-05:00" }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-02-21T17:47:42+01:00", + "currentDirectoryPath" : null, + "description" : "This script minimizes all windows of currently running apps", + "filename" : "minimize-all-windows.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/minimize-window.png" + }, + "identifier" : "3b65d4ebb56ca0837e508f63395b1230", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Minimize All Windows", + "updatedAt" : "2022-02-21T17:47:42+01:00" + }, + { + "authors" : [ + { + "name" : "AndriiBarabash", + "url" : "https:\/\/github.com\/AndriiBarabash" + } + ], + "createdAt" : "2025-03-10T00:16:14+01:00", + "currentDirectoryPath" : null, + "description" : "Put your Mac to sleep (in X minutes).", + "filename" : "sleep-timer.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "😴" + }, + "identifier" : "ff43a32961d94da6001ad37ab79dd032", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Sleep Timer", + "updatedAt" : "2025-03-10T10:57:38+01:00" + }, + { + "authors" : [ + { + "name" : "Jelte Lagendijk", + "url" : "https:\/\/raycast.com\/j3lte" + } + ], + "createdAt" : "2024-04-22T08:23:05+02:00", + "currentDirectoryPath" : null, + "description" : "Toggle the Dock Autohide", + "filename" : "dock-autohide-toggle.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "48c4f52d832201490101c47dd2963bbd", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Dock Autohide", + "updatedAt" : "2024-04-22T08:23:05+02:00" + }, + { + "authors" : [ + { + "name" : "Archie Lacoin", + "url" : "https:\/\/github.com\/pomdtr" + }, + { + "name" : "LanikSJ", + "url" : "https:\/\/github.com\/LanikSJ" + } + ], + "createdAt" : "2022-04-18T08:53:46-07:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "network-quality.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🌐" + }, + "identifier" : "c8ccba60ea98f52ca4712bbd2ff58c26", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : "20m", + "schemaVersion" : 1, + "title" : "Network Quality", + "updatedAt" : "2022-12-30T13:32:07-05:00" + }, { "authors" : [ { @@ -4646,7 +6396,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Last Download", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -4720,7 +6470,91 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Eject All Disks", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" + }, + { + "authors" : [ + { + "name" : "Juan Luis Romero", + "url" : "https:\/\/github.com\/JuanluR8" + } + ], + "createdAt" : "2021-09-27T19:10:12+02:00", + "currentDirectoryPath" : null, + "description" : "Show free space in your mounted disks", + "filename" : "disk-free.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "💾" + }, + "identifier" : "4d24ea15b68e1be01b6a06843150c795", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Disk Free", + "updatedAt" : "2021-09-28T06:22:27Z" + }, + { + "authors" : [ + { + "name" : "Astrit Malsia", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-10-26T02:13:10+02:00", + "currentDirectoryPath" : null, + "description" : "Copy Wi-Fi password from current session", + "filename" : "wifi-password.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📟" + }, + "identifier" : "3da4fa8456e609ec2fd7fbadf9ab49a0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Wi-Fi Password", + "updatedAt" : "2021-11-03T20:29:35Z" + }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-11-07T13:19:22+01:00", + "currentDirectoryPath" : null, + "description" : "A script command to enable and disable .DS_Store", + "filename" : "toggle-ds-store.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🧬" + }, + "identifier" : "3c4ebd8411dc67d65ea9d93787e1cfe1", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle .DS_Store", + "updatedAt" : "2021-11-07T13:19:22+01:00" }, { "authors" : [ @@ -4729,7 +6563,7 @@ "url" : "https:\/\/github.com\/jesse-c" } ], - "createdAt" : "2021-04-27T06:02:41+00:00", + "createdAt" : "2021-04-27T06:02:41Z", "currentDirectoryPath" : null, "description" : "Show disk usage for \/ (root)", "filename" : "disk-usage.sh", @@ -4738,7 +6572,7 @@ "dark" : null, "light" : "💿" }, - "identifier" : "8058594c23e845822eadac4bb4c818ab", + "identifier" : "aadf056d506a2abb91cef252e2e7a1f6", "isTemplate" : false, "language" : "bash", "mode" : "inline", @@ -4748,7 +6582,7 @@ "refreshTime" : "1m", "schemaVersion" : 1, "title" : "Disk Usage", - "updatedAt" : "2021-04-27T06:02:41+00:00" + "updatedAt" : "2021-04-27T06:02:41Z" }, { "authors" : [ @@ -4806,6 +6640,34 @@ "title" : "Caffeinate", "updatedAt" : "2021-06-23T19:47:11+03:00" }, + { + "authors" : [ + { + "name" : "xxchan", + "url" : "https:\/\/github.com\/xxchan" + } + ], + "createdAt" : "2023-01-31T01:00:23+01:00", + "currentDirectoryPath" : null, + "description" : "Open Image from Clipboard in Preview for OCR or other purposes.", + "filename" : "open-image-from-clipboard.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📋" + }, + "identifier" : "02b393208c74661deadfc66ddf16da87", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Clipboard", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Image", + "updatedAt" : "2023-01-31T01:00:23+01:00" + }, { "authors" : [ { @@ -4832,7 +6694,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Create Email", - "updatedAt" : "2021-02-25T10:47:45+00:00" + "updatedAt" : "2021-02-25T10:47:45Z" }, { "authors" : [ @@ -4865,20 +6727,20 @@ { "authors" : [ { - "name" : "Felipe Turcheti", - "url" : "https:\/\/felipeturcheti.com" + "name" : "Zach Dawson", + "url" : "https:\/\/raycast.com\/zdawz" } ], - "createdAt" : "2021-06-14T14:36:05-03:00", + "createdAt" : "2023-12-22T08:19:14-06:00", "currentDirectoryPath" : null, - "description" : "Flush DNS cache", - "filename" : "flush-dns.sh", + "description" : "Resets the macOS Launchpad to its default state", + "filename" : "reset-launchpad.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "💨" + "light" : "🚀" }, - "identifier" : "63e51cac9289a2734e161cc8306805b4", + "identifier" : "1c9956877da036e214c52ae82f128cb1", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -4887,77 +6749,189 @@ "path" : "system\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Flush DNS", - "updatedAt" : "2021-06-14T14:36:05-03:00" + "title" : "Reset Launchpad", + "updatedAt" : "2023-12-22T14:21:54Z" }, { "authors" : [ { - "name" : "Raycast", - "url" : "https:\/\/raycast.com" + "name" : "Kailash Yellareddy", + "url" : "https:\/\/github.com\/kyellareddy" } ], - "createdAt" : "2020-09-30T12:57:18+01:00", + "createdAt" : "2023-07-03T17:20:46-07:00", "currentDirectoryPath" : null, - "description" : "A script command to show and hide icons of Desktop folder", - "filename" : "toggle-desktop-icons.applescript", + "description" : null, + "filename" : "Network Info.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🖥" + "light" : "🛜" }, - "identifier" : "a7b34fe82f84acdef7c4ca687a7dbad8", + "identifier" : "83cefb2a99e7b3a81e177ccef088a8f3", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", + "language" : "python", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "System", + "packageName" : "Network Info", "path" : "system\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Desktop Icons", - "updatedAt" : "2020-11-23T12:53:48-05:00" + "title" : "Network Info", + "updatedAt" : "2023-07-04T10:01:20Z" }, { "authors" : [ { - "name" : "Vincent Dörig", - "url" : "https:\/\/github.com\/vincentdoerig" + "name" : "Juan Luis Romero", + "url" : "https:\/\/github.com\/JuanluR8" } ], - "createdAt" : "2021-01-07T22:11:14+01:00", + "createdAt" : "2024-04-22T08:23:25+02:00", "currentDirectoryPath" : null, - "description" : "Toggle your Wi-Fi connection.", - "filename" : "wifi.template.applescript", + "description" : "Display CPU usage percent", + "filename" : "inline-cpu-usage-percent.sh", "hasArguments" : false, "icon" : { - "dark" : "images\/wifi.png", - "light" : "images\/wifi-dark.png" + "dark" : null, + "light" : "🖥️" }, - "identifier" : "a67b13df28ceb5db8ea7a322df56a3b3", - "isTemplate" : true, - "language" : "applescript", - "mode" : "silent", + "identifier" : "88b8ff2c77f987a58eadc153ac8e9629", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", "needsConfirmation" : null, "packageName" : "System", "path" : "system\/", - "refreshTime" : null, + "refreshTime" : "10s", "schemaVersion" : 1, - "title" : "Toggle Wi-Fi", - "updatedAt" : "2021-01-11T18:50:50+01:00" + "title" : "CPU Usage", + "updatedAt" : "2024-04-22T06:25:56Z" }, { - "authors" : null, - "createdAt" : "2020-11-05T19:09:05+00:00", + "authors" : [ + { + "name" : "Felipe Turcheti", + "url" : "https:\/\/felipeturcheti.com" + } + ], + "createdAt" : "2021-06-14T14:36:05-03:00", "currentDirectoryPath" : null, - "description" : "Copy the last downloaded file to the clipboard.", + "description" : "Flush DNS cache", + "filename" : "flush-dns.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "💨" + }, + "identifier" : "63e51cac9289a2734e161cc8306805b4", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Flush DNS", + "updatedAt" : "2021-06-14T14:36:05-03:00" + }, + { + "authors" : [ + { + "name" : "Angelos Michalopoulos", + "url" : null + } + ], + "createdAt" : "2024-11-18T17:33:08+02:00", + "currentDirectoryPath" : null, + "description" : "Get One-Time Password (OTP) from Apple Password Manager", + "filename" : "otp.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🔑" + }, + "identifier" : "7115fa08d182688291508d427a6ce246", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "One-Time Password", + "updatedAt" : "2024-11-18T17:33:08+02:00" + }, + { + "authors" : [ + { + "name" : "Raycast", + "url" : "https:\/\/raycast.com" + } + ], + "createdAt" : "2020-09-30T12:57:18+01:00", + "currentDirectoryPath" : null, + "description" : "A script command to show and hide icons of Desktop folder", + "filename" : "toggle-desktop-icons.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🖥" + }, + "identifier" : "a7b34fe82f84acdef7c4ca687a7dbad8", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Desktop Icons", + "updatedAt" : "2022-01-15T18:22:57+08:00" + }, + { + "authors" : [ + { + "name" : "Vincent Dörig", + "url" : "https:\/\/github.com\/vincentdoerig" + } + ], + "createdAt" : "2021-01-07T22:11:14+01:00", + "currentDirectoryPath" : null, + "description" : "Toggle your Wi-Fi connection.", + "filename" : "wifi.template.applescript", + "hasArguments" : false, + "icon" : { + "dark" : "images\/wifi.png", + "light" : "images\/wifi-dark.png" + }, + "identifier" : "a67b13df28ceb5db8ea7a322df56a3b3", + "isTemplate" : true, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Wi-Fi", + "updatedAt" : "2021-01-11T18:50:50+01:00" + }, + { + "authors" : null, + "createdAt" : "2020-11-05T19:09:05Z", + "currentDirectoryPath" : null, + "description" : "Copy the last downloaded file to the clipboard.", "filename" : "copy-last-download.swift", "hasArguments" : false, "icon" : { "dark" : null, "light" : "💁" }, - "identifier" : "0ec1db6ff6f6f56e7daba5d6fbd03c75", + "identifier" : "19d49b55a44b69e9229b63c27724c02f", "isTemplate" : false, "language" : "swift", "mode" : "silent", @@ -4967,20 +6941,20 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Last Download", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, - "createdAt" : "2020-11-05T19:08:41+00:00", + "createdAt" : "2020-11-05T19:08:41Z", "currentDirectoryPath" : null, "description" : "Copies the calendar availability of today.", "filename" : "copy-availability.swift", - "hasArguments" : false, + "hasArguments" : true, "icon" : { "dark" : null, "light" : "📅" }, - "identifier" : "c54475a390bfef23ea03f2d5e69be018", + "identifier" : "7f78eb54a08af1d516202dd647999a27", "isTemplate" : false, "language" : "swift", "mode" : "silent", @@ -4990,7 +6964,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Availability", - "updatedAt" : "2021-01-21T23:00:49+01:00" + "updatedAt" : "2022-08-08T14:02:44+02:00" }, { "authors" : [ @@ -5018,7 +6992,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Toggle Natural Scrolling", - "updatedAt" : "2021-04-29T15:07:57+00:00" + "updatedAt" : "2024-04-25T21:10:36+05:45" + }, + { + "authors" : [ + { + "name" : "Kailash Yellareddy", + "url" : "https:\/\/github.com\/kyellareddy" + } + ], + "createdAt" : "2023-07-03T14:02:07-07:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "Low Power Mode.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔋" + }, + "identifier" : "abb0ce225a8aa3cc33d242788d9fbc94", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Low Power Mode", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Low Power Mode", + "updatedAt" : "2023-07-03T21:06:13Z" }, { "authors" : null, @@ -5041,7 +7043,67 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Last Screenshot", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" + }, + { + "authors" : [ + { + "name" : "Felipe Turcheti", + "url" : "https:\/\/felipeturcheti.com" + } + ], + "createdAt" : "2024-08-05T09:48:29-06:00", + "currentDirectoryPath" : null, + "description" : "Copy contents of selected items in Finder to the clipboard. If there's more than one file selected, they will be combined and added to the clipboard.", + "filename" : "copy-selection-to-clipboard.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "??" + }, + "identifier" : "c76e2bb24d45b402577be451771a6171", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Finder Selection to Clipboard", + "updatedAt" : "2024-08-05T09:48:29-06:00" + }, + { + "authors" : [ + { + "name" : "Yufei Kang", + "url" : "kangyufei.net" + }, + { + "name" : "LanikSJ", + "url" : "https:\/\/github.com\/LanikSJ" + } + ], + "createdAt" : "2022-04-20T11:03:29-07:00", + "currentDirectoryPath" : null, + "description" : "Save Image From Clipboard", + "filename" : "save-image-from-clipboard.py", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "9b9abd66aac59663e406febe5530ed84", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Clipboard", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Save Image From Clipboard", + "updatedAt" : "2022-05-28T15:53:15+09:00" }, { "authors" : null, @@ -5064,7 +7126,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Restart", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -5150,6 +7212,29 @@ "title" : "Network Status", "updatedAt" : "2021-03-11T11:38:48-08:00" }, + { + "authors" : null, + "createdAt" : "2025-09-05T10:08:41-05:00", + "currentDirectoryPath" : null, + "description" : "Copies a summary of today's meetings to the clipboard.", + "filename" : "meeting_summary_script.swift", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📝" + }, + "identifier" : "3542086084234d14d5e94041c7c2915b", + "isTemplate" : false, + "language" : "swift", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Meeting Summary", + "updatedAt" : "2025-09-05T10:08:41-05:00" + }, { "authors" : null, "createdAt" : "2020-09-30T12:56:01+01:00", @@ -5171,7 +7256,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Shut Down", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" + }, + { + "authors" : [ + { + "name" : "Amir Hossein SamadiPour", + "url" : "https:\/\/github.com\/SamadiPour" + } + ], + "createdAt" : "2022-08-06T01:15:04+04:30", + "currentDirectoryPath" : null, + "description" : "Toggle charging the battery when it is plugged in. When turned off, it will always use the charger instead of the battery; when turned on, it will go to automatic mode (decide based on your settings and daily charging routine).", + "filename" : "toggle-battery-charging.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔋" + }, + "identifier" : "9ef75d2415c5c413099e591710f0c054", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Battery Charging", + "updatedAt" : "2022-08-18T12:53:36Z" }, { "authors" : null, @@ -5194,7 +7307,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Sleep", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" + }, + { + "authors" : [ + { + "name" : "Ivan Rybalko", + "url" : "https:\/\/github.com\/ivribalko" + } + ], + "createdAt" : "2023-09-06T00:16:33-04:00", + "currentDirectoryPath" : null, + "description" : "Prevent sleep from closing laptop lid (clamshell mode)", + "filename" : "toggle-lid-sleep.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🐚" + }, + "identifier" : "417db530f5bb78e762778ce4c5904d26", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Lid Sleep", + "updatedAt" : "2023-09-07T11:09:47-04:00" }, { "authors" : [ @@ -5255,7 +7396,7 @@ ], "subGroups" : [ { - "name" : "Vpn", + "name" : "VPN", "path" : "vpn", "scriptCommands" : [ { @@ -5345,58 +7486,211 @@ ] }, { - "name" : "Audio", - "path" : "audio", + "name" : "Magic Keyboard Switcher", + "path" : "magic-keyboard-switcher", + "readme" : "system\/magic-keyboard-switcher\/README.md", "scriptCommands" : [ { "authors" : [ { - "name" : "Quentin Eude", - "url" : "https:\/\/www.github.com\/qeude" + "name" : "blastik", + "url" : "https:\/\/github.com\/blastik" } ], - "createdAt" : "2021-05-11T13:56:09+02:00", + "createdAt" : "2025-09-24T17:50:16+02:00", "currentDirectoryPath" : null, - "description" : "Get the current battery status of your AirPods.", - "filename" : "airpodsbattery.sh", + "description" : "Switch a single magic keyboard between computers", + "filename" : "magic-keyboard-switcher.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⚡️" + "light" : "images\/logo.png" }, - "identifier" : "2c840755252ffd42ed783bcfb4134f56", - "isTemplate" : false, + "identifier" : "ebd6d04790272dd639e870be745a66db", + "isTemplate" : true, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Audio", - "path" : "system\/audio\/", - "refreshTime" : "10m", + "packageName" : "System", + "path" : "system\/magic-keyboard-switcher\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "AirPods Battery Level", - "updatedAt" : "2021-05-11T13:56:09+02:00" - }, + "title" : "Magic Keyboard switcher", + "updatedAt" : "2025-09-24T17:59:07+02:00" + } + ] + }, + { + "name" : "Vpnutil", + "path" : "vpnutil", + "scriptCommands" : [ { "authors" : [ { - "name" : "Nichlas W. Andersen", - "url" : "https:\/\/github.com\/itsnwa" + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" } ], - "createdAt" : "2021-01-27T15:25:23+01:00", + "createdAt" : "2021-10-08T20:08:21+03:00", "currentDirectoryPath" : null, - "description" : "Toggle AirPods bluetooth device", - "filename" : "toggle-airpods.template.swift", + "description" : "Start VPN connection.", + "filename" : "vpnutil-start.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/airpod.png" + "light" : "📡" }, - "identifier" : "e8755f7caafc73caae63ce7c94750cdf", - "isTemplate" : true, - "language" : "swift", - "mode" : "silent", - "needsConfirmation" : null, + "identifier" : "b65509f00ff96881390957a20ef127da", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "VPN", + "path" : "system\/vpnutil\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start VPN", + "updatedAt" : "2021-10-08T20:08:21+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" + } + ], + "createdAt" : "2021-10-08T20:08:21+03:00", + "currentDirectoryPath" : null, + "description" : "Stop VPN connection", + "filename" : "vpnutil-stop.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📡" + }, + "identifier" : "bedab222fcfd49e2dd9c66d87ac8262e", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "VPN", + "path" : "system\/vpnutil\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop VPN", + "updatedAt" : "2021-10-08T20:08:21+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" + } + ], + "createdAt" : "2021-10-08T20:08:21+03:00", + "currentDirectoryPath" : null, + "description" : "Check VPN connection", + "filename" : "vpnutil-status.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📡" + }, + "identifier" : "9673d2c49273541b6cb9d367f1c89946", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "VPN", + "path" : "system\/vpnutil\/", + "refreshTime" : "30s", + "schemaVersion" : 1, + "title" : "VPN Status", + "updatedAt" : "2021-10-08T20:08:21+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" + } + ], + "createdAt" : "2021-10-08T20:08:21+03:00", + "currentDirectoryPath" : null, + "description" : "Toggle VPN connection", + "filename" : "vpnutil-toggle.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📡" + }, + "identifier" : "362f65162d24f126ffdabdf0c773d358", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "VPN", + "path" : "system\/vpnutil\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle VPN", + "updatedAt" : "2021-10-08T20:08:21+03:00" + } + ] + }, + { + "name" : "Audio", + "path" : "audio", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Quentin Eude", + "url" : "https:\/\/www.github.com\/qeude" + } + ], + "createdAt" : "2021-05-11T13:56:09+02:00", + "currentDirectoryPath" : null, + "description" : "Get the current battery status of your AirPods.", + "filename" : "airpodsbattery.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⚡️" + }, + "identifier" : "2c840755252ffd42ed783bcfb4134f56", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Audio", + "path" : "system\/audio\/", + "refreshTime" : "10m", + "schemaVersion" : 1, + "title" : "AirPods Battery Level", + "updatedAt" : "2022-02-07T20:12:21-05:00" + }, + { + "authors" : [ + { + "name" : "Nichlas W. Andersen", + "url" : "https:\/\/github.com\/itsnwa" + } + ], + "createdAt" : "2021-01-27T15:25:23+01:00", + "currentDirectoryPath" : null, + "description" : "Toggle AirPods bluetooth device", + "filename" : "toggle-airpods.template.swift", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/airpod.png" + }, + "identifier" : "e8755f7caafc73caae63ce7c94750cdf", + "isTemplate" : true, + "language" : "swift", + "mode" : "silent", + "needsConfirmation" : null, "packageName" : "Audio", "path" : "system\/audio\/", "refreshTime" : null, @@ -5404,6 +7698,34 @@ "title" : "Toggle AirPods", "updatedAt" : "2021-04-16T19:18:39+03:00" }, + { + "authors" : [ + { + "name" : "Mortada Sarheed", + "url" : "https:\/\/github.com\/mSarheed" + } + ], + "createdAt" : "2023-02-03T08:45:57+01:00", + "currentDirectoryPath" : null, + "description" : "Get the battery level of your bluetooth headphones", + "filename" : "bluetooth-headphones-battery-level.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🎧" + }, + "identifier" : "0e6a4e95c4fef0b4d461f56d1ab20367", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Audio", + "path" : "system\/audio\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Headphones Battery Level", + "updatedAt" : "2023-02-03T07:51:37Z" + }, { "authors" : [ { @@ -5430,7 +7752,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Switch Audio to ", - "updatedAt" : "2021-04-16T19:18:39+03:00" + "updatedAt" : "2021-11-07T15:24:00-05:00" }, { "authors" : [ @@ -5460,6 +7782,34 @@ "title" : "Reload CoreAudio", "updatedAt" : "2021-04-16T19:18:39+03:00" }, + { + "authors" : [ + { + "name" : "Annie Ma", + "url" : "http:\/\/www.anniema.co\/" + } + ], + "createdAt" : "2024-01-26T14:05:08-08:00", + "currentDirectoryPath" : null, + "description" : "Toggles notification sounds.", + "filename" : "toggle-mute-notification-sounds.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔔" + }, + "identifier" : "a3b32fd55c23706603f24da4c74fd8d0", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "System", + "path" : "system\/audio\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Mute Notifcation Sounds", + "updatedAt" : "2024-02-01T16:53:25Z" + }, { "authors" : [ { @@ -5486,7 +7836,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Audio devices", - "updatedAt" : "2021-04-16T23:17:04+03:00" + "updatedAt" : "2022-04-24T19:49:41+08:00" }, { "authors" : [ @@ -5514,7 +7864,7 @@ "refreshTime" : "10m", "schemaVersion" : 1, "title" : "Audio devices", - "updatedAt" : "2021-04-19T18:23:32+03:00" + "updatedAt" : "2022-04-24T19:49:41+08:00" }, { "authors" : [ @@ -5542,7 +7892,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Set audio device", - "updatedAt" : "2021-04-19T18:26:53+03:00" + "updatedAt" : "2022-04-24T19:49:41+08:00" }, { "authors" : [ @@ -5551,7 +7901,7 @@ "url" : "https:\/\/github.com\/matthewmorek" } ], - "createdAt" : "2021-02-18T12:31:04+00:00", + "createdAt" : "2021-02-18T12:31:04Z", "currentDirectoryPath" : null, "description" : "Toggles microphone.", "filename" : "toggle-mic.applescript", @@ -5560,7 +7910,7 @@ "dark" : null, "light" : "🎙" }, - "identifier" : "43754d5c0731006f9670e4d26e696fbd", + "identifier" : "f429f9a5cb87014a029d0a64cc5ce0f5", "isTemplate" : false, "language" : "applescript", "mode" : "silent", @@ -5577,31 +7927,83 @@ ] }, { - "name" : "Bookmarks", - "path" : "bookmarks", + "name" : "Dashboards", + "path" : "dashboards", "scriptCommands" : [ { - "authors" : null, - "createdAt" : "2020-10-02T16:04:30+01:00", + "authors" : [ + { + "name" : "Sam Wright", + "url" : "https:\/\/raycast.com\/samywamy10" + } + ], + "createdAt" : "2024-04-11T17:21:31+10:00", "currentDirectoryPath" : null, - "description" : "Open the GitHub repository for Script Commands provided by the community.", - "filename" : "open-script-commands-repository.sh", + "description" : "Runs an iPerf Speed Test.", + "filename" : "iperf-speed-test.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "📜" + "light" : "💾" }, - "identifier" : "efca4f141d304b6908fa6c1cb87bf97d", - "isTemplate" : false, + "identifier" : "804d7f7d15474c0b6f5798afa59badee", + "isTemplate" : true, "language" : "bash", - "mode" : "silent", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Bookmarks", - "path" : "bookmarks\/", - "refreshTime" : null, + "packageName" : "iPerf", + "path" : "dashboards\/", + "refreshTime" : "1h", "schemaVersion" : 1, - "title" : "Open Script Commands Repository", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "title" : "Speed Test", + "updatedAt" : "2024-04-11T07:23:05Z" + } + ] + }, + { + "name" : "Ai", + "path" : "ai", + "scriptCommands" : [ + + ], + "subGroups" : [ + { + "name" : "Gemini", + "path" : "gemini", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Est7", + "url" : "https:\/\/github.com\/est7" + }, + { + "name" : "Nimo Beeren", + "url" : "https:\/\/github.com\/nimobeeren" + } + ], + "createdAt" : "2025-04-24T11:38:46+08:00", + "currentDirectoryPath" : null, + "description" : "Open Gemini in Chrome browser and submit a prompt with optional selected text as context", + "filename" : "gemini.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/icon-gemini.svg" + }, + "identifier" : "2a9c8b6698663cc8834ace7501bc9bec", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Gemini", + "path" : "ai\/gemini\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Ask Gemini", + "updatedAt" : "2025-05-13T08:32:11Z" + } + ] } ] }, @@ -5630,7 +8032,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Escape String for Shell", - "updatedAt" : "2020-12-09T22:19:19+00:00" + "updatedAt" : "2020-12-09T22:19:19Z" }, { "authors" : [ @@ -5686,7 +8088,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Count Characters Bash", - "updatedAt" : "2021-06-23T07:27:53+00:00" + "updatedAt" : "2021-06-23T07:27:53Z" + }, + { + "authors" : [ + { + "name" : "Stephen Kaplan", + "url" : "https:\/\/github.com\/SKaplanOfficial" + } + ], + "createdAt" : "2023-11-08T05:45:01-05:00", + "currentDirectoryPath" : null, + "description" : "Opens the Scripting Dictionary for the given application, defaulting to the active application if none is provided.", + "filename" : "view-scripting-dictionary.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "2185a0ecf69c65f22c0ce316008c1bfb", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utils", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "View Scripting Dictionary", + "updatedAt" : "2023-11-08T05:45:01-05:00" }, { "authors" : [ @@ -5714,7 +8144,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Transform Case", - "updatedAt" : "2021-01-24T20:18:06+00:00" + "updatedAt" : "2021-01-24T20:18:06Z" }, { "authors" : [ @@ -5788,7 +8218,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Encode Base64", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, @@ -5811,7 +8241,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Decode JWT", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -5839,7 +8269,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Generate Password", - "updatedAt" : "2021-06-14T20:09:49+02:00" + "updatedAt" : "2022-03-21T14:57:32-04:00" }, { "authors" : [ @@ -5848,16 +8278,16 @@ "url" : "https:\/\/github.com\/jesse-c" } ], - "createdAt" : "2021-01-04T23:05:52+00:00", + "createdAt" : "2021-01-04T23:05:52Z", "currentDirectoryPath" : null, "description" : "Check if a website is up", "filename" : "is-it-up.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🩺" + "light" : "🌐" }, - "identifier" : "eb23a85cca77120f511f36bba2ff520b", + "identifier" : "2889ef24ae8d92015ae9500dfc3e704a", "isTemplate" : false, "language" : "bash", "mode" : "compact", @@ -5867,7 +8297,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Is It Up?", - "updatedAt" : "2021-01-04T23:05:52+00:00" + "updatedAt" : "2023-02-21T22:56:29-05:00" + }, + { + "authors" : [ + { + "name" : "Andrii Barabash", + "url" : "https:\/\/github.com\/AndriiBarabash" + } + ], + "createdAt" : "2025-09-27T20:40:28+02:00", + "currentDirectoryPath" : null, + "description" : "Toggles an SSH SOCKS proxy tunnel on and off.", + "filename" : "toggle_ssh_proxy_tunnel.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔒" + }, + "identifier" : "aae74278107ffa5f34b3733eb2c8a813", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle SSH SOCKS Tunnel", + "updatedAt" : "2025-09-29T13:44:50Z" }, { "authors" : [ @@ -6067,30 +8525,86 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Flutter Create Project", - "updatedAt" : "2021-08-17T16:40:16+00:00" + "updatedAt" : "2021-08-17T16:40:16Z" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Vishal Telangre", + "url" : "https:\/\/github.com\/vishaltelangre" } ], - "createdAt" : "2020-11-09T15:37:42-05:00", + "createdAt" : "2020-11-30T21:05:51+02:00", "currentDirectoryPath" : null, - "description" : "Ping an IP address or URL on an interval.", - "filename" : "ping-monitor.template.sh", + "description" : "Copies full path of the currently focused Finder window", + "filename" : "copy-focused-finder-window-path.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🌐" + "light" : "📁" }, - "identifier" : "37d45215abd0ff3284bb55a695316b26", - "isTemplate" : true, + "identifier" : "6e8e65e874ff14cff3f49c902d7481b9", + "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Internet", + "packageName" : "Developer Utils", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Focused Finder Window Path", + "updatedAt" : "2022-04-24T12:29:22+05:30" + }, + { + "authors" : [ + { + "name" : "Angelos Michalopoulos", + "url" : "https:\/\/github.com\/miagg" + } + ], + "createdAt" : "2022-08-19T13:26:13+03:00", + "currentDirectoryPath" : null, + "description" : "Copying the default SSH public key to the clipboard", + "filename" : "copy-ssh-public-key.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔑" + }, + "identifier" : "47d77dea587aac1516a1fb3d1ab9408c", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utils", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy SSH Public Key", + "updatedAt" : "2022-08-19T13:26:13+03:00" + }, + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-11-09T15:37:42-05:00", + "currentDirectoryPath" : null, + "description" : "Ping an IP address or URL on an interval.", + "filename" : "ping-monitor.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🌐" + }, + "identifier" : "37d45215abd0ff3284bb55a695316b26", + "isTemplate" : true, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Internet", "path" : "developer-utils\/", "refreshTime" : "10m", "schemaVersion" : 1, @@ -6123,7 +8637,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Run Command On Front Finder Window", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2022-01-17T18:22:39-08:00" }, { "authors" : [ @@ -6179,7 +8693,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Query cheat.sh", - "updatedAt" : "2021-07-04T22:26:57+02:00" + "updatedAt" : "2023-09-06T19:19:46-05:00" }, { "authors" : [ @@ -6316,6 +8830,34 @@ "title" : "SHA1 Hash", "updatedAt" : "2021-03-26T10:57:36+01:00" }, + { + "authors" : [ + { + "name" : "David Molinero", + "url" : "https:\/\/github.com\/doktor500" + } + ], + "createdAt" : "2021-12-20T12:46:48Z", + "currentDirectoryPath" : null, + "description" : "Generates a ULID and copies it to the clipboard.", + "filename" : "generate-ulid.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "💻" + }, + "identifier" : "17aae21d1f94cccc5275cb681e873b28", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Generate ULID", + "updatedAt" : "2021-12-20T12:48:58Z" + }, { "authors" : [ { @@ -6365,7 +8907,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Generate UUID", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -6402,7 +8944,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-02-16T22:31:57+00:00", + "createdAt" : "2021-02-16T22:31:57Z", "currentDirectoryPath" : null, "description" : "Create beautiful images of your code with https:\/\/ray.so", "filename" : "create-image-from-code.sh", @@ -6411,7 +8953,7 @@ "dark" : null, "light" : ".\/images\/ray-so.png" }, - "identifier" : "8ddb848532c729215e01d0d3fa1aeb6a", + "identifier" : "88ae1869a8a7487db63e8ff43fb3db43", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -6421,7 +8963,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Create Image from Code", - "updatedAt" : "2021-03-31T14:23:54+01:00" + "updatedAt" : "2024-03-12T21:01:55+07:00" }, { "authors" : [ @@ -6500,7 +9042,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Lorem Ipsum", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -6528,7 +9070,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Print TLDR doc", - "updatedAt" : "2021-03-16T06:39:37+00:00" + "updatedAt" : "2021-03-16T06:39:37Z" }, { "authors" : [ @@ -6584,7 +9126,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Error Info", - "updatedAt" : "2021-03-01T16:54:23+00:00" + "updatedAt" : "2021-03-01T16:54:23Z" + }, + { + "authors" : [ + { + "name" : "decaylala", + "url" : "https:\/\/github.com\/decaylala" + } + ], + "createdAt" : "2023-09-05T23:21:57+08:00", + "currentDirectoryPath" : null, + "description" : "Join multiple lines of text from the clipboard into a single line, separated by a specified delimiter.", + "filename" : "join-lines.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🛠" + }, + "identifier" : "ed8ed8f5841fbb881efe5a16aef73695", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Join Clipboard Lines by Delimiter", + "updatedAt" : "2023-09-05T15:24:46Z" }, { "authors" : [ @@ -6614,6 +9184,34 @@ "title" : "Base64 Encode", "updatedAt" : "2021-03-26T10:57:36+01:00" }, + { + "authors" : [ + { + "name" : "Annie Ma", + "url" : "http:\/\/www.anniema.co\/" + } + ], + "createdAt" : "2024-01-26T02:19:25-07:00", + "currentDirectoryPath" : null, + "description" : "This script deletes the line at cursor position.", + "filename" : "delete-current-line.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⌨️" + }, + "identifier" : "155fc5e8e485cc9d9f7a08797ea68597", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Delete Current Line", + "updatedAt" : "2024-01-26T09:21:48Z" + }, { "authors" : [ { @@ -6640,7 +9238,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Strong Password Generator", - "updatedAt" : "2021-01-24T20:15:25+00:00" + "updatedAt" : "2021-01-24T20:15:25Z" }, { "authors" : null, @@ -6663,7 +9261,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Decode Base64", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -6691,7 +9289,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Clear All Related Junk", - "updatedAt" : "2021-06-14T20:33:34+03:00" + "updatedAt" : "2023-02-10T21:22:03-06:00" }, { "authors" : [ @@ -6719,7 +9317,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Copy Current Epoch Unix Timestamp", - "updatedAt" : "2021-07-29T11:41:55+00:00" + "updatedAt" : "2021-07-29T11:41:55Z" }, { "authors" : [ @@ -6798,7 +9396,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Prettify JSON", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -6826,7 +9424,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Deep Link", - "updatedAt" : "2021-09-01T13:11:06+00:00" + "updatedAt" : "2021-09-01T13:11:06Z" + }, + { + "authors" : [ + { + "name" : "Kiko Beats", + "url" : "https:\/\/github.com\/kikobeats" + } + ], + "createdAt" : "2022-01-03T14:02:54+01:00", + "currentDirectoryPath" : null, + "description" : "Microlink API integration", + "filename" : "microlink.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/microlink.png" + }, + "identifier" : "e9302dbc4177d6533a9279fd03436425", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Microlink", + "path" : "developer-utils\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Microlink API", + "updatedAt" : "2022-01-05T11:19:54+01:00" }, { "authors" : null, @@ -6849,7 +9475,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Clear Derived Data", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -6882,30 +9508,30 @@ { "authors" : [ { - "name" : "chohner", - "url" : "https:\/\/github.com\/chohner" + "name" : "Angelos Michalopoulos", + "url" : "https:\/\/github.com\/miagg" } ], - "createdAt" : "2021-02-22T11:26:39+01:00", + "createdAt" : "2022-08-19T12:58:32+03:00", "currentDirectoryPath" : null, - "description" : "Opens current topmost directory in VSCode", - "filename" : "open-folder-in-vscode.applescript", - "hasArguments" : false, + "description" : "Get the TTFB (Time to First Byte) of a website", + "filename" : "get-ttfb.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/vscode.png" + "light" : "🕐" }, - "identifier" : "2b0b56d7b5b14aacf924a1a6f236ecb3", + "identifier" : "d4474b109eb271a2ce54473c58edb94d", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", + "language" : "bash", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "VS Code", + "packageName" : "Developer Utils", "path" : "developer-utils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Directory", - "updatedAt" : "2021-05-10T09:05:19+02:00" + "title" : "Get TTFB (Time to First Byte)", + "updatedAt" : "2023-01-05T20:54:09+02:00" }, { "authors" : [ @@ -6933,7 +9559,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Trim Git Commit Hash", - "updatedAt" : "2021-07-19T14:40:00+00:00" + "updatedAt" : "2021-07-19T14:40:00Z" }, { "authors" : [ @@ -6993,10 +9619,100 @@ } ], "subGroups" : [ + { + "name" : "Xcode", + "path" : "xcode", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" + } + ], + "createdAt" : "2021-09-27T01:47:33+03:00", + "currentDirectoryPath" : null, + "description" : "Open recent Xcode project", + "filename" : "xcode-recent-project.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/xcode.png" + }, + "identifier" : "1e147f71972fc7e7512ae987ef3c458c", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/xcode\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Recent Project", + "updatedAt" : "2021-09-28T19:41:01+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" + } + ], + "createdAt" : "2021-09-27T01:47:33+03:00", + "currentDirectoryPath" : null, + "description" : "Open the last Xcode project ", + "filename" : "xcode-last-project.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/xcode.png" + }, + "identifier" : "3604faee01a482d8272b529b4d0384b7", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/xcode\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Last Project", + "updatedAt" : "2021-09-28T19:41:01+03:00" + } + ] + }, { "name" : "Docker", "path" : "docker", "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Fabián Delgado", + "url" : null + } + ], + "createdAt" : "2021-09-21T14:21:48-03:00", + "currentDirectoryPath" : null, + "description" : "Runs a Docker container", + "filename" : "run-docker.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "▶️" + }, + "identifier" : "79e2d77eee8042ec057f2786356d44dc", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : true, + "packageName" : "Docker", + "path" : "developer-utils\/docker\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Run", + "updatedAt" : "2021-09-21T14:21:48-03:00" + }, { "authors" : [ { @@ -7053,6 +9769,34 @@ "title" : "List Containers", "updatedAt" : "2021-06-04T18:57:07+02:00" }, + { + "authors" : [ + { + "name" : "Fabián Delgado", + "url" : null + } + ], + "createdAt" : "2021-06-06T21:26:12+02:00", + "currentDirectoryPath" : null, + "description" : "Stops a Docker container", + "filename" : "stop-docker.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "⏹️" + }, + "identifier" : "9684377a02881cbf7dcf91f76712c550", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : true, + "packageName" : "Docker", + "path" : "developer-utils\/docker\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop", + "updatedAt" : "2021-09-21T14:21:48-03:00" + }, { "authors" : [ { @@ -7079,7 +9823,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Clean", - "updatedAt" : "2021-06-12T17:33:18+00:00" + "updatedAt" : "2021-06-12T17:33:18Z" }, { "authors" : [ @@ -7112,7 +9856,7 @@ ] }, { - "name" : "Gitlab", + "name" : "GitLab", "path" : "gitlab", "scriptCommands" : [ { @@ -7202,82 +9946,256 @@ ] }, { - "name" : "Google", - "path" : "google", + "name" : "Minikube", + "path" : "minikube", "scriptCommands" : [ { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" } ], - "createdAt" : "2020-11-09T11:57:38-05:00", + "createdAt" : "2022-08-06T20:55:00+02:00", "currentDirectoryPath" : null, - "description" : "Run a [PageSpeed Insights](https:\/\/developers.google.com\/speed\/pagespeed\/insights\/) analysis on desktop of URL.", - "filename" : "google-psi-desktop.sh", - "hasArguments" : true, + "description" : "Start Minikube cluster", + "filename" : "minikube-start.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/google-psi-logo.png" + "light" : "🚀" }, - "identifier" : "75d5bcfc2c27d0a67a02e8832413ea05", + "identifier" : "1d2543332c8c0ca25fe54aed2ee3f982", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Google", - "path" : "developer-utils\/google\/", + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "PageSpeed Insights - Desktop", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "title" : "Start", + "updatedAt" : "2022-08-06T20:55:00+02:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" } ], - "createdAt" : "2020-11-09T11:57:38-05:00", + "createdAt" : "2022-08-06T20:55:00+02:00", "currentDirectoryPath" : null, - "description" : "Run a [PageSpeed Insights](https:\/\/developers.google.com\/speed\/pagespeed\/insights\/) analysis on mobile of URL.", - "filename" : "google-psi-mobile.sh", + "description" : "Pause Minikube cluster", + "filename" : "minikube-config-set.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/google-psi-logo.png" + "light" : "⚙️" }, - "identifier" : "e7ea215de7f19cf0b6379a5c6845ce9b", + "identifier" : "d6f637554979e38d38f4149244d245c1", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Google", - "path" : "developer-utils\/google\/", + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "PageSpeed Insights - Mobile", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "title" : "Config Set", + "updatedAt" : "2022-08-06T20:55:00+02:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" } ], - "createdAt" : "2020-11-09T11:57:38-05:00", - "currentDirectoryPath" : "~\/Desktop", - "description" : "Open a [Lighthouse](https:\/\/developers.google.com\/web\/tools\/lighthouse\/) report of URL.", - "filename" : "google-lighthouse.sh", - "hasArguments" : true, + "createdAt" : "2022-08-06T20:55:00+02:00", + "currentDirectoryPath" : null, + "description" : "Stops a running Minikube cluster", + "filename" : "minikube-stop.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/google-lighthouse-logo.png" + "light" : "🤖" }, - "identifier" : "133261278856325c8efd9cbfb976ee89", + "identifier" : "8b6bf7326d5c1bee0c704d3decf724de", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop", + "updatedAt" : "2022-08-06T20:55:00+02:00" + }, + { + "authors" : [ + { + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" + } + ], + "createdAt" : "2022-08-06T20:55:00+02:00", + "currentDirectoryPath" : null, + "description" : "Pause Minikube cluster", + "filename" : "minikube-unpause.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⏸" + }, + "identifier" : "c164a2e673e4cf59c3180d154f1e78c6", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Unpause", + "updatedAt" : "2022-08-06T20:55:00+02:00" + }, + { + "authors" : [ + { + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" + } + ], + "createdAt" : "2022-08-06T20:55:00+02:00", + "currentDirectoryPath" : null, + "description" : "Show Minikube cluster status", + "filename" : "minikube-status.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "ℹ️" + }, + "identifier" : "606629ecfbefdad4b07765587a208546", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Status", + "updatedAt" : "2022-08-06T20:55:00+02:00" + }, + { + "authors" : [ + { + "name" : "Daniils Petrovs", + "url" : "https:\/\/danpetrov.xyz" + } + ], + "createdAt" : "2022-08-06T20:55:00+02:00", + "currentDirectoryPath" : null, + "description" : "Pause Minikube cluster", + "filename" : "minikube-pause.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⏸" + }, + "identifier" : "8b95921fd6d9305ef97cd1e7ab038594", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Minikube", + "path" : "developer-utils\/minikube\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Pause", + "updatedAt" : "2022-08-06T20:55:00+02:00" + } + ] + }, + { + "name" : "Google", + "path" : "google", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-11-09T11:57:38-05:00", + "currentDirectoryPath" : null, + "description" : "Run a [PageSpeed Insights](https:\/\/developers.google.com\/speed\/pagespeed\/insights\/) analysis on desktop of URL.", + "filename" : "google-psi-desktop.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/google-psi-logo.png" + }, + "identifier" : "75d5bcfc2c27d0a67a02e8832413ea05", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Google", + "path" : "developer-utils\/google\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "PageSpeed Insights - Desktop", + "updatedAt" : "2020-11-28T13:47:03-05:00" + }, + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-11-09T11:57:38-05:00", + "currentDirectoryPath" : null, + "description" : "Run a [PageSpeed Insights](https:\/\/developers.google.com\/speed\/pagespeed\/insights\/) analysis on mobile of URL.", + "filename" : "google-psi-mobile.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/google-psi-logo.png" + }, + "identifier" : "e7ea215de7f19cf0b6379a5c6845ce9b", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Google", + "path" : "developer-utils\/google\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "PageSpeed Insights - Mobile", + "updatedAt" : "2020-11-28T13:47:03-05:00" + }, + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-11-09T11:57:38-05:00", + "currentDirectoryPath" : "~\/Desktop", + "description" : "Open a [Lighthouse](https:\/\/developers.google.com\/web\/tools\/lighthouse\/) report of URL.", + "filename" : "google-lighthouse.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/google-lighthouse-logo.png" + }, + "identifier" : "133261278856325c8efd9cbfb976ee89", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -7329,6 +10247,34 @@ "name" : "Brew", "path" : "brew", "scriptCommands" : [ + { + "authors" : [ + { + "name" : "LanikSJ", + "url" : "https:\/\/github.com\/LanikSJ" + } + ], + "createdAt" : "2022-03-03T00:32:00-08:00", + "currentDirectoryPath" : null, + "description" : "Updates brew and upgrades every outdated app", + "filename" : "brew-cask-upgrade.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍺" + }, + "identifier" : "d1c2825e774ea720d9897eaf8a0d7b9d", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Brew", + "path" : "developer-utils\/brew\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Cask Upgrade", + "updatedAt" : "2022-03-03T00:32:00-08:00" + }, { "authors" : [ { @@ -7383,7 +10329,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Doctor", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" }, { "authors" : [ @@ -7411,7 +10357,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Outdated List", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" }, { "authors" : [ @@ -7467,7 +10413,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Start Service", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" }, { "authors" : [ @@ -7495,7 +10441,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "List", - "updatedAt" : "2021-03-19T16:42:53+00:00" + "updatedAt" : "2021-03-19T16:42:53Z" }, { "authors" : [ @@ -7523,7 +10469,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Upgrade", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" }, { "authors" : [ @@ -7551,7 +10497,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Stop Service", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" }, { "authors" : [ @@ -7579,7 +10525,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Update", - "updatedAt" : "2021-03-19T16:42:53+00:00" + "updatedAt" : "2021-03-19T16:42:53Z" }, { "authors" : [ @@ -7607,7 +10553,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Restart Service", - "updatedAt" : "2021-09-07T10:00:18+00:00" + "updatedAt" : "2021-09-07T10:00:18Z" + }, + { + "authors" : [ + { + "name" : "StevenRCE0", + "url" : "https:\/\/github.com\/StevenRCE0" + } + ], + "createdAt" : "2022-04-06T00:01:05+08:00", + "currentDirectoryPath" : null, + "description" : "Uninstalls an Specified Application Using Homebrew", + "filename" : "brew-uninstall-application.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🍺" + }, + "identifier" : "90405cfd617b86b933e641e182bb12c9", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Brew", + "path" : "developer-utils\/brew\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Uninstall", + "updatedAt" : "2022-04-06T00:01:05+08:00" }, { "authors" : [ @@ -7635,12 +10609,12 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Services List", - "updatedAt" : "2021-02-25T00:34:23+00:00" + "updatedAt" : "2021-02-25T00:34:23Z" } ] }, { - "name" : "Github", + "name" : "GitHub", "path" : "github", "scriptCommands" : [ { @@ -7678,7 +10652,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-11-27T10:40:24+00:00", + "createdAt" : "2020-11-27T10:40:24Z", "currentDirectoryPath" : null, "description" : "Show statistics of your GitHub repository.", "filename" : "github-repository-stars.template.rb", @@ -7687,7 +10661,63 @@ "dark" : null, "light" : "⭐️" }, - "identifier" : "f7f43950b26ed37ae90938e7f4a0e0ad", + "identifier" : "bda99211bf65f1b5219db20e1b8f1b3d", + "isTemplate" : true, + "language" : "ruby", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "GitHub", + "path" : "developer-utils\/github\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Repository Statistics", + "updatedAt" : "2020-11-27T10:40:24Z" + }, + { + "authors" : [ + { + "name" : "Astrit", + "url" : "https:\/\/github.com\/astrit" + } + ], + "createdAt" : "2021-11-19T19:14:43+01:00", + "currentDirectoryPath" : null, + "description" : "Show GitHub user contributions from the current year", + "filename" : "github-contributions.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : "images\/github-logo-iconDark.png", + "light" : "images\/github-logo.png" + }, + "identifier" : "23544f0e4fd17e7d9cfb092fd82e1452", + "isTemplate" : true, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "GitHub Contributions", + "path" : "developer-utils\/github\/", + "refreshTime" : "2h", + "schemaVersion" : 1, + "title" : "GitHub Contributions", + "updatedAt" : "2021-11-19T19:14:43+01:00" + }, + { + "authors" : [ + { + "name" : "Valdir Junior", + "url" : "https:\/\/github.com\/valdirjunior011 " + } + ], + "createdAt" : "2023-07-25T02:12:24+02:00", + "currentDirectoryPath" : null, + "description" : "Show statistics of your GitHub repositories.", + "filename" : "github-repository-stars_all_repos_template.rb", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "⭐️" + }, + "identifier" : "b1a1df37b2ee1f7965f5bad16f491ddd", "isTemplate" : true, "language" : "ruby", "mode" : "inline", @@ -7697,7 +10727,7 @@ "refreshTime" : "1h", "schemaVersion" : 1, "title" : "Repository Statistics", - "updatedAt" : "2020-11-27T10:40:24+00:00" + "updatedAt" : "2023-07-25T00:17:33Z" }, { "authors" : [ @@ -7734,7 +10764,7 @@ "url" : "https:\/\/github.com\/FSipiano" } ], - "createdAt" : "2021-03-17T17:31:38+00:00", + "createdAt" : "2021-03-17T17:31:38Z", "currentDirectoryPath" : null, "description" : "Display number of open pull requests", "filename" : "github-open-pull-requests.template.rb", @@ -7743,7 +10773,7 @@ "dark" : "images\/github-logo-iconDark.png", "light" : "images\/github-logo.png" }, - "identifier" : "94eaf509839a2abb4c0f38fe84dac1fb", + "identifier" : "07da15e048906bd7b5ee0275044649f8", "isTemplate" : true, "language" : "ruby", "mode" : "inline", @@ -7753,7 +10783,7 @@ "refreshTime" : "5m", "schemaVersion" : 1, "title" : "Open Pull Requests", - "updatedAt" : "2021-03-18T11:30:06+00:00" + "updatedAt" : "2021-03-18T11:30:06Z" }, { "authors" : [ @@ -7762,7 +10792,7 @@ "url" : "https:\/\/github.com\/FSipiano" } ], - "createdAt" : "2021-03-17T17:31:38+00:00", + "createdAt" : "2021-03-17T17:31:38Z", "currentDirectoryPath" : null, "description" : "Display (detailed) GitHub pull requests", "filename" : "github-open-pull-requests-details.template.rb", @@ -7771,7 +10801,7 @@ "dark" : "images\/github-logo-iconDark.png", "light" : "images\/github-logo.png" }, - "identifier" : "02e903f7524e97478f2c5c31ee143834", + "identifier" : "d01e8e7a75307d40d48797d8ec6041b8", "isTemplate" : true, "language" : "ruby", "mode" : "fullOutput", @@ -7790,7 +10820,7 @@ "url" : "https:\/\/github.com\/FSipiano" } ], - "createdAt" : "2021-03-17T17:31:38+00:00", + "createdAt" : "2021-03-17T17:31:38Z", "currentDirectoryPath" : null, "description" : "Open your GitHub pull requests page", "filename" : "github-open-pull-requests-page.sh", @@ -7799,7 +10829,7 @@ "dark" : "images\/github-logo-iconDark.png", "light" : "images\/github-logo.png" }, - "identifier" : "063d1b26dd9a78237a832b439845c4c0", + "identifier" : "1568c128b1e4e3897c8f2a65bb14d551", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -7809,7 +10839,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Open Pull Requests page", - "updatedAt" : "2021-03-18T11:30:06+00:00" + "updatedAt" : "2021-03-18T11:30:06Z" + }, + { + "authors" : [ + { + "name" : "Vince Picone", + "url" : "https:\/\/github.com\/vpicone" + } + ], + "createdAt" : "2021-03-17T17:31:38Z", + "currentDirectoryPath" : null, + "description" : "Display number of Pull Requests requesting your review", + "filename" : "github-review-requests.template.rb", + "hasArguments" : false, + "icon" : { + "dark" : "images\/github-logo-iconDark.png", + "light" : "images\/github-logo.png" + }, + "identifier" : "d1fc531c2aa8d1bac53ac6f630c1ca90", + "isTemplate" : true, + "language" : "ruby", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "GitHub", + "path" : "developer-utils\/github\/", + "refreshTime" : "5m", + "schemaVersion" : 1, + "title" : "Show Review Requests", + "updatedAt" : "2021-11-03T15:03:45-05:00" }, { "authors" : [ @@ -7876,33 +10934,89 @@ { "authors" : [ { - "name" : "Oğuzhan Yılmaz", - "url" : "https:\/\/github.com\/c1982" + "name" : "Chris Cook", + "url" : "https:\/\/github.com\/zirkelc" } ], - "createdAt" : "2020-12-29T23:14:00+03:00", + "createdAt" : "2024-06-14T14:31:44+02:00", "currentDirectoryPath" : null, - "description" : "Copies the AWS IPv4 to the clipboard.", - "filename" : "whatismyregion.sh", - "hasArguments" : false, + "description" : "Download from Amazon S3 via URL", + "filename" : "amazon-s3-download.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🤖" + "light" : "images\/amazon-s3.png" }, - "identifier" : "3c3c86c801d87462b02da5e9a2b8af00", + "identifier" : "b4dd5f3fe1c6dd1b9b44fc9f0fe88364", "isTemplate" : false, "language" : "bash", "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Developer Utilities", + "packageName" : "AWS", "path" : "developer-utils\/aws\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Find AWS Region by IP", - "updatedAt" : "2021-01-04T13:34:28+00:00" - } - ] - }, + "title" : "S3 Download", + "updatedAt" : "2024-09-17T11:36:59+02:00" + }, + { + "authors" : [ + { + "name" : "David Molinero", + "url" : "https:\/\/github.com\/doktor500" + } + ], + "createdAt" : "2021-12-15T22:46:57+01:00", + "currentDirectoryPath" : null, + "description" : "Login to AWS using aws-sso-util", + "filename" : "aws-sso-util.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/aws-sso-util.png" + }, + "identifier" : "97368460c4c6dd74419fb9fa3769c23e", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "AWS", + "path" : "developer-utils\/aws\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Single Sign-On", + "updatedAt" : "2021-12-19T15:22:29Z" + }, + { + "authors" : [ + { + "name" : "Oğuzhan Yılmaz", + "url" : "https:\/\/github.com\/c1982" + } + ], + "createdAt" : "2020-12-29T23:14:00+03:00", + "currentDirectoryPath" : null, + "description" : "Copies the AWS IPv4 to the clipboard.", + "filename" : "whatismyregion.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "3c3c86c801d87462b02da5e9a2b8af00", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Developer Utilities", + "path" : "developer-utils\/aws\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Find AWS Region by IP", + "updatedAt" : "2021-01-04T13:34:28Z" + } + ] + }, { "name" : "Sentry", "path" : "sentry", @@ -7914,7 +11028,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-12-02T09:13:05+00:00", + "createdAt" : "2020-12-02T09:13:05Z", "currentDirectoryPath" : null, "description" : "Show unresolved issues of the last 24 hours from Sentry.", "filename" : "sentry-unresolved-issues.template.py", @@ -7923,7 +11037,7 @@ "dark" : "images\/sentry-dark.png", "light" : "images\/sentry.png" }, - "identifier" : "ad03c85a59ef25bccd103067f7034697", + "identifier" : "d965f2571912eb46a116071bd5a25111", "isTemplate" : true, "language" : "python", "mode" : "inline", @@ -7933,7 +11047,7 @@ "refreshTime" : "1h", "schemaVersion" : 1, "title" : "Unresolved Issues", - "updatedAt" : "2020-12-02T09:13:05+00:00" + "updatedAt" : "2020-12-02T09:13:05Z" }, { "authors" : [ @@ -7946,7 +11060,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-12-02T09:13:05+00:00", + "createdAt" : "2020-12-02T09:13:05Z", "currentDirectoryPath" : null, "description" : "Show unresolved issues in the last 24 hours (by project) from Sentry.", "filename" : "sentry-unresolved-issues-by-project.template.py", @@ -7955,7 +11069,7 @@ "dark" : "images\/sentry-dark.png", "light" : "images\/sentry.png" }, - "identifier" : "0b50b081414f73ef7e75e1f061bf9bd2", + "identifier" : "cd9dc8603b5433fe83c15dd43785add6", "isTemplate" : true, "language" : "python", "mode" : "fullOutput", @@ -7994,7 +11108,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Local IPv4", - "updatedAt" : "2021-07-08T21:33:32-04:00" + "updatedAt" : "2022-01-19T12:05:31+01:00" }, { "authors" : [ @@ -8045,7 +11159,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "External IPv4", - "updatedAt" : "2021-07-08T21:33:12-04:00" + "updatedAt" : "2022-01-19T12:05:31+01:00" }, { "authors" : [ @@ -8096,7 +11210,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "External IPv6", - "updatedAt" : "2021-07-08T21:33:27-04:00" + "updatedAt" : "2022-01-19T12:05:31+01:00" }, { "authors" : null, @@ -8119,7 +11233,69 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Local IPv6", - "updatedAt" : "2021-07-08T21:33:40-04:00" + "updatedAt" : "2022-01-19T12:05:31+01:00" + } + ] + }, + { + "name" : "Vscode", + "path" : "vscode", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Maksim Zemlyanikin", + "url" : "https:\/\/github.com\/Maksimka101" + } + ], + "createdAt" : "2021-10-11T13:31:08+03:00", + "currentDirectoryPath" : null, + "description" : "Finds path to the given directory which must be a VS Code or Git project and opens it with VS Code", + "filename" : "open-project-in-vscode.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/vscode.png" + }, + "identifier" : "66befabf033302a672d20d8d207a3dfd", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "VS Code", + "path" : "developer-utils\/vscode\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Project", + "updatedAt" : "2022-11-08T14:51:04+05:30" + }, + { + "authors" : [ + { + "name" : "chohner", + "url" : "https:\/\/github.com\/chohner" + } + ], + "createdAt" : "2021-02-22T11:26:39+01:00", + "currentDirectoryPath" : null, + "description" : "Opens current topmost directory in VS Code", + "filename" : "open-folder-in-vscode.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/vscode.png" + }, + "identifier" : "2b0b56d7b5b14aacf924a1a6f236ecb3", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "VS Code", + "path" : "developer-utils\/vscode\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Directory", + "updatedAt" : "2022-11-08T14:51:04+05:30" } ] }, @@ -8300,544 +11476,646 @@ ] }, { - "name" : "Password Managers", - "path" : "password-managers", + "name" : "Communication", + "path" : "communication", "scriptCommands" : [ - + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-11-16T16:14:09-05:00", + "currentDirectoryPath" : null, + "description" : "Use [xkcdpass](https:\/\/github.com\/redacted\/XKCD-password-generator) to create a passphrase.", + "filename" : "xkcdpass.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔐" + }, + "identifier" : "e48d4638b40bf69a6c441a609f09e27b", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Communication", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Generate Passphrase", + "updatedAt" : "2020-12-09T15:47:57-05:00" + }, + { + "authors" : [ + { + "name" : "Leo Fritsch", + "url" : "https:\/\/github.com\/leofritsch" + } + ], + "createdAt" : "2023-06-26T20:03:01+02:00", + "currentDirectoryPath" : null, + "description" : "Let Me Google That For You", + "filename" : "let-me-google-that.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🤡" + }, + "identifier" : "8c26812f87ffcd8305d704e94d8146eb", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Communication", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Let Me Google That", + "updatedAt" : "2023-06-27T09:57:07Z" + }, + { + "authors" : [ + { + "name" : "Alexander JH Steffen", + "url" : "https:\/\/github.com\/alexjsteffen" + } + ], + "createdAt" : "2021-12-20T07:46:10-05:00", + "currentDirectoryPath" : null, + "description" : "Place a telephone call via your iPhone on Wi-Fi.", + "filename" : "call-with-iphone.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📱" + }, + "identifier" : "6a212b23c41606e8701b64a7e18a00bb", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Communication", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Call with iPhone", + "updatedAt" : "2021-12-20T07:46:10-05:00" + }, + { + "authors" : [ + { + "name" : "Felipe Turcheti", + "url" : "https:\/\/felipeturcheti.com" + } + ], + "createdAt" : "2021-04-14T11:35:06-03:00", + "currentDirectoryPath" : null, + "description" : "Convert text to audible speech.", + "filename" : "say.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🗣" + }, + "identifier" : "36d92cab708c342b05f9c7ac27e5e96f", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Communication", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Say", + "updatedAt" : "2021-04-14T12:13:12-03:00" + }, + { + "authors" : [ + { + "name" : "Petr Nikolaev", + "url" : "https:\/\/github.com\/PitNikola" + } + ], + "createdAt" : "2021-03-14T20:36:28Z", + "currentDirectoryPath" : null, + "description" : "Share secret securely using https:\/\/share.doppler.com\/.", + "filename" : "share-secret-doppler.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/doppler-logo.png" + }, + "identifier" : "348009c977b2cf35d589b7723f89b8ed", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Doppler", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Share Secret from Clipboard", + "updatedAt" : "2021-03-14T20:36:28Z" + }, + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + }, + { + "name" : "Thiago Holanda", + "url" : "https:\/\/twitter.com\/tholanda" + } + ], + "createdAt" : "2020-11-09T09:32:06-05:00", + "currentDirectoryPath" : null, + "description" : "Get most recent two-factor authentication code from iMessages.", + "filename" : "imessage-2fa.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔐" + }, + "identifier" : "12f0f2ced06b2baa123a6105dbfaca73", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "iMessage", + "path" : "communication\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "2FA from iMessages", + "updatedAt" : "2020-11-28T13:47:10-05:00" + } ], "subGroups" : [ { - "name" : "Bitwarden", - "path" : "bitwarden", + "name" : "Google Meet", + "path" : "google-meet", "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Mujib Azizi", + "url" : "https:\/\/github.com\/mujibazizi" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-03-30T10:13:53+02:00", "currentDirectoryPath" : null, - "description" : "Search all items in a Bitwarden vault, and copy the password of the first search result to the clipboard.", - "filename" : "copy-first-matching-password.sh", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "images\/bitwarden.png" + "description" : "Start a Google Meet session", + "filename" : "meet.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/logo.png" }, - "identifier" : "72075d66d7c96563327670d572148a5c", + "identifier" : "05b7c0a10c2a7fe1d487f1d608b3a9b3", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Google", + "path" : "communication\/google-meet\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Copy First Matching Password", - "updatedAt" : "2021-06-27T00:02:29+02:00" - }, + "title" : "Open Google Meet", + "updatedAt" : "2021-07-14T20:00:21+02:00" + } + ] + }, + { + "name" : "Mail", + "path" : "mail", + "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Ben Yoon", + "url" : "https:\/\/github.com\/benyn" } ], - "createdAt" : "2021-03-29T13:44:44-04:00", + "createdAt" : "2023-02-02T13:38:06-08:00", "currentDirectoryPath" : null, - "description" : "Delete a Bitwarden Send.", - "filename" : "delete-send.sh", - "hasArguments" : true, + "description" : "Open the last received email in your inbox in Mail.app", + "filename" : "open-most-recent-email.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "✉️" }, - "identifier" : "c379a38ce1c09e8d957bd3be837d9ebd", + "identifier" : "3766484ecb1942dab17dd995c1e51f14", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", - "needsConfirmation" : true, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "needsConfirmation" : null, + "packageName" : "Mail", + "path" : "communication\/mail\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Delete a Send", - "updatedAt" : "2021-03-29T13:44:44-04:00" - }, + "title" : "Open Most Recent Email", + "updatedAt" : "2023-02-03T00:48:14Z" + } + ] + }, + { + "name" : "DuckDuckGo Email Protection", + "path" : "duckduckgo-email-protection", + "readme" : "communication\/duckduckgo-email-protection\/README.md", + "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2022-02-10T09:48:48+01:00", "currentDirectoryPath" : null, - "description" : "Lock a Bitwarden session.", - "filename" : "lock.sh", - "hasArguments" : false, + "description" : "Use this script command to configure your @duck.com authorizationID", + "filename" : "configure-@duck.com-script-command.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/duckduckgo_logo.png" }, - "identifier" : "2a9be47e57277d4fa9cb8a226abd9b4e", + "identifier" : "f21768def3b65261d459100b8eac5e8c", "isTemplate" : false, - "language" : "bash", - "mode" : "silent", + "language" : "applescript", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "DuckDuckGo Email Protection", + "path" : "communication\/duckduckgo-email-protection\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Lock Session", - "updatedAt" : "2021-03-29T13:44:44-04:00" + "title" : "Configure", + "updatedAt" : "2022-02-10T09:48:48+01:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Rediwed", + "url" : "github.com\/Rediwed" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2022-02-10T09:48:48+01:00", "currentDirectoryPath" : null, - "description" : "View the content of a text-only Bitwarden Send.", - "filename" : "receive-text-send.sh", - "hasArguments" : true, + "description" : "This script command generates a unique private @duck.com email address.", + "filename" : "generate-unique-email-address.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/duckduckgo_logo.png" }, - "identifier" : "f850482284a0f897ac026bb0ed8514d2", + "identifier" : "6c12d494954c21d0580e847a688d9eb3", "isTemplate" : false, - "language" : "bash", - "mode" : "fullOutput", + "language" : "applescript", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "DuckDuckGo Email Protection", + "path" : "communication\/duckduckgo-email-protection\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Receive a Text Send", - "updatedAt" : "2021-06-16T14:43:13+02:00" - }, + "title" : "Generate Unique Address", + "updatedAt" : "2024-07-14T22:23:53+08:00" + } + ] + }, + { + "name" : "Messenger", + "path" : "messenger", + "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-05-18T17:49:46+02:00", "currentDirectoryPath" : null, - "description" : "Create a new text-only Bitwarden Send.", - "filename" : "create-text-send.sh", + "description" : null, + "filename" : "messenger-open-conversation.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/messenger.png" }, - "identifier" : "ef085c701b79f8559894d964b6244742", + "identifier" : "d323b0b1ce4d1b6c8f6397c079a23681", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Messenger", + "path" : "communication\/messenger\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create a Text Send", - "updatedAt" : "2021-06-16T14:43:13+02:00" - }, + "title" : "Open Conversation", + "updatedAt" : "2021-07-23T17:47:14-04:00" + } + ] + }, + { + "name" : "Zoom", + "path" : "zoom", + "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Faris Aziz", + "url" : "https:\/\/github.com\/farisaziz12" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-05-02T20:25:26+02:00", "currentDirectoryPath" : null, - "description" : "Search all items in a Bitwarden vault.", - "filename" : "search-vault-items.sh", - "hasArguments" : true, + "description" : "Leaves Current Zoom meeting", + "filename" : "leave-meeting.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/zoom-logo.png" }, - "identifier" : "1e0fc8f792351eeff8d1f403cef716f5", + "identifier" : "1bfa04dd638bb1a5f9d93f3a556e96a3", "isTemplate" : false, - "language" : "bash", - "mode" : "fullOutput", - "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : true, + "packageName" : "Zoom", + "path" : "communication\/zoom\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search Vault Items", - "updatedAt" : "2021-02-20T18:54:25-05:00" + "title" : "Leave Meeting", + "updatedAt" : "2021-05-03T09:54:17Z" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Leo Voon", + "url" : "https:\/\/github.com\/leovoon" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2023-03-31T09:30:18+08:00", "currentDirectoryPath" : null, - "description" : "Display the authentication and lock status of the user's Bitwarden session.", - "filename" : "status.sh", - "hasArguments" : false, + "description" : "Rename your profile in Zoom Meeting App (Mac Only) and cliclick.", + "filename" : "rename-profile.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/zoom-logo.png" }, - "identifier" : "d86ee71986d686b7dfdeac1101e869ef", + "identifier" : "ff7531c3b095eb59465663d7b2e5626b", "isTemplate" : false, - "language" : "bash", - "mode" : "inline", + "language" : "applescript", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", - "refreshTime" : "5m", + "packageName" : "Zoom", + "path" : "communication\/zoom\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Bitwarden Status", - "updatedAt" : "2021-03-29T13:44:44-04:00" + "title" : "Rename Profile", + "updatedAt" : "2023-03-31T03:48:28Z" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Luigi Cardito", + "url" : "https:\/\/github.com\/lcardito" + }, + { + "name" : "Faris Aziz", + "url" : "https:\/\/github.com\/farisaziz12" } ], - "createdAt" : "2021-03-29T13:44:44-04:00", + "createdAt" : "2021-08-31T10:32:28+02:00", "currentDirectoryPath" : null, - "description" : "Edit an existing Bitwarden Send.", - "filename" : "edit-send.sh", - "hasArguments" : true, + "description" : "Show\/Hide your microphone in the current meeting", + "filename" : "toggle-video.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/zoom-logo.png" }, - "identifier" : "11b9241c955e4217f11a3e797189a3ab", + "identifier" : "a36414a653b2c264285dc7fd4b62563b", "isTemplate" : false, - "language" : "bash", - "mode" : "fullOutput", + "language" : "applescript", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Zoom", + "path" : "communication\/zoom\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Edit a Send", - "updatedAt" : "2021-03-29T13:44:44-04:00" + "title" : "Toggle Video", + "updatedAt" : "2021-08-31T16:37:44+02:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Luigi Cardito", + "url" : "https:\/\/github.com\/lcardito" + }, + { + "name" : "Faris Aziz", + "url" : "https:\/\/github.com\/farisaziz12" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-08-31T10:32:28+02:00", "currentDirectoryPath" : null, - "description" : "List all Bitwarden text Sends created in the currently unlocked account.", - "filename" : "list-sends.sh", - "hasArguments" : true, + "description" : "Mute\/Unmute your microphone in the current meeting", + "filename" : "toggle-mic.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/zoom-logo.png" }, - "identifier" : "10d61b623f51ab4e5a12cb1df29a16c0", + "identifier" : "5f4ac638a28f19b6fa2f377204f1d6dc", "isTemplate" : false, - "language" : "bash", - "mode" : "fullOutput", + "language" : "applescript", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Zoom", + "path" : "communication\/zoom\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "List All Text Sends", - "updatedAt" : "2021-03-29T13:44:44-04:00" - }, + "title" : "Toggle Microphone", + "updatedAt" : "2021-08-31T16:37:44+02:00" + } + ] + }, + { + "name" : "Slack", + "path" : "slack", + "scriptCommands" : [ { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-05-16T16:05:58+02:00", "currentDirectoryPath" : null, - "description" : "Unlock an authenticated Bitwarden session.", - "filename" : "unlock.sh", + "description" : null, + "filename" : "slack-open-workspace-by-index.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "0d6dbf49507170aa4af614cbb4b16613", + "identifier" : "4a802368b9f32f0e1f2f6a44338f7ce8", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Unlock Session", - "updatedAt" : "2021-06-20T15:07:42+02:00" + "title" : "Open Workspace by Index", + "updatedAt" : "2021-07-23T17:47:56-04:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "alongat", + "url" : "https:\/\/github.com\/alongat" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2021-01-05T21:47:13+02:00", "currentDirectoryPath" : null, - "description" : "Log out of Bitwarden.", - "filename" : "log-out.sh", + "description" : "Set your status in Slack to a song currently playing in Spotify.", + "filename" : "set-slack-status-spotify.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "b0e4b9ddb57fdd18854bc8436273b550", + "identifier" : "01d42581576437961b8a3aa2af5e6b93", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", - "refreshTime" : null, + "packageName" : "Slack", + "path" : "communication\/slack\/", + "refreshTime" : "30s", "schemaVersion" : 1, - "title" : "Log Out", - "updatedAt" : "2021-03-29T13:44:44-04:00" + "title" : "Set Status in Slack to Spotify Song", + "updatedAt" : "2021-01-24T22:49:22+02:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/int3rrupt" + "name" : "Sam Ching", + "url" : "https:\/\/github.com\/samching" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2020-11-26T13:39:55Z", "currentDirectoryPath" : null, - "description" : "Search all items in a Bitwarden vault, and copy the TOTP of the first search result to the clipboard.", - "filename" : "copy-first-matching-totp.sh", - "hasArguments" : true, + "description" : "Clear DND Status in Slack", + "filename" : "clear-slack-DND-status.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "5ddedd2cc4ce0ce27ea9da0db895b05d", + "identifier" : "05872fc3bb67f93dd979fe0f25b06545", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Copy First Matching TOTP", - "updatedAt" : "2021-07-19T06:32:07-07:00" + "title" : "Clear Slack DND", + "updatedAt" : "2021-01-24T22:49:22+02:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "Zeb Pykosz", + "url" : "https:\/\/github.com\/zebapy" } ], - "createdAt" : "2021-02-03T02:57:58-05:00", + "createdAt" : "2020-11-26T13:39:55Z", "currentDirectoryPath" : null, - "description" : "Log in to Bitwarden.", - "filename" : "log-in.template.sh", + "description" : "Create a Slack reminder", + "filename" : "add-slack-reminder.template.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/bitwarden.png" + "light" : "⏰" }, - "identifier" : "8bbdf715852f934a47421e7f13d67602", + "identifier" : "8f2bf69938e8df32b08bf016b259d993", "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bitwarden", - "path" : "password-managers\/bitwarden\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Log In", - "updatedAt" : "2021-06-17T13:37:57+02:00" - } - ] - } - ] - }, - { - "name" : "Communication", - "path" : "communication", - "scriptCommands" : [ - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-16T16:14:09-05:00", - "currentDirectoryPath" : null, - "description" : "Use [xkcdpass](https:\/\/github.com\/redacted\/XKCD-password-generator) to create a passphrase.", - "filename" : "xkcdpass.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "🔐" - }, - "identifier" : "e48d4638b40bf69a6c441a609f09e27b", - "isTemplate" : false, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Communication", - "path" : "communication\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Generate Passphrase", - "updatedAt" : "2020-12-09T15:47:57-05:00" - }, - { - "authors" : [ - { - "name" : "Felipe Turcheti", - "url" : "https:\/\/felipeturcheti.com" - } - ], - "createdAt" : "2021-04-14T11:35:06-03:00", - "currentDirectoryPath" : null, - "description" : "Convert text to audible speech.", - "filename" : "say.sh", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "🗣" - }, - "identifier" : "36d92cab708c342b05f9c7ac27e5e96f", - "isTemplate" : false, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Communication", - "path" : "communication\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Say", - "updatedAt" : "2021-04-14T12:13:12-03:00" - }, - { - "authors" : [ - { - "name" : "Petr Nikolaev", - "url" : "https:\/\/github.com\/PitNikola" - } - ], - "createdAt" : "2021-03-14T20:36:28+00:00", - "currentDirectoryPath" : null, - "description" : "Share secret securely using https:\/\/share.doppler.com\/.", - "filename" : "share-secret-doppler.py", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "images\/doppler-logo.png" - }, - "identifier" : "7083bf08edba754d9457b2d289de18be", - "isTemplate" : false, - "language" : "python", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Doppler", - "path" : "communication\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Share Secret from Clipboard", - "updatedAt" : "2021-03-14T20:36:28+00:00" - }, - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "title" : "Add Reminder", + "updatedAt" : "2022-01-15T18:23:42Z" }, { - "name" : "Thiago Holanda", - "url" : "https:\/\/twitter.com\/tholanda" - } - ], - "createdAt" : "2020-11-09T09:32:06-05:00", - "currentDirectoryPath" : null, - "description" : "Get most recent two-factor authentication code from iMessages.", - "filename" : "imessage-2fa.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "🔐" - }, - "identifier" : "12f0f2ced06b2baa123a6105dbfaca73", - "isTemplate" : false, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "iMessage", - "path" : "communication\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "2FA from iMessages", - "updatedAt" : "2020-11-28T13:47:10-05:00" - } - ], - "subGroups" : [ - { - "name" : "Google Meet", - "path" : "google-meet", - "scriptCommands" : [ + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-05-18T10:01:58+02:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "slack-open-workspace-by-name.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/slack-logo.png" + }, + "identifier" : "d2fdd94734c119a616fe67b54ebcdd7c", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Slack", + "path" : "communication\/slack\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Workspace by Name", + "updatedAt" : "2021-07-23T17:48:20-04:00" + }, { "authors" : [ { - "name" : "Mujib Azizi", - "url" : "https:\/\/github.com\/mujibazizi" + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-03-30T10:13:53+02:00", + "createdAt" : "2020-11-26T13:39:55Z", "currentDirectoryPath" : null, - "description" : "Start a Google Meet session", - "filename" : "meet.sh", + "description" : "Clear your status in Slack.", + "filename" : "clear-slack-status.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/logo.png" + "light" : "🧼" }, - "identifier" : "05b7c0a10c2a7fe1d487f1d608b3a9b3", - "isTemplate" : false, + "identifier" : "17d4ffd95aaa50ac53208639c1807969", + "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Google", - "path" : "communication\/google-meet\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Google Meet", - "updatedAt" : "2021-07-14T20:00:21+02:00" - } - ] - }, - { - "name" : "Messenger", - "path" : "messenger", - "scriptCommands" : [ + "title" : "Clear Status", + "updatedAt" : "2020-11-26T13:44:17Z" + }, { "authors" : [ { @@ -8845,562 +12123,346 @@ "url" : "https:\/\/github.com\/jaklan" } ], - "createdAt" : "2021-05-18T17:49:46+02:00", + "createdAt" : "2021-05-18T07:53:58+02:00", "currentDirectoryPath" : null, "description" : null, - "filename" : "messenger-open-conversation.applescript", + "filename" : "slack-jump-to.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/messenger.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "d323b0b1ce4d1b6c8f6397c079a23681", + "identifier" : "27ca9558af53540a5077aa69fcbcd4db", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Messenger", - "path" : "communication\/messenger\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Conversation", - "updatedAt" : "2021-07-23T17:47:14-04:00" - } - ] - }, - { - "name" : "Zoom", - "path" : "zoom", - "scriptCommands" : [ + "title" : "Jump to...", + "updatedAt" : "2021-07-23T17:47:47-04:00" + }, { "authors" : [ { - "name" : "Faris Aziz", - "url" : "https:\/\/github.com\/farisaziz12" + "name" : "alongat", + "url" : "https:\/\/github.com\/alongat" } ], - "createdAt" : "2021-05-02T20:25:26+02:00", + "createdAt" : "2021-01-16T22:05:43+02:00", "currentDirectoryPath" : null, - "description" : "Leaves Current Zoom meeting", - "filename" : "leave-meeting.applescript", + "description" : "Set your status in Slack to WFH or WFO depending on your WiFi", + "filename" : "set-slack-wfh-status.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/zoom-logo.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "1bfa04dd638bb1a5f9d93f3a556e96a3", + "identifier" : "2f4a857abf56b4212c65bae64c6ccd1a", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : true, - "packageName" : "Zoom", - "path" : "communication\/zoom\/", + "needsConfirmation" : null, + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Leave Meeting", - "updatedAt" : "2021-05-03T09:54:17+00:00" + "title" : "Set WFH Status in Slack", + "updatedAt" : "2021-01-24T22:49:22+02:00" }, { "authors" : [ - { - "name" : "Luigi Cardito", - "url" : "https:\/\/github.com\/lcardito" - }, { "name" : "Faris Aziz", "url" : "https:\/\/github.com\/farisaziz12" } ], - "createdAt" : "2021-08-31T10:32:28+02:00", + "createdAt" : "2021-05-03T16:28:28+02:00", "currentDirectoryPath" : null, - "description" : "Show\/Hide your microphone in the current meeting", - "filename" : "toggle-video.applescript", - "hasArguments" : false, + "description" : "This script posts a message text to a slack channel and sets active status (defaults to random good morning message in #general)", + "filename" : "slack-send-message.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/zoom-logo.png" + "light" : "images\/slack-logo.png" }, - "identifier" : "a36414a653b2c264285dc7fd4b62563b", + "identifier" : "1461432132438418bd52997cf850803f", "isTemplate" : false, "language" : "applescript", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Zoom", - "path" : "communication\/zoom\/", + "needsConfirmation" : true, + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Video", - "updatedAt" : "2021-08-31T16:37:44+02:00" + "title" : "Send Message in Channel", + "updatedAt" : "2021-05-03T14:30:44Z" }, { "authors" : [ { - "name" : "Luigi Cardito", - "url" : "https:\/\/github.com\/lcardito" - }, - { - "name" : "Faris Aziz", - "url" : "https:\/\/github.com\/farisaziz12" + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-08-31T10:32:28+02:00", + "createdAt" : "2020-11-26T13:39:55Z", "currentDirectoryPath" : null, - "description" : "Mute\/Unmute your microphone in the current meeting", - "filename" : "toggle-mic.applescript", + "description" : "Set your status in Slack.", + "filename" : "set-slack-status.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/zoom-logo.png" + "light" : "☕️" }, - "identifier" : "5f4ac638a28f19b6fa2f377204f1d6dc", - "isTemplate" : false, - "language" : "applescript", + "identifier" : "57e23350fff64274696cfe28cce9d8ee", + "isTemplate" : true, + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Zoom", - "path" : "communication\/zoom\/", + "packageName" : "Slack", + "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Microphone", - "updatedAt" : "2021-08-31T16:37:44+02:00" - } - ] - }, - { - "name" : "Slack", - "path" : "slack", - "scriptCommands" : [ + "title" : "Set Status to Coffee", + "updatedAt" : "2020-11-26T18:24:36Z" + }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Sam Ching", + "url" : "https:\/\/github.com\/samching" } ], - "createdAt" : "2021-05-16T16:05:58+02:00", + "createdAt" : "2020-11-29T18:11:58-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "slack-open-workspace-by-index.applescript", + "description" : "Set your DND status in Slack", + "filename" : "set-slack-DND-status.sh", "hasArguments" : true, "icon" : { "dark" : null, "light" : "images\/slack-logo.png" }, - "identifier" : "4a802368b9f32f0e1f2f6a44338f7ce8", + "identifier" : "2b163126ade42de031d2e7ebe0a63c00", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, "packageName" : "Slack", "path" : "communication\/slack\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Workspace by Index", - "updatedAt" : "2021-07-23T17:47:56-04:00" + "title" : "Set DND Status", + "updatedAt" : "2021-03-04T08:32:41+01:00" }, { "authors" : [ { - "name" : "alongat", - "url" : "https:\/\/github.com\/alongat" + "name" : "Cody Carrell", + "url" : "https:\/\/raycast.com\/sourcecody" } ], - "createdAt" : "2021-01-05T21:47:13+02:00", + "createdAt" : "2024-03-10T17:10:31-04:00", "currentDirectoryPath" : null, - "description" : "Set your status in Slack to a song currently playing in Spotify.", - "filename" : "set-slack-status-spotify.sh", + "description" : "Open Slack with the Developer Menu enabled. ⌘⌥I to access the Developer Menu. If you find it's not working, quit Slack and run this command again.", + "filename" : "slack-dev-mode.sh", "hasArguments" : false, "icon" : { "dark" : null, "light" : "images\/slack-logo.png" }, - "identifier" : "01d42581576437961b8a3aa2af5e6b93", + "identifier" : "7c43ddc9b86f860583abf7ea64a4d324", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, "packageName" : "Slack", "path" : "communication\/slack\/", - "refreshTime" : "30s", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Set Status in Slack to Spotify Song", - "updatedAt" : "2021-01-24T22:49:22+02:00" - }, + "title" : "Launch Dev Mode", + "updatedAt" : "2024-03-10T21:12:02Z" + } + ] + }, + { + "name" : "Cloudup", + "path" : "cloudup", + "scriptCommands" : [ { "authors" : [ { - "name" : "Sam Ching", - "url" : "https:\/\/github.com\/samching" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2020-11-26T13:39:55+00:00", + "createdAt" : "2020-11-07T14:59:48-05:00", "currentDirectoryPath" : null, - "description" : "Clear DND Status in Slack", - "filename" : "clear-slack-DND-status.sh", + "description" : "Upload path or URL in clipboard to [Cloudup](https:\/\/cloudup.com\/).", + "filename" : "cloudup-upload.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/slack-logo.png" + "light" : "images\/cloudup-logo.png" }, - "identifier" : "560ddd5136e037faafb5fbef3ecc1e10", + "identifier" : "1d19e17167ac0881721d259150cbd124", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", + "packageName" : "Cloudup", + "path" : "communication\/cloudup\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Clear Slack DND", - "updatedAt" : "2021-01-24T22:49:22+02:00" + "title" : "Upload", + "updatedAt" : "2020-11-28T13:47:03-05:00" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-18T10:01:58+02:00", + "createdAt" : "2020-11-07T14:59:48-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "slack-open-workspace-by-name.applescript", - "hasArguments" : true, + "description" : "Open file dialog and upload to [Cloudup](https:\/\/cloudup.com\/).", + "filename" : "cloudup-pick.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/slack-logo.png" + "light" : "images\/cloudup-logo.png" }, - "identifier" : "d2fdd94734c119a616fe67b54ebcdd7c", + "identifier" : "dde6ec22216c5e9e5befc0f6f7d03530", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", + "packageName" : "Cloudup", + "path" : "communication\/cloudup\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Workspace by Name", - "updatedAt" : "2021-07-23T17:48:20-04:00" + "title" : "Pick", + "updatedAt" : "2020-11-28T13:47:03-05:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2020-11-26T13:39:55+00:00", + "createdAt" : "2020-11-07T14:59:48-05:00", "currentDirectoryPath" : null, - "description" : "Clear your status in Slack.", - "filename" : "clear-slack-status.template.sh", + "description" : "Upload clipboard contents to [Cloudup](https:\/\/cloudup.com\/).", + "filename" : "cloudup-paste.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🧼" + "light" : "images\/cloudup-logo.png" }, - "identifier" : "42d6bf1b6d5ba4c4cf4d3dbfbd11f120", - "isTemplate" : true, - "language" : "bash", + "identifier" : "c95e8b9dcdd3aff96e0e7d2499528210", + "isTemplate" : false, + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", + "packageName" : "Cloudup", + "path" : "communication\/cloudup\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Clear Status", - "updatedAt" : "2020-11-26T13:44:17+00:00" - }, + "title" : "Paste", + "updatedAt" : "2020-11-28T13:47:03-05:00" + } + ] + }, + { + "name" : "Emojis", + "path" : "emojis", + "scriptCommands" : [ { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-18T07:53:58+02:00", + "createdAt" : "2020-11-16T16:27:42-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "slack-jump-to.applescript", + "description" : "Search for emojis related to input.", + "filename" : "emojis-search.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/slack-logo.png" + "light" : "📙" }, - "identifier" : "27ca9558af53540a5077aa69fcbcd4db", + "identifier" : "ca84f5b82455c8b57880dbd2257b2137", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", + "language" : "bash", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", + "packageName" : "Communication", + "path" : "communication\/emojis\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Jump to...", - "updatedAt" : "2021-07-23T17:47:47-04:00" + "title" : "Search Emojis", + "updatedAt" : "2020-11-28T13:47:03-05:00" }, { "authors" : [ { - "name" : "alongat", - "url" : "https:\/\/github.com\/alongat" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-01-16T22:05:43+02:00", + "createdAt" : "2020-11-16T16:27:42-05:00", "currentDirectoryPath" : null, - "description" : "Set your status in Slack to WFH or WFO depending on your WiFi", - "filename" : "set-slack-wfh-status.sh", - "hasArguments" : false, + "description" : "Copy first emoji related to input.", + "filename" : "emoji-copy.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/slack-logo.png" + "light" : "📙" }, - "identifier" : "2f4a857abf56b4212c65bae64c6ccd1a", + "identifier" : "0b6610d2a4025e0cde003b6de4d28026", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", + "packageName" : "Communication", + "path" : "communication\/emojis\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Set WFH Status in Slack", - "updatedAt" : "2021-01-24T22:49:22+02:00" + "title" : "Search and Copy First Related Emoji", + "updatedAt" : "2020-11-28T12:02:29-05:00" }, { "authors" : [ { - "name" : "Faris Aziz", - "url" : "https:\/\/github.com\/farisaziz12" + "name" : "Tomohiro Nishimura", + "url" : "https:\/\/github.com\/Sixeight" } ], - "createdAt" : "2021-05-03T16:28:28+02:00", + "createdAt" : "2025-01-23T18:29:53+09:00", "currentDirectoryPath" : null, - "description" : "This script posts a message text to a slack channel and sets active status (defaults to random good morning message in #general)", - "filename" : "slack-send-message.applescript", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "images\/slack-logo.png" - }, - "identifier" : "1461432132438418bd52997cf850803f", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : true, - "packageName" : "Slack", - "path" : "communication\/slack\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Send Message in Channel", - "updatedAt" : "2021-05-03T14:30:44+00:00" - }, - { - "authors" : [ - { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" - } - ], - "createdAt" : "2020-11-26T13:39:55+00:00", - "currentDirectoryPath" : null, - "description" : "Set your status in Slack.", - "filename" : "set-slack-status.template.sh", + "description" : "Copy a random emoji to the clipboard.", + "filename" : "random-emoji.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "☕️" - }, - "identifier" : "a9c185aec50f521d19ed1d47aab578a5", - "isTemplate" : true, - "language" : "bash", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Set Status to Coffee", - "updatedAt" : "2020-11-26T18:24:36+00:00" - }, - { - "authors" : [ - { - "name" : "Sam Ching", - "url" : "https:\/\/github.com\/samching" - } - ], - "createdAt" : "2020-11-29T18:11:58-05:00", - "currentDirectoryPath" : null, - "description" : "Set your DND status in Slack", - "filename" : "set-slack-DND-status.sh", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "images\/slack-logo.png" + "light" : "🎲" }, - "identifier" : "2b163126ade42de031d2e7ebe0a63c00", + "identifier" : "52479cec0740642d40a8902ee5efa1fe", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Slack", - "path" : "communication\/slack\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Set DND Status", - "updatedAt" : "2021-03-04T08:32:41+01:00" - } - ] - }, - { - "name" : "Cloudup", - "path" : "cloudup", - "scriptCommands" : [ - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-07T14:59:48-05:00", - "currentDirectoryPath" : null, - "description" : "Upload path or URL in clipboard to [Cloudup](https:\/\/cloudup.com\/).", - "filename" : "cloudup-upload.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "images\/cloudup-logo.png" - }, - "identifier" : "1d19e17167ac0881721d259150cbd124", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cloudup", - "path" : "communication\/cloudup\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Upload", - "updatedAt" : "2020-11-28T13:47:03-05:00" - }, - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-07T14:59:48-05:00", - "currentDirectoryPath" : null, - "description" : "Open file dialog and upload to [Cloudup](https:\/\/cloudup.com\/).", - "filename" : "cloudup-pick.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "images\/cloudup-logo.png" - }, - "identifier" : "dde6ec22216c5e9e5befc0f6f7d03530", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cloudup", - "path" : "communication\/cloudup\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Pick", - "updatedAt" : "2020-11-28T13:47:03-05:00" - }, - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-07T14:59:48-05:00", - "currentDirectoryPath" : null, - "description" : "Upload clipboard contents to [Cloudup](https:\/\/cloudup.com\/).", - "filename" : "cloudup-paste.sh", - "hasArguments" : false, - "icon" : { - "dark" : null, - "light" : "images\/cloudup-logo.png" - }, - "identifier" : "c95e8b9dcdd3aff96e0e7d2499528210", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cloudup", - "path" : "communication\/cloudup\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Paste", - "updatedAt" : "2020-11-28T13:47:03-05:00" - } - ] - }, - { - "name" : "Emojis", - "path" : "emojis", - "scriptCommands" : [ - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-16T16:27:42-05:00", - "currentDirectoryPath" : null, - "description" : "Search for emojis related to input.", - "filename" : "emojis-search.sh", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "📙" - }, - "identifier" : "ca84f5b82455c8b57880dbd2257b2137", - "isTemplate" : false, - "language" : "bash", - "mode" : "fullOutput", - "needsConfirmation" : null, - "packageName" : "Communication", - "path" : "communication\/emojis\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Search Emojis", - "updatedAt" : "2020-11-28T13:47:03-05:00" - }, - { - "authors" : [ - { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" - } - ], - "createdAt" : "2020-11-16T16:27:42-05:00", - "currentDirectoryPath" : null, - "description" : "Copy first emoji related to input.", - "filename" : "emoji-copy.sh", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "📙" - }, - "identifier" : "0b6610d2a4025e0cde003b6de4d28026", - "isTemplate" : false, - "language" : "bash", - "mode" : "compact", - "needsConfirmation" : null, - "packageName" : "Communication", + "packageName" : "Emojis", "path" : "communication\/emojis\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search and Copy First Related Emoji", - "updatedAt" : "2020-11-28T12:02:29-05:00" + "title" : "Random Emoji", + "updatedAt" : "2025-03-25T19:27:06+09:00" } ] }, @@ -9434,7 +12496,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Gmail", - "updatedAt" : "2020-12-07T20:12:02+00:00" + "updatedAt" : "2020-12-07T20:12:02Z" } ] } @@ -9498,7 +12560,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Bilibili", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -9535,7 +12597,7 @@ "url" : "https:\/\/github.com\/andreiborisov" } ], - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "kinopoisk.sh", @@ -9544,7 +12606,7 @@ "dark" : null, "light" : "images\/kinopoisk.png" }, - "identifier" : "b9765abdca2e2f4913f25f68e9d1cb34", + "identifier" : "3035530c75101abbeb24a0a27b0ed685", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9591,7 +12653,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-24T21:18:01+00:00", + "createdAt" : "2020-11-24T21:18:01Z", "currentDirectoryPath" : null, "description" : null, "filename" : "giphy.sh", @@ -9600,7 +12662,7 @@ "dark" : null, "light" : "images\/giphy.png" }, - "identifier" : "27a2493face41bf1d80793deb1771797", + "identifier" : "3613b602176200bab2cb81cf3e3a31fc", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9614,7 +12676,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "yandex-search.sh", @@ -9623,7 +12685,7 @@ "dark" : null, "light" : "images\/yandex.png" }, - "identifier" : "f938027f6f3f823928e80d4527804d25", + "identifier" : "14ac258936b541c8b080afd875c888e9", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9754,7 +12816,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-24T21:18:01+00:00", + "createdAt" : "2020-11-24T21:18:01Z", "currentDirectoryPath" : null, "description" : null, "filename" : "njt.sh", @@ -9763,7 +12825,7 @@ "dark" : null, "light" : "🐸" }, - "identifier" : "7b80efcaecafbf7092d3bd0292112021", + "identifier" : "bf292fd5c6a6daeb7cb500aed47c97ce", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9777,7 +12839,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T21:13:15+00:00", + "createdAt" : "2020-11-19T21:13:15Z", "currentDirectoryPath" : null, "description" : null, "filename" : "npmjs.sh", @@ -9786,7 +12848,7 @@ "dark" : null, "light" : "images\/npmjs.png" }, - "identifier" : "b8c51cd5f736849629df290dcf48e627", + "identifier" : "1c60d434bfa470adfa9e5c4fad31a29a", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9824,7 +12886,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search Go Package Documentation", - "updatedAt" : "2021-01-18T16:44:26+00:00" + "updatedAt" : "2021-01-18T16:44:26Z" }, { "authors" : [ @@ -9833,7 +12895,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-19T21:13:15+00:00", + "createdAt" : "2020-11-19T21:13:15Z", "currentDirectoryPath" : null, "description" : null, "filename" : "repo.sh", @@ -9842,7 +12904,7 @@ "dark" : null, "light" : "📦" }, - "identifier" : "327dff4d0f970f6709bed4f17955b925", + "identifier" : "fd304aeeb3b07086af4d259dc6bd8a44", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9880,7 +12942,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Baidu", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -9912,7 +12974,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "twitter-search.sh", @@ -9921,7 +12983,7 @@ "dark" : null, "light" : "images\/twitter.png" }, - "identifier" : "c87cc4be86c046f70f68ca1cd2223258", + "identifier" : "5325fd3de931054a254082b1ce061ec9", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -9959,7 +13021,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Zhihu", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -9989,6 +13051,34 @@ "title" : "Search Unsplash", "updatedAt" : "2020-12-02T14:53:50-05:00" }, + { + "authors" : [ + { + "name" : "Alessandra Pereyra", + "url" : "https:\/\/github.com\/alessandrapereyra" + } + ], + "createdAt" : "2022-09-09T11:36:33-05:00", + "currentDirectoryPath" : null, + "description" : "Open 17TRACK with the tracking code found in the clipboard", + "filename" : "clipboard-to-17track.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🚚" + }, + "identifier" : "5bf7134b1d8dfeca8b30b6b3a598f247", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Web Searches", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Clipboard to 17TRACK", + "updatedAt" : "2022-09-09T11:36:33-05:00" + }, { "authors" : [ { @@ -10015,7 +13105,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Pub.dev Search", - "updatedAt" : "2021-05-31T09:21:31+00:00" + "updatedAt" : "2021-05-31T09:21:31Z" }, { "authors" : [ @@ -10047,7 +13137,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "amazon.sh", @@ -10056,7 +13146,7 @@ "dark" : null, "light" : "images\/amazon.png" }, - "identifier" : "cc7830e2a1dfe295301d9b835e584cdf", + "identifier" : "7ca50f13f43b953f6d587c52f61005a9", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10131,7 +13221,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-24T21:18:01+00:00", + "createdAt" : "2020-11-24T21:18:01Z", "currentDirectoryPath" : null, "description" : null, "filename" : "unfurl.sh", @@ -10140,7 +13230,7 @@ "dark" : null, "light" : "🔗" }, - "identifier" : "ee82cecb96af85116fdc9b7208b77767", + "identifier" : "19f9cd5c3c78c5008f84417d01f14dee", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10178,7 +13268,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Wikipedia", - "updatedAt" : "2021-02-16T16:00:45+00:00" + "updatedAt" : "2021-02-16T16:00:45Z" + }, + { + "authors" : [ + { + "name" : "Razvan Azamfirei", + "url" : "https:\/\/github.com\/razvanazamfirei" + } + ], + "createdAt" : "2022-12-16T16:54:47-05:00", + "currentDirectoryPath" : null, + "description" : "Parses and opens DOI links in your browser", + "filename" : "doi.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "f0a1d84b48cb82b7b89f17f05565d7f5", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "DOI", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Find Paper", + "updatedAt" : "2022-12-16T16:54:47-05:00" }, { "authors" : [ @@ -10211,20 +13329,20 @@ { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Daniel Sieradski", + "url" : "https:\/\/github.com\/selfagency" } ], - "createdAt" : "2020-12-04T22:42:03-05:00", + "createdAt" : "2023-04-20T10:30:42-04:00", "currentDirectoryPath" : null, - "description" : "Open specified [WP Engine](https:\/\/wpengine.com) install.", - "filename" : "wpengine-install.sh", + "description" : null, + "filename" : "opensecrets.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/wpengine-logo.png" + "light" : "images\/opensecrets.png" }, - "identifier" : "5949a935338b8a2cd8808c92a5a78aa5", + "identifier" : "38597aea679968985276b287c7860174", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10233,8 +13351,36 @@ "path" : "web-searches\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open WP Engine Install", - "updatedAt" : "2020-12-07T10:40:46-05:00" + "title" : "Search OpenSecrets.org", + "updatedAt" : "2023-04-24T06:57:26Z" + }, + { + "authors" : [ + { + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" + } + ], + "createdAt" : "2020-12-04T22:42:03-05:00", + "currentDirectoryPath" : null, + "description" : "Open specified [WP Engine](https:\/\/wpengine.com) install.", + "filename" : "wpengine-install.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/wpengine-logo.png" + }, + "identifier" : "5949a935338b8a2cd8808c92a5a78aa5", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Web Searches", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open WP Engine Install", + "updatedAt" : "2020-12-07T10:40:46-05:00" }, { "authors" : [ @@ -10243,7 +13389,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-24T21:18:01+00:00", + "createdAt" : "2020-11-24T21:18:01Z", "currentDirectoryPath" : null, "description" : null, "filename" : "caniuse.sh", @@ -10252,7 +13398,7 @@ "dark" : null, "light" : "❓" }, - "identifier" : "7c4f744b2140f5b80f7e15e0ebe6a6dd", + "identifier" : "d57b60f7bec95ebaf6ecd985d539eb33", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10327,7 +13473,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-19T21:13:15+00:00", + "createdAt" : "2020-11-19T21:13:15Z", "currentDirectoryPath" : null, "description" : null, "filename" : "npms.sh", @@ -10336,7 +13482,7 @@ "dark" : null, "light" : "images\/npms.png" }, - "identifier" : "190c26fa07258eca73549fde0318804f", + "identifier" : "c50c4272f0b39efd127d169968b96a9c", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10406,7 +13552,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "grep-app-search.sh", @@ -10415,7 +13561,7 @@ "dark" : null, "light" : "https:\/\/grep.app\/favicon.ico" }, - "identifier" : "b5ca621aeb52f48ffe1ffe30a8bb9373", + "identifier" : "3c1b4b1b7f98114881247bd9e9c44166", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10455,6 +13601,34 @@ "title" : "PostgreSQL Documentation", "updatedAt" : "2021-03-04T12:40:16-05:00" }, + { + "authors" : [ + { + "name" : "Razvan Azamfirei", + "url" : "https:\/\/github.com\/razvanazamfirei" + } + ], + "createdAt" : "2022-12-16T16:54:47-05:00", + "currentDirectoryPath" : null, + "description" : "Scans clipboard and opens DOI links in your browser", + "filename" : "doi-clipboard.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "5a5b14ccec3b42e5980dbd993beee9db", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "DOI", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Find Paper", + "updatedAt" : "2022-12-16T16:54:47-05:00" + }, { "authors" : [ { @@ -10513,7 +13687,7 @@ }, { "authors" : null, - "createdAt" : "2021-02-26T19:18:23+00:00", + "createdAt" : "2021-02-26T19:18:23Z", "currentDirectoryPath" : null, "description" : null, "filename" : "search-swift-github.sh", @@ -10522,7 +13696,7 @@ "dark" : null, "light" : ".\/images\/swift.png" }, - "identifier" : "819a4731b5656b3636b32652c241a507", + "identifier" : "ded067c8f231e019897a58bd2b5bb30c", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10532,7 +13706,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search Swift Code", - "updatedAt" : "2021-02-26T19:18:23+00:00" + "updatedAt" : "2021-02-26T19:18:23Z" }, { "authors" : [ @@ -10564,7 +13738,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "duck-duck-go.sh", @@ -10573,7 +13747,7 @@ "dark" : null, "light" : "images\/duck-duck-go.png" }, - "identifier" : "e780f29955995de21a5ed8d42a7dc669", + "identifier" : "137568a154ee81cb2a1ca68aa4bbfd0d", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10583,7 +13757,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in DuckDuckGo", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -10639,11 +13813,11 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search IMDB", - "updatedAt" : "2021-02-21T22:06:55+00:00" + "updatedAt" : "2021-02-21T22:06:55Z" }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "youtube.sh", @@ -10652,7 +13826,7 @@ "dark" : null, "light" : "images\/youtube.png" }, - "identifier" : "5e89e0c4d9ffddf0b3eea566f14773ca", + "identifier" : "aed6056723b8ff63788a8cec2fdfa88a", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10662,7 +13836,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in YouTube", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -10671,7 +13845,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-19T21:13:15+00:00", + "createdAt" : "2020-11-19T21:13:15Z", "currentDirectoryPath" : null, "description" : null, "filename" : "bundlephobia.sh", @@ -10680,7 +13854,7 @@ "dark" : null, "light" : "📦" }, - "identifier" : "0b092bce570e52328d6bcbe0163ae216", + "identifier" : "be1cdb15aaca06deb525512db504e89a", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10722,7 +13896,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "crunchbase.sh", @@ -10731,7 +13905,7 @@ "dark" : null, "light" : "images\/crunchbase.png" }, - "identifier" : "0f4669c88378d536451227114c6c6173", + "identifier" : "31c55bcec6408a3702a8f834a2b6457e", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10745,7 +13919,7 @@ }, { "authors" : null, - "createdAt" : "2020-11-19T15:07:52+00:00", + "createdAt" : "2020-11-19T15:07:52Z", "currentDirectoryPath" : null, "description" : null, "filename" : "google-search.sh", @@ -10754,7 +13928,7 @@ "dark" : null, "light" : "images\/google.png" }, - "identifier" : "57aaa2728f3a23af892dfd7364e122d9", + "identifier" : "892301cd7b236406f6efc128ae07c4e3", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10764,7 +13938,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Google", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -10773,7 +13947,7 @@ "url" : "https:\/\/zander.wtf" } ], - "createdAt" : "2020-11-24T21:18:01+00:00", + "createdAt" : "2020-11-24T21:18:01Z", "currentDirectoryPath" : null, "description" : null, "filename" : "wayback-machine.sh", @@ -10782,7 +13956,7 @@ "dark" : null, "light" : "images\/ia-logo.jpg" }, - "identifier" : "0dfb3e1ec84b397ccfec9f4a1c0a808d", + "identifier" : "3438cbb2bcc47a029bd463eb8229b673", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10848,7 +14022,30 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Find Email Address With Hunter", - "updatedAt" : "2021-04-09T11:25:34+00:00" + "updatedAt" : "2021-04-09T11:25:34Z" + }, + { + "authors" : null, + "createdAt" : "2021-02-19T09:10:21Z", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "google-maps.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/google-map.png" + }, + "identifier" : "8a71bb6b31307d65cf23a94c619c9971", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Google Maps", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search Google Maps", + "updatedAt" : "2024-12-05T12:33:50+01:00" }, { "authors" : [ @@ -10859,7 +14056,7 @@ ], "createdAt" : "2021-07-13T21:10:54-07:00", "currentDirectoryPath" : null, - "description" : "Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https:\/\/scriptcommands.com).", + "description" : "Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https:\/\/scriptcommands.alexandru.so).", "filename" : "search-script-command-marketplace.sh", "hasArguments" : true, "icon" : { @@ -10876,7 +14073,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search Script Command", - "updatedAt" : "2021-07-13T21:10:54-07:00" + "updatedAt" : "2024-12-04T11:52:04+01:00" }, { "authors" : [ @@ -10932,7 +14129,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search Genre in Chosic", - "updatedAt" : "2021-02-12T11:28:52+00:00" + "updatedAt" : "2021-02-12T11:28:52Z" }, { "authors" : [ @@ -10941,7 +14138,7 @@ "url" : "https:\/\/github.com\/traynham" } ], - "createdAt" : "2020-12-07T19:59:12+00:00", + "createdAt" : "2020-12-07T19:59:12Z", "currentDirectoryPath" : null, "description" : "Search in MDN (Mozilla) Docs by topic", "filename" : "mdn.sh", @@ -10950,7 +14147,7 @@ "dark" : "images\/mdn_dark.png", "light" : "images\/mdn_light.png" }, - "identifier" : "cf35df9256be2997e18dc4e853f14213", + "identifier" : "991511e9548f80fc5f5dfa70172df0c9", "isTemplate" : false, "language" : "bash", "mode" : "silent", @@ -10988,7 +14185,35 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search LinkedIn", - "updatedAt" : "2021-01-24T20:18:06+00:00" + "updatedAt" : "2021-01-24T20:18:06Z" + }, + { + "authors" : [ + { + "name" : "lemorage", + "url" : "https:\/\/raycast.com\/lemorage" + } + ], + "createdAt" : "2024-09-19T08:42:28+08:00", + "currentDirectoryPath" : null, + "description" : "Search Rust documentation", + "filename" : "search-rust-docs.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/rust.png" + }, + "identifier" : "2f4472d80148aaadabf915529d6f68c9", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Web Searches", + "path" : "web-searches\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search Rust Documentation", + "updatedAt" : "2024-09-19T08:42:28+08:00" }, { "authors" : [ @@ -11016,7 +14241,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Search in Taobao", - "updatedAt" : "2021-01-05T12:30:16+00:00" + "updatedAt" : "2021-01-05T12:30:16Z" }, { "authors" : [ @@ -11077,7 +14302,7 @@ ], "subGroups" : [ { - "name" : "Wordpress", + "name" : "WordPress", "path" : "wordpress", "scriptCommands" : [ { @@ -11232,4771 +14457,8978 @@ ], "subGroups" : [ { - "name" : "Meetingbar", + "name" : "MeetingBar", "path" : "meetingbar", "scriptCommands" : [ { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-08-23T05:05:54+02:00", + "currentDirectoryPath" : null, + "description" : "Join the ongoing or upcoming meeting.", + "filename" : "meetingbar-join-meeting.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/meetingbar.png" + }, + "identifier" : "b8993c798f512a75626c91ead46662be", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "MeetingBar", + "path" : "apps\/meetingbar\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Join Meeting", + "updatedAt" : "2021-08-23T12:18:02+02:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-08-23T05:05:54+02:00", + "currentDirectoryPath" : null, + "description" : "Create a new meeting.", + "filename" : "meetingbar-create-meeting.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/meetingbar.png" + }, + "identifier" : "79b4a204b8d40f498a14d7d0623bac23", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "MeetingBar", + "path" : "apps\/meetingbar\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Meeting", + "updatedAt" : "2021-08-23T12:18:02+02:00" + } + ] + }, + { + "name" : "Lungo", + "path" : "lungo", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Lungo", + "url" : "https:\/\/sindresorhus.com\/lungo" + } + ], + "createdAt" : "2021-10-29T16:08:45+07:00", + "currentDirectoryPath" : null, + "description" : "Toggle Lungo.", + "filename" : "lungo-toggle.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/lungo.png" + }, + "identifier" : "1e1201142099074bd201c2e04bfed472", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Lungo", + "path" : "apps\/lungo\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle", + "updatedAt" : "2021-10-29T16:08:45+07:00" + }, + { + "authors" : [ + { + "name" : "Lungo", + "url" : "https:\/\/sindresorhus.com\/lungo" + } + ], + "createdAt" : "2021-10-29T16:08:45+07:00", + "currentDirectoryPath" : null, + "description" : "Deactivate Lungo.", + "filename" : "lungo-activate.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/lungo.png" + }, + "identifier" : "e41a768d833a7cca41cb21491926b013", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Lungo", + "path" : "apps\/lungo\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Activate", + "updatedAt" : "2021-10-29T16:08:45+07:00" + }, + { + "authors" : [ + { + "name" : "Lungo", + "url" : "https:\/\/sindresorhus.com\/lungo" + } + ], + "createdAt" : "2021-10-29T16:08:45+07:00", + "currentDirectoryPath" : null, + "description" : "Deactivate Lungo.", + "filename" : "lungo-deactivate.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/lungo.png" + }, + "identifier" : "7ad4b7c36c41fb0730596bdd72a12515", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Lungo", + "path" : "apps\/lungo\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Deactivate", + "updatedAt" : "2021-10-29T16:08:45+07:00" + } + ] + }, + { + "name" : "iTerm", + "path" : "iterm", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Andrei Borisov", + "url" : "https:\/\/github.com\/andreiborisov" + } + ], + "createdAt" : "2021-02-02T11:58:56+03:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "iterm-run-shell-command.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/iterm.png" + }, + "identifier" : "aad45bb498bc30bd7cf7c2e9405c1477", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "iTerm", + "path" : "apps\/iterm\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Run Shell Command", + "updatedAt" : "2021-02-02T11:58:56+03:00" + }, + { + "authors" : [ + { + "name" : "sunrisewestern", + "url" : "https:\/\/github.com\/sunrisewestern" + } + ], + "createdAt" : "2024-05-23T03:31:30-04:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "iterm-open-profile-in-new-window.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🤖" + }, + "identifier" : "c3e9bc8ec6236fd9d214785417f4c420", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "iTerm", + "path" : "apps\/iterm\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open profile", + "updatedAt" : "2024-05-23T07:33:06Z" + } + ] + }, + { + "name" : "Cleanshot", + "path" : "cleanshot", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Opens a new Quick Access Overlay with the specified image or video.", + "filename" : "cleanshot-add-quick-access-overlay.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/add-quick-access-overlay.png" + }, + "identifier" : "7239456521bcd7c3373cf8870936d3a7", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Add Quick Access Overlay", + "updatedAt" : "2021-07-20T15:49:26+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Opens Text Recognition (OCR) tool or extracts text from the specified file.", + "filename" : "cleanshot-capture-text.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/capture-text.png" + }, + "identifier" : "7fe6d44fdbe6d9bb201ff65b756d860f", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Capture Text", + "updatedAt" : "2021-07-20T15:49:26+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Take a screenshot of a window.", + "filename" : "cleanshot-capture-window.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/capture-window.png" + }, + "identifier" : "3d218b4cbed21f7454562678b6a0b8ee", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Capture Window", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Take a screenshot of the previously specified area of your screen.", + "filename" : "cleanshot-capture-previous-area.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/capture-previous-area.png" + }, + "identifier" : "43f62174fe500ba2f6cb4661195f3ebb", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Capture Previous Area", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Restore the recently closed file.", + "filename" : "cleanshot-restore.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/restore.png" + }, + "identifier" : "775af547f54533d780759eea34761aeb", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Restore Recently Closed File", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Pin a screenshot to the screen.", + "filename" : "cleanshot-pin.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/pin.png" + }, + "identifier" : "938d3ce2be34e29a9f58d9099996e9ef", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Pin to the Screen", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Opens specified file in Annotate.", + "filename" : "cleanshot-annotate.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/annotate.png" + }, + "identifier" : "ca28647e99a4bbdea940fed93e688236", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Annotate", + "updatedAt" : "2021-07-20T15:49:26+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Take a screenshot of a specific area on your screen.", + "filename" : "cleanshot-capture-area.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/capture-area.png" + }, + "identifier" : "f0cd821e3dea3225012f1ee24e0ee2a6", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Capture Area", + "updatedAt" : "2021-05-28T10:40:29+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Open screenshot that is currently in the clipboard.", + "filename" : "cleanshot-open-from-clipboard.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/clipboard.png" + }, + "identifier" : "6c834b826f74f76d659ee54377d73e9e", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open from Clipboard", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Take a screenshot of your screen.", + "filename" : "cleanshot-capture-fullscreen.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/capture-fullscreen.png" + }, + "identifier" : "b4bdb548dc357d8483d2c7afda0fa2ad", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Capture Fullscreen", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "Danylo Zalizchuk", + "url" : "https:\/\/raycast.com\/danulqua" + } + ], + "createdAt" : "2023-08-16T16:56:54+03:00", + "currentDirectoryPath" : null, + "description" : "Start a screen recording with keystrokes using the Keystroke Pro app and save it as a video or an optimized GIF file.", + "filename" : "cleanshot-record-screen-with-keystroke-pro.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/record-screen-keystroke-pro.png" + }, + "identifier" : "2b2c4df77dc49c058edc490dd1e4d066", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Record Screen With Keystroke Pro", + "updatedAt" : "2023-08-16T16:56:54+03:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Take a screenshot after a specified delay to capture the perfect moment.", + "filename" : "cleanshot-self-timer.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/self-timer.png" + }, + "identifier" : "7ff128b4069f95b91a61d2a920748340", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Self-Timer", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Capture any scrollable content.", + "filename" : "cleanshot-scrolling-capture.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/scrolling-capture.png" + }, + "identifier" : "66f040a60fe27b26e31f2dfea19a9200", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Scrolling Capture", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Start a screen recording and save it as a video or an optimized GIF file.", + "filename" : "cleanshot-record-screen.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/record-screen.png" + }, + "identifier" : "745e006488dbf13262100b0d9992bd06", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Record Screen", + "updatedAt" : "2021-05-28T10:40:03+01:00" + }, + { + "authors" : [ + { + "name" : "CleanShot X", + "url" : "https:\/\/twitter.com\/CleanShot_app" + } + ], + "createdAt" : "2021-03-01T16:53:29Z", + "currentDirectoryPath" : null, + "description" : "Hide clutter on your Desktop.", + "filename" : "cleanshot-toggle-desktop-icons.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/toggle-desktop-icons.png" + }, + "identifier" : "12f891f99170ce75263600efdf9819e7", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "CleanShot X", + "path" : "apps\/cleanshot\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Desktop Icons", + "updatedAt" : "2021-05-28T10:40:29+01:00" + } + ] + }, + { + "name" : "Craft", + "path" : "craft", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" + } + ], + "createdAt" : "2021-03-23T13:32:38-07:00", + "currentDirectoryPath" : null, + "description" : "Searches in Workspace in Craft", + "filename" : "craft-search-workspace.template.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/craft.png" + }, + "identifier" : "e2b36133ba62c2b1adf96510991fa097", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Craft", + "path" : "apps\/craft\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search in Workspace", + "updatedAt" : "2021-03-23T13:32:38-07:00" + }, + { + "authors" : [ + { + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" + } + ], + "createdAt" : "2021-03-23T13:32:38-07:00", + "currentDirectoryPath" : null, + "description" : "Creates a doc in Craft", + "filename" : "craft-create-doc.template.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/craft.png" + }, + "identifier" : "ceaaea45ae0681858ca57b43e3c711c1", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Craft", + "path" : "apps\/craft\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Doc", + "updatedAt" : "2021-03-23T13:32:38-07:00" + } + ] + }, + { + "name" : "Wikipedia", + "path" : "wikipedia", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Juan I. Serra", + "url" : "https:\/\/twitter.com\/jiserra" + } + ], + "createdAt" : "2021-07-20T16:18:28-04:00", + "currentDirectoryPath" : null, + "description" : "Search Wikipedia and display the result in Raycast", + "filename" : "wikipedia-search.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/wikipedia.png" + }, + "identifier" : "598f86d0a3b9f15d762df1930ee39665", + "isTemplate" : false, + "language" : "python", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Wikipedia", + "path" : "apps\/wikipedia\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Wikipedia Search", + "updatedAt" : "2021-07-23T17:46:53-04:00" + } + ] + }, + { + "name" : "GoodLinks", + "path" : "goodlinks", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Show Read list in the GoodLinks app", + "filename" : "goodlinks-read-list.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "c0796027794a07c76f5eb52bab4e8d39", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Show Read List", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Open a link in the GoodLinks app", + "filename" : "goodlinks-open-link.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "3636d0d2ff5bb61acff5b577e364122a", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Link", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Show Untagged list in the GoodLinks app", + "filename" : "goodlinks-untagged-list.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "c80ffd45f9345adbcc18b9140d865da0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Show Untagged List", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Show Unread list in the GoodLinks app", + "filename" : "goodlinks-unread-list.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "bfd473a3c237f50761e5716e9abee708", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Show Unread List", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Open the last unread link in the GoodLinks app", + "filename" : "goodlinks-last-unread-link.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "574ebc7209ea95507f347597e25cc284", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Last Unread Link", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Show Starred list in the GoodLinks app", + "filename" : "goodlinks-starred-list.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "1b30afbd9d13fa4c0361905818295682", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Show Starred List", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Saves a new link to GoodLinks", + "filename" : "goodlinks-save-link.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "3a5576e914a31aadb395f733a49f047d", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Save Link", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Open a random unread link in the GoodLinks app", + "filename" : "goodlinks-random-unread-link.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "b3f2decfb875757a8a2bcebf5904a88f", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Random Unread Link", + "updatedAt" : "2022-09-21T21:19:09+02:00" + }, + { + "authors" : [ + { + "name" : "Filip Chabik", + "url" : "https:\/\/github.com\/hadret" + } + ], + "createdAt" : "2022-09-21T21:19:09+02:00", + "currentDirectoryPath" : null, + "description" : "Show links tagged with the specified tag in the GoodLinks app", + "filename" : "goodlinks-tagged-links.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/goodlinks.png" + }, + "identifier" : "10a6aa033cfb6122dfbbe70eaa5ea8e8", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "GoodLinks", + "path" : "apps\/goodlinks\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Show Tag", + "updatedAt" : "2022-09-21T21:19:09+02:00" + } + ] + }, + { + "name" : "Terminal Translate", + "path" : "terminal-translate", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Fatpandac", + "url" : "https:\/\/github.com\/Fatpandac" + } + ], + "createdAt" : "2022-04-04T02:34:41+08:00", + "currentDirectoryPath" : null, + "description" : "Translate word or sentence.", + "filename" : "translate.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "8cd0465bb037880e1fcc57beb8ffea49", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Terminal Translate", + "path" : "apps\/terminal-translate\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Translate", + "updatedAt" : "2022-04-04T02:34:41+08:00" + } + ] + }, + { + "name" : "BusyCal", + "path" : "busycal", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Annie Ma", + "url" : "www.anniema.co" + } + ], + "createdAt" : "2024-02-06T01:35:01-07:00", + "currentDirectoryPath" : null, + "description" : "Creates new events or tasks in BusyCal.", + "filename" : "new-busycal-event-or-task.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/busycal.png" + }, + "identifier" : "e4f836d21d4fcb8bcf522b1393aad74a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "BusyCal", + "path" : "apps\/busycal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Event\/Task", + "updatedAt" : "2024-02-06T08:36:45Z" + } + ] + }, + { + "name" : "Stickies", + "path" : "stickies", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Annie Ma", + "url" : "http:\/\/www.anniema.co\/" + } + ], + "createdAt" : "2024-01-26T02:19:25-07:00", + "currentDirectoryPath" : null, + "description" : "This script creates a new floating note in the Apple Stickies application", + "filename" : "new-floating-sticky.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/stickies.png" + }, + "identifier" : "dae7953c0397480c8d99a3b0f56176b7", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Stickies", + "path" : "apps\/stickies\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "New Floating Sticky Note", + "updatedAt" : "2024-01-26T09:21:48Z" + } + ] + }, + { + "name" : "Bartender", + "path" : "bartender", + "scriptCommands" : [ + { + "authors" : null, + "createdAt" : "2023-06-02T15:26:22+08:00", + "currentDirectoryPath" : null, + "description" : "Perform a quick search of Menu Bar Items, in Bartender 4", + "filename" : "bartender-search.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/bartender-icon.png" + }, + "identifier" : "be9bfa8f7ef781753490380437a674aa", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bartender.app", + "path" : "apps\/bartender\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search Bartender", + "updatedAt" : "2023-06-02T15:26:22+08:00" + } + ] + }, + { + "name" : "Playground", + "path" : "playground", + "readme" : "apps\/playground\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Quentin Eude", + "url" : "https:\/\/github.com\/qeude" + } + ], + "createdAt" : "2021-06-14T20:32:07+02:00", + "currentDirectoryPath" : null, + "description" : "Create and open a new view based Swift Playground", + "filename" : "open-new-view-playground.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🕊" + }, + "identifier" : "830a18fee37d756c1a00a65e286113a3", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Swift Playgrounds", + "path" : "apps\/playground\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create View Based", + "updatedAt" : "2021-06-14T20:32:07+02:00" + }, + { + "authors" : [ + { + "name" : "Quentin Eude", + "url" : "https:\/\/github.com\/qeude" + } + ], + "createdAt" : "2021-06-14T20:32:07+02:00", + "currentDirectoryPath" : null, + "description" : "Create and open a new basic Swift Playground", + "filename" : "open-new-playground.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🕊" + }, + "identifier" : "23040420c0f901b4bd478a02943591c5", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Swift Playgrounds", + "path" : "apps\/playground\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Basic", + "updatedAt" : "2021-06-14T20:32:07+02:00" + } + ] + }, + { + "name" : "Eudic", + "path" : "eudic", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "jingyi", + "url" : "https:\/\/jingyi.blog" + } + ], + "createdAt" : "2023-02-25T09:21:48+08:00", + "currentDirectoryPath" : null, + "description" : "look up in eudic", + "filename" : "look-up-in-eudic.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/eudic.png" + }, + "identifier" : "0d031b91eae5648603862a92b89d0ef5", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Eudic", + "path" : "apps\/eudic\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Look up Word", + "updatedAt" : "2023-02-25T09:21:48+08:00" + } + ] + }, + { + "name" : "One Thing", + "path" : "one-thing", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "One Thing", + "url" : "https:\/\/sindresorhus.com\/one-thing" + } + ], + "createdAt" : "2022-01-16T17:00:05+07:00", + "currentDirectoryPath" : null, + "description" : "Set the text shown in One Thing app.", + "filename" : "one-thing-set-text.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/one-thing.png" + }, + "identifier" : "64b8520de38fe85dbc3fc84d16d26db9", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "One Thing", + "path" : "apps\/one-thing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Set Text", + "updatedAt" : "2023-02-03T19:59:31+07:00" + }, + { + "authors" : [ + { + "name" : "One Thing", + "url" : "https:\/\/sindresorhus.com\/one-thing" + } + ], + "createdAt" : "2022-01-16T17:00:05+07:00", + "currentDirectoryPath" : null, + "description" : "Clear the text shown in One Thing app.", + "filename" : "one-thing-clear-text.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/one-thing.png" + }, + "identifier" : "d6364a4011082d1d7dbfeb99a5cd55bf", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "One Thing", + "path" : "apps\/one-thing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Clear Text", + "updatedAt" : "2023-02-03T19:59:31+07:00" + } + ] + }, + { + "name" : "Evernote", + "path" : "evernote", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-13T13:17:23-07:00", + "currentDirectoryPath" : null, + "description" : "Creates a new Evernote, pastes in the contents of the clipboard, and positions the cursor in the title area.", + "filename" : "create-note-paste-clipboard.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/evernote.png" + }, + "identifier" : "d35a432612f0fce10372d3b066dc49e6", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Evernote", + "path" : "apps\/evernote\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Evernote Paste Clipboard", + "updatedAt" : "2021-08-13T13:17:23-07:00" + }, + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-13T13:17:23-07:00", + "currentDirectoryPath" : null, + "description" : "Creates a new Evernote.", + "filename" : "create-note.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/evernote.png" + }, + "identifier" : "f546136ca9bad8f3b77a31e1ff0aecd0", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Evernote", + "path" : "apps\/evernote\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Evernote", + "updatedAt" : "2021-08-13T13:17:23-07:00" + } + ] + }, + { + "name" : "NotePlan3", + "path" : "noteplan3", + "readme" : "apps\/noteplan3\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Göran Damberg", + "url" : "https:\/\/github.com\/gdamberg" + } + ], + "createdAt" : "2021-06-23T09:20:05+02:00", + "currentDirectoryPath" : null, + "description" : "Append to daily note", + "filename" : "noteplan-append-daily-note.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/noteplan3.png" + }, + "identifier" : "d802c64f73f9e89996597e76af3d5094", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "NotePlan3", + "path" : "apps\/noteplan3\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Append To Daily Note", + "updatedAt" : "2021-06-23T09:20:05+02:00" + }, + { + "authors" : [ + { + "name" : "Göran Damberg", + "url" : "https:\/\/github.com\/gdamberg" + } + ], + "createdAt" : "2021-06-23T09:20:05+02:00", + "currentDirectoryPath" : null, + "description" : "Create a new note from clipboard", + "filename" : "noteplan-new-note-from-clipboard.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/noteplan3.png" + }, + "identifier" : "2562e5c7b3258337f783b8210e796d55", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "NotePlan3", + "path" : "apps\/noteplan3\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "New Note From Clipboard", + "updatedAt" : "2021-06-23T09:20:05+02:00" + } + ] + }, + { + "name" : "Amphetamine", + "path" : "amphetamine", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" + } + ], + "createdAt" : "2021-01-07T18:10:56-08:00", + "currentDirectoryPath" : null, + "description" : "Start Default Amphetamine Session", + "filename" : "amphetamine-on.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/amphetamine.png" + }, + "identifier" : "6c247430747abf30a7011ae37d87ca7b", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Amphetamine", + "path" : "apps\/amphetamine\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start Default Session", + "updatedAt" : "2021-05-28T10:35:03+01:00" + }, + { + "authors" : [ + { + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" + } + ], + "createdAt" : "2021-01-07T18:10:56-08:00", + "currentDirectoryPath" : null, + "description" : "Stop Current Amphetamine Session", + "filename" : "amphetamine-off.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/amphetamine.png" + }, + "identifier" : "7663eee08fb216262ad4e904c0ed4c7a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Amphetamine", + "path" : "apps\/amphetamine\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "End Session", + "updatedAt" : "2021-05-28T10:34:50+01:00" + } + ] + }, + { + "name" : "Find My", + "path" : "find-my", + "readme" : "apps\/find-my\/README.md", + "scriptCommands" : [ + { + "authors" : null, + "createdAt" : "2025-06-12T06:53:33-07:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "fmp.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/find-my-icon.png" + }, + "identifier" : "206851d53c58c074472f7acb20ceeb08", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "FindMy", + "path" : "apps\/find-my\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Find My Phone (Auto Sound)", + "updatedAt" : "2025-06-12T06:53:33-07:00" + } + ] + }, + { + "name" : "Bear", + "path" : "bear", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Open the Today section in Bear.", + "filename" : "bear-today.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "a3ba0dc119ef33bb239b30ae6cb4d1e8", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Today", + "updatedAt" : "2021-05-28T10:36:54+01:00" + }, + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Open the specified tag in Bear.", + "filename" : "bear-open-tag.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "b0cc37027abe39c7a0cb5053b8a9f4ec", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Tag", + "updatedAt" : "2021-05-28T10:36:54+01:00" + }, + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Add a new note to Bear.", + "filename" : "bear-add-note.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "1bdff208152a457aab81e00fda092d6c", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Add Note", + "updatedAt" : "2021-05-28T10:35:40+01:00" + }, + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Search notes by keyword and\/or tag in Bear.", + "filename" : "bear-search.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "e7cdad30d00d056c56e710729f1a6531", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search", + "updatedAt" : "2021-06-14T14:17:13-05:00" + }, + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Open the Todo section in Bear.", + "filename" : "bear-todo.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "ae50306d0334257a49487d71a72598c6", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Todos", + "updatedAt" : "2021-05-28T10:38:31+01:00" + }, + { + "authors" : [ + { + "name" : "Tanay Nistala", + "url" : "https:\/\/github.com\/tanaynistala" + } + ], + "createdAt" : "2020-12-08T15:05:55+05:30", + "currentDirectoryPath" : null, + "description" : "Open the specified note in Bear.", + "filename" : "bear-open-note.sh", + "hasArguments" : true, + "icon" : { + "dark" : "images\/bear-dark.png", + "light" : "images\/bear-light.png" + }, + "identifier" : "24d03b4080ea3b49d348721ec0865b40", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Bear", + "path" : "apps\/bear\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Note", + "updatedAt" : "2021-05-28T10:36:54+01:00" + } + ] + }, + { + "name" : "Mail", + "path" : "mail", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-05-22T16:27:53+01:00", + "currentDirectoryPath" : null, + "description" : "Copies the foreground Mail deeplink", + "filename" : "copy-foreground-mail-deeplink.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "📧" + }, + "identifier" : "2b57bf3c301e2230d812bba90896fc1f", + "isTemplate" : false, + "language" : "applescript", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Mail", + "path" : "apps\/mail\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Foreground Mail Deeplink", + "updatedAt" : "2021-05-22T16:27:53+01:00" + }, + { + "authors" : [ + { + "name" : "RealTong", + "url" : "https:\/\/raycast.com\/RealTong" + } + ], + "createdAt" : "2024-03-02T12:46:14+08:00", + "currentDirectoryPath" : null, + "description" : "Copy the captcha from the emlx file.", + "filename" : "copy-captcha-from-mail.py", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/mail.png" + }, + "identifier" : "eb5104b3db21de0c7ea654c49319716a", + "isTemplate" : false, + "language" : "python", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Mail", + "path" : "apps\/mail\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "CaptchaFromMail", + "updatedAt" : "2024-03-02T12:46:14+08:00" + } + ] + }, + { + "name" : "Claude", + "path" : "claude", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Nimo Beeren", + "url" : "https:\/\/github.com\/nimobeeren" + } + ], + "createdAt" : "2024-08-07T21:01:27+02:00", + "currentDirectoryPath" : null, + "description" : "Open Claude in Chrome browser and submit a prompt", + "filename" : "claude.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "✨" + }, + "identifier" : "cd9356ee79829cf478bdcd127c673a0c", + "isTemplate" : false, + "language" : "node", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Claude", + "path" : "apps\/claude\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Ask Claude", + "updatedAt" : "2024-08-30T13:09:27Z" + } + ] + }, + { + "name" : "TunnelBlick", + "path" : "tunnelblick", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" + } + ], + "createdAt" : "2021-03-14T17:37:20+01:00", + "currentDirectoryPath" : null, + "description" : "Disconnect a VPN configuration.", + "filename" : "tunnelblick-disconnect.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/tunnelblick.png" + }, + "identifier" : "6abb4b2ece585f7043d27e0f70c8ed0c", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Tunnelblick", + "path" : "apps\/tunnelblick\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Tunnelblick: Disconnect", + "updatedAt" : "2021-03-16T12:21:52+05:30" + }, + { + "authors" : [ + { + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" + } + ], + "createdAt" : "2021-03-14T17:37:20+01:00", + "currentDirectoryPath" : null, + "description" : "Connect a VPN configuration.", + "filename" : "tunnelblick-connect.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/tunnelblick.png" + }, + "identifier" : "b16beed5521082645dbed303aaf63699", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Tunnelblick", + "path" : "apps\/tunnelblick\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Tunnelblick: Connect", + "updatedAt" : "2021-03-16T12:21:13+05:30" + }, + { + "authors" : [ + { + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" + } + ], + "createdAt" : "2021-03-14T17:37:20+01:00", + "currentDirectoryPath" : null, + "description" : "Disconnect all connected VPN configurations.", + "filename" : "tunnelblick-disconnect-all.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tunnelblick.png" + }, + "identifier" : "f19aef4b963a8b078a2ece2685c9ea64", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Tunnelblick", + "path" : "apps\/tunnelblick\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Tunnelblick: Disconnect All", + "updatedAt" : "2021-03-14T17:37:20+01:00" + }, + { + "authors" : [ + { + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" + } + ], + "createdAt" : "2021-03-14T17:37:20+01:00", + "currentDirectoryPath" : null, + "description" : "Connect all unconnected VPN configurations.", + "filename" : "tunnelblick-connect-all.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tunnelblick.png" + }, + "identifier" : "1d7014bbdf04ed245c83da0d5a682c17", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "TunnelBlick", + "path" : "apps\/tunnelblick\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Tunnelblick: Connect All", + "updatedAt" : "2021-03-14T17:37:20+01:00" + } + ] + }, + { + "name" : "Baremetrics", + "path" : "baremetrics", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Valentin Chrétien", + "url" : "https:\/\/github.com\/valentinchrt" + } + ], + "createdAt" : "2022-09-15T11:09:04+02:00", + "currentDirectoryPath" : null, + "description" : "Display Average revenue per user (ARPU)", + "filename" : "get-arpu.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/baremetrics.png" + }, + "identifier" : "61cffadab08d5776aa9c0cdba919f9b4", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Baremetrics", + "path" : "apps\/baremetrics\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Average Revenue Per User", + "updatedAt" : "2022-09-15T11:09:04+02:00" + }, + { + "authors" : [ + { + "name" : "Valentin Chrétien", + "url" : "https:\/\/github.com\/valentinchrt" + } + ], + "createdAt" : "2022-09-15T11:09:04+02:00", + "currentDirectoryPath" : null, + "description" : "Display Annual Recurring Revenue (ARR)", + "filename" : "get-arr.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/baremetrics.png" + }, + "identifier" : "7eb95607eb6cb96ad5f62844ccd08157", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Baremetrics", + "path" : "apps\/baremetrics\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Annual Recurring Revenue", + "updatedAt" : "2022-09-15T11:09:04+02:00" + }, + { + "authors" : [ + { + "name" : "Valentin Chrétien", + "url" : "https:\/\/github.com\/valentinchrt" + } + ], + "createdAt" : "2022-09-15T11:09:04+02:00", + "currentDirectoryPath" : null, + "description" : "Display Lifetime Value (LTV)", + "filename" : "get-ltv.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/baremetrics.png" + }, + "identifier" : "28fcd48e5fdd0d94cd0fc0caa85ec6f7", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Baremetrics", + "path" : "apps\/baremetrics\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Lifetime Value", + "updatedAt" : "2022-09-15T11:09:04+02:00" + }, + { + "authors" : [ + { + "name" : "Valentin Chrétien", + "url" : "https:\/\/github.com\/valentinchrt" + } + ], + "createdAt" : "2022-09-15T11:09:04+02:00", + "currentDirectoryPath" : null, + "description" : "Display Monthly Recurring Revenue (MRR)", + "filename" : "get-mrr.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/baremetrics.png" + }, + "identifier" : "c93a6f26b13a627e732b5ca104457e35", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Baremetrics", + "path" : "apps\/baremetrics\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Monthly Recurring Revenue", + "updatedAt" : "2022-09-15T11:09:04+02:00" + }, + { + "authors" : [ + { + "name" : "Valentin Chrétien", + "url" : "https:\/\/github.com\/valentinchrt" + } + ], + "createdAt" : "2022-09-15T11:09:04+02:00", + "currentDirectoryPath" : null, + "description" : "Display Revenue Dashboard", + "filename" : "simple-dashboard.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/baremetrics.png" + }, + "identifier" : "8cff2dce2132b4b23e143ff7dfda31f8", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Baremetrics", + "path" : "apps\/baremetrics\/", + "refreshTime" : "1h", + "schemaVersion" : 1, + "title" : "Revenue", + "updatedAt" : "2022-09-15T11:09:04+02:00" + } + ] + }, + { + "name" : "Message", + "path" : "Message", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Fatpandac", + "url" : "https:\/\/github.com\/Fatpandac" + } + ], + "createdAt" : "2022-06-23T18:59:56+08:00", + "currentDirectoryPath" : null, + "description" : "Copy verification code from a message.", + "filename" : "copycode.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/Message.png" + }, + "identifier" : "f07bfd0fc382e1e3a7a1ca7b8b23221d", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Messages", + "path" : "apps\/Message\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Copy Code", + "updatedAt" : "2022-06-23T18:59:56+08:00" + } + ] + }, + { + "name" : "Ferdi", + "path" : "ferdi", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-05-17T16:20:13+02:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "ferdi-open-service-by-name.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/ferdi.png" + }, + "identifier" : "10ad2d03caaee101d4862f1a21cc1234", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Ferdi", + "path" : "apps\/ferdi\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Service by Name", + "updatedAt" : "2021-07-23T17:46:29-04:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-05-16T16:05:58+02:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "ferdi-open-service-by-index.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/ferdi.png" + }, + "identifier" : "504a15f524e5a1a6da75cc4a72e59c9e", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Ferdi", + "path" : "apps\/ferdi\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Service by Index", + "updatedAt" : "2021-07-23T17:46:11-04:00" + } + ] + }, + { + "name" : "HazeOver", + "path" : "hazeover", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-01-24T20:19:30Z", + "currentDirectoryPath" : null, + "description" : "Set dimming intensity of background windows.", + "filename" : "hazeover-set-intensity.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/hazeover.png" + }, + "identifier" : "f26557a194748a37e12e64003b1f2c6f", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "HazeOver", + "path" : "apps\/hazeover\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Set Intensity", + "updatedAt" : "2021-05-28T10:42:00+01:00" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-01-24T20:19:30Z", + "currentDirectoryPath" : null, + "description" : "Toggle dimming of all background windows.", + "filename" : "hazeover-toggle-dimming.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/hazeover.png" + }, + "identifier" : "5368be37ae49d353930157085116709f", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "HazeOver", + "path" : "apps\/hazeover\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Dimming", + "updatedAt" : "2021-05-28T10:42:00+01:00" + } + ] + }, + { + "name" : "iconsur", + "path" : "iconsur", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "StevenRCE0", + "url" : "https:\/\/github.com\/StevenRCE0" + } + ], + "createdAt" : "2021-08-27T15:06:06+08:00", + "currentDirectoryPath" : null, + "description" : "Change App icons to match Big Sur", + "filename" : "iconsur.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🅱️" + }, + "identifier" : "10ce792f9f21acf4813a7307956a1999", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "iconsur", + "path" : "apps\/iconsur\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Change Application Icon", + "updatedAt" : "2022-02-22T00:14:05+08:00" + } + ] + }, + { + "name" : "Pulse Secure", + "path" : "pulse-secure", + "readme" : "apps\/pulse-secure\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-06-14T20:14:26+02:00", + "currentDirectoryPath" : null, + "description" : "Resume the suspended connection.", + "filename" : "pulse-secure-resume.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/pulse-secure.png" + }, + "identifier" : "137e52f49aba309c60fb9bc9427bda4d", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Pulse Secure", + "path" : "apps\/pulse-secure\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Resume", + "updatedAt" : "2021-06-14T20:14:26+02:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-06-14T20:14:26+02:00", + "currentDirectoryPath" : null, + "description" : "Connect to the given \/ default connection with the given \/ default username.", + "filename" : "pulse-secure-connect.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/pulse-secure.png" + }, + "identifier" : "8776f55ec372ac1d0a62bc9267777ace", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Pulse Secure", + "path" : "apps\/pulse-secure\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Connect \/ Reconnect", + "updatedAt" : "2021-06-16T14:42:20+02:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-06-14T20:14:26+02:00", + "currentDirectoryPath" : null, + "description" : "Suspend the active connection.", + "filename" : "pulse-secure-suspend.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/pulse-secure.png" + }, + "identifier" : "c5e03d8d6265725238c13d8b285c48f6", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Pulse Secure", + "path" : "apps\/pulse-secure\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Suspend", + "updatedAt" : "2021-06-14T20:14:26+02:00" + }, + { + "authors" : [ + { + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" + } + ], + "createdAt" : "2021-06-14T20:14:26+02:00", + "currentDirectoryPath" : null, + "description" : "Disconnect \/ cancel the active connection.", + "filename" : "pulse-secure-disconnect.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/pulse-secure.png" + }, + "identifier" : "03191a91d92833853d2a70fad5f19424", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Pulse Secure", + "path" : "apps\/pulse-secure\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Disconnect \/ Cancel", + "updatedAt" : "2021-06-14T20:14:26+02:00" + } + ] + }, + { + "name" : "Downie", + "path" : "downie", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Clu Soh", + "url" : "https:\/\/twitter.com\/designedbyclu" + } + ], + "createdAt" : "2022-06-14T15:34:34+08:00", + "currentDirectoryPath" : null, + "description" : "Download video from Pasteboard link", + "filename" : "download-video.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/downie.png" + }, + "identifier" : "2003cce30b2c40d492dfd7a17e5afeb3", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Downie", + "path" : "apps\/downie\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Download Video", + "updatedAt" : "2022-08-25T12:14:46+08:00" + } + ] + }, + { + "name" : "Focus", + "path" : "focus", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Start a custom focus session. If you don't enter any values, it starts an untimed focus session.", + "filename" : "focus-start-custom-session.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "80dd2db0a8e0b267adf52209d1e2b66a", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start Custom Focus Session", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Open focus preferences.", + "filename" : "focus-preferences.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "26e49cef06b6a50e9c2a2288a0b3e5de", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Focus Preferences", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Stop the current focus session.", + "filename" : "focus-stop-session.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "2f0e5d4a017c664641797d3ccad1fbe1", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop Focus Session (Unfocus)", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Take 5 minutes break.", + "filename" : "focus-start-break-5.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "11136efc43088020c73969f86e0dd6d2", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Take 5 Minutes Break", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Toggle between start session (untimed) and stop session.", + "filename" : "focus-toggle-focus.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "87f5cb4aa46375da34318fc091f250b0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Focus Session", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Start an untimed focus session.", + "filename" : "focus-start-session.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "870e8c9bf851b140036bb6959e990571", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start Focus Session (Focus)", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Stop break and continues the current focus session.", + "filename" : "focus-stop-break.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "301323d2b2b7165ab0364ea4a600f4d5", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop Break (Unbreak)", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Start a custom break. If you don't enter any values, it uses the last break duration.", + "filename" : "focus-start-custom-break.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "a8c3ae965a33e0ac2098e35ea49ffdd0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start Custom Break", + "updatedAt" : "2022-02-09T09:15:31+01:00" + }, + { + "authors" : [ + { + "name" : "Ernest Ojeh", + "url" : "https:\/\/github.com\/namzo" + } + ], + "createdAt" : "2022-01-28T20:18:00+01:00", + "currentDirectoryPath" : null, + "description" : "Start a 25 minutes focus session.", + "filename" : "focus-start-session-25.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/focus-logo.png" + }, + "identifier" : "c98d57dfcdd3aa35ed145b6a221377e5", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Focus", + "path" : "apps\/focus\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start 25 minutes Focus Session", + "updatedAt" : "2022-02-09T09:15:31+01:00" + } + ] + }, + { + "name" : "Plash", + "path" : "plash", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Reload the current website in Plash.", + "filename" : "plash-reload-website.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "efba722b5a535ab230ffe426bbd3aa00", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Reload Website", + "updatedAt" : "2021-06-04T23:56:19+07:00" + }, + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Switch to the next website in the list in Plash.", + "filename" : "plash-next-website.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "4871914878a1c9aca9d14b7114a76df2", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Next Website", + "updatedAt" : "2021-06-04T23:56:19+07:00" + }, + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Switch to the previous website in the list in Plash.", + "filename" : "plash-previous-website.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "ffed236c901c236e41814468c88c82ea", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Previous Website", + "updatedAt" : "2021-06-04T23:56:19+07:00" + }, + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Switch to a random website from the list of websites in Plash.", + "filename" : "plash-random-website.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "10bddde306d0bfdae3624cb8cdddd0b0", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Switch to Random Website", + "updatedAt" : "2021-06-04T23:56:19+07:00" + }, + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Toggle browsing mode in Plash.", + "filename" : "plash-toggle-browser-mode.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "a0a1cd94513bf76d8c8ec9bec1ce7ec2", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Browsing Mode", + "updatedAt" : "2021-05-28T10:24:58+01:00" + }, + { + "authors" : [ + { + "name" : "Plash", + "url" : "https:\/\/github.com\/sindresorhus\/Plash" + } + ], + "createdAt" : "2021-05-28T01:55:40+07:00", + "currentDirectoryPath" : null, + "description" : "Add a website to Plash.", + "filename" : "plash-add-website.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/plash.png" + }, + "identifier" : "d65493aee461a49dbf2b6ef976857898", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Plash", + "path" : "apps\/plash\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Add Website", + "updatedAt" : "2021-06-04T23:56:19+07:00" + } + ] + }, + { + "name" : "Mullvad", + "path" : "mullvad", + "readme" : "apps\/mullvad\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Disconnect from the Mullvad VPN tunnel.", + "filename" : "disconnect.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "a16754f03ea5fa74d3d05116c6f23ed1", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Disconnect", + "updatedAt" : "2021-03-25T22:10:33Z" + }, + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Connect the Mullvad VPN tunnel using the specified location.", + "filename" : "location.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "bfd215e3646e02a03ad2b15ad2a97557", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Connect to Location", + "updatedAt" : "2022-08-25T19:51:18Z" + }, + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Search the list of available entities to which a Mullvad VPN tunnel connection can be made.", + "filename" : "search.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "5773c509e585b2181a22e12e75b4cf0f", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search Countries, Cities, and Hostnames", + "updatedAt" : "2021-03-25T22:10:33Z" + }, + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Display the current status of the Mullvad VPN tunnel connection.", + "filename" : "status.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "cd0323ea623775b56c6aaf7f2123bb14", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : "5m", + "schemaVersion" : 1, + "title" : "Mullvad Status", + "updatedAt" : "2022-08-25T19:51:18Z" + }, + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Force the client to reconnect to the Mullvad VPN tunnel.", + "filename" : "reconnect.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "3712d89f71b9d5508b039c4a8b0a1a8c", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Reconnect", + "updatedAt" : "2022-08-25T19:51:18Z" + }, + { + "authors" : [ + { + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" + } + ], + "createdAt" : "2021-03-25T18:08:20-04:00", + "currentDirectoryPath" : null, + "description" : "Connect the Mullvad VPN tunnel using the most recent configuration settings.", + "filename" : "connect.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/mullvad.png" + }, + "identifier" : "a7c6ddf80482ff3f287840cdf2f6a8f9", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Mullvad", + "path" : "apps\/mullvad\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Connect", + "updatedAt" : "2022-08-25T19:51:18Z" + } + ] + }, + { + "name" : "Timing", + "path" : "timing", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Landen Danyluk", + "url" : "https:\/\/github.com\/landendanyluk" + } + ], + "createdAt" : "2022-07-23T23:10:15-05:00", + "currentDirectoryPath" : null, + "description" : "Start a timer", + "filename" : "timing-start-timer.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/timing-logo.png" + }, + "identifier" : "e76f98fba595acb6590639f1d8705b5a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Timing", + "path" : "apps\/timing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start Timer", + "updatedAt" : "2022-07-23T23:10:15-05:00" + }, + { + "authors" : [ + { + "name" : "Landen Danyluk", + "url" : "https:\/\/github.com\/landendanyluk" + } + ], + "createdAt" : "2022-07-23T23:10:15-05:00", + "currentDirectoryPath" : null, + "description" : "Stop the active timer", + "filename" : "timing-stop-timer.js", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/timing-logo.png" + }, + "identifier" : "b8f7a1b309c9fd169a4bb20d08748dcb", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Timing", + "path" : "apps\/timing\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop Timer", + "updatedAt" : "2022-07-23T23:10:15-05:00" + } + ] + }, + { + "name" : "OpenVPN", + "path" : "openvpn", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-16T13:21:15-07:00", + "currentDirectoryPath" : null, + "description" : "Prepares OpenVPN Connect client to connect or reconnect.", + "filename" : "connect-openvpn.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/openvpn.png" + }, + "identifier" : "a345726ad1219631c162173e74cc319c", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "OpenVPN", + "path" : "apps\/openvpn\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Connect OpenVPN", + "updatedAt" : "2021-08-16T13:21:15-07:00" + }, + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-16T13:21:15-07:00", + "currentDirectoryPath" : null, + "description" : "Quits the OpenVPN Connect client.", + "filename" : "quit-openvpn.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/openvpn.png" + }, + "identifier" : "d0b3d1b64e34e581d9224b2efbce2c6e", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "OpenVPN", + "path" : "apps\/openvpn\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Quit OpenVPN", + "updatedAt" : "2021-08-16T13:21:15-07:00" + }, + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-16T13:21:15-07:00", + "currentDirectoryPath" : null, + "description" : "Disconnects the OpenVPN Connect client from VPN.", + "filename" : "disconnect-openvpn.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : ".\/images\/openvpn.png" + }, + "identifier" : "d63f02150ae5a9a98eadc250ec299d40", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "OpenVPN", + "path" : "apps\/openvpn\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Disconnect OpenVPN", + "updatedAt" : "2021-08-16T13:21:15-07:00" + } + ] + }, + { + "name" : "Todoist", + "path" : "todoist", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Faris Aziz", + "url" : "https:\/\/github.com\/farisaziz12" + } + ], + "createdAt" : "2021-05-04T12:12:44+02:00", + "currentDirectoryPath" : null, + "description" : "Create Task", + "filename" : "create-task.template.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/todoist-logo.png" + }, + "identifier" : "306fdf2b185a4c91bdc04007b23bd008", + "isTemplate" : true, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Todoist", + "path" : "apps\/todoist\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Task", + "updatedAt" : "2023-03-18T04:02:12+03:00" + }, + { + "authors" : [ + { + "name" : "Faris Aziz", + "url" : "https:\/\/github.com\/farisaziz12" + } + ], + "createdAt" : "2021-05-04T12:12:44+02:00", + "currentDirectoryPath" : null, + "description" : "Gets All Todoist tasks", + "filename" : "get-tasks.template.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/todoist-logo.png" + }, + "identifier" : "ef1425a55c8acd3fad650cc85a6ae88a", + "isTemplate" : true, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : false, + "packageName" : "Todoist", + "path" : "apps\/todoist\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Get Tasks", + "updatedAt" : "2021-05-04T10:14:48Z" + } + ] + }, + { + "name" : "WebStorm", + "path" : "webstorm", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Daniel Stovv", + "url" : "https:\/\/github.com\/stovv" + } + ], + "createdAt" : "2022-01-27T15:04:54+03:00", + "currentDirectoryPath" : null, + "description" : "Open WebStorm projects", + "filename" : "open-workspace.template.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/webstorm.png" + }, + "identifier" : "8db170a15f9f700cf1a5bc69152e3e3e", + "isTemplate" : true, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "WebStorm", + "path" : "apps\/webstorm\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open", + "updatedAt" : "2022-01-27T12:07:09Z" + } + ] + }, + { + "name" : "Translate Shell", + "path" : "translate-shell", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "tiancheng92", + "url" : "https:\/\/github.com\/tiancheng92" + } + ], + "createdAt" : "2021-05-03T20:56:05+08:00", + "currentDirectoryPath" : null, + "description" : "Translate and copy brief translation to clipboard.", + "filename" : "translate-to-en.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "ad28b67b7a6ad68e8fe478ae135e8795", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Translate Shell", + "path" : "apps\/translate-shell\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Translate to EN", + "updatedAt" : "2021-05-07T07:58:55+02:00" + }, + { + "authors" : [ + { + "name" : "tiancheng92", + "url" : "https:\/\/github.com\/tiancheng92" + } + ], + "createdAt" : "2021-05-03T20:56:05+08:00", + "currentDirectoryPath" : null, + "description" : "Translate and copy brief translation to clipboard.", + "filename" : "translate-to-zh.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "📖" + }, + "identifier" : "cb355a2a427be58d5695011f2d8cd64a", + "isTemplate" : false, + "language" : "bash", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Translate Shell", + "path" : "apps\/translate-shell\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Translate to ZH", + "updatedAt" : "2021-05-07T07:58:55+02:00" + }, + { + "authors" : [ + { + "name" : "Marcel Bochtler", + "url" : "https:\/\/github.com\/MarcelBochtler" + } + ], + "createdAt" : "2021-05-07T07:58:55+02:00", + "currentDirectoryPath" : null, + "description" : "Translate text using translate-shell.", + "filename" : "translate-shell-language-pair.py", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "🌍" + }, + "identifier" : "e9776d8d1e5db81fb7f49a4df06af0f0", + "isTemplate" : false, + "language" : "python", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Translate Shell Language Pair", + "path" : "apps\/translate-shell\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Translate Shell", + "updatedAt" : "2021-07-15T22:22:31+02:00" + } + ] + }, + { + "name" : "Notes", + "path" : "notes", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Vardan Sawhney", + "url" : "https:\/\/github.com\/commai" + } + ], + "createdAt" : "2021-08-03T09:54:13-04:00", + "currentDirectoryPath" : null, + "description" : "Open Note via its Title", + "filename" : "open-note.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/notes.png" + }, + "identifier" : "9295d4230a85f19a25e491154c2cc2ae", + "isTemplate" : false, + "language" : "applescript", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Notes", + "path" : "apps\/notes\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Note", + "updatedAt" : "2021-08-03T09:54:13-04:00" + }, + { + "authors" : [ + { + "name" : "Ayoub Gharbi", + "url" : "github.com\/ayoub-g" + } + ], + "createdAt" : "2021-08-19T11:57:46+01:00", + "currentDirectoryPath" : null, + "description" : "This script searches for a note, given its exact name, or a substring, the search does not consider case", + "filename" : "search-note-by-name.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/notes.png" + }, + "identifier" : "2742cc92859fb01b45bbed9bd2ba3dc8", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Notes", + "path" : "apps\/notes\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Search Note By Name", + "updatedAt" : "2021-08-19T11:57:46+01:00" + }, + { + "authors" : [ + { + "name" : "Ayoub Gharbi", + "url" : "https:\/\/github.com\/ayoub-g" + } + ], + "createdAt" : "2021-08-20T22:46:40+01:00", + "currentDirectoryPath" : null, + "description" : "Script to append to an existing note content from clipboard.", + "filename" : "append-note-from-clipboard.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/notes.png" + }, + "identifier" : "8e61646606984a27fa52fabeda748f01", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Notes", + "path" : "apps\/notes\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Append Content From Clipboard", + "updatedAt" : "2021-08-20T22:46:40+01:00" + }, + { + "authors" : [ + { + "name" : "Ayoub Gharbi", + "url" : "https:\/\/github.com\/ayoub-g" + } + ], + "createdAt" : "2021-07-21T23:46:22-04:00", + "currentDirectoryPath" : null, + "description" : "Create Note From Clipboard", + "filename" : "create-note-from-clipboard.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/notes.png" + }, + "identifier" : "4186e11daddefc7d27d89b3943eb4b44", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Notes", + "path" : "apps\/notes\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Note From Clipboard", + "updatedAt" : "2024-03-01T12:51:47+01:00" + }, + { + "authors" : [ + { + "name" : "Vardan Sawhney", + "url" : "https:\/\/github.com\/commai" + } + ], + "createdAt" : "2021-07-21T23:46:22-04:00", + "currentDirectoryPath" : null, + "description" : "Create a new Note ", + "filename" : "create-note.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/notes.png" + }, + "identifier" : "e9cecac4bfa067f607c15ef602dae3d9", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Notes", + "path" : "apps\/notes\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Note", + "updatedAt" : "2021-07-23T21:06:02-04:00" + } + ] + }, + { + "name" : "Y Pomodoro", + "path" : "y-pomodoro", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-08-20T22:47:15+01:00", + "currentDirectoryPath" : null, + "description" : "Pause active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", + "filename" : "pause.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍅" + }, + "identifier" : "d2836820287e44cb9f83f4dd84f8fdd1", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "y-pomodoro", + "path" : "apps\/y-pomodoro\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Pause", + "updatedAt" : "2021-08-20T22:47:15+01:00" + }, + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-08-20T22:47:15+01:00", + "currentDirectoryPath" : null, + "description" : "Show active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", + "filename" : "show.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍅" + }, + "identifier" : "8c775fb12a394e545e09c5dc3f4f5385", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "y-pomodoro", + "path" : "apps\/y-pomodoro\/", + "refreshTime" : "15s", + "schemaVersion" : 1, + "title" : "Show", + "updatedAt" : "2021-08-20T22:47:15+01:00" + }, + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-08-20T22:47:15+01:00", + "currentDirectoryPath" : null, + "description" : "Resume active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", + "filename" : "resume.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍅" + }, + "identifier" : "3f8075486c097397d65b6911816fba51", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "y-pomodoro", + "path" : "apps\/y-pomodoro\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Resume", + "updatedAt" : "2021-08-20T22:47:15+01:00" + }, + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-08-20T22:47:15+01:00", + "currentDirectoryPath" : null, + "description" : "Stop active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", + "filename" : "stop.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍅" + }, + "identifier" : "e265864f8039fb0d44199d08a552c4f5", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "y-pomodoro", + "path" : "apps\/y-pomodoro\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Stop", + "updatedAt" : "2021-08-20T22:47:15+01:00" + }, + { + "authors" : [ + { + "name" : "Jesse Claven", + "url" : "https:\/\/github.com\/jesse-c" + } + ], + "createdAt" : "2021-08-20T22:47:15+01:00", + "currentDirectoryPath" : null, + "description" : "Start a pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", + "filename" : "start.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🍅" + }, + "identifier" : "205772935becd5940672978344fe329f", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "y-pomodoro", + "path" : "apps\/y-pomodoro\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Start", + "updatedAt" : "2021-08-20T22:47:15+01:00" + } + ] + }, + { + "name" : "PhpStorm", + "path" : "phpstorm", + "scriptCommands" : [ + { + "authors" : null, + "createdAt" : "2021-08-06T16:17:35+04:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "recent-projects.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "icon.icns" + }, + "identifier" : "636e401e276ed8883dff6e76bf1983b4", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "PhpStorm", + "path" : "apps\/phpstorm\/", + "refreshTime" : "5m", + "schemaVersion" : 1, + "title" : "Update Recent Projects", + "updatedAt" : "2021-08-06T16:17:35+04:00" + } + ] + }, + { + "name" : "Fantastical", + "path" : "fantastical", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Robert Cooper", + "url" : "https:\/\/github.com\/robertcoopercode" + } + ], + "createdAt" : "2021-03-23T16:29:01-04:00", + "currentDirectoryPath" : null, + "description" : "Create an event in Fantastical", + "filename" : "create-event.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/fantastical.png" + }, + "identifier" : "7634569101c20232ebf8ecfce9624c61", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Fantastical", + "path" : "apps\/fantastical\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Event", + "updatedAt" : "2021-05-28T10:41:12+01:00" + }, + { + "authors" : [ + { + "name" : "Vardan Sawhney", + "url" : "https:\/\/github.com\/commai" + } + ], + "createdAt" : "2021-06-03T00:04:35-04:00", + "currentDirectoryPath" : null, + "description" : "Speed up setting reminders for Fantastical by invoking this script.", + "filename" : "create-todo-in-fantastical.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/fantastical.png" + }, + "identifier" : "ed64cfea0aefdda6f31454176ecc101f", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Fantastical", + "path" : "apps\/fantastical\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Create Task", + "updatedAt" : "2021-06-03T00:04:35-04:00" + } + ] + }, + { + "name" : "Safari", + "path" : "safari", + "readme" : "apps\/safari\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Close all tabs besides the currently active tab.", + "filename" : "safari-close-other-tabs.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "38cc0dc04da036a099b3e37fd711ef8d", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close Other Tabs", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "Dave Lehman", + "url" : "https:\/\/github.com\/dlehman" + } + ], + "createdAt" : "2021-08-19T12:49:15-05:00", + "currentDirectoryPath" : null, + "description" : "Open current Safari URL in new tab in Firefox", + "filename" : "safari-current-page-url-in-firefox.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "953364ac2c0ce7e6bbb02efeed35bfd6", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Safari URL in Firefox", + "updatedAt" : "2021-08-20T09:04:17-05:00" + }, + { + "authors" : [ + { + "name" : "Aaron Miller", + "url" : "https:\/\/github.com\/aaronhmiller" + } + ], + "createdAt" : "2021-08-06T10:24:49-07:00", + "currentDirectoryPath" : null, + "description" : "This script clears cache and reloads the page of the frontmost Safari window.", + "filename" : "safari-clear-cache-reload.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "ce0ee1596099e7699e99d6267b097f3d", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Clear Cache and Refresh Page", + "updatedAt" : "2021-08-06T10:24:49-07:00" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Add a new Reading List item with the given URL. Allows a custom title to be specified.", + "filename" : "safari-create-reading-list-item.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "77a2ff3bf579994aa3624feb9aca64a4", + "isTemplate" : false, + "language" : "applescript", + "mode" : "fullOutput", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Add Item to Reading List", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "Michael Bianco", + "url" : "https:\/\/github.com\/iloveitaly" + } + ], + "createdAt" : "2024-08-21T08:30:36-06:00", + "currentDirectoryPath" : null, + "description" : "Download the currently active tab's URL.", + "filename" : "safari-download-url.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "3fe3287d74734aa1adaf454aa6be4dce", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Download Current URL", + "updatedAt" : "2024-08-30T13:02:53Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Close tabs with the same URL.", + "filename" : "safari-close-duplicated-tabs.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "3910bc8358dde77be0359ef115f703a6", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close Duplicated Tabs", + "updatedAt" : "2021-03-09T15:11:52Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Close all tabs to the right side of the currently active tab.", + "filename" : "safari-close-tabs-right.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "779e79e3334dca627507dc1737a1cf27", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close Tabs to the Right", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Close all tabs to the left side of the currently active tab.", + "filename" : "safari-close-tabs-left.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "98ee4a51212c322cf544c0e756ca3383", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close Tabs to the Left", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Duplicates and opens the currently active tab.", + "filename" : "safari-duplicate-tab.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "6727e9a045a860d1a726af83df1b9df3", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Duplicate Tab", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" + } + ], + "createdAt" : "2021-03-09T15:09:02Z", + "currentDirectoryPath" : null, + "description" : "Close all tabs in the frontmost window", + "filename" : "safari-close-all-tabs.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "1cd7846276f766bc2b17a7a99bed645a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Close All Tabs", + "updatedAt" : "2021-03-09T15:09:02Z" + }, + { + "authors" : [ + { + "name" : "smxl", + "url" : "https:\/\/github.com\/smxl" + } + ], + "createdAt" : "2023-02-16T13:11:13+08:00", + "currentDirectoryPath" : null, + "description" : "Open Bing in Safari with Edge User-Agent", + "filename" : "safari-bing-edge-user-agent.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/safari.png" + }, + "identifier" : "f88a9b8ee459537aa8da40d071ab6232", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Safari", + "path" : "apps\/safari\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Bing with Edge User-Agent", + "updatedAt" : "2023-02-17T18:29:04+09:00" + }, + { + "authors" : [ + { + "name" : "Dave Lehman", + "url" : "https:\/\/github.com\/dlehman" } ], - "createdAt" : "2021-08-23T05:05:54+02:00", + "createdAt" : "2021-08-19T12:49:15-05:00", "currentDirectoryPath" : null, - "description" : "Join the ongoing or upcoming meeting.", - "filename" : "meetingbar-join-meeting.applescript", + "description" : "Open current Safari URL in new tab in Chrome", + "filename" : "safari-current-page-url-in-chrome.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/meetingbar.png" + "light" : "images\/safari.png" }, - "identifier" : "b8993c798f512a75626c91ead46662be", + "identifier" : "82f9f4b17a97bf774484f7946245c318", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "MeetingBar", - "path" : "apps\/meetingbar\/", + "packageName" : "Safari", + "path" : "apps\/safari\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Join Meeting", - "updatedAt" : "2021-08-23T12:18:02+02:00" - }, + "title" : "Open Safari URL in Chrome", + "updatedAt" : "2021-08-20T09:04:07-05:00" + } + ] + }, + { + "name" : "Dictionary", + "path" : "dictionary", + "scriptCommands" : [ { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "yayiji", + "url" : "https:\/\/github.com\/yayiji" } ], - "createdAt" : "2021-08-23T05:05:54+02:00", + "createdAt" : "2022-10-19T02:28:10+08:00", "currentDirectoryPath" : null, - "description" : "Create a new meeting.", - "filename" : "meetingbar-create-meeting.applescript", + "description" : "Look up selected text in Dictionary", + "filename" : "look-up-in-dictionary.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/meetingbar.png" + "light" : "images\/dictionary.icns" }, - "identifier" : "79b4a204b8d40f498a14d7d0623bac23", + "identifier" : "5952f1e95fc51a30ab3a3d3538dfe273", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "MeetingBar", - "path" : "apps\/meetingbar\/", + "packageName" : "Dictionary", + "path" : "apps\/dictionary\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Meeting", - "updatedAt" : "2021-08-23T12:18:02+02:00" + "title" : "Look up in Dictionary", + "updatedAt" : "2022-10-19T02:28:10+08:00" } ] }, { - "name" : "Iterm", - "path" : "iterm", + "name" : "Raycast", + "path" : "raycast", "scriptCommands" : [ { "authors" : [ { - "name" : "Andrei Borisov", - "url" : "https:\/\/github.com\/andreiborisov" + "name" : "Fatpandac", + "url" : "https:\/\/github.com\/Fatpandac" } ], - "createdAt" : "2021-02-02T11:58:56+03:00", + "createdAt" : "2022-05-19T01:47:07+08:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "iterm-run-shell-command.applescript", + "description" : "Set Confetti to run for a number of times and during intervals", + "filename" : "celebrate.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/iterm.png" + "light" : "🎉" }, - "identifier" : "aad45bb498bc30bd7cf7c2e9405c1477", + "identifier" : "c9ab115f10c7edb801658fe3f94c2886", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "iTerm", - "path" : "apps\/iterm\/", + "packageName" : "Raycast", + "path" : "apps\/raycast\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Run Shell Command", - "updatedAt" : "2021-02-02T11:58:56+03:00" + "title" : "Celebrate", + "updatedAt" : "2022-05-19T10:24:28+08:00" } ] }, { - "name" : "Cleanshot", - "path" : "cleanshot", + "name" : "Surfshark", + "path" : "surfshark", "scriptCommands" : [ { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Jordi Clement", + "url" : "https:\/\/github.com\/jordicl" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-03-04T23:14:49+01:00", "currentDirectoryPath" : null, - "description" : "Opens a new Quick Access Overlay with the specified image or video.", - "filename" : "cleanshot-add-quick-access-overlay.sh", - "hasArguments" : true, + "description" : "Start Surfshark VPN connection", + "filename" : "surfshark-vpn-start.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/add-quick-access-overlay.png" + "light" : "images\/surfshark.png" }, - "identifier" : "91b80377dfa8efe298d18c230eaef6f2", + "identifier" : "b3f462e20e0dfbe32bbe6647d34b39f3", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Surfshark", + "path" : "apps\/surfshark\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Add Quick Access Overlay", - "updatedAt" : "2021-07-20T15:49:26+01:00" + "title" : "VPN Connect", + "updatedAt" : "2021-03-08T18:01:25+01:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Jordi Clement", + "url" : "https:\/\/github.com\/jordicl" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-03-04T23:14:49+01:00", "currentDirectoryPath" : null, - "description" : "Opens Text Recognition (OCR) tool or extracts text from the specified file.", - "filename" : "cleanshot-capture-text.sh", - "hasArguments" : true, + "description" : "Stop Surfshark VPN connection", + "filename" : "surfshark-vpn-stop.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/capture-text.png" + "light" : "images\/surfshark.png" }, - "identifier" : "bc13ec469b1f9315254a99c339f94c46", + "identifier" : "ee1e49d67e3b13e5a97141a3b9c4ecac", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Surfshark", + "path" : "apps\/surfshark\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Capture Text", - "updatedAt" : "2021-07-20T15:49:26+01:00" + "title" : "VPN Disconnect", + "updatedAt" : "2021-03-08T18:01:25+01:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Jordi Clement", + "url" : "https:\/\/github.com\/jordicl" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-03-04T23:14:49+01:00", "currentDirectoryPath" : null, - "description" : "Take a screenshot of a window.", - "filename" : "cleanshot-capture-window.sh", + "description" : "Get Surfshark VPN status", + "filename" : "surfshark-vpn-status.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/capture-window.png" + "light" : "images\/surfshark.png" + }, + "identifier" : "bdb5be9e3fc0587bacc025ba8b39a4cc", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Surfshark", + "path" : "apps\/surfshark\/", + "refreshTime" : "10s", + "schemaVersion" : 1, + "title" : "Surfshark VPN Status", + "updatedAt" : "2021-03-08T18:01:25+01:00" + } + ] + }, + { + "name" : "DND Me", + "path" : "dnd-me", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Roland Leth", + "url" : "https:\/\/runtimesharks.com\/projects\/dnd-me" + } + ], + "createdAt" : "2021-04-21T11:07:25+03:00", + "currentDirectoryPath" : null, + "description" : "Stops DND via DND Me.", + "filename" : "stop-dnd-me.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🔔" }, - "identifier" : "930cc5847d3e98f97448af63c9f6ce70", + "identifier" : "b382cc160f69b4551ceddaab6d613f1a", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "DND Me", + "path" : "apps\/dnd-me\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Capture Window", + "title" : "Stop DND", "updatedAt" : "2021-05-28T10:40:03+01:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Roland Leth", + "url" : "https:\/\/runtimesharks.com\/projects\/dnd-me" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-04-21T11:07:25+03:00", "currentDirectoryPath" : null, - "description" : "Take a screenshot of the previously specified area of your screen.", - "filename" : "cleanshot-capture-previous-area.sh", - "hasArguments" : false, + "description" : "Starts DND via DND Me. The parameter has to be a menu item or slider equivalent: 15m, 30m, 1h, 2h, ..., 12h, next, next-hour, next-half-hour; it defaults to next. next-hour means the next 60m mark, next-half-hour means the next 30m mark and next means the first of the two. For example, if it's 9:22, next-hour means 10:00, next-half-hour means 9:30 and next means 9:30.", + "filename" : "start-dnd-me.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/capture-previous-area.png" + "light" : "🔕" }, - "identifier" : "5b66ca80099c0df6a6f6b76b72f30e77", + "identifier" : "98631b11572aad898f0ff5303c51aeaf", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "DND Me", + "path" : "apps\/dnd-me\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Capture Previous Area", + "title" : "Start DND", "updatedAt" : "2021-05-28T10:40:03+01:00" - }, + } + ] + }, + { + "name" : "Tailscale", + "path" : "tailscale", + "readme" : "apps\/tailscale\/README.md", + "scriptCommands" : [ { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Ross Zurowski", + "url" : "https:\/\/github.com\/rosszurowski" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-06-14T15:33:18-04:00", "currentDirectoryPath" : null, - "description" : "Restore the recently closed file.", - "filename" : "cleanshot-restore.sh", + "description" : "Disconnects from Tailscale", + "filename" : "tailscale-disconnect.sh", "hasArguments" : false, "icon" : { - "dark" : null, - "light" : ".\/images\/restore.png" + "dark" : ".\/images\/tailscale-iconDark.png", + "light" : ".\/images\/tailscale-icon.png" }, - "identifier" : "178ae73a00cf095f273899ff011ac7ae", + "identifier" : "e8490d25ff8264ba488daca5cf1bd686", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Tailscale", + "path" : "apps\/tailscale\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Restore Recently Closed File", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "Disconnect", + "updatedAt" : "2021-06-14T15:33:18-04:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Ross Zurowski", + "url" : "https:\/\/github.com\/rosszurowski" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-06-14T15:33:18-04:00", "currentDirectoryPath" : null, - "description" : "Pin a screenshot to the screen.", - "filename" : "cleanshot-pin.sh", - "hasArguments" : true, + "description" : "Gets your private Tailscale IP", + "filename" : "tailscale-ip.sh", + "hasArguments" : false, "icon" : { - "dark" : null, - "light" : ".\/images\/pin.png" + "dark" : ".\/images\/tailscale-iconDark.png", + "light" : ".\/images\/tailscale-icon.png" }, - "identifier" : "7b43135688cf93a57980e243831f842d", + "identifier" : "95bc0bc6cbf4aa67028652f54fc1009c", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Tailscale", + "path" : "apps\/tailscale\/", + "refreshTime" : "1d", + "schemaVersion" : 1, + "title" : "Get IP", + "updatedAt" : "2021-06-14T15:33:18-04:00" + }, + { + "authors" : [ + { + "name" : "Ross Zurowski", + "url" : "https:\/\/github.com\/rosszurowski" + } + ], + "createdAt" : "2021-06-14T15:33:18-04:00", + "currentDirectoryPath" : null, + "description" : "Connects to Tailscale", + "filename" : "tailscale-connect.sh", + "hasArguments" : false, + "icon" : { + "dark" : ".\/images\/tailscale-iconDark.png", + "light" : ".\/images\/tailscale-icon.png" + }, + "identifier" : "3264e1d35d86b9573e5d3962b64992f6", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Tailscale", + "path" : "apps\/tailscale\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Pin to the Screen", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "Connect", + "updatedAt" : "2021-06-14T15:33:18-04:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Ross Zurowski", + "url" : "https:\/\/github.com\/rosszurowski" + }, + { + "name" : "Daniel Schoemer", + "url" : "https:\/\/github.com\/quatauta" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-06-14T15:33:18-04:00", "currentDirectoryPath" : null, - "description" : "Opens specified file in Annotate.", - "filename" : "cleanshot-annotate.sh", - "hasArguments" : true, + "description" : "Switches Tailscale networks", + "filename" : "tailscale-switch.sh", + "hasArguments" : false, "icon" : { - "dark" : null, - "light" : ".\/images\/annotate.png" + "dark" : ".\/images\/tailscale-iconDark.png", + "light" : ".\/images\/tailscale-icon.png" }, - "identifier" : "e59fa63eb6231b9ade5ac4c903255949", + "identifier" : "d80b655296e9ce8762ff310a4dc45d7a", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Tailscale", + "path" : "apps\/tailscale\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Annotate", - "updatedAt" : "2021-07-20T15:49:26+01:00" - }, + "title" : "Switch Account", + "updatedAt" : "2024-08-19T14:49:32+02:00" + } + ] + }, + { + "name" : "Deepl", + "path" : "deepl", + "scriptCommands" : [ { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Jono Hewitt", + "url" : "https:\/\/github.com\/jonohewitt" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-03-16T15:22:56+01:00", "currentDirectoryPath" : null, - "description" : "Take a screenshot of a specific area on your screen.", - "filename" : "cleanshot-capture-area.sh", - "hasArguments" : false, + "description" : "Translate text on the DeepL website. Translates to a default language if no \"to\" argument is given.", + "filename" : "deepl-web-translate.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/capture-area.png" + "light" : "images\/deepl.png" }, - "identifier" : "7a465271a40d40df33a4f809a9008da6", + "identifier" : "0c7a95c20bc816c7db4e9b84ed604c0e", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Web Searches", + "path" : "apps\/deepl\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Capture Area", - "updatedAt" : "2021-05-28T10:40:29+01:00" + "title" : "DeepL Web Translate", + "updatedAt" : "2021-04-07T20:04:04+08:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Jono Hewitt", + "url" : "https:\/\/github.com\/jonohewitt" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-03-12T22:44:13+01:00", "currentDirectoryPath" : null, - "description" : "Open screenshot that is currently in the clipboard.", - "filename" : "cleanshot-open-from-clipboard.sh", - "hasArguments" : false, + "description" : "Translate text in DeepL for Mac. Features options to input from the clipboard as well as automatically copy translation results.", + "filename" : "deepl-app-translate.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/clipboard.png" + "light" : "images\/deepl.png" }, - "identifier" : "6695f028dbfc306af7f80b7143ae2f11", + "identifier" : "13e79a758f8e2822baea735ea52075c5", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "Apps", + "path" : "apps\/deepl\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open from Clipboard", - "updatedAt" : "2021-05-28T10:40:03+01:00" - }, + "title" : "DeepL App Translate", + "updatedAt" : "2022-02-07T03:09:14+01:00" + } + ] + }, + { + "name" : "WARP", + "path" : "warp", + "scriptCommands" : [ { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-11-03T23:01:39+03:00", "currentDirectoryPath" : null, - "description" : "Take a screenshot of your screen.", - "filename" : "cleanshot-capture-fullscreen.sh", + "description" : "Disconnect from WARP", + "filename" : "warp-stop.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/capture-fullscreen.png" + "light" : "images\/warp.png" }, - "identifier" : "38409278bff8b4b2a6b1f4a1c414467f", + "identifier" : "84f6a46d9901c80cc7dd7a7d71e833db", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "WARP", + "path" : "apps\/warp\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Capture Fullscreen", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "Disconnect", + "updatedAt" : "2022-11-21T00:02:28+07:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-11-03T23:01:39+03:00", "currentDirectoryPath" : null, - "description" : "Take a screenshot after a specified delay to capture the perfect moment.", - "filename" : "cleanshot-self-timer.sh", + "description" : "Toggle Connection", + "filename" : "warp-toggle.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/self-timer.png" + "light" : "images\/warp.png" }, - "identifier" : "6a02485725c953ebabb634d2171d69d4", + "identifier" : "7792a62e2ea9c46c3c44aa5c7ea0a3fe", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "WARP", + "path" : "apps\/warp\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Self-Timer", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "Toggle WARP", + "updatedAt" : "2022-11-21T00:02:28+07:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-11-03T23:01:39+03:00", "currentDirectoryPath" : null, - "description" : "Capture any scrollable content.", - "filename" : "cleanshot-scrolling-capture.sh", + "description" : "Check WARP connection", + "filename" : "warp-status.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/scrolling-capture.png" + "light" : "images\/warp.png" }, - "identifier" : "95d0ae887d4bd4de79313e67e919ce1c", + "identifier" : "e24da24122bfc2592adaf22617c9b2ee", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", - "refreshTime" : null, + "packageName" : "WARP", + "path" : "apps\/warp\/", + "refreshTime" : "30s", "schemaVersion" : 1, - "title" : "Scrolling Capture", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "WARP Status", + "updatedAt" : "2022-11-21T00:02:28+07:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Sergey Fuksman", + "url" : "https:\/\/github.com\/fuksman" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-11-03T23:01:39+03:00", "currentDirectoryPath" : null, - "description" : "Start a screen recording and save it as a video or an optimized GIF file.", - "filename" : "cleanshot-record-screen.sh", + "description" : "Create a connection to WARP", + "filename" : "warp-start.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/record-screen.png" + "light" : "images\/warp.png" }, - "identifier" : "2797e2984ea9fc0d309081f7cf08e034", + "identifier" : "5e1bf486a85fcd82a889fc34e2f23399", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "WARP", + "path" : "apps\/warp\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Record Screen", - "updatedAt" : "2021-05-28T10:40:03+01:00" + "title" : "Connect", + "updatedAt" : "2022-11-21T00:02:28+07:00" }, { "authors" : [ { - "name" : "CleanShot X", - "url" : "https:\/\/twitter.com\/CleanShot_app" + "name" : "Daniils Petrovs", + "url" : "https:\/\/github.com\/danirukun" } ], - "createdAt" : "2021-03-01T16:53:29+00:00", + "createdAt" : "2021-11-03T23:01:39+03:00", "currentDirectoryPath" : null, - "description" : "Hide clutter on your Desktop.", - "filename" : "cleanshot-toggle-desktop-icons.sh", + "description" : "Force WARP reauthentication", + "filename" : "warp-reauth.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/toggle-desktop-icons.png" + "light" : "images\/warp.png" }, - "identifier" : "1ccf43b5679b65859cf4867a0713ea57", + "identifier" : "a47be00594b26ffd668ccf35ac6d9a10", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "CleanShot X", - "path" : "apps\/cleanshot\/", + "packageName" : "WARP", + "path" : "apps\/warp\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Desktop Icons", - "updatedAt" : "2021-05-28T10:40:29+01:00" + "title" : "Reauthenticate", + "updatedAt" : "2023-08-10T10:55:06+02:00" } ] }, { - "name" : "Craft", - "path" : "craft", + "name" : "Medo", + "path" : "medo", "scriptCommands" : [ { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Aayush ", + "url" : "https:\/\/github.com\/Aayush9029" } ], - "createdAt" : "2021-03-23T13:32:38-07:00", + "createdAt" : "2022-03-27T16:04:55-04:00", "currentDirectoryPath" : null, - "description" : "Searches in Workspace in Craft", - "filename" : "craft-search-workspace.template.sh", - "hasArguments" : true, + "description" : "Add a new task with priority ", + "filename" : "medo-float-small.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/craft.png" + "light" : ".\/images\/medo.png" }, - "identifier" : "e2b36133ba62c2b1adf96510991fa097", - "isTemplate" : true, + "identifier" : "53656a8d7f20d1e46864d16a171f415e", + "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Craft", - "path" : "apps\/craft\/", + "packageName" : "Medo", + "path" : "apps\/medo\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search in Workspace", - "updatedAt" : "2021-03-23T13:32:38-07:00" + "title" : "Medo Float Small", + "updatedAt" : "2022-03-27T16:04:55-04:00" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Aayush ", + "url" : "https:\/\/github.com\/Aayush9029" } ], - "createdAt" : "2021-03-23T13:32:38-07:00", + "createdAt" : "2022-03-27T16:04:55-04:00", "currentDirectoryPath" : null, - "description" : "Creates a doc in Craft", - "filename" : "craft-create-doc.template.sh", - "hasArguments" : true, + "description" : "Add a new task with priority ", + "filename" : "medo-float-large.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/craft.png" + "light" : ".\/images\/medo.png" }, - "identifier" : "ceaaea45ae0681858ca57b43e3c711c1", - "isTemplate" : true, + "identifier" : "1b642fee34bc69c2bfffff0474590cda", + "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Craft", - "path" : "apps\/craft\/", + "packageName" : "Medo", + "path" : "apps\/medo\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Doc", - "updatedAt" : "2021-03-23T13:32:38-07:00" - } - ] - }, - { - "name" : "Wikipedia", - "path" : "wikipedia", - "scriptCommands" : [ + "title" : "Medo Float Large", + "updatedAt" : "2022-03-27T16:04:55-04:00" + }, { "authors" : [ { - "name" : "Juan I. Serra", - "url" : "https:\/\/twitter.com\/jiserra" + "name" : "Aayush ", + "url" : "https:\/\/github.com\/Aayush9029" } ], - "createdAt" : "2021-07-20T16:18:28-04:00", + "createdAt" : "2022-03-27T16:04:55-04:00", "currentDirectoryPath" : null, - "description" : "Search Wikipedia and display the result in Raycast", - "filename" : "wikipedia-search.py", + "description" : "Add a new task", + "filename" : "add-task.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/wikipedia.png" + "light" : ".\/images\/medo.png" }, - "identifier" : "598f86d0a3b9f15d762df1930ee39665", + "identifier" : "964abdac20ce59cf52a6d150569ed68c", "isTemplate" : false, - "language" : "python", - "mode" : "fullOutput", + "language" : "bash", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Wikipedia", - "path" : "apps\/wikipedia\/", + "packageName" : "Medo", + "path" : "apps\/medo\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Wikipedia Search", - "updatedAt" : "2021-07-23T17:46:53-04:00" - } - ] - }, - { - "name" : "Playground", - "path" : "playground", - "scriptCommands" : [ + "title" : "Add Task", + "updatedAt" : "2022-03-27T16:04:55-04:00" + }, { "authors" : [ { - "name" : "Quentin Eude", - "url" : "https:\/\/github.com\/qeude" + "name" : "Aayush ", + "url" : "https:\/\/github.com\/Aayush9029" } ], - "createdAt" : "2021-06-14T20:32:07+02:00", + "createdAt" : "2022-03-27T16:04:55-04:00", "currentDirectoryPath" : null, - "description" : "Create and open a new view based Swift Playground", - "filename" : "open-new-view-playground.py", - "hasArguments" : true, + "description" : "Add a new task with priority ", + "filename" : "medo-float.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🕊" + "light" : ".\/images\/medo.png" }, - "identifier" : "830a18fee37d756c1a00a65e286113a3", + "identifier" : "d17151bc9fa155a91dd7a260bf330279", "isTemplate" : false, - "language" : "python", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Swift Playgrounds", - "path" : "apps\/playground\/", + "packageName" : "Medo", + "path" : "apps\/medo\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create View Based", - "updatedAt" : "2021-06-14T20:32:07+02:00" - }, + "title" : "Medo Float", + "updatedAt" : "2022-03-27T16:04:55-04:00" + } + ] + }, + { + "name" : "Agenda", + "path" : "agenda", + "readme" : "apps\/agenda\/README.md", + "scriptCommands" : [ { "authors" : [ { - "name" : "Quentin Eude", - "url" : "https:\/\/github.com\/qeude" + "name" : "Michael Ellis", + "url" : "https:\/\/github.com\/mtellis2" } ], - "createdAt" : "2021-06-14T20:32:07+02:00", + "createdAt" : "2021-06-26T15:52:43-04:00", "currentDirectoryPath" : null, - "description" : "Create and open a new basic Swift Playground", - "filename" : "open-new-playground.py", - "hasArguments" : true, + "description" : "Opens Agenda - Today Overview", + "filename" : "agenda-today.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🕊" + "light" : "images\/agenda.png" }, - "identifier" : "23040420c0f901b4bd478a02943591c5", + "identifier" : "7f50aaf0597b597069fb354a58a4573b", "isTemplate" : false, - "language" : "python", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Swift Playgrounds", - "path" : "apps\/playground\/", + "packageName" : "Agenda", + "path" : "apps\/agenda\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Basic", - "updatedAt" : "2021-06-14T20:32:07+02:00" - } - ] - }, - { - "name" : "Evernote", - "path" : "evernote", - "scriptCommands" : [ + "title" : "Agenda Today Overview", + "updatedAt" : "2021-06-26T15:52:43-04:00" + }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "Michael Ellis", + "url" : "https:\/\/github.com\/mtellis2" } ], - "createdAt" : "2021-08-13T13:17:23-07:00", + "createdAt" : "2021-06-26T15:52:43-04:00", "currentDirectoryPath" : null, - "description" : "Creates a new Evernote, pastes in the contents of the clipboard, and positions the cursor in the title area.", - "filename" : "create-note-paste-clipboard.applescript", + "description" : "Opens Agenda - On the Agenda Overview", + "filename" : "agenda-on-the-agenda.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/evernote.png" + "light" : "images\/agenda.png" }, - "identifier" : "d35a432612f0fce10372d3b066dc49e6", + "identifier" : "8e019b6506bee0ffad51b2a625ed0d0b", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Evernote", - "path" : "apps\/evernote\/", + "packageName" : "Agenda", + "path" : "apps\/agenda\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Evernote Paste Clipboard", - "updatedAt" : "2021-08-13T13:17:23-07:00" + "title" : "On the Agenda Overview", + "updatedAt" : "2021-06-26T15:52:43-04:00" }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "Michael Ellis", + "url" : "https:\/\/github.com\/mtellis2" } ], - "createdAt" : "2021-08-13T13:17:23-07:00", + "createdAt" : "2021-06-26T15:52:43-04:00", "currentDirectoryPath" : null, - "description" : "Creates a new Evernote.", - "filename" : "create-note.applescript", - "hasArguments" : false, + "description" : "Creates New Note and adds it to On the Agenda", + "filename" : "agenda-new-note.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/evernote.png" + "light" : "images\/agenda.png" }, - "identifier" : "f546136ca9bad8f3b77a31e1ff0aecd0", + "identifier" : "9b7ee4e0b61fcd48feeb8280ac0adbdf", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Evernote", - "path" : "apps\/evernote\/", + "packageName" : "Agenda", + "path" : "apps\/agenda\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Evernote", - "updatedAt" : "2021-08-13T13:17:23-07:00" + "title" : "Create New On the Agenda Note", + "updatedAt" : "2021-06-26T15:52:43-04:00" } ] }, { - "name" : "Noteplan3", - "path" : "noteplan3", + "name" : "Sip", + "path" : "sip", "scriptCommands" : [ { "authors" : [ { - "name" : "Göran Damberg", - "url" : "https:\/\/github.com\/gdamberg" + "name" : "Sip", + "url" : "https:\/\/twitter.com\/sip_app\/" } ], - "createdAt" : "2021-06-23T09:20:05+02:00", + "createdAt" : "2021-03-09T18:54:05-08:00", "currentDirectoryPath" : null, - "description" : "Append to daily note", - "filename" : "noteplan-append-daily-note.sh", + "description" : " Add a color to your Sip history.", + "filename" : "sip-add-hex-color.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/noteplan3.png" + "light" : ".\/images\/sip.png" }, - "identifier" : "d802c64f73f9e89996597e76af3d5094", + "identifier" : "1464e6600c3226f74b04dfa0dd946eac", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "NotePlan3", - "path" : "apps\/noteplan3\/", + "packageName" : "Sip", + "path" : "apps\/sip\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Append To Daily Note", - "updatedAt" : "2021-06-23T09:20:05+02:00" + "title" : " Add Color to History", + "updatedAt" : "2021-05-28T10:43:11+01:00" }, { "authors" : [ { - "name" : "Göran Damberg", - "url" : "https:\/\/github.com\/gdamberg" + "name" : "Sip", + "url" : "https:\/\/twitter.com\/sip_app\/" } ], - "createdAt" : "2021-06-23T09:20:05+02:00", + "createdAt" : "2021-03-09T18:54:05-08:00", "currentDirectoryPath" : null, - "description" : "Create a new note from clipboard", - "filename" : "noteplan-new-note-from-clipboard.sh", - "hasArguments" : true, + "description" : "Open Sip Contrast Checker.", + "filename" : "sip-open-check-contrast.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/noteplan3.png" + "light" : ".\/images\/sip.png" }, - "identifier" : "2562e5c7b3258337f783b8210e796d55", + "identifier" : "3c16dd65bb4f638b006b4e71787ff835", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "NotePlan3", - "path" : "apps\/noteplan3\/", + "packageName" : "Sip", + "path" : "apps\/sip\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "New Note From Clipboard", - "updatedAt" : "2021-06-23T09:20:05+02:00" - } - ] - }, - { - "name" : "Amphetamine", - "path" : "amphetamine", - "scriptCommands" : [ + "title" : "Open Contrast Checker", + "updatedAt" : "2021-05-28T10:43:11+01:00" + }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Sip", + "url" : "https:\/\/twitter.com\/sip_app\/" } ], - "createdAt" : "2021-01-07T18:10:56-08:00", + "createdAt" : "2021-03-09T18:54:05-08:00", "currentDirectoryPath" : null, - "description" : "Start Default Amphetamine Session", - "filename" : "amphetamine-on.applescript", + "description" : "Pick a color value from your screen.", + "filename" : "sip-show-picker.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/amphetamine.png" + "light" : ".\/images\/sip.png" }, - "identifier" : "6c247430747abf30a7011ae37d87ca7b", + "identifier" : "e0a9a42ede865f3c4b41b8212b7abf47", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Amphetamine", - "path" : "apps\/amphetamine\/", + "packageName" : "Sip", + "path" : "apps\/sip\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Default Session", - "updatedAt" : "2021-05-28T10:35:03+01:00" + "title" : "Show Color Picker", + "updatedAt" : "2021-05-28T10:43:11+01:00" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Sip", + "url" : "https:\/\/twitter.com\/sip_app\/" } ], - "createdAt" : "2021-01-07T18:10:56-08:00", + "createdAt" : "2021-03-09T18:54:05-08:00", "currentDirectoryPath" : null, - "description" : "Stop Current Amphetamine Session", - "filename" : "amphetamine-off.applescript", - "hasArguments" : false, + "description" : "Open Sip Contrast Checker.", + "filename" : "sip-check-contrast-hex.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/amphetamine.png" + "light" : ".\/images\/sip.png" }, - "identifier" : "7663eee08fb216262ad4e904c0ed4c7a", + "identifier" : "23c64d597f80a9cc2b19cc5e5ed8c27d", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Amphetamine", - "path" : "apps\/amphetamine\/", + "packageName" : "Sip", + "path" : "apps\/sip\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "End Session", - "updatedAt" : "2021-05-28T10:34:50+01:00" + "title" : "Check Contrast", + "updatedAt" : "2021-05-28T10:43:11+01:00" } ] }, { - "name" : "Bear", - "path" : "bear", + "name" : "Obsidian", + "path" : "obsidian", "scriptCommands" : [ { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "Yiyao Wei", + "url" : "https:\/\/github.com\/HotThoughts" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2021-07-18T15:40:05+02:00", "currentDirectoryPath" : null, - "description" : "Open the Today section in Bear.", - "filename" : "bear-today.sh", + "description" : "Create a new note", + "filename" : "obsidian-create-note.template.sh", "hasArguments" : true, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : ".\/images\/obsidian.png" }, - "identifier" : "a3ba0dc119ef33bb239b30ae6cb4d1e8", - "isTemplate" : false, + "identifier" : "5e5d144d98524911ae3b2198de181c01", + "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", + "packageName" : "Obsidian", + "path" : "apps\/obsidian\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Today", - "updatedAt" : "2021-05-28T10:36:54+01:00" + "title" : "Create Note", + "updatedAt" : "2021-07-19T22:03:48+02:00" }, { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "Yiyao Wei", + "url" : "https:\/\/github.com\/HotThoughts" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2021-07-18T15:40:05+02:00", "currentDirectoryPath" : null, - "description" : "Open the specified tag in Bear.", - "filename" : "bear-open-tag.sh", + "description" : "Search Obsidian Vault", + "filename" : "obsidian-search-vault.template.sh", "hasArguments" : true, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : ".\/images\/obsidian.png" }, - "identifier" : "b0cc37027abe39c7a0cb5053b8a9f4ec", - "isTemplate" : false, + "identifier" : "220bea9681acc6640802b8cb8b0ee55d", + "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", + "packageName" : "Obsidian", + "path" : "apps\/obsidian\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Tag", - "updatedAt" : "2021-05-28T10:36:54+01:00" + "title" : "Search in Vault", + "updatedAt" : "2021-07-19T22:03:48+02:00" + } + ] + }, + { + "name" : "Things", + "path" : "things", + "readme" : "apps\/things\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Things", + "url" : "https:\/\/twitter.com\/culturedcode\/" + } + ], + "createdAt" : "2021-03-03T19:17:44Z", + "currentDirectoryPath" : null, + "description" : "Get an overview of your completed tasks for today.", + "filename" : "things-today.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/things.png" + }, + "identifier" : "f5c008fbbafb56d3dd35483b209357f5", + "isTemplate" : false, + "language" : "applescript", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Things", + "path" : "apps\/things\/", + "refreshTime" : "1m", + "schemaVersion" : 1, + "title" : "Today", + "updatedAt" : "2021-03-03T19:17:44Z" }, { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "Things", + "url" : "https:\/\/twitter.com\/culturedcode\/" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2021-03-03T19:17:44Z", "currentDirectoryPath" : null, - "description" : "Add a new note to Bear.", - "filename" : "bear-add-note.sh", + "description" : "Search To-Dos with a query.", + "filename" : "things-search-to-dos.sh", "hasArguments" : true, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : "images\/things.png" }, - "identifier" : "1bdff208152a457aab81e00fda092d6c", + "identifier" : "81182c169dbbf72ba9dfbbfea713275b", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", + "packageName" : "Things", + "path" : "apps\/things\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Add Note", - "updatedAt" : "2021-05-28T10:35:40+01:00" + "title" : "Search To-Dos", + "updatedAt" : "2021-03-03T19:17:44Z" }, { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "Things", + "url" : "https:\/\/twitter.com\/culturedcode\/" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2021-03-03T19:17:44Z", "currentDirectoryPath" : null, - "description" : "Search notes by keyword and\/or tag in Bear.", - "filename" : "bear-search.sh", + "description" : "Create a new To-Do with title and optional deadline.", + "filename" : "things-create-todo.sh", "hasArguments" : true, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : "images\/things.png" }, - "identifier" : "e7cdad30d00d056c56e710729f1a6531", + "identifier" : "f5ae3372a366a985c4a630f8f3412f83", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", + "packageName" : "Things", + "path" : "apps\/things\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search", - "updatedAt" : "2021-06-14T14:17:13-05:00" + "title" : "Create To-Do", + "updatedAt" : "2021-08-09T22:29:37+02:00" }, { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "Things", + "url" : "https:\/\/twitter.com\/culturedcode\/" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2021-03-03T19:17:44Z", "currentDirectoryPath" : null, - "description" : "Open the Todo section in Bear.", - "filename" : "bear-todo.sh", - "hasArguments" : true, + "description" : "Show your current To-Do to stay focused.", + "filename" : "things-current-todo.applescript", + "hasArguments" : false, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : "images\/things.png" }, - "identifier" : "ae50306d0334257a49487d71a72598c6", + "identifier" : "7a61aa9d34f92172b970cf9ff88113af", "isTemplate" : false, - "language" : "bash", - "mode" : "silent", + "language" : "applescript", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", - "refreshTime" : null, + "packageName" : "Things", + "path" : "apps\/things\/", + "refreshTime" : "1m", "schemaVersion" : 1, - "title" : "Open Todos", - "updatedAt" : "2021-05-28T10:38:31+01:00" - }, + "title" : "Current To-Do", + "updatedAt" : "2021-03-03T19:17:44Z" + } + ] + }, + { + "name" : "Chatgpt", + "path" : "chatgpt", + "scriptCommands" : [ { "authors" : [ { - "name" : "Tanay Nistala", - "url" : "https:\/\/github.com\/tanaynistala" + "name" : "gintonyc", + "url" : "https:\/\/raycast.com\/gintonyc" } ], - "createdAt" : "2020-12-08T15:05:55+05:30", + "createdAt" : "2023-06-05T12:05:06+08:00", "currentDirectoryPath" : null, - "description" : "Open the specified note in Bear.", - "filename" : "bear-open-note.sh", - "hasArguments" : true, + "description" : "Open chatgpt in safari", + "filename" : "chatgpt-open-safari.applescript", + "hasArguments" : false, "icon" : { - "dark" : "images\/bear-dark.png", - "light" : "images\/bear-light.png" + "dark" : null, + "light" : "images\/chatgpt.png" }, - "identifier" : "24d03b4080ea3b49d348721ec0865b40", + "identifier" : "9dd095ddbac7bc040b2af63d1532a3d1", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Bear", - "path" : "apps\/bear\/", + "packageName" : "Chatgpt Util", + "path" : "apps\/chatgpt\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Note", - "updatedAt" : "2021-05-28T10:36:54+01:00" + "title" : "chatgpt", + "updatedAt" : "2023-06-05T07:04:09Z" } ] }, { - "name" : "Mail", - "path" : "mail", + "name" : "Trello", + "path" : "trello", "scriptCommands" : [ { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "Michael Francis", + "url" : "https:\/\/github.com\/mikefrancis" } ], - "createdAt" : "2021-05-22T16:27:53+01:00", + "createdAt" : "2021-08-12T08:49:15+01:00", "currentDirectoryPath" : null, - "description" : "Copies the foreground Mail deeplink", - "filename" : "copy-foreground-mail-deeplink.applescript", - "hasArguments" : false, + "description" : "Create a new Trello card", + "filename" : "create-trello-card.template.py", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "📧" + "light" : ".\/images\/logo.png" }, - "identifier" : "2b57bf3c301e2230d812bba90896fc1f", - "isTemplate" : false, - "language" : "applescript", + "identifier" : "0ab076acf65d71d43777520db336ca41", + "isTemplate" : true, + "language" : "python", "mode" : "compact", "needsConfirmation" : null, - "packageName" : "Mail", - "path" : "apps\/mail\/", + "packageName" : "Trello", + "path" : "apps\/trello\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Copy Foreground Mail Deeplink", - "updatedAt" : "2021-05-22T16:27:53+01:00" + "title" : "Create Card", + "updatedAt" : "2021-08-12T07:51:38Z" } ] }, { - "name" : "Spotify", - "path" : "spotify", + "name" : "MenubarX", + "path" : "menubarx", "scriptCommands" : [ { "authors" : [ { - "name" : "Nichlas W. Andersen", - "url" : "https:\/\/twitter.com\/nichlaswa" + "name" : "Clu Soh", + "url" : "https:\/\/twitter.com\/designedbyclu" } ], - "createdAt" : "2021-05-27T12:22:24+02:00", + "createdAt" : "2022-06-14T15:34:34+08:00", "currentDirectoryPath" : null, - "description" : "Create Spotify Shortcut Command from the Spotify URL that's in your clipboard", - "filename" : "create-spotify-command.js", + "description" : "Open Pasteboard link in MenubarX", + "filename" : "open-in-menubarx.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/menubarx_logo.png" + }, + "identifier" : "d919503ba27fcc13e43995035a1a51e2", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "MenubarX", + "path" : "apps\/menubarx\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open in MenubarX", + "updatedAt" : "2022-06-14T15:34:34+08:00" + }, + { + "authors" : [ + { + "name" : "Clu Soh", + "url" : "https:\/\/twitter.com\/designedbyclu" + } + ], + "createdAt" : "2022-06-14T15:34:34+08:00", + "currentDirectoryPath" : null, + "description" : "Open X Tab in your menubar", + "filename" : "open-tab-in-menubar.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/create.png" + "light" : "images\/menubarx_logo.png" }, - "identifier" : "4a0c3ae9f9dc6dd5d6e060f802ea486c", + "identifier" : "cc7255205230e541123c8c720f81d511", "isTemplate" : false, - "language" : "node", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Spotify", - "path" : "apps\/spotify\/", + "packageName" : "MenubarX", + "path" : "apps\/menubarx\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Open Tabs", + "updatedAt" : "2022-06-14T15:34:34+08:00" + }, + { + "authors" : [ + { + "name" : "Clu Soh", + "url" : "https:\/\/twitter.com\/designedbyclu" + } + ], + "createdAt" : "2022-06-14T15:34:34+08:00", + "currentDirectoryPath" : null, + "description" : "Close last viewed tab in MenubarX", + "filename" : "close-last-menubarx-tab.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/menubarx_logo.png" + }, + "identifier" : "48706938160df7f4d61a274a752dea5b", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "MenubarX", + "path" : "apps\/menubarx\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Spotify Command", - "updatedAt" : "2021-05-27T13:45:09+02:00" + "title" : "Close Last Tab", + "updatedAt" : "2022-06-14T15:34:34+08:00" } ] }, { - "name" : "Tunnelblick", - "path" : "tunnelblick", + "name" : "Viscosity", + "path" : "viscosity", "scriptCommands" : [ { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", + "url" : "https:\/\/github.com\/lcardito" } ], - "createdAt" : "2021-03-14T17:37:20+01:00", + "createdAt" : "2021-03-23T21:40:02+01:00", "currentDirectoryPath" : null, - "description" : "Disconnect a VPN configuration.", - "filename" : "tunnelblick-disconnect.applescript", - "hasArguments" : true, + "description" : "Disconnect all connected VPN configurations.", + "filename" : "viscosity-disconnect-all.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/tunnelblick.png" + "light" : "images\/viscosity.png" }, - "identifier" : "6abb4b2ece585f7043d27e0f70c8ed0c", + "identifier" : "e271e6ed237d2a3fb9c8a401ff15503e", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : false, - "packageName" : "Tunnelblick", - "path" : "apps\/tunnelblick\/", + "packageName" : "Viscosity", + "path" : "apps\/viscosity\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Tunnelblick: Disconnect", - "updatedAt" : "2021-03-16T12:21:52+05:30" + "title" : "Viscosity: Disconnect All", + "updatedAt" : "2021-03-23T21:40:02+01:00" }, { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", + "url" : "https:\/\/github.com\/lcardito" } ], - "createdAt" : "2021-03-14T17:37:20+01:00", + "createdAt" : "2021-03-23T21:40:02+01:00", "currentDirectoryPath" : null, - "description" : "Connect a VPN configuration.", - "filename" : "tunnelblick-connect.applescript", + "description" : "Connect a VPN viscosity configuration.", + "filename" : "viscosity-connect.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/tunnelblick.png" + "light" : "images\/viscosity.png" }, - "identifier" : "b16beed5521082645dbed303aaf63699", + "identifier" : "aff632e02a4d4991a02dcb2e998b5598", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : false, - "packageName" : "Tunnelblick", - "path" : "apps\/tunnelblick\/", + "packageName" : "Viscosity", + "path" : "apps\/viscosity\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Tunnelblick: Connect", - "updatedAt" : "2021-03-16T12:21:13+05:30" + "title" : "Viscosity: Connect", + "updatedAt" : "2021-03-23T21:40:02+01:00" }, { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", + "url" : "https:\/\/github.com\/lcardito" } ], "createdAt" : "2021-03-14T17:37:20+01:00", "currentDirectoryPath" : null, - "description" : "Disconnect all connected VPN configurations.", - "filename" : "tunnelblick-disconnect-all.applescript", - "hasArguments" : false, + "description" : "Disconnect a VPN configuration.", + "filename" : "viscosity-disconnect.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/tunnelblick.png" + "light" : "images\/viscosity.png" }, - "identifier" : "f19aef4b963a8b078a2ece2685c9ea64", + "identifier" : "3026d9f845bb1212453542c8faac0c99", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : false, - "packageName" : "Tunnelblick", - "path" : "apps\/tunnelblick\/", + "packageName" : "Viscosity", + "path" : "apps\/viscosity\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Tunnelblick: Disconnect All", - "updatedAt" : "2021-03-14T17:37:20+01:00" + "title" : "Viscosity: Disconnect", + "updatedAt" : "2021-03-23T21:40:02+01:00" }, { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", + "url" : "https:\/\/github.com\/lcardito" } ], "createdAt" : "2021-03-14T17:37:20+01:00", "currentDirectoryPath" : null, "description" : "Connect all unconnected VPN configurations.", - "filename" : "tunnelblick-connect-all.applescript", + "filename" : "viscosity-connect-all.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/tunnelblick.png" + "light" : "images\/viscosity.png" }, - "identifier" : "1d7014bbdf04ed245c83da0d5a682c17", + "identifier" : "71345f2d9ab8ad5b476cd4adeff8e1e7", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : false, - "packageName" : "TunnelBlick", - "path" : "apps\/tunnelblick\/", + "packageName" : "Viscosity", + "path" : "apps\/viscosity\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Tunnelblick: Connect All", - "updatedAt" : "2021-03-14T17:37:20+01:00" + "title" : "Viscosity: Connect All", + "updatedAt" : "2021-03-23T21:40:02+01:00" } ] }, { - "name" : "Script Kit", - "path" : "script-kit", + "name" : "ExpressVPN", + "path" : "expressvpn", "scriptCommands" : [ { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "Amir Hossein SamadiPour", + "url" : "https:\/\/github.com\/SamadiPour" } ], - "createdAt" : "2021-07-25T17:09:15+02:00", + "createdAt" : "2022-07-22T18:26:50+04:30", "currentDirectoryPath" : null, - "description" : "Convert all Script Kit scripts to Raycast Script Commands", - "filename" : "import-scripts-from-script-kit.py", + "description" : null, + "filename" : "expressvpn-reconnect.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/kit_logo.png" + "light" : "images\/expressvpn_logo.svg" }, - "identifier" : "b5d0da0e719c56fab014833b572a9ce5", + "identifier" : "3bada318c2097f51fcbec7513b5ecaa6", "isTemplate" : false, - "language" : "python", - "mode" : "fullOutput", + "language" : "applescript", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Script Kit", - "path" : "apps\/script-kit\/", + "packageName" : "ExpressVPN", + "path" : "apps\/expressvpn\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Import scripts from Script Kit", - "updatedAt" : "2021-08-03T16:01:36+02:00" - } - ] - }, - { - "name" : "Ferdi", - "path" : "ferdi", - "scriptCommands" : [ + "title" : "Reconnect", + "updatedAt" : "2022-07-22T18:26:50+04:30" + }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Amir Hossein SamadiPour", + "url" : "https:\/\/github.com\/SamadiPour" } ], - "createdAt" : "2021-05-17T16:20:13+02:00", + "createdAt" : "2022-07-22T18:26:50+04:30", "currentDirectoryPath" : null, "description" : null, - "filename" : "ferdi-open-service-by-name.applescript", - "hasArguments" : true, + "filename" : "expressvpn-disconnect.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/ferdi.png" + "light" : "images\/expressvpn_logo.svg" }, - "identifier" : "10ad2d03caaee101d4862f1a21cc1234", + "identifier" : "f8d7cbf3a379d469dd987f032de1656c", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Ferdi", - "path" : "apps\/ferdi\/", + "packageName" : "ExpressVPN", + "path" : "apps\/expressvpn\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Service by Name", - "updatedAt" : "2021-07-23T17:46:29-04:00" + "title" : "Disconnect", + "updatedAt" : "2022-07-22T18:26:50+04:30" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "Amir Hossein SamadiPour", + "url" : "https:\/\/github.com\/SamadiPour" } ], - "createdAt" : "2021-05-16T16:05:58+02:00", + "createdAt" : "2022-07-22T18:26:50+04:30", "currentDirectoryPath" : null, "description" : null, - "filename" : "ferdi-open-service-by-index.applescript", - "hasArguments" : true, + "filename" : "expressvpn-connect.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/ferdi.png" + "light" : "images\/expressvpn_logo.svg" }, - "identifier" : "504a15f524e5a1a6da75cc4a72e59c9e", + "identifier" : "3c0176e3dc0c58d220cd3f9fdb90e4c5", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Ferdi", - "path" : "apps\/ferdi\/", + "packageName" : "ExpressVPN", + "path" : "apps\/expressvpn\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Service by Index", - "updatedAt" : "2021-07-23T17:46:11-04:00" + "title" : "Connect", + "updatedAt" : "2022-07-22T18:26:50+04:30" } ] }, { - "name" : "Hazeover", - "path" : "hazeover", + "name" : "Quip", + "path" : "quip", + "readme" : "apps\/quip\/README.org", "scriptCommands" : [ { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "zzamboni", + "url" : "https:\/\/raycast.com\/zzamboni" } ], - "createdAt" : "2021-01-24T20:19:30+00:00", + "createdAt" : "2023-07-12T10:50:40+02:00", "currentDirectoryPath" : null, - "description" : "Set dimming intensity of background windows.", - "filename" : "hazeover-set-intensity.applescript", + "description" : "Configure your Quip API token and other defaults in quip_config.ini", + "filename" : "quip-new.template.py", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/hazeover.png" + "light" : "\/Applications\/Quip.app\/Contents\/Resources\/AppIcon.icns" }, - "identifier" : "fadd9020bfac9652d455ccefd757fcc2", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", + "identifier" : "d8fa7bc18200bc8e62536c5dd1c5a6f9", + "isTemplate" : true, + "language" : "python", + "mode" : "compact", "needsConfirmation" : null, - "packageName" : "HazeOver", - "path" : "apps\/hazeover\/", + "packageName" : "Quip utilities", + "path" : "apps\/quip\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Set Intensity", - "updatedAt" : "2021-05-28T10:42:00+01:00" + "title" : "{{commandtitle}}", + "updatedAt" : "2023-07-12T10:50:40+02:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "diego_zamboni", + "url" : "https:\/\/raycast.com\/diego_zamboni" } ], - "createdAt" : "2021-01-24T20:19:30+00:00", + "createdAt" : "2023-07-12T10:50:40+02:00", "currentDirectoryPath" : null, - "description" : "Toggle dimming of all background windows.", - "filename" : "hazeover-toggle-dimming.applescript", + "description" : "Create script commands for creating Quip documents, based on the configuration in quip_config.ini.", + "filename" : "set-up-quip-commands.py", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/hazeover.png" + "light" : "\/Applications\/Quip.app\/Contents\/Resources\/AppIcon.icns" + }, + "identifier" : "fdc5f3fc9cc957f068cd9ec6a7c031b6", + "isTemplate" : false, + "language" : "python", + "mode" : "fullOutput", + "needsConfirmation" : true, + "packageName" : "Quip utilities", + "path" : "apps\/quip\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Set up Quip commands", + "updatedAt" : "2023-07-12T10:50:40+02:00" + } + ] + }, + { + "name" : "Hyper", + "path" : "hyper", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Eliot Hertenstein", + "url" : "https:\/\/github.com\/eIiot" + } + ], + "createdAt" : "2022-02-18T02:19:33-08:00", + "currentDirectoryPath" : "~", + "description" : "Run a terminal using Hyper", + "filename" : "hyper-run-shell-command.applescript", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/hyper.png" }, - "identifier" : "c77e9fa4315c2beba15ab0321d833ae5", + "identifier" : "49608e0b2c2375fec1a6f173155333af", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "HazeOver", - "path" : "apps\/hazeover\/", + "packageName" : "Hyper", + "path" : "apps\/hyper\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Dimming", - "updatedAt" : "2021-05-28T10:42:00+01:00" + "title" : "Run Shell Command", + "updatedAt" : "2022-02-18T19:08:51-08:00" } ] }, { - "name" : "Iconsur", - "path" : "iconsur", + "name" : "Reminders", + "path" : "reminders", "scriptCommands" : [ { "authors" : [ { - "name" : "StevenRCE0", - "url" : "https:\/\/github.com\/StevenRCE0" + "name" : "Andrei Nedelcu", + "url" : "https:\/\/dinosaurgame.net" } ], - "createdAt" : "2021-08-27T15:06:06+08:00", + "createdAt" : "2022-02-07T04:07:49+02:00", "currentDirectoryPath" : null, - "description" : "Change App icons to match Big Sur", - "filename" : "iconsur.sh", + "description" : "Add a new reminder.", + "filename" : "reminders-create-reminder.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🅱️" + "light" : "images\/reminders.png" }, - "identifier" : "10ce792f9f21acf4813a7307956a1999", + "identifier" : "75a45615fac6beb2797006d141e954b6", "isTemplate" : false, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "iconsur", - "path" : "apps\/iconsur\/", + "packageName" : "Create Reminder", + "path" : "apps\/reminders\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Change Application Icon", - "updatedAt" : "2021-08-31T08:37:29+08:00" + "title" : "Add Reminder", + "updatedAt" : "2022-02-07T02:10:02Z" } ] }, { - "name" : "Pulse Secure", - "path" : "pulse-secure", + "name" : "Devutils", + "path" : "devutils", "scriptCommands" : [ { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-06-14T20:14:26+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Resume the suspended connection.", - "filename" : "pulse-secure-resume.applescript", + "description" : "Convert your current clipboard from CSV to JSON", + "filename" : "csv2json.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/pulse-secure.png" + "light" : "images\/devutils.png" }, - "identifier" : "137e52f49aba309c60fb9bc9427bda4d", + "identifier" : "96351002cef0c040a5c35e6f2e04a7a0", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pulse Secure", - "path" : "apps\/pulse-secure\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Resume", - "updatedAt" : "2021-06-14T20:14:26+02:00" + "title" : "CSV to JSON", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-06-14T20:14:26+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Connect to the given \/ default connection with the given \/ default username.", - "filename" : "pulse-secure-connect.applescript", - "hasArguments" : true, + "description" : "Escape (or unescape) the HTML entities your current clipboard string", + "filename" : "htmlencode.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/pulse-secure.png" + "light" : "images\/devutils.png" }, - "identifier" : "8776f55ec372ac1d0a62bc9267777ace", + "identifier" : "7b2949bdb3461fae767de2e8a2686153", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pulse Secure", - "path" : "apps\/pulse-secure\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Connect \/ Reconnect", - "updatedAt" : "2021-06-16T14:42:20+02:00" + "title" : "HTML Entity Encode\/Decode", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-06-14T20:14:26+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Suspend the active connection.", - "filename" : "pulse-secure-suspend.applescript", + "description" : "Beautify or minify your current clipboard as XML", + "filename" : "xmlformatter.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/pulse-secure.png" + "light" : "images\/devutils.png" }, - "identifier" : "c5e03d8d6265725238c13d8b285c48f6", + "identifier" : "c1fd8764b8bb26e465a7a48dc3d55b89", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pulse Secure", - "path" : "apps\/pulse-secure\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Suspend", - "updatedAt" : "2021-06-14T20:14:26+02:00" + "title" : "XML Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jakub Lanski", - "url" : "https:\/\/github.com\/jaklan" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-06-14T20:14:26+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Disconnect \/ cancel the active connection.", - "filename" : "pulse-secure-disconnect.applescript", + "description" : "Convert the HTML string in clipboard to JSX", + "filename" : "html2jsx.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/pulse-secure.png" + "light" : "images\/devutils.png" }, - "identifier" : "03191a91d92833853d2a70fad5f19424", + "identifier" : "5d48ac8248afc31799260e5ee0af87b1", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pulse Secure", - "path" : "apps\/pulse-secure\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Disconnect \/ Cancel", - "updatedAt" : "2021-06-14T20:14:26+02:00" - } - ] - }, - { - "name" : "Plash", - "path" : "plash", - "scriptCommands" : [ + "title" : "HTML to JSX", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Reload the current website in Plash.", - "filename" : "plash-reload-website.sh", + "description" : "Escape (or unescape) backslashes in your current clipboard string", + "filename" : "backslash.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "efba722b5a535ab230ffe426bbd3aa00", + "identifier" : "1fe92d44c297f36a443e1741eb727317", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Reload Website", - "updatedAt" : "2021-06-04T23:56:19+07:00" + "title" : "Backslash Escape\/Unescape", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Switch to the next website in the list in Plash.", - "filename" : "plash-next-website.sh", + "description" : "Get some randomly generated lorem ipsum strings", + "filename" : "loremipsum.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "4871914878a1c9aca9d14b7114a76df2", + "identifier" : "34c135d0d015486dc28c4a1789dd9c5e", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Next Website", - "updatedAt" : "2021-06-04T23:56:19+07:00" + "title" : "Lorem Ipsum Generator", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Switch to the previous website in the list in Plash.", - "filename" : "plash-previous-website.sh", + "description" : "Decode and verify the current JWT token in your clipboard", + "filename" : "jwt.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "ffed236c901c236e41814468c88c82ea", + "identifier" : "03b13d316e4eaf0c2cf02eec27ad6d49", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Previous Website", - "updatedAt" : "2021-06-04T23:56:19+07:00" + "title" : "JWT Debugger", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Switch to a random website from the list of websites in Plash.", - "filename" : "plash-random-website.sh", + "description" : "Beautify or minify your current clipboard as ERB", + "filename" : "erbformatter.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "10bddde306d0bfdae3624cb8cdddd0b0", + "identifier" : "c0862014d90bee6995ecfbf61b5468d2", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Switch to Random Website", - "updatedAt" : "2021-06-04T23:56:19+07:00" + "title" : "ERB Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Toggle browsing mode in Plash.", - "filename" : "plash-toggle-browser-mode.sh", + "description" : "Format the SQL string currently in your clipboard", + "filename" : "sqlformatter.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "a0a1cd94513bf76d8c8ec9bec1ce7ec2", + "identifier" : "9ec928b585e7c1b2de1f2e13cb3fab26", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Browsing Mode", - "updatedAt" : "2021-05-28T10:24:58+01:00" + "title" : "SQL Formatter", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Plash", - "url" : "https:\/\/github.com\/sindresorhus\/Plash" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-28T01:55:40+07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Add a website to Plash.", - "filename" : "plash-add-website.sh", - "hasArguments" : true, + "description" : "Inspect your current clipboard string (length, words count, unicode, etc.)", + "filename" : "stringinspect.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/plash.png" + "light" : "images\/devutils.png" }, - "identifier" : "d65493aee461a49dbf2b6ef976857898", + "identifier" : "3da94b4e417bf5ff6e44b67869a7d612", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Plash", - "path" : "apps\/plash\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Add Website", - "updatedAt" : "2021-06-04T23:56:19+07:00" - } - ] - }, - { - "name" : "Mullvad", - "path" : "mullvad", - "scriptCommands" : [ + "title" : "String Inspector", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Disconnect from the Mullvad VPN tunnel.", - "filename" : "disconnect.sh", + "description" : "Decode the Base64 string in clipboard (if it’s decodable)", + "filename" : "base64encode.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "a16754f03ea5fa74d3d05116c6f23ed1", + "identifier" : "65ca896b0c3fb60ad6f189616c8c7524", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", + "needsConfirmation" : null, + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Disconnect", - "updatedAt" : "2021-03-25T22:10:33+00:00" + "title" : "Base64 String Encode\/Decode", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Connect the Mullvad VPN tunnel using the specified location.", - "filename" : "location.sh", - "hasArguments" : true, + "description" : "Convert your current clipboard from JSON to CSV", + "filename" : "json2csv.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "bfd215e3646e02a03ad2b15ad2a97557", + "identifier" : "77e0bc4cd51d4d5cd1560c0c2b420214", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Connect to Location", - "updatedAt" : "2021-03-25T22:10:33+00:00" + "title" : "JSON to CSV", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Search the list of available entities to which a Mullvad VPN tunnel connection can be made.", - "filename" : "search.sh", - "hasArguments" : true, + "description" : "Beautify or minify your current clipboard as CSS", + "filename" : "cssformatter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "5773c509e585b2181a22e12e75b4cf0f", + "identifier" : "55e6391c0919e4ce410977d7791d75f3", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search Countries, Cities, and Hostnames", - "updatedAt" : "2021-03-25T22:10:33+00:00" + "title" : "CSS Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Display the current status of the Mullvad VPN tunnel connection.", - "filename" : "status.sh", + "description" : "Convert your current clipboard from JSON to YAML", + "filename" : "json2yaml.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "cd0323ea623775b56c6aaf7f2123bb14", + "identifier" : "7fda6adb9ccc8f154619301140faa03c", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", - "refreshTime" : "5m", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Mullvad Status", - "updatedAt" : "2021-03-25T22:10:33+00:00" + "title" : "JSON to YAML", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Force the client to reconnect to the Mullvad VPN tunnel.", - "filename" : "reconnect.sh", + "description" : "Calculate the hash of your current clipboard string", + "filename" : "hashing.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "3712d89f71b9d5508b039c4a8b0a1a8c", + "identifier" : "660dc6a522fbb4c1d25fdd5c4bc43503", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Reconnect", - "updatedAt" : "2021-03-25T22:10:33+00:00" + "title" : "Hash Generator", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Phil Salant", - "url" : "https:\/\/github.com\/PSalant726" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-03-25T18:08:20-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Connect the Mullvad VPN tunnel using the most recent configuration settings.", - "filename" : "connect.sh", + "description" : "Parse the cron job expression in clipboard (if it’s a valid cron expression)", + "filename" : "cronparser.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/mullvad.png" + "light" : "images\/devutils.png" }, - "identifier" : "a7c6ddf80482ff3f287840cdf2f6a8f9", + "identifier" : "e92d8c824922446f81d842b8a75abeea", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Mullvad", - "path" : "apps\/mullvad\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Connect", - "updatedAt" : "2021-03-25T22:10:33+00:00" - } - ] - }, - { - "name" : "Openvpn", - "path" : "openvpn", - "scriptCommands" : [ + "title" : "Cron Job Parser", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-16T13:21:15-07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Prepares OpenVPN Connect client to connect or reconnect.", - "filename" : "connect-openvpn.applescript", + "description" : "Decode the current URL string in your clipboard (if any)", + "filename" : "urlencode.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/openvpn.png" + "light" : "images\/devutils.png" }, - "identifier" : "a345726ad1219631c162173e74cc319c", + "identifier" : "4770cbb56d80eed7a9092dcb84442724", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "OpenVPN", - "path" : "apps\/openvpn\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Connect OpenVPN", - "updatedAt" : "2021-08-16T13:21:15-07:00" + "title" : "URL Encode\/Decode", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-16T13:21:15-07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Quits the OpenVPN Connect client.", - "filename" : "quit-openvpn.applescript", + "description" : "Decode the UUID in your clipboard (if any), or generate UUIDs", + "filename" : "uuidtool.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/openvpn.png" + "light" : "images\/devutils.png" }, - "identifier" : "d0b3d1b64e34e581d9224b2efbce2c6e", + "identifier" : "64fd318687c1f6e5e92033e62fe3b8a2", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "OpenVPN", - "path" : "apps\/openvpn\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Quit OpenVPN", - "updatedAt" : "2021-08-16T13:21:15-07:00" + "title" : "UUID\/ULID Generate\/Decode", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-16T13:21:15-07:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Disconnects the OpenVPN Connect client from VPN.", - "filename" : "disconnect-openvpn.applescript", + "description" : "Decode the Base64 string in clipboard to an image (if it’s decodable)", + "filename" : "base64image.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/openvpn.png" + "light" : "images\/devutils.png" }, - "identifier" : "d63f02150ae5a9a98eadc250ec299d40", + "identifier" : "6f08b5175968433d58c9b9565fa8e3b5", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "OpenVPN", - "path" : "apps\/openvpn\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Disconnect OpenVPN", - "updatedAt" : "2021-08-16T13:21:15-07:00" - } - ] - }, - { - "name" : "Todoist", - "path" : "todoist", - "scriptCommands" : [ + "title" : "Base64 Image Encode\/Decode", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Faris Aziz", - "url" : "https:\/\/github.com\/farisaziz12" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-04T12:12:44+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Creates Todoist task", - "filename" : "create-task.template.sh", - "hasArguments" : true, + "description" : "Beautify or minify your current clipboard as LESS", + "filename" : "lessformatter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/todoist-logo.png" + "light" : "images\/devutils.png" }, - "identifier" : "306fdf2b185a4c91bdc04007b23bd008", - "isTemplate" : true, + "identifier" : "3a70a1e6d6df5384d2ca515a3c31ffb2", + "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : false, - "packageName" : "Todoist", - "path" : "apps\/todoist\/", + "needsConfirmation" : null, + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Task", - "updatedAt" : "2021-05-21T17:39:11-04:00" + "title" : "LESS Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Faris Aziz", - "url" : "https:\/\/github.com\/farisaziz12" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-04T12:12:44+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Gets All Todoist tasks", - "filename" : "get-tasks.template.sh", + "description" : "Convert your current clipboard from YAML to JSON", + "filename" : "yaml2json.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/todoist-logo.png" + "light" : "images\/devutils.png" }, - "identifier" : "ef1425a55c8acd3fad650cc85a6ae88a", - "isTemplate" : true, + "identifier" : "302fe47b8006d28fe4e9693471193e00", + "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", - "needsConfirmation" : false, - "packageName" : "Todoist", - "path" : "apps\/todoist\/", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Get Tasks", - "updatedAt" : "2021-05-04T10:14:48+00:00" - } - ] - }, - { - "name" : "Translate Shell", - "path" : "translate-shell", - "scriptCommands" : [ + "title" : "YAML to JSON", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "tiancheng92", - "url" : "https:\/\/github.com\/tiancheng92" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-03T20:56:05+08:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Translate and copy brief translation to clipboard.", - "filename" : "translate-to-en.sh", - "hasArguments" : true, + "description" : "Format the JSON string currently in your clipboard (if it’s a valid JSON)", + "filename" : "jsonformatter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "📖" + "light" : "images\/devutils.png" }, - "identifier" : "ad28b67b7a6ad68e8fe478ae135e8795", + "identifier" : "2ff9ca437fae33af3b7e744a05842fe2", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Translate Shell", - "path" : "apps\/translate-shell\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Translate to EN", - "updatedAt" : "2021-05-07T07:58:55+02:00" + "title" : "JSON Format\/Validate", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "tiancheng92", - "url" : "https:\/\/github.com\/tiancheng92" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-03T20:56:05+08:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Translate and copy brief translation to clipboard.", - "filename" : "translate-to-zh.sh", - "hasArguments" : true, + "description" : "Show a HTML preview of your current clipboard string", + "filename" : "htmlpreview.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "📖" + "light" : "images\/devutils.png" }, - "identifier" : "cb355a2a427be58d5695011f2d8cd64a", + "identifier" : "ea972077aa252a09b9755043ddb3ee56", "isTemplate" : false, "language" : "bash", - "mode" : "fullOutput", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Translate Shell", - "path" : "apps\/translate-shell\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Translate to ZH", - "updatedAt" : "2021-05-07T07:58:55+02:00" + "title" : "HTML Preview", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Marcel Bochtler", - "url" : "https:\/\/github.com\/MarcelBochtler" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-05-07T07:58:55+02:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Translate text using translate-shell.", - "filename" : "translate-shell-language-pair.py", - "hasArguments" : true, + "description" : "Convert a string in clipboard into various naming conventions", + "filename" : "stringcaseconverter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🌍" + "light" : "images\/devutils.png" }, - "identifier" : "e9776d8d1e5db81fb7f49a4df06af0f0", + "identifier" : "da658bbfc3056122cfa25655191ba46e", "isTemplate" : false, - "language" : "python", - "mode" : "fullOutput", + "language" : "bash", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Translate Shell Language Pair", - "path" : "apps\/translate-shell\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Translate Shell", - "updatedAt" : "2021-07-15T22:22:31+02:00" - } - ] - }, - { - "name" : "Notes", - "path" : "notes", - "scriptCommands" : [ + "title" : "String Case Converter", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Vardan Sawhney", - "url" : "https:\/\/github.com\/commai" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-03T09:54:13-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Open Note via its Title", - "filename" : "open-note.applescript", - "hasArguments" : true, + "description" : "Test your regular expression with a string and inspect matches, groups, etc.", + "filename" : "regextester.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/notes.png" + "light" : "images\/devutils.png" }, - "identifier" : "9295d4230a85f19a25e491154c2cc2ae", + "identifier" : "6fdaca184e9aaf35ed9935ca7765c887", "isTemplate" : false, - "language" : "applescript", - "mode" : "compact", + "language" : "bash", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Notes", - "path" : "apps\/notes\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Note", - "updatedAt" : "2021-08-03T09:54:13-04:00" + "title" : "RegExp Tester", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Ayoub Gharbi", - "url" : "github.com\/ayoub-g" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-19T11:57:46+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "This script searches for a note, given its exact name, or a substring, the search does not consider case", - "filename" : "search-note-by-name.applescript", - "hasArguments" : true, + "description" : "Preview the markdown string currently in your clipboard", + "filename" : "markdownpreview.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/notes.png" + "light" : "images\/devutils.png" }, - "identifier" : "2742cc92859fb01b45bbed9bd2ba3dc8", + "identifier" : "4e9b6a8f59213b7740cf8ea0681d7489", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Notes", - "path" : "apps\/notes\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search Note By Name", - "updatedAt" : "2021-08-19T11:57:46+01:00" + "title" : "Markdown Preview", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Ayoub Gharbi", - "url" : "https:\/\/github.com\/ayoub-g" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:46:40+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Script to append to an existing note content from clipboard.", - "filename" : "append-note-from-clipboard.applescript", - "hasArguments" : true, + "description" : "Beautify or minify your current clipboard as SCSS", + "filename" : "scssformatter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/notes.png" + "light" : "images\/devutils.png" }, - "identifier" : "8e61646606984a27fa52fabeda748f01", + "identifier" : "9e6ab71f9cf6a8621606b3934345e1ef", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Notes", - "path" : "apps\/notes\/", + "needsConfirmation" : null, + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Append Content From Clipboard", - "updatedAt" : "2021-08-20T22:46:40+01:00" + "title" : "SCSS Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Ayoub Gharbi", - "url" : "https:\/\/github.com\/ayoub-g" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-07-21T23:46:22-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Create Note From Clipboard", - "filename" : "create-note-from-clipboard.applescript", - "hasArguments" : true, + "description" : "Compare two texts and find diff (per characters, words, lines, etc.)", + "filename" : "textdiff.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/notes.png" + "light" : "images\/devutils.png" }, - "identifier" : "4186e11daddefc7d27d89b3943eb4b44", + "identifier" : "59f6ce6bc50e81065dbe667b82c1771f", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Notes", - "path" : "apps\/notes\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Note From Clipboard", - "updatedAt" : "2021-08-18T17:31:58+01:00" + "title" : "Text Diff Checker", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Vardan Sawhney", - "url" : "https:\/\/github.com\/commai" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-07-21T23:46:22-04:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Create a new Note ", - "filename" : "create-note.applescript", - "hasArguments" : true, + "description" : "Beautify or minify your current clipboard as HTML", + "filename" : "htmlformatter.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/notes.png" + "light" : "images\/devutils.png" }, - "identifier" : "e9cecac4bfa067f607c15ef602dae3d9", + "identifier" : "6c594f59f7c3fa76ddbb219689014e61", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Notes", - "path" : "apps\/notes\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Note", - "updatedAt" : "2021-07-23T21:06:02-04:00" - } - ] - }, - { - "name" : "Y Pomodoro", - "path" : "y-pomodoro", - "scriptCommands" : [ + "title" : "HTML Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" + }, { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:47:15+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Pause active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", - "filename" : "pause.sh", + "description" : "Convert numbers between bases (oct, hex, binary, etc.)", + "filename" : "numberbase.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "images\/devutils.png" }, - "identifier" : "d2836820287e44cb9f83f4dd84f8fdd1", + "identifier" : "b49f9f56ffad1e4e2127df82116d0f3d", "isTemplate" : false, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "y-pomodoro", - "path" : "apps\/y-pomodoro\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Pause", - "updatedAt" : "2021-08-20T22:47:15+01:00" + "title" : "Number Base Converter", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:47:15+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Show active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", - "filename" : "show.sh", + "description" : "Parse the URL string currently in your clipboard", + "filename" : "querystringparser.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "images\/devutils.png" }, - "identifier" : "8c775fb12a394e545e09c5dc3f4f5385", + "identifier" : "995abb11b07f6e5776a94c91448cc54b", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "y-pomodoro", - "path" : "apps\/y-pomodoro\/", - "refreshTime" : "15s", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Show", - "updatedAt" : "2021-08-20T22:47:15+01:00" + "title" : "URL Parser", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:47:15+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Resume active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", - "filename" : "resume.sh", + "description" : "Generate a QR code from your current clipboard string", + "filename" : "qrcode.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "images\/devutils.png" }, - "identifier" : "3f8075486c097397d65b6911816fba51", + "identifier" : "9e5235df4808af09a9c965f83873718d", "isTemplate" : false, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "y-pomodoro", - "path" : "apps\/y-pomodoro\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Resume", - "updatedAt" : "2021-08-20T22:47:15+01:00" + "title" : "QR Code Reader\/Generator", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:47:15+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Stop active pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", - "filename" : "stop.sh", + "description" : "Beautify or minify your current clipboard as JavaScript", + "filename" : "jsformatter.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "images\/devutils.png" }, - "identifier" : "e265864f8039fb0d44199d08a552c4f5", + "identifier" : "9d6c09efd9fa58b456df731a9758eb3e", "isTemplate" : false, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "y-pomodoro", - "path" : "apps\/y-pomodoro\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop", - "updatedAt" : "2021-08-20T22:47:15+01:00" + "title" : "JS Beautify\/Minify", + "updatedAt" : "2022-01-23T16:30:27+07:00" }, { "authors" : [ { - "name" : "Jesse Claven", - "url" : "https:\/\/github.com\/jesse-c" + "name" : "DevUtils.app", + "url" : "https:\/\/devutils.app" } ], - "createdAt" : "2021-08-20T22:47:15+01:00", + "createdAt" : "2022-01-23T16:30:27+07:00", "currentDirectoryPath" : null, - "description" : "Start a pomodoro timer using [y-pomodoro](https:\/\/github.com\/jesse-c\/y-pomodoro)", - "filename" : "start.sh", + "description" : "Parse and display UNIX the timestamp string currently in your clipboard", + "filename" : "unixtime.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "images\/devutils.png" }, - "identifier" : "205772935becd5940672978344fe329f", + "identifier" : "b54dbb6855fc539be668f972f6ad4de0", "isTemplate" : false, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "y-pomodoro", - "path" : "apps\/y-pomodoro\/", + "packageName" : "DevUtils.app", + "path" : "apps\/devutils\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start", - "updatedAt" : "2021-08-20T22:47:15+01:00" + "title" : "Unix Time Converter", + "updatedAt" : "2022-01-23T16:30:27+07:00" } ] }, { - "name" : "Phpstorm", - "path" : "phpstorm", + "name" : "Espanso", + "path" : "espanso", "scriptCommands" : [ { - "authors" : null, - "createdAt" : "2021-08-06T16:17:35+04:00", + "authors" : [ + { + "name" : "es183923", + "url" : "https:\/\/github.com\/es183923" + } + ], + "createdAt" : "2021-05-11T20:44:52-04:00", "currentDirectoryPath" : null, "description" : null, - "filename" : "recent-projects.sh", + "filename" : "enable-espanso.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "icon.icns" + "light" : "images\/espanso.png" }, - "identifier" : "636e401e276ed8883dff6e76bf1983b4", + "identifier" : "e2ba4a2b364b245d6ce4402f7f2dc936", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "PhpStorm", - "path" : "apps\/phpstorm\/", - "refreshTime" : "5m", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Update Recent Projects", - "updatedAt" : "2021-08-06T16:17:35+04:00" - } - ] - }, - { - "name" : "Fantastical", - "path" : "fantastical", - "scriptCommands" : [ + "title" : "Enable Espanso", + "updatedAt" : "2021-05-14T16:44:53Z" + }, { "authors" : [ { - "name" : "Robert Cooper", - "url" : "https:\/\/github.com\/robertcoopercode" + "name" : "Max Stoiber", + "url" : "https:\/\/github.com\/mxstbr" } ], - "createdAt" : "2021-03-23T16:29:01-04:00", + "createdAt" : "2021-04-30T10:29:47+02:00", "currentDirectoryPath" : null, - "description" : "Create an event in Fantastical", - "filename" : "create-event.applescript", + "description" : "Add a text expansion to expanso", + "filename" : "espanso-create-expansion.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/fantastical.png" + "light" : "images\/espanso.png" }, - "identifier" : "7634569101c20232ebf8ecfce9624c61", + "identifier" : "8913cd83010b84c681d85d018013a800", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Fantastical", - "path" : "apps\/fantastical\/", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Event", - "updatedAt" : "2021-05-28T10:41:12+01:00" + "title" : "Create Text Expansion", + "updatedAt" : "2021-05-11T20:46:55-04:00" }, { "authors" : [ { - "name" : "Vardan Sawhney", - "url" : "https:\/\/github.com\/commai" + "name" : "es183923", + "url" : "https:\/\/github.com\/es183923" } ], - "createdAt" : "2021-06-03T00:04:35-04:00", + "createdAt" : "2021-05-11T20:44:52-04:00", "currentDirectoryPath" : null, - "description" : "Speed up setting reminders for Fantastical by invoking this script.", - "filename" : "create-todo-in-fantastical.applescript", - "hasArguments" : true, + "description" : null, + "filename" : "start-espanso.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/fantastical.png" + "light" : "images\/espanso.png" }, - "identifier" : "ed64cfea0aefdda6f31454176ecc101f", + "identifier" : "2465c28979527987108461aaa939717a", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Fantastical", - "path" : "apps\/fantastical\/", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Task", - "updatedAt" : "2021-06-03T00:04:35-04:00" - } - ] - }, - { - "name" : "Safari", - "path" : "safari", - "scriptCommands" : [ + "title" : "Start Espanso", + "updatedAt" : "2021-05-14T16:44:53Z" + }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "es183923", + "url" : "https:\/\/github.com\/es183923" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-05-11T20:44:52-04:00", "currentDirectoryPath" : null, - "description" : "Close all tabs besides the currently active tab.", - "filename" : "safari-close-other-tabs.applescript", + "description" : null, + "filename" : "disable-espanso.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/espanso.png" }, - "identifier" : "4c466c382386183b6393383afe1a0b26", + "identifier" : "9a5666c27b2dd8eeb9b7f6e664019e13", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close Other Tabs", - "updatedAt" : "2021-03-09T15:09:02+00:00" + "title" : "Disable Espanso", + "updatedAt" : "2021-05-14T16:44:53Z" }, { "authors" : [ { - "name" : "Dave Lehman", - "url" : "https:\/\/github.com\/dlehman" + "name" : "es183923", + "url" : "https:\/\/github.com\/es183923" } ], - "createdAt" : "2021-08-19T12:49:15-05:00", + "createdAt" : "2021-05-11T20:44:52-04:00", "currentDirectoryPath" : null, - "description" : "Open current Safari URL in new tab in Firefox", - "filename" : "safari-current-page-url-in-firefox.applescript", + "description" : null, + "filename" : "restart-espanso.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/espanso.png" }, - "identifier" : "953364ac2c0ce7e6bbb02efeed35bfd6", + "identifier" : "483881356febc3e29f60c16e6675ffeb", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Safari URL in Firefox", - "updatedAt" : "2021-08-20T09:04:17-05:00" + "title" : "Restart Espanso", + "updatedAt" : "2021-05-14T16:44:53Z" }, { "authors" : [ { - "name" : "Aaron Miller", - "url" : "https:\/\/github.com\/aaronhmiller" + "name" : "es183923", + "url" : "https:\/\/github.com\/es183923" } ], - "createdAt" : "2021-08-06T10:24:49-07:00", + "createdAt" : "2021-05-11T20:44:52-04:00", "currentDirectoryPath" : null, - "description" : "This script clears cache and reloads the page of the frontmost Safari window.", - "filename" : "safari-clear-cache-reload.applescript", + "description" : null, + "filename" : "stop-espanso.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/espanso.png" }, - "identifier" : "ce0ee1596099e7699e99d6267b097f3d", + "identifier" : "50101f86c29a34ecdfc3fa2ea5d5109e", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Espanso", + "path" : "apps\/espanso\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Clear Cache and Refresh Page", - "updatedAt" : "2021-08-06T10:24:49-07:00" - }, + "title" : "Stop Espanso", + "updatedAt" : "2021-05-14T16:44:53Z" + } + ] + }, + { + "name" : "SideNotes", + "path" : "sidenotes", + "scriptCommands" : [ { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "Marcel Bochtler", + "url" : "https:\/\/github.com\/MarcelBochtler" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-03-07T06:29:59-08:00", "currentDirectoryPath" : null, - "description" : "Add a new Reading List item with the given URL. Allows a custom title to be specified.", - "filename" : "safari-create-reading-list-item.applescript", + "description" : "Create a new note within the selected or the first SideNotes folder.", + "filename" : "sidenotes-create-note.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/sidenotes.png" }, - "identifier" : "b63421c14664c46305244e65fe16553f", + "identifier" : "053dffcafea188ea1d0f4789fefb085b", "isTemplate" : false, "language" : "applescript", - "mode" : "fullOutput", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "SideNotes", + "path" : "apps\/sidenotes\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Add Item to Reading List", - "updatedAt" : "2021-03-09T15:09:02+00:00" - }, + "title" : "SideNotes create", + "updatedAt" : "2021-03-07T06:29:59-08:00" + } + ] + }, + { + "name" : "Sublime", + "path" : "sublime", + "scriptCommands" : [ { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "Rock Hu", + "url" : "https:\/\/twitter.com\/0xRock" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2022-05-27T10:22:01-07:00", "currentDirectoryPath" : null, - "description" : "Close tabs with the same URL.", - "filename" : "safari-close-duplicated-tabs.applescript", + "description" : "Open currently focused directory in Sublime", + "filename" : "open-with-sublime.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "https:\/\/cdn.worldvectorlogo.com\/logos\/sublime-text.svg" }, - "identifier" : "800d9f6cf20b6b1c2f5ffe4e76b84b4b", + "identifier" : "dbc6916febf1c2218e0cef9c4e3d5e96", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Sublime", + "path" : "apps\/sublime\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close Duplicated Tabs", - "updatedAt" : "2021-03-09T15:11:52+00:00" - }, + "title" : "Open with Sublime", + "updatedAt" : "2022-05-27T18:41:22+01:00" + } + ] + }, + { + "name" : "Session", + "path" : "session", + "scriptCommands" : [ { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-03-29T10:46:13-07:00", "currentDirectoryPath" : null, - "description" : "Close all tabs to the right side of the currently active tab.", - "filename" : "safari-close-tabs-right.applescript", + "description" : "Starts a focus session in Session app with the previous intent and duration", + "filename" : "session-start-previous.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/session.png" }, - "identifier" : "723f7798053edadfeb982265f283b4c2", + "identifier" : "6f4911496269d10725259483c0b9125b", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Session", + "path" : "apps\/session\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close Tabs to the Right", - "updatedAt" : "2021-03-09T15:09:02+00:00" + "title" : "Start Previous Session", + "updatedAt" : "2021-03-29T10:46:13-07:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-03-29T10:46:13-07:00", "currentDirectoryPath" : null, - "description" : "Close all tabs to the left side of the currently active tab.", - "filename" : "safari-close-tabs-left.applescript", + "description" : "Finishes a focus session in Session app", + "filename" : "session-finish.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/session.png" }, - "identifier" : "6d6cf490c73838f02f2054fcfb4d3786", + "identifier" : "1a0f03f376b59043abf161176414d158", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Session", + "path" : "apps\/session\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close Tabs to the Left", - "updatedAt" : "2021-03-09T15:09:02+00:00" + "title" : "Finish Session", + "updatedAt" : "2021-03-29T10:46:13-07:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-03-29T10:46:13-07:00", "currentDirectoryPath" : null, - "description" : "Duplicates and opens the currently active tab.", - "filename" : "safari-duplicate-tab.applescript", + "description" : "Starts a focus session in Session app", + "filename" : "session-pause.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/session.png" }, - "identifier" : "e0be5f0e55412e5eaab09144dfb2aa6e", + "identifier" : "2edff21d2006d1ae7559d4cf6173b845", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Session", + "path" : "apps\/session\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Duplicate Tab", - "updatedAt" : "2021-03-09T15:09:02+00:00" + "title" : "Pause Session", + "updatedAt" : "2021-03-29T10:46:13-07:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" } ], - "createdAt" : "2021-03-09T15:09:02+00:00", + "createdAt" : "2021-03-29T10:46:13-07:00", "currentDirectoryPath" : null, - "description" : "Close all tabs in the frontmost window", - "filename" : "safari-close-all-tabs.applescript", - "hasArguments" : false, + "description" : "Starts a focus session in Session app", + "filename" : "session-start-new.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/session.png" }, - "identifier" : "abb41453f8b816095fb4bada2a14927a", + "identifier" : "92ffe9f3858ffdbae4bcfa0a185feb7a", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Session", + "path" : "apps\/session\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Close All Tabs", - "updatedAt" : "2021-03-09T15:09:02+00:00" + "title" : "Start Session", + "updatedAt" : "2021-03-29T10:46:13-07:00" }, { "authors" : [ { - "name" : "Dave Lehman", - "url" : "https:\/\/github.com\/dlehman" + "name" : "James Lyons", + "url" : "https:\/\/github.com\/jamesjlyons" } ], - "createdAt" : "2021-08-19T12:49:15-05:00", + "createdAt" : "2021-03-29T10:46:13-07:00", "currentDirectoryPath" : null, - "description" : "Open current Safari URL in new tab in Chrome", - "filename" : "safari-current-page-url-in-chrome.applescript", + "description" : "Starts a focus session in Session app", + "filename" : "session-abandon.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/safari.png" + "light" : "images\/session.png" }, - "identifier" : "82f9f4b17a97bf774484f7946245c318", + "identifier" : "8faf6b45a243e039e253dddab88afad9", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Safari", - "path" : "apps\/safari\/", + "packageName" : "Session", + "path" : "apps\/session\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Safari URL in Chrome", - "updatedAt" : "2021-08-20T09:04:07-05:00" + "title" : "Abandon Session", + "updatedAt" : "2021-03-29T10:46:13-07:00" } ] - }, + } + ] + }, + { + "name" : "Culture", + "path" : "culture", + "scriptCommands" : [ { - "name" : "Surfshark", - "path" : "surfshark", + "authors" : [ + { + "name" : "Emircan Erkul", + "url" : "https:\/\/emircanerkul.com" + } + ], + "createdAt" : "2022-11-17T12:22:40+03:00", + "currentDirectoryPath" : null, + "description" : "Prayer Times grabbed from the aladhan.com.", + "filename" : "prayer-times.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "🕌" + }, + "identifier" : "ebda5e51cd4760fb9dbce650e41a9142", + "isTemplate" : false, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Culture", + "path" : "culture\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Prayer Times", + "updatedAt" : "2024-07-20T15:38:18+03:00" + } + ] + }, + { + "name" : "Productivity", + "path" : "productivity", + "scriptCommands" : [ + + ], + "subGroups" : [ + { + "name" : "Imgur", + "path" : "imgur", "scriptCommands" : [ { "authors" : [ { - "name" : "Jordi Clement", - "url" : "https:\/\/github.com\/jordicl" + "name" : "Fahim Faisal", + "url" : "https:\/\/github.com\/i3p9" } ], - "createdAt" : "2021-03-04T23:14:49+01:00", + "createdAt" : "2021-08-19T04:36:52+06:00", "currentDirectoryPath" : null, - "description" : "Start Surfshark VPN connection", - "filename" : "surfshark-vpn-start.sh", + "description" : "Upload your last screenshot to Imgur and copy the image link to clipboard", + "filename" : "imgur-upload-latest-screenshot.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/surfshark.png" + "light" : "☁️" }, - "identifier" : "b3f462e20e0dfbe32bbe6647d34b39f3", - "isTemplate" : false, + "identifier" : "fb44bae955f942707a724e0c14063627", + "isTemplate" : true, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Surfshark", - "path" : "apps\/surfshark\/", + "packageName" : "Upload to Imgur", + "path" : "productivity\/imgur\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "VPN Connect", - "updatedAt" : "2021-03-08T18:01:25+01:00" + "title" : "Upload Latest Screenshot to Imgur", + "updatedAt" : "2022-11-13T01:47:18+08:00" }, { "authors" : [ { - "name" : "Jordi Clement", - "url" : "https:\/\/github.com\/jordicl" + "name" : "Fahim Faisal", + "url" : "https:\/\/github.com\/i3p9" } ], - "createdAt" : "2021-03-04T23:14:49+01:00", + "createdAt" : "2021-08-26T01:16:19+06:00", "currentDirectoryPath" : null, - "description" : "Stop Surfshark VPN connection", - "filename" : "surfshark-vpn-stop.sh", + "description" : "Upload Image from your Clipboard and copy the image link to clipboard", + "filename" : "imgur-upload-clipboard-image.template.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/surfshark.png" + "light" : "📋" }, - "identifier" : "ee1e49d67e3b13e5a97141a3b9c4ecac", - "isTemplate" : false, + "identifier" : "4041c74c3a091d708e0e58c159d5024e", + "isTemplate" : true, "language" : "bash", - "mode" : "compact", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Surfshark", - "path" : "apps\/surfshark\/", + "packageName" : "Uploads Copied Image or Image from Clipboard", + "path" : "productivity\/imgur\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "VPN Disconnect", - "updatedAt" : "2021-03-08T18:01:25+01:00" + "title" : "Clipboard to Imgur", + "updatedAt" : "2023-07-12T15:49:52+08:00" }, { "authors" : [ { - "name" : "Jordi Clement", - "url" : "https:\/\/github.com\/jordicl" + "name" : "Fahim Faisal", + "url" : "https:\/\/github.com\/i3p9" } ], - "createdAt" : "2021-03-04T23:14:49+01:00", + "createdAt" : "2021-08-19T04:36:52+06:00", "currentDirectoryPath" : null, - "description" : "Get Surfshark VPN status", - "filename" : "surfshark-vpn-status.sh", + "description" : "Opens default screenshot interface and immediately uploads and copies link to clipboard", + "filename" : "screenshot-and-imgur.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/surfshark.png" + "light" : "📷" }, - "identifier" : "bdb5be9e3fc0587bacc025ba8b39a4cc", + "identifier" : "06f3fa5d901f894dba435781da31037d", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Surfshark", - "path" : "apps\/surfshark\/", - "refreshTime" : "10s", + "packageName" : "Opens Screenshot Interface and Uploads", + "path" : "productivity\/imgur\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Surfshark VPN Status", - "updatedAt" : "2021-03-08T18:01:25+01:00" + "title" : "Screenshot and Imgur", + "updatedAt" : "2022-11-13T01:47:18+08:00" } ] }, { - "name" : "Dnd Me", - "path" : "dnd-me", + "name" : "tesseract", + "path" : "tesseract", "scriptCommands" : [ { "authors" : [ { - "name" : "Roland Leth", - "url" : "https:\/\/runtimesharks.com\/projects\/dnd-me" + "name" : "Diego Lopes", + "url" : "https:\/\/github.com\/Dihgg" } ], - "createdAt" : "2021-04-21T11:07:25+03:00", + "createdAt" : "2021-09-28T10:37:53-03:00", "currentDirectoryPath" : null, - "description" : "Stops DND via DND Me.", - "filename" : "stop-dnd-me.sh", - "hasArguments" : false, + "description" : "Tesseract OCR", + "filename" : "tesseract-ocr.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🔔" + "light" : "🔍" }, - "identifier" : "b382cc160f69b4551ceddaab6d613f1a", + "identifier" : "25b6650479ec5f66c13955ef072ebf65", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "DND Me", - "path" : "apps\/dnd-me\/", + "packageName" : "tesseract", + "path" : "productivity\/tesseract\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop DND", - "updatedAt" : "2021-05-28T10:40:03+01:00" - }, + "title" : "OCR Screenshot", + "updatedAt" : "2021-11-05T00:12:23+03:00" + } + ] + }, + { + "name" : "Bitwarden", + "path" : "bitwarden", + "readme" : "productivity\/bitwarden\/README.md", + "scriptCommands" : [ { "authors" : [ { - "name" : "Roland Leth", - "url" : "https:\/\/runtimesharks.com\/projects\/dnd-me" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-04-21T11:07:25+03:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Starts DND via DND Me. The parameter has to be a menu item or slider equivalent: 15m, 30m, 1h, 2h, ..., 12h, next, next-hour, next-half-hour; it defaults to next. next-hour means the next 60m mark, next-half-hour means the next 30m mark and next means the first of the two. For example, if it's 9:22, next-hour means 10:00, next-half-hour means 9:30 and next means 9:30.", - "filename" : "start-dnd-me.sh", + "description" : "Search all items in a Bitwarden vault, and copy the password of the first search result to the clipboard.", + "filename" : "copy-first-matching-password.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🔕" + "light" : "images\/bitwarden.png" }, - "identifier" : "98631b11572aad898f0ff5303c51aeaf", + "identifier" : "72075d66d7c96563327670d572148a5c", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "DND Me", - "path" : "apps\/dnd-me\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start DND", - "updatedAt" : "2021-05-28T10:40:03+01:00" - } - ] - }, - { - "name" : "Tailscale", - "path" : "tailscale", - "scriptCommands" : [ + "title" : "Copy First Matching Password", + "updatedAt" : "2022-11-17T10:35:57+01:00" + }, { "authors" : [ { - "name" : "Ross Zurowski", - "url" : "https:\/\/github.com\/rosszurowski" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-14T15:33:18-04:00", + "createdAt" : "2021-03-29T13:44:44-04:00", "currentDirectoryPath" : null, - "description" : "Disconnects from Tailscale", - "filename" : "tailscale-disconnect.sh", - "hasArguments" : false, + "description" : "Delete a Bitwarden Send.", + "filename" : "delete-send.sh", + "hasArguments" : true, "icon" : { - "dark" : ".\/images\/tailscale-iconDark.png", - "light" : ".\/images\/tailscale-icon.png" + "dark" : null, + "light" : "images\/bitwarden.png" }, - "identifier" : "e8490d25ff8264ba488daca5cf1bd686", + "identifier" : "c379a38ce1c09e8d957bd3be837d9ebd", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Tailscale", - "path" : "apps\/tailscale\/", + "needsConfirmation" : true, + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Disconnect", - "updatedAt" : "2021-06-14T15:33:18-04:00" + "title" : "Delete a Send", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Ross Zurowski", - "url" : "https:\/\/github.com\/rosszurowski" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-14T15:33:18-04:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Gets your private Tailscale IP", - "filename" : "tailscale-ip.sh", + "description" : "Lock a Bitwarden session.", + "filename" : "lock.sh", "hasArguments" : false, "icon" : { - "dark" : ".\/images\/tailscale-iconDark.png", - "light" : ".\/images\/tailscale-icon.png" + "dark" : null, + "light" : "images\/bitwarden.png" }, - "identifier" : "95bc0bc6cbf4aa67028652f54fc1009c", + "identifier" : "2a9be47e57277d4fa9cb8a226abd9b4e", "isTemplate" : false, "language" : "bash", - "mode" : "inline", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Tailscale", - "path" : "apps\/tailscale\/", - "refreshTime" : "1d", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Get IP", - "updatedAt" : "2021-06-14T15:33:18-04:00" + "title" : "Lock Session", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Ross Zurowski", - "url" : "https:\/\/github.com\/rosszurowski" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-14T15:33:18-04:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Connects to Tailscale", - "filename" : "tailscale-connect.sh", - "hasArguments" : false, + "description" : "View the content of a text-only Bitwarden Send.", + "filename" : "receive-text-send.sh", + "hasArguments" : true, "icon" : { - "dark" : ".\/images\/tailscale-iconDark.png", - "light" : ".\/images\/tailscale-icon.png" + "dark" : null, + "light" : "images\/bitwarden.png" }, - "identifier" : "3264e1d35d86b9573e5d3962b64992f6", + "identifier" : "f850482284a0f897ac026bb0ed8514d2", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Tailscale", - "path" : "apps\/tailscale\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Connect", - "updatedAt" : "2021-06-14T15:33:18-04:00" + "title" : "Receive a Text Send", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Ross Zurowski", - "url" : "https:\/\/github.com\/rosszurowski" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-14T15:33:18-04:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Switches Tailscale networks", - "filename" : "tailscale-switch.sh", - "hasArguments" : false, + "description" : "Create a new text-only Bitwarden Send.", + "filename" : "create-text-send.sh", + "hasArguments" : true, "icon" : { - "dark" : ".\/images\/tailscale-iconDark.png", - "light" : ".\/images\/tailscale-icon.png" + "dark" : null, + "light" : "images\/bitwarden.png" }, - "identifier" : "d80b655296e9ce8762ff310a4dc45d7a", + "identifier" : "ef085c701b79f8559894d964b6244742", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Tailscale", - "path" : "apps\/tailscale\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Switch Account", - "updatedAt" : "2021-06-14T15:33:18-04:00" - } - ] - }, - { - "name" : "Deepl", - "path" : "deepl", - "scriptCommands" : [ + "title" : "Create a Text Send", + "updatedAt" : "2022-11-17T10:35:57+01:00" + }, { "authors" : [ { - "name" : "Jono Hewitt", - "url" : "https:\/\/github.com\/jonohewitt" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-03-16T15:22:56+01:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Translate text on the DeepL website. Translates to a default language if no \"to\" argument is given.", - "filename" : "deepl-web-translate.sh", + "description" : "Search all items in a Bitwarden vault.", + "filename" : "search-vault-items.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/deepl.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "0c7a95c20bc816c7db4e9b84ed604c0e", + "identifier" : "1e0fc8f792351eeff8d1f403cef716f5", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Web Searches", - "path" : "apps\/deepl\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "DeepL Web Translate", - "updatedAt" : "2021-04-07T20:04:04+08:00" + "title" : "Search Vault Items", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Jono Hewitt", - "url" : "https:\/\/github.com\/jonohewitt" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-03-12T22:44:13+01:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Translate text in DeepL for Mac. Features options to input from the clipboard as well as automatically copy translation results.", - "filename" : "deepl-app-translate.applescript", - "hasArguments" : true, + "description" : "Display the authentication and lock status of the user's Bitwarden session.", + "filename" : "status.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/deepl.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "13e79a758f8e2822baea735ea52075c5", + "identifier" : "d86ee71986d686b7dfdeac1101e869ef", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", + "language" : "bash", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Apps", - "path" : "apps\/deepl\/", - "refreshTime" : null, + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", + "refreshTime" : "5m", "schemaVersion" : 1, - "title" : "DeepL App Translate", - "updatedAt" : "2021-04-18T01:23:05+02:00" - } - ] - }, - { - "name" : "Agenda", - "path" : "agenda", - "scriptCommands" : [ + "title" : "Bitwarden Status", + "updatedAt" : "2022-11-17T10:35:57+01:00" + }, { "authors" : [ { - "name" : "Michael Ellis", - "url" : "https:\/\/github.com\/mtellis2" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-26T15:52:43-04:00", + "createdAt" : "2021-03-29T13:44:44-04:00", "currentDirectoryPath" : null, - "description" : "Opens Agenda - Today Overview", - "filename" : "agenda-today.sh", - "hasArguments" : false, + "description" : "Edit an existing Bitwarden Send.", + "filename" : "edit-send.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/agenda.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "7f50aaf0597b597069fb354a58a4573b", + "identifier" : "11b9241c955e4217f11a3e797189a3ab", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Agenda", - "path" : "apps\/agenda\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Agenda Today Overview", - "updatedAt" : "2021-06-26T15:52:43-04:00" + "title" : "Edit a Send", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Michael Ellis", - "url" : "https:\/\/github.com\/mtellis2" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-26T15:52:43-04:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Opens Agenda - On the Agenda Overview", - "filename" : "agenda-on-the-agenda.sh", - "hasArguments" : false, + "description" : "List all Bitwarden text Sends created in the currently unlocked account.", + "filename" : "list-sends.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/agenda.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "8e019b6506bee0ffad51b2a625ed0d0b", + "identifier" : "10d61b623f51ab4e5a12cb1df29a16c0", "isTemplate" : false, "language" : "bash", - "mode" : "silent", + "mode" : "fullOutput", "needsConfirmation" : null, - "packageName" : "Agenda", - "path" : "apps\/agenda\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "On the Agenda Overview", - "updatedAt" : "2021-06-26T15:52:43-04:00" + "title" : "List All Text Sends", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Michael Ellis", - "url" : "https:\/\/github.com\/mtellis2" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-06-26T15:52:43-04:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Creates New Note and adds it to On the Agenda", - "filename" : "agenda-new-note.sh", + "description" : "Unlock an authenticated Bitwarden session.", + "filename" : "unlock.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/agenda.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "9b7ee4e0b61fcd48feeb8280ac0adbdf", + "identifier" : "0d6dbf49507170aa4af614cbb4b16613", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Agenda", - "path" : "apps\/agenda\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create New On the Agenda Note", - "updatedAt" : "2021-06-26T15:52:43-04:00" - } - ] - }, - { - "name" : "Sip", - "path" : "sip", - "scriptCommands" : [ + "title" : "Unlock Session", + "updatedAt" : "2022-11-17T10:35:57+01:00" + }, { "authors" : [ { - "name" : "Sip", - "url" : "https:\/\/twitter.com\/sip_app\/" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-03-09T18:54:05-08:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : " Add a color to your Sip history.", - "filename" : "sip-add-hex-color.sh", - "hasArguments" : true, + "description" : "Log out of Bitwarden.", + "filename" : "log-out.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/sip.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "1464e6600c3226f74b04dfa0dd946eac", + "identifier" : "b0e4b9ddb57fdd18854bc8436273b550", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Sip", - "path" : "apps\/sip\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : " Add Color to History", - "updatedAt" : "2021-05-28T10:43:11+01:00" + "title" : "Log Out", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Sip", - "url" : "https:\/\/twitter.com\/sip_app\/" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/int3rrupt" } ], - "createdAt" : "2021-03-09T18:54:05-08:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Open Sip Contrast Checker.", - "filename" : "sip-open-check-contrast.sh", - "hasArguments" : false, + "description" : "Search all items in a Bitwarden vault, and copy the TOTP of the first search result to the clipboard.", + "filename" : "copy-first-matching-totp.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/sip.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "3c16dd65bb4f638b006b4e71787ff835", + "identifier" : "5ddedd2cc4ce0ce27ea9da0db895b05d", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Sip", - "path" : "apps\/sip\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Open Contrast Checker", - "updatedAt" : "2021-05-28T10:43:11+01:00" + "title" : "Copy First Matching TOTP", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Sip", - "url" : "https:\/\/twitter.com\/sip_app\/" + "name" : "Marcel Bochtler", + "url" : "https:\/\/github.com\/MarcelBochtler" } ], - "createdAt" : "2021-03-09T18:54:05-08:00", + "createdAt" : "2021-11-03T21:02:13+01:00", "currentDirectoryPath" : null, - "description" : "Pick a color value from your screen.", - "filename" : "sip-show-picker.sh", - "hasArguments" : false, + "description" : "Log in to Bitwarden using an API key.", + "filename" : "log-in-apikey.template.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/sip.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "e0a9a42ede865f3c4b41b8212b7abf47", - "isTemplate" : false, + "identifier" : "837bd1e9a8fe1ed4fa905be4f9cbc492", + "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Sip", - "path" : "apps\/sip\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Show Color Picker", - "updatedAt" : "2021-05-28T10:43:11+01:00" + "title" : "Log In", + "updatedAt" : "2022-11-17T10:35:57+01:00" }, { "authors" : [ { - "name" : "Sip", - "url" : "https:\/\/twitter.com\/sip_app\/" + "name" : "Phil Salant", + "url" : "https:\/\/github.com\/PSalant726" } ], - "createdAt" : "2021-03-09T18:54:05-08:00", + "createdAt" : "2021-02-03T02:57:58-05:00", "currentDirectoryPath" : null, - "description" : "Open Sip Contrast Checker.", - "filename" : "sip-check-contrast-hex.sh", + "description" : "Log in to Bitwarden.", + "filename" : "log-in.template.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/sip.png" + "light" : "images\/bitwarden.png" }, - "identifier" : "23c64d597f80a9cc2b19cc5e5ed8c27d", - "isTemplate" : false, + "identifier" : "8bbdf715852f934a47421e7f13d67602", + "isTemplate" : true, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Sip", - "path" : "apps\/sip\/", + "packageName" : "Bitwarden", + "path" : "productivity\/bitwarden\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Check Contrast", - "updatedAt" : "2021-05-28T10:43:11+01:00" + "title" : "Log In", + "updatedAt" : "2022-11-17T10:35:57+01:00" } ] }, { - "name" : "Obsidian", - "path" : "obsidian", + "name" : "stopwatch", + "path" : "stopwatch", "scriptCommands" : [ { "authors" : [ { - "name" : "Yiyao Wei", - "url" : "https:\/\/github.com\/HotThoughts" + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" } ], - "createdAt" : "2021-07-18T15:40:05+02:00", + "createdAt" : "2021-07-20T10:03:49+02:00", "currentDirectoryPath" : null, - "description" : "Create a new note", - "filename" : "obsidian-create-note.template.sh", - "hasArguments" : true, + "description" : "Stop active stopwatch, copy total time", + "filename" : "stopwatch-stop.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/obsidian.png" + "light" : "⏱" }, - "identifier" : "5e5d144d98524911ae3b2198de181c01", - "isTemplate" : true, + "identifier" : "110dc9e3b77c64b836c60d3d594188fc", + "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Obsidian", - "path" : "apps\/obsidian\/", + "packageName" : "stopwatch", + "path" : "productivity\/stopwatch\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Note", - "updatedAt" : "2021-07-19T22:03:48+02:00" + "title" : "Stop Stopwatch", + "updatedAt" : "2021-07-22T02:04:44+02:00" }, { "authors" : [ { - "name" : "Yiyao Wei", - "url" : "https:\/\/github.com\/HotThoughts" + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" } ], - "createdAt" : "2021-07-18T15:40:05+02:00", + "createdAt" : "2021-07-20T10:03:49+02:00", "currentDirectoryPath" : null, - "description" : "Search Obsidian Vault", - "filename" : "obsidian-search-vault.template.sh", - "hasArguments" : true, + "description" : "Status of active stopwatch", + "filename" : "stopwatch-progress.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : ".\/images\/obsidian.png" + "light" : "⏱" }, - "identifier" : "220bea9681acc6640802b8cb8b0ee55d", - "isTemplate" : true, + "identifier" : "f6096eb20938dba1a3849e659fa2b2f1", + "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Obsidian", - "path" : "apps\/obsidian\/", + "packageName" : "stopwatch", + "path" : "productivity\/stopwatch\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search in Vault", - "updatedAt" : "2021-07-19T22:03:48+02:00" - } - ] - }, - { - "name" : "Things", - "path" : "things", - "scriptCommands" : [ + "title" : "Show Stopwatch Progress", + "updatedAt" : "2021-07-22T02:04:44+02:00" + }, { "authors" : [ { - "name" : "Things", - "url" : "https:\/\/twitter.com\/culturedcode\/" + "name" : "Achille Lacoin", + "url" : "https:\/\/github.com\/pomdtr" } ], - "createdAt" : "2021-03-03T19:17:44+00:00", + "createdAt" : "2021-07-20T10:03:49+02:00", "currentDirectoryPath" : null, - "description" : "Get an overview of your completed tasks for today.", - "filename" : "things-today.applescript", + "description" : "Start a stopwatch", + "filename" : "stopwatch-start.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/things.png" + "light" : "⏱" }, - "identifier" : "9684467fd87bbb68d852c1ef118e4322", + "identifier" : "1568cbaa51ba27ed4145f76259db8858", "isTemplate" : false, - "language" : "applescript", - "mode" : "inline", + "language" : "bash", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Things", - "path" : "apps\/things\/", - "refreshTime" : "1m", + "packageName" : "stopwatch", + "path" : "productivity\/stopwatch\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Today", - "updatedAt" : "2021-03-03T19:17:44+00:00" - }, + "title" : "Start Stopwatch", + "updatedAt" : "2021-07-22T02:04:44+02:00" + } + ] + }, + { + "name" : "Pomodoro", + "path" : "pomodoro", + "scriptCommands" : [ { "authors" : [ { - "name" : "Things", - "url" : "https:\/\/twitter.com\/culturedcode\/" + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-03-03T19:17:44+00:00", + "createdAt" : "2021-07-19T21:12:36+01:00", "currentDirectoryPath" : null, - "description" : "Search To-Dos with a query.", - "filename" : "things-search-to-dos.sh", - "hasArguments" : true, + "description" : "Stop active Pomodoro timer", + "filename" : "pomodoro-stop-timer.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/things.png" + "light" : "🍅" }, - "identifier" : "8194ae91b888f4b868d50bade0f9c6af", + "identifier" : "57bc11aa3ebc78b95739a25d57f8fbbf", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Things", - "path" : "apps\/things\/", + "packageName" : "Pomodoro", + "path" : "productivity\/pomodoro\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search To-Dos", - "updatedAt" : "2021-03-03T19:17:44+00:00" + "title" : "Stop Timer", + "updatedAt" : "2021-07-19T21:29:39+01:00" }, { "authors" : [ { - "name" : "Things", - "url" : "https:\/\/twitter.com\/culturedcode\/" + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-03-03T19:17:44+00:00", + "createdAt" : "2021-07-19T21:12:36+01:00", "currentDirectoryPath" : null, - "description" : "Create a new To-Do with title and optional deadline.", - "filename" : "things-create-todo.sh", + "description" : "Start a Pomodoro timer", + "filename" : "pomodoro-start-timer.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/things.png" + "light" : "🍅" }, - "identifier" : "5ac2c380166460ade602f0c1e96df290", + "identifier" : "a1854deed46e0b0c83de7237488abd55", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Things", - "path" : "apps\/things\/", + "packageName" : "Pomodoro", + "path" : "productivity\/pomodoro\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create To-Do", - "updatedAt" : "2021-08-09T22:29:37+02:00" + "title" : "Start Timer", + "updatedAt" : "2021-07-19T21:29:39+01:00" }, { "authors" : [ { - "name" : "Things", - "url" : "https:\/\/twitter.com\/culturedcode\/" + "name" : "Thomas Paul Mann", + "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-03-03T19:17:44+00:00", + "createdAt" : "2021-07-19T21:12:36+01:00", "currentDirectoryPath" : null, - "description" : "Show your current To-Do to stay focused.", - "filename" : "things-current-todo.applescript", + "description" : "Status of a Pomodoro timer", + "filename" : "pomodoro-status.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/things.png" + "light" : "🍅" }, - "identifier" : "5ce51f66aa4c3798e7dcd06dd8199c12", + "identifier" : "8d7cb365a32acef7c7539511b0b4c130", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Things", - "path" : "apps\/things\/", - "refreshTime" : "1m", + "packageName" : "Pomodoro", + "path" : "productivity\/pomodoro\/", + "refreshTime" : "30s", "schemaVersion" : 1, - "title" : "Current To-Do", - "updatedAt" : "2021-03-03T19:17:44+00:00" + "title" : "Status", + "updatedAt" : "2021-07-19T21:12:36+01:00" } ] }, { - "name" : "Trello", - "path" : "trello", + "name" : "macOCR", + "path" : "macocr", "scriptCommands" : [ { "authors" : [ { - "name" : "Michael Francis", - "url" : "https:\/\/github.com\/mikefrancis" + "name" : "Jakub Lanski", + "url" : "https:\/\/github.com\/jaklan" } ], - "createdAt" : "2021-08-12T08:49:15+01:00", + "createdAt" : "2021-11-10T11:40:57+01:00", "currentDirectoryPath" : null, - "description" : "Create a new Trello card", - "filename" : "create-trello-card.template.py", + "description" : null, + "filename" : "macocr-run-ocr.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : ".\/images\/logo.png" + "light" : "📸" }, - "identifier" : "0ab076acf65d71d43777520db336ca41", - "isTemplate" : true, - "language" : "python", - "mode" : "compact", + "identifier" : "90d13e130e8494fa8012db4823c580dd", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Trello", - "path" : "apps\/trello\/", + "packageName" : "macOCR", + "path" : "productivity\/macocr\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Card", - "updatedAt" : "2021-08-12T07:51:38+00:00" + "title" : "Run OCR", + "updatedAt" : "2021-11-11T04:18:19+01:00" } ] }, { - "name" : "Viscosity", - "path" : "viscosity", + "name" : "Writing", + "path" : "writing", "scriptCommands" : [ { "authors" : [ { - "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", - "url" : "https:\/\/github.com\/lcardito" + "name" : "Benny Wong", + "url" : "https:\/\/bwong.net" } ], - "createdAt" : "2021-03-23T21:40:02+01:00", + "createdAt" : "2022-01-29T12:34:13-05:00", "currentDirectoryPath" : null, - "description" : "Disconnect all connected VPN configurations.", - "filename" : "viscosity-disconnect-all.applescript", + "description" : "Counts the number of words of the text in the clipboard", + "filename" : "word-count.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/viscosity.png" - }, - "identifier" : "e271e6ed237d2a3fb9c8a401ff15503e", - "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : false, - "packageName" : "Viscosity", - "path" : "apps\/viscosity\/", - "refreshTime" : null, - "schemaVersion" : 1, - "title" : "Viscosity: Disconnect All", - "updatedAt" : "2021-03-23T21:40:02+01:00" - }, - { - "authors" : [ - { - "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", - "url" : "https:\/\/github.com\/lcardito" - } - ], - "createdAt" : "2021-03-23T21:40:02+01:00", - "currentDirectoryPath" : null, - "description" : "Connect a VPN viscosity configuration.", - "filename" : "viscosity-connect.applescript", - "hasArguments" : true, - "icon" : { - "dark" : null, - "light" : "images\/viscosity.png" + "light" : "🤖" }, - "identifier" : "aff632e02a4d4991a02dcb2e998b5598", + "identifier" : "4757d0ea5b9d6eedf37b64f283531315", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : false, - "packageName" : "Viscosity", - "path" : "apps\/viscosity\/", - "refreshTime" : null, + "language" : "bash", + "mode" : "inline", + "needsConfirmation" : null, + "packageName" : "Writing", + "path" : "productivity\/writing\/", + "refreshTime" : "15s", "schemaVersion" : 1, - "title" : "Viscosity: Connect", - "updatedAt" : "2021-03-23T21:40:02+01:00" + "title" : "Word Count", + "updatedAt" : "2022-10-31T10:14:18+01:00" }, { "authors" : [ { - "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", - "url" : "https:\/\/github.com\/lcardito" + "name" : "Alessandra Pereyra", + "url" : "https:\/\/github.com\/alessandrapereyra" } ], - "createdAt" : "2021-03-14T17:37:20+01:00", + "createdAt" : "2022-09-04T19:45:53-05:00", "currentDirectoryPath" : null, - "description" : "Disconnect a VPN configuration.", - "filename" : "viscosity-disconnect.applescript", + "description" : "Directly use macOS Dictionary", + "filename" : "dictionary-lookup.swift", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/viscosity.png" + "light" : "📖" }, - "identifier" : "3026d9f845bb1212453542c8faac0c99", + "identifier" : "be57af80902c33cee913774b6e58d678", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : false, - "packageName" : "Viscosity", - "path" : "apps\/viscosity\/", + "language" : "swift", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Writing", + "path" : "productivity\/writing\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Viscosity: Disconnect", - "updatedAt" : "2021-03-23T21:40:02+01:00" - }, + "title" : "Dictionary Lookup", + "updatedAt" : "2022-10-31T10:14:18+01:00" + } + ] + } + ] + }, + { + "name" : "Media", + "path" : "media", + "scriptCommands" : [ + + ], + "subGroups" : [ + { + "name" : "Speaker Setup", + "path" : "speaker-setup", + "scriptCommands" : [ { "authors" : [ { - "name" : "Luigi Cardito (credits Achille Lacoin https:\/\/github.com\/pomdtr)", - "url" : "https:\/\/github.com\/lcardito" + "name" : "Kailash Yellareddy", + "url" : "https:\/\/github.com\/kyellareddy" } ], - "createdAt" : "2021-03-14T17:37:20+01:00", + "createdAt" : "2024-01-09T01:17:34-08:00", "currentDirectoryPath" : null, - "description" : "Connect all unconnected VPN configurations.", - "filename" : "viscosity-connect-all.applescript", + "description" : null, + "filename" : "speaker-setup.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/viscosity.png" + "light" : "🔊" }, - "identifier" : "71345f2d9ab8ad5b476cd4adeff8e1e7", + "identifier" : "7920ccb4e58a80afd149f6ce81e8f185", "isTemplate" : false, - "language" : "applescript", - "mode" : "silent", - "needsConfirmation" : false, - "packageName" : "Viscosity", - "path" : "apps\/viscosity\/", + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Speaker Setup", + "path" : "media\/speaker-setup\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Viscosity: Connect All", - "updatedAt" : "2021-03-23T21:40:02+01:00" + "title" : "Speaker Setup", + "updatedAt" : "2024-04-07T23:23:52+04:00" } ] }, { - "name" : "Espanso", - "path" : "espanso", + "name" : "Apple Music", + "path" : "apple-music", "scriptCommands" : [ { "authors" : [ { - "name" : "es183923", - "url" : "https:\/\/github.com\/es183923" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-11T20:44:52-04:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "enable-espanso.sh", + "description" : "Stop Music.", + "filename" : "apple-music-stop.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "e2ba4a2b364b245d6ce4402f7f2dc936", + "identifier" : "5f611223b0b8e4aac6f6a58b10eb18ec", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Enable Espanso", - "updatedAt" : "2021-05-14T16:44:53+00:00" + "title" : "Stop", + "updatedAt" : "2020-11-28T12:26:29-05:00" }, { "authors" : [ { - "name" : "Max Stoiber", - "url" : "https:\/\/github.com\/mxstbr" + "name" : "Juan I. Serra", + "url" : "https:\/\/github.com\/jiserra" } ], - "createdAt" : "2021-04-30T10:29:47+02:00", + "createdAt" : "2022-01-10T11:21:09-04:00", "currentDirectoryPath" : null, - "description" : "Add a text expansion to expanso", - "filename" : "espanso-create-expansion.sh", - "hasArguments" : true, + "description" : null, + "filename" : "apple-music-volume-up.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "8913cd83010b84c681d85d018013a800", + "identifier" : "c8f4c5a2218803961dcd04ac173cabe6", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Create Text Expansion", - "updatedAt" : "2021-05-11T20:46:55-04:00" + "title" : "Apple Music Volume Up", + "updatedAt" : "2022-01-10T11:21:09-04:00" }, { "authors" : [ { - "name" : "es183923", - "url" : "https:\/\/github.com\/es183923" + "name" : "Jordi Clement", + "url" : "https:\/\/github.com\/jordicl" } ], - "createdAt" : "2021-05-11T20:44:52-04:00", + "createdAt" : "2021-03-05T16:50:23+01:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "start-espanso.sh", - "hasArguments" : false, + "description" : "Go to Artist page in the Apple Music App", + "filename" : "apple-music-go-to-artist-page.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "2465c28979527987108461aaa939717a", + "identifier" : "6304c471969765a50361ee95d2b1a013", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Espanso", - "updatedAt" : "2021-05-14T16:44:53+00:00" + "title" : "Go to Artist in Apple Music", + "updatedAt" : "2021-03-08T14:53:49+01:00" }, { "authors" : [ { - "name" : "es183923", - "url" : "https:\/\/github.com\/es183923" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-11T20:44:52-04:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "disable-espanso.sh", + "description" : "Toggle shuffle setting in Music.", + "filename" : "apple-music-shuffle.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "9a5666c27b2dd8eeb9b7f6e664019e13", + "identifier" : "3c91d60443b3ddd0d18e9734d8fe6572", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Disable Espanso", - "updatedAt" : "2021-05-14T16:44:53+00:00" + "title" : "Toggle Shuffle", + "updatedAt" : "2020-11-28T12:26:29-05:00" }, { "authors" : [ { - "name" : "es183923", - "url" : "https:\/\/github.com\/es183923" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-11T20:44:52-04:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "restart-espanso.sh", + "description" : "Toggle repeat setting in Music.", + "filename" : "apple-music-repeat.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "483881356febc3e29f60c16e6675ffeb", + "identifier" : "c62c215553360ac8aa21353903f753a1", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Restart Espanso", - "updatedAt" : "2021-05-14T16:44:53+00:00" + "title" : "Toggle Repeat", + "updatedAt" : "2020-11-28T13:47:03-05:00" }, { "authors" : [ { - "name" : "es183923", - "url" : "https:\/\/github.com\/es183923" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-05-11T20:44:52-04:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : null, - "filename" : "stop-espanso.sh", + "description" : "Previous track in Music.", + "filename" : "apple-music-previous.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/espanso.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "50101f86c29a34ecdfc3fa2ea5d5109e", + "identifier" : "b815ba6d731f3c2d103d91ea8e6b1763", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Espanso", - "path" : "apps\/espanso\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop Espanso", - "updatedAt" : "2021-05-14T16:44:53+00:00" - } - ] - }, - { - "name" : "Sidenotes", - "path" : "sidenotes", - "scriptCommands" : [ + "title" : "Previous Track", + "updatedAt" : "2020-11-28T13:47:03-05:00" + }, { "authors" : [ { - "name" : "Marcel Bochtler", - "url" : "https:\/\/github.com\/MarcelBochtler" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-03-07T06:29:59-08:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : "Create a new note within the selected or the first SideNotes folder.", - "filename" : "sidenotes-create-note.applescript", - "hasArguments" : true, + "description" : "Pause Music.", + "filename" : "apple-music-pause.applescript", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/sidenotes.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "053dffcafea188ea1d0f4789fefb085b", + "identifier" : "d76db4a3ed282224bf7e5af8a82c62ce", "isTemplate" : false, "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "SideNotes", - "path" : "apps\/sidenotes\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "SideNotes create", - "updatedAt" : "2021-03-07T06:29:59-08:00" - } - ] - }, - { - "name" : "Session", - "path" : "session", - "scriptCommands" : [ + "title" : "Pause", + "updatedAt" : "2020-11-28T12:26:29-05:00" + }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Juan I. Serra", + "url" : "https:\/\/github.com\/jiserra" } ], - "createdAt" : "2021-03-29T10:46:13-07:00", + "createdAt" : "2022-01-10T11:21:09-04:00", "currentDirectoryPath" : null, - "description" : "Starts a focus session in Session app with the previous intent and duration", - "filename" : "session-start-previous.sh", + "description" : null, + "filename" : "apple-music-volume-down.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/session.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "6f4911496269d10725259483c0b9125b", + "identifier" : "e976c6ae51adec3ce4530235790c6761", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Session", - "path" : "apps\/session\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Previous Session", - "updatedAt" : "2021-03-29T10:46:13-07:00" + "title" : "Apple Music Volume Down", + "updatedAt" : "2022-01-10T11:21:09-04:00" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-03-29T10:46:13-07:00", + "createdAt" : "2020-12-10T16:16:07-05:00", "currentDirectoryPath" : null, - "description" : "Finishes a focus session in Session app", - "filename" : "session-finish.sh", - "hasArguments" : false, + "description" : "Set volume in Music.", + "filename" : "apple-music-set-volume.applescript", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/session.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "1a0f03f376b59043abf161176414d158", + "identifier" : "0b9f2dc6c068d19f045b0d4a1a05870d", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Session", - "path" : "apps\/session\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Finish Session", - "updatedAt" : "2021-03-29T10:46:13-07:00" + "title" : "Set Volume", + "updatedAt" : "2020-12-11T00:15:58Z" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-03-29T10:46:13-07:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : "Starts a focus session in Session app", - "filename" : "session-pause.sh", + "description" : "Play Music.", + "filename" : "apple-music-play.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/session.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "2edff21d2006d1ae7559d4cf6173b845", + "identifier" : "d5222ded53a633aa88805aa3f462f208", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Session", - "path" : "apps\/session\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Pause Session", - "updatedAt" : "2021-03-29T10:46:13-07:00" + "title" : "Play", + "updatedAt" : "2020-11-28T12:26:29-05:00" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "StevenRCE0", + "url" : "https:\/\/github.com\/StevenRCE0" } ], - "createdAt" : "2021-03-29T10:46:13-07:00", + "createdAt" : "2021-08-18T09:16:28+08:00", "currentDirectoryPath" : null, - "description" : "Starts a focus session in Session app", - "filename" : "session-start-new.sh", + "description" : "Search using the native UI", + "filename" : "apple-music-search.applescript", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/session.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "92ffe9f3858ffdbae4bcfa0a185feb7a", + "identifier" : "8596be52df39001815a5ed2803155afc", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Session", - "path" : "apps\/session\/", + "packageName" : "Apple Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Session", - "updatedAt" : "2021-03-29T10:46:13-07:00" + "title" : "Search", + "updatedAt" : "2021-12-20T20:53:03+08:00" }, { "authors" : [ { - "name" : "James Lyons", - "url" : "https:\/\/github.com\/jamesjlyons" + "name" : "Caleb Stauffer", + "url" : "https:\/\/github.com\/crstauf" } ], - "createdAt" : "2021-03-29T10:46:13-07:00", + "createdAt" : "2020-11-07T10:09:28-05:00", "currentDirectoryPath" : null, - "description" : "Starts a focus session in Session app", - "filename" : "session-abandon.sh", + "description" : "Next track in Music.", + "filename" : "apple-music-next.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/session.png" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "8faf6b45a243e039e253dddab88afad9", + "identifier" : "8611be488c5cc0e37d0c2e565ce23f68", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Session", - "path" : "apps\/session\/", + "packageName" : "Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Abandon Session", - "updatedAt" : "2021-03-29T10:46:13-07:00" - } - ] - } - ] - }, - { - "name" : "Productivity", - "path" : "productivity", - "scriptCommands" : [ - - ], - "subGroups" : [ - { - "name" : "Imgur", - "path" : "imgur", - "scriptCommands" : [ + "title" : "Next Track", + "updatedAt" : "2020-11-28T13:47:03-05:00" + }, { "authors" : [ { - "name" : "Fahim Faisal", - "url" : "https:\/\/github.com\/i3p9" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-08-19T04:36:52+06:00", + "createdAt" : "2020-11-30T12:52:41Z", "currentDirectoryPath" : null, - "description" : "Upload your last screenshot to Imgur and copy the image link to clipboard", - "filename" : "imgur-upload-latest-screenshot.template.sh", + "description" : "Show currently playing track in Music.", + "filename" : "apple-music-current-track.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "☁️" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "fb44bae955f942707a724e0c14063627", - "isTemplate" : true, - "language" : "bash", - "mode" : "silent", + "identifier" : "41db4193526a667ad73d8742fc72d7de", + "isTemplate" : false, + "language" : "applescript", + "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Upload to Imgur", - "path" : "productivity\/imgur\/", - "refreshTime" : null, + "packageName" : "Music", + "path" : "media\/apple-music\/", + "refreshTime" : "10s", "schemaVersion" : 1, - "title" : "Upload Latest Screenshot to Imgur", - "updatedAt" : "2021-08-26T01:16:19+06:00" + "title" : "Current Track", + "updatedAt" : "2021-01-21T12:38:38-05:00" }, { "authors" : [ { - "name" : "Fahim Faisal", - "url" : "https:\/\/github.com\/i3p9" + "name" : "Bryan Schuetz", + "url" : "https:\/\/github.com\/bryanschuetz" } ], - "createdAt" : "2021-08-26T01:16:19+06:00", + "createdAt" : "2021-09-24T08:42:54-04:00", "currentDirectoryPath" : null, - "description" : "Upload Image from your Clipboard and copy the image link to clipboard", - "filename" : "imgur-upload-clipboard-image.template.sh", + "description" : "Let the algorithm know how you feel about the currently playing track.", + "filename" : "apple-music-hate-current-track.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "📋" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "4041c74c3a091d708e0e58c159d5024e", - "isTemplate" : true, - "language" : "bash", + "identifier" : "f7d43db5dbd64ecab0104afe7dd4c5e1", + "isTemplate" : false, + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Uploads Copied Image or Image from Clipboard", - "path" : "productivity\/imgur\/", + "packageName" : "Apple Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Clipboard to Imgur", - "updatedAt" : "2021-08-26T01:16:19+06:00" + "title" : "Hate Current Track", + "updatedAt" : "2021-09-24T08:42:54-04:00" }, { "authors" : [ { - "name" : "Fahim Faisal", - "url" : "https:\/\/github.com\/i3p9" + "name" : "Bryan Schuetz", + "url" : "https:\/\/github.com\/bryanschuetz" } ], - "createdAt" : "2021-08-19T04:36:52+06:00", + "createdAt" : "2021-09-24T08:42:54-04:00", "currentDirectoryPath" : null, - "description" : "Opens default screenshot interface and immediately uploads and copies link to clipboard", - "filename" : "screenshot-and-imgur.sh", + "description" : "Let the algorithm know how you feel about the currently playing track.", + "filename" : "apple-music-love-current-track.applescript", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "📷" + "light" : "images\/apple-music-logo.png" }, - "identifier" : "06f3fa5d901f894dba435781da31037d", + "identifier" : "1f71dc54a2c61ca4ebede7924eaf73e8", "isTemplate" : false, - "language" : "bash", + "language" : "applescript", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Opens Screenshot Interface and Uploads", - "path" : "productivity\/imgur\/", + "packageName" : "Apple Music", + "path" : "media\/apple-music\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Screenshot and Imgur", - "updatedAt" : "2021-08-26T01:16:19+06:00" + "title" : "Love Current Track", + "updatedAt" : "2024-02-27T09:52:24-05:00" } ] }, { - "name" : "Stopwatch", - "path" : "stopwatch", + "name" : "Cmus", + "path" : "cmus", "scriptCommands" : [ { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-20T10:03:49+02:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Stop active stopwatch, copy total time", - "filename" : "stopwatch-stop.sh", + "description" : "Toggles the shuffle option if cmus is running", + "filename" : "toggle-shuffle.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏱" + "light" : "🔀" }, - "identifier" : "110dc9e3b77c64b836c60d3d594188fc", + "identifier" : "bcd4e5cb33e09e0841cf483ecafaf53a", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "stopwatch", - "path" : "productivity\/stopwatch\/", + "packageName" : "Cmus", + "path" : "media\/cmus\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop Stopwatch", - "updatedAt" : "2021-07-22T02:04:44+02:00" + "title" : "Toggle Shuffle", + "updatedAt" : "2020-11-25T03:49:04-05:00" }, { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-20T10:03:49+02:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Status of active stopwatch", - "filename" : "stopwatch-progress.sh", + "description" : "Goes back a track if cmus is running", + "filename" : "previous-track.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏱" + "light" : "⏪" }, - "identifier" : "f6096eb20938dba1a3849e659fa2b2f1", + "identifier" : "42ce25d5b673898cc98599ca064d2ff6", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "stopwatch", - "path" : "productivity\/stopwatch\/", + "packageName" : "Cmus", + "path" : "media\/cmus\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Show Stopwatch Progress", - "updatedAt" : "2021-07-22T02:04:44+02:00" + "title" : "Previous Track", + "updatedAt" : "2020-11-25T03:49:04-05:00" }, { "authors" : [ { - "name" : "Achille Lacoin", - "url" : "https:\/\/github.com\/pomdtr" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-20T10:03:49+02:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Start a stopwatch", - "filename" : "stopwatch-start.sh", + "description" : "Toggles the play\/pause state if cmus is running", + "filename" : "play-pause.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏱" + "light" : "⏯" }, - "identifier" : "1568cbaa51ba27ed4145f76259db8858", + "identifier" : "c3a1b04149db8dfc9b1a23beed4ff6ea", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "stopwatch", - "path" : "productivity\/stopwatch\/", + "packageName" : "Cmus", + "path" : "media\/cmus\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Stopwatch", - "updatedAt" : "2021-07-22T02:04:44+02:00" - } - ] - }, - { - "name" : "Pomodoro", - "path" : "pomodoro", - "scriptCommands" : [ + "title" : "Toggle Play\/Pause", + "updatedAt" : "2020-11-25T03:49:04-05:00" + }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-19T21:12:36+01:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Stop active Pomodoro timer", - "filename" : "pomodoro-stop-timer.sh", + "description" : "Toggles the repeat option if cmus is running", + "filename" : "toggle-repeat.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "🔁" }, - "identifier" : "57bc11aa3ebc78b95739a25d57f8fbbf", + "identifier" : "9c6d2889c9c1a87d976069e01e42611a", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pomodoro", - "path" : "productivity\/pomodoro\/", + "packageName" : "Cmus", + "path" : "media\/cmus\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop Timer", - "updatedAt" : "2021-07-19T21:29:39+01:00" + "title" : "Toggle Repeat", + "updatedAt" : "2020-11-25T03:49:04-05:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-19T21:12:36+01:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Start a Pomodoro timer", - "filename" : "pomodoro-start-timer.sh", - "hasArguments" : true, + "description" : "Goes forward a track if cmus is running", + "filename" : "next-track.sh", + "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "⏩" }, - "identifier" : "a1854deed46e0b0c83de7237488abd55", + "identifier" : "28623c177a9fae398cef860f1d42cfca", "isTemplate" : false, "language" : "bash", "mode" : "silent", "needsConfirmation" : null, - "packageName" : "Pomodoro", - "path" : "productivity\/pomodoro\/", + "packageName" : "Cmus", + "path" : "media\/cmus\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Start Timer", - "updatedAt" : "2021-07-19T21:29:39+01:00" + "title" : "Next Track", + "updatedAt" : "2020-11-25T03:49:04-05:00" }, { "authors" : [ { - "name" : "Thomas Paul Mann", - "url" : "https:\/\/github.com\/thomaspaulmann" + "name" : "mmerle", + "url" : "https:\/\/github.com\/mmerle" } ], - "createdAt" : "2021-07-19T21:12:36+01:00", + "createdAt" : "2020-11-25T03:49:04-05:00", "currentDirectoryPath" : null, - "description" : "Status of a Pomodoro timer", - "filename" : "pomodoro-status.sh", + "description" : "Shows info on the current track if cmus is running", + "filename" : "track-info.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "🍅" + "light" : "ℹ️" }, - "identifier" : "8d7cb365a32acef7c7539511b0b4c130", + "identifier" : "a59730f5b518bf0015017075092fcd55", "isTemplate" : false, "language" : "bash", "mode" : "inline", "needsConfirmation" : null, - "packageName" : "Pomodoro", - "path" : "productivity\/pomodoro\/", - "refreshTime" : "30s", + "packageName" : "Cmus", + "path" : "media\/cmus\/", + "refreshTime" : "10s", "schemaVersion" : 1, - "title" : "Status", - "updatedAt" : "2021-07-19T21:12:36+01:00" + "title" : "Current Track", + "updatedAt" : "2020-11-25T03:49:04-05:00" } ] - } - ] - }, - { - "name" : "Media", - "path" : "media", - "scriptCommands" : [ - - ], - "subGroups" : [ + }, { - "name" : "Apple Music", - "path" : "apple-music", + "name" : "Endel", + "path" : "endel", "scriptCommands" : [ { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Stop Music.", - "filename" : "apple-music-stop.applescript", + "description" : "Set focus mode at Endel ", + "filename" : "endel-sleep.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "5f611223b0b8e4aac6f6a58b10eb18ec", + "identifier" : "882873a4414a4785a11184e942127bae", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Stop", - "updatedAt" : "2020-11-28T12:26:29-05:00" + "title" : "Sleep", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Jordi Clement", - "url" : "https:\/\/github.com\/jordicl" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2021-03-05T16:50:23+01:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Go to Artist page in the Apple Music App", - "filename" : "apple-music-go-to-artist-page.sh", + "description" : "Set relax mode at Endel ", + "filename" : "endel-relax.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/endel.png" + }, + "identifier" : "4b091a5a2e460f0e65e66ff8ce57ff4d", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Relax", + "updatedAt" : "2021-10-06T15:53:54+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" + } + ], + "createdAt" : "2021-10-06T15:53:54+03:00", + "currentDirectoryPath" : null, + "description" : "Run Workout scenario at Endel ", + "filename" : "endel-scenarios-workout.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "6304c471969765a50361ee95d2b1a013", + "identifier" : "e12f2795c9fd7861d63892302fcce623", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Go to Artist in Apple Music", - "updatedAt" : "2021-03-08T14:53:49+01:00" + "title" : "Workout", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" + } + ], + "createdAt" : "2021-10-06T15:53:54+03:00", + "currentDirectoryPath" : null, + "description" : "Run Deep Work scenario at Endel ", + "filename" : "endel-scenarios-deepwork.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/endel.png" + }, + "identifier" : "e137539f2ad45ca56293ed3f849f82a3", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Deep Work", + "updatedAt" : "2021-10-06T15:53:54+03:00" + }, + { + "authors" : [ + { + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Toggle shuffle setting in Music.", - "filename" : "apple-music-shuffle.applescript", + "description" : "Set focus mode at Endel ", + "filename" : "endel-focus.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "3c91d60443b3ddd0d18e9734d8fe6572", + "identifier" : "0d39ac92f6ee5586b718d24e095b9477", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Shuffle", - "updatedAt" : "2020-11-28T12:26:29-05:00" + "title" : "Focus", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Toggle repeat setting in Music.", - "filename" : "apple-music-repeat.applescript", - "hasArguments" : false, + "description" : "Run Yoga scenario at Endel ", + "filename" : "endel-scenarios-yoga.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "c62c215553360ac8aa21353903f753a1", + "identifier" : "7f208b21990d3049368276de95cef101", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Repeat", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "title" : "Yoga", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Previous track in Music.", - "filename" : "apple-music-previous.applescript", + "description" : "Set study mode at Endel ", + "filename" : "endel-study.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "b815ba6d731f3c2d103d91ea8e6b1763", + "identifier" : "ce29578447010dd36480bd25ff785cef", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Previous Track", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "title" : "Study", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Pause Music.", - "filename" : "apple-music-pause.applescript", - "hasArguments" : false, + "description" : "Run Read scenario at Endel ", + "filename" : "endel-scenarios-read.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "d76db4a3ed282224bf7e5af8a82c62ce", + "identifier" : "1b2102711e0cbd6f4b249756ddb2bdf4", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Pause", - "updatedAt" : "2020-11-28T12:26:29-05:00" + "title" : "Read", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-12-10T16:16:07-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Set volume in Music.", - "filename" : "apple-music-set-volume.applescript", + "description" : "Run Power Nap scenario at Endel ", + "filename" : "endel-scenarios-powernap.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "0b9f2dc6c068d19f045b0d4a1a05870d", + "identifier" : "1c78bc5186a9516d6ce228be1b9b188a", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Set Volume", - "updatedAt" : "2020-12-11T00:15:58+00:00" + "title" : "Power Nap", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Play Music.", - "filename" : "apple-music-play.applescript", + "description" : "Set AI lullaby mode at Endel ", + "filename" : "endel-lullaby.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "d5222ded53a633aa88805aa3f462f208", + "identifier" : "74bec6706807ff93e3c8b524ab208bd6", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Play", - "updatedAt" : "2020-11-28T12:26:29-05:00" + "title" : "Lullaby", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "StevenRCE0", - "url" : "https:\/\/github.com\/StevenRCE0" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2021-08-18T09:16:28+08:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Search using the native UI", - "filename" : "apple-music-search.applescript", + "description" : "Run Homework scenario at Endel ", + "filename" : "endel-scenarios-homework.sh", "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "8596be52df39001815a5ed2803155afc", + "identifier" : "279f29dacf815dc3e32427a904d21443", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Apple Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Search", - "updatedAt" : "2021-08-18T20:20:15+08:00" + "title" : "Homework", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "Caleb Stauffer", - "url" : "https:\/\/github.com\/crstauf" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-07T10:09:28-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Next track in Music.", - "filename" : "apple-music-next.applescript", - "hasArguments" : false, + "description" : "Run Meditate scenario at Endel ", + "filename" : "endel-scenarios-meditate.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "8611be488c5cc0e37d0c2e565ce23f68", + "identifier" : "fd592987dee95de1ab1e746d66a296d1", "isTemplate" : false, - "language" : "applescript", + "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Next Track", - "updatedAt" : "2020-11-28T13:47:03-05:00" + "title" : "Meditate", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-30T12:52:41+00:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Show currently playing track in Music.", - "filename" : "apple-music-current-track.applescript", + "description" : "Set deep focus mode at Endel ", + "filename" : "endel-deep-focus.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "images\/apple-music-logo.png" + "light" : "images\/endel.png" }, - "identifier" : "1ce69e81108a71dc7ebdbe58cb8892eb", + "identifier" : "879912a57f3ee1fc9c177f5687710e68", "isTemplate" : false, - "language" : "applescript", - "mode" : "inline", - "needsConfirmation" : null, - "packageName" : "Music", - "path" : "media\/apple-music\/", - "refreshTime" : "10s", + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Current Track", - "updatedAt" : "2021-01-21T12:38:38-05:00" - } - ] - }, - { - "name" : "Cmus", - "path" : "cmus", - "scriptCommands" : [ + "title" : "Deep Focus", + "updatedAt" : "2021-10-06T15:53:54+03:00" + }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Toggles the shuffle option if cmus is running", - "filename" : "toggle-shuffle.sh", - "hasArguments" : false, + "description" : "Run Self Care scenario at Endel ", + "filename" : "endel-scenarios-selfcare.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🔀" + "light" : "images\/endel.png" }, - "identifier" : "bcd4e5cb33e09e0841cf483ecafaf53a", + "identifier" : "7395fcee323302f9ebf5131b6bf01bd1", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Shuffle", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Self Care", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Goes back a track if cmus is running", - "filename" : "previous-track.sh", + "description" : "Set Alarm in Endel ", + "filename" : "endel-alarm.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏪" + "light" : "images\/endel.png" }, - "identifier" : "42ce25d5b673898cc98599ca064d2ff6", + "identifier" : "3308542a1a6cfcabd9576c90af4d7ef1", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Previous Track", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Set Alarm", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Toggles the play\/pause state if cmus is running", - "filename" : "play-pause.sh", + "description" : "Set wiggly wisdom mode at Endel ", + "filename" : "endel-wisdom.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏯" + "light" : "images\/endel.png" }, - "identifier" : "c3a1b04149db8dfc9b1a23beed4ff6ea", + "identifier" : "63f5ba97d67a53656d14772b71d1d81c", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Play\/Pause", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Wiggly Wisdom", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Toggles the repeat option if cmus is running", - "filename" : "toggle-repeat.sh", - "hasArguments" : false, + "description" : "Run Unwind scenario at Endel ", + "filename" : "endel-scenarios-unwind.sh", + "hasArguments" : true, "icon" : { "dark" : null, - "light" : "🔁" + "light" : "images\/endel.png" }, - "identifier" : "9c6d2889c9c1a87d976069e01e42611a", + "identifier" : "214e40e5bed0a266493139305e88d92b", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Repeat", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Unwind", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Goes forward a track if cmus is running", - "filename" : "next-track.sh", + "description" : "Set recovery mode at Endel ", + "filename" : "endel-recovery.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "⏩" + "light" : "images\/endel.png" }, - "identifier" : "28623c177a9fae398cef860f1d42cfca", + "identifier" : "9acba1d018ec7f24f3616937cfc303e5", "isTemplate" : false, "language" : "bash", "mode" : "silent", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Next Track", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Recovery", + "updatedAt" : "2021-10-06T15:53:54+03:00" }, { "authors" : [ { - "name" : "mmerle", - "url" : "https:\/\/github.com\/mmerle" + "name" : "Sergey Korobyin", + "url" : "https:\/\/github.com\/huangsemao" } ], - "createdAt" : "2020-11-25T03:49:04-05:00", + "createdAt" : "2021-10-06T15:53:54+03:00", "currentDirectoryPath" : null, - "description" : "Shows info on the current track if cmus is running", - "filename" : "track-info.sh", + "description" : "Set Timer in Endel ", + "filename" : "endel-timer.sh", "hasArguments" : false, "icon" : { "dark" : null, - "light" : "ℹ️" + "light" : "images\/endel.png" }, - "identifier" : "a59730f5b518bf0015017075092fcd55", + "identifier" : "7b92a6f72056f8a2e67e96151c57a6c6", "isTemplate" : false, "language" : "bash", - "mode" : "inline", - "needsConfirmation" : null, - "packageName" : "Cmus", - "path" : "media\/cmus\/", - "refreshTime" : "10s", + "mode" : "silent", + "needsConfirmation" : false, + "packageName" : "Endel", + "path" : "media\/endel\/", + "refreshTime" : null, "schemaVersion" : 1, - "title" : "Current Track", - "updatedAt" : "2020-11-25T03:49:04-05:00" + "title" : "Set Timer", + "updatedAt" : "2021-10-06T15:53:54+03:00" } ] }, @@ -16025,7 +23457,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Next Track", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, @@ -16040,15 +23472,43 @@ }, "identifier" : "d12611a4f464cf6a5566a7163f1de3a0", "isTemplate" : false, - "language" : "applescript", + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Spotify", + "path" : "media\/spotify\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Play\/Pause", + "updatedAt" : "2020-12-08T15:56:35Z" + }, + { + "authors" : [ + { + "name" : "Nichlas Wærnes Andersen", + "url" : "https:\/\/twitter.com\/nichlaswa" + } + ], + "createdAt" : "2021-05-27T12:22:24+02:00", + "currentDirectoryPath" : null, + "description" : "Play ${commandName} on Spotify", + "filename" : "create-spotify-command.js", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : ".\/images\/spotify-logo.png" + }, + "identifier" : "4a0c3ae9f9dc6dd5d6e060f802ea486c", + "isTemplate" : false, + "language" : "node", "mode" : "silent", "needsConfirmation" : null, "packageName" : "Spotify", "path" : "media\/spotify\/", "refreshTime" : null, "schemaVersion" : 1, - "title" : "Toggle Play\/Pause", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "title" : "${commandName}", + "updatedAt" : "2021-09-29T08:15:53+02:00" }, { "authors" : [ @@ -16085,7 +23545,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2021-01-26T20:54:37+00:00", + "createdAt" : "2021-01-26T20:54:37Z", "currentDirectoryPath" : null, "description" : "Play playlist or track in Spotify.", "filename" : "spotify-play-playlist.template.applescript", @@ -16094,7 +23554,7 @@ "dark" : null, "light" : "images\/spotify-logo.png" }, - "identifier" : "faad4bf6558229aa4c10be54368a4c18", + "identifier" : "8e28e54269f27849b00b363c8a0271be", "isTemplate" : true, "language" : "applescript", "mode" : "silent", @@ -16104,7 +23564,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Play Track or Playlist", - "updatedAt" : "2021-01-26T20:55:11+00:00" + "updatedAt" : "2021-01-26T20:55:11Z" }, { "authors" : null, @@ -16127,7 +23587,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Play", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : [ @@ -16136,7 +23596,7 @@ "url" : "https:\/\/github.com\/thomaspaulmann" } ], - "createdAt" : "2020-11-30T12:52:41+00:00", + "createdAt" : "2020-11-30T12:52:41Z", "currentDirectoryPath" : null, "description" : "Show currently playing track in Spotify.", "filename" : "spotify-current-track.applescript", @@ -16145,7 +23605,7 @@ "dark" : null, "light" : "images\/spotify-logo.png" }, - "identifier" : "94fcb3923a4b45346a924803c2b36f3f", + "identifier" : "2eb202dd044979361f9d435198280920", "isTemplate" : false, "language" : "applescript", "mode" : "inline", @@ -16155,7 +23615,7 @@ "refreshTime" : "30s", "schemaVersion" : 1, "title" : "Current Track", - "updatedAt" : "2020-11-30T12:52:41+00:00" + "updatedAt" : "2020-11-30T12:52:41Z" }, { "authors" : null, @@ -16178,7 +23638,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Previous Track", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" }, { "authors" : null, @@ -16201,7 +23661,123 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Pause", - "updatedAt" : "2020-12-08T15:56:35+00:00" + "updatedAt" : "2020-12-08T15:56:35Z" + } + ] + }, + { + "name" : "foobar2000", + "path" : "foobar2000", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Jing Li", + "url" : "https:\/\/github.com\/lixeon" + } + ], + "createdAt" : "2022-06-03T15:00:35+08:00", + "currentDirectoryPath" : null, + "description" : "Shortcuts to next foobar2000 for Mac v2.3.0", + "filename" : "foobar2000-next.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/foobar2000.png" + }, + "identifier" : "37d028897c09ceb93626ab043cb05849", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "foobar2000", + "path" : "media\/foobar2000\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Next foobar2000", + "updatedAt" : "2022-06-03T15:00:35+08:00" + }, + { + "authors" : [ + { + "name" : "Jing Li", + "url" : "https:\/\/github.com\/lixeon" + } + ], + "createdAt" : "2022-06-03T15:00:35+08:00", + "currentDirectoryPath" : null, + "description" : "Shortcuts to pause foobar2000 for Mac v2.3.0", + "filename" : "foobar2000-pause.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/foobar2000.png" + }, + "identifier" : "9628f178c067958b737c469c1cda07bf", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "foobar2000", + "path" : "media\/foobar2000\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Pause foobar2000", + "updatedAt" : "2022-06-03T15:00:35+08:00" + }, + { + "authors" : [ + { + "name" : "Jing Li", + "url" : "https:\/\/github.com\/lixeon" + } + ], + "createdAt" : "2022-06-03T15:00:35+08:00", + "currentDirectoryPath" : null, + "description" : "Shortcuts to Previous foobar2000 for Mac v2.3.0", + "filename" : "foobar2000-pervious.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/foobar2000.png" + }, + "identifier" : "849beafb523bee8e7e82e39dfd8113d3", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "foobar2000", + "path" : "media\/foobar2000\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Previous foobar2000", + "updatedAt" : "2022-06-03T15:00:35+08:00" + } + ] + }, + { + "name" : "Lowfi", + "path" : "lowfi", + "scriptCommands" : [ + { + "authors" : null, + "createdAt" : "2024-11-24T04:45:52+01:00", + "currentDirectoryPath" : null, + "description" : null, + "filename" : "lowfi.sh", + "hasArguments" : false, + "icon" : null, + "identifier" : "afcc05d7a53abe6543c98f59f23bb7e5", + "isTemplate" : false, + "language" : "bash", + "mode" : "compact", + "needsConfirmation" : null, + "packageName" : "Music", + "path" : "media\/lowfi\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Lowfi", + "updatedAt" : "2024-12-11T20:08:12Z" } ] }, @@ -16235,7 +23811,7 @@ "refreshTime" : null, "schemaVersion" : 1, "title" : "Set Volume", - "updatedAt" : "2020-12-11T00:16:06+00:00" + "updatedAt" : "2020-12-11T00:16:06Z" }, { "authors" : [ @@ -16350,13 +23926,310 @@ "updatedAt" : "2020-11-28T13:47:03-05:00" } ] + }, + { + "name" : "Sonos", + "path" : "sonos", + "readme" : "media\/sonos\/README.md", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "David Blackman", + "url" : "https:\/\/github.com\/whizziwig" + } + ], + "createdAt" : "2022-01-02T10:24:52-08:00", + "currentDirectoryPath" : null, + "description" : "Sets volume of Sonos.", + "filename" : "sonos-volume-set.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/sonos-logo.png" + }, + "identifier" : "085acb7129481eed8d148f6ca7b32404", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Sonos", + "path" : "media\/sonos\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Set Volume", + "updatedAt" : "2022-01-02T10:24:52-08:00" + }, + { + "authors" : [ + { + "name" : "David Blackman", + "url" : "https:\/\/github.com\/whizziwig" + } + ], + "createdAt" : "2022-01-02T10:24:52-08:00", + "currentDirectoryPath" : null, + "description" : "Raises volume of Sonos.", + "filename" : "sonos-volume-down.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/sonos-logo.png" + }, + "identifier" : "a300f2524b7bd3e43710d309ff82eed1", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Sonos", + "path" : "media\/sonos\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Volume Down", + "updatedAt" : "2022-01-02T10:24:52-08:00" + }, + { + "authors" : [ + { + "name" : "David Blackman", + "url" : "https:\/\/github.com\/whizziwig" + } + ], + "createdAt" : "2022-01-02T10:24:52-08:00", + "currentDirectoryPath" : null, + "description" : "Raises volume of Sonos.", + "filename" : "sonos-volume-up.sh", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/sonos-logo.png" + }, + "identifier" : "f0a7189878e31e38c10433ca9b69239c", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Sonos", + "path" : "media\/sonos\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Volume Up", + "updatedAt" : "2022-01-02T10:24:52-08:00" + }, + { + "authors" : [ + { + "name" : "David Blackman", + "url" : "https:\/\/github.com\/whizziwig" + } + ], + "createdAt" : "2022-01-02T10:24:52-08:00", + "currentDirectoryPath" : null, + "description" : "Play from Sonos favorites.", + "filename" : "sonos-play-favorite.sh", + "hasArguments" : true, + "icon" : { + "dark" : null, + "light" : "images\/sonos-logo.png" + }, + "identifier" : "da8d3ee4cc8a4c646953f6dc401b7383", + "isTemplate" : false, + "language" : "bash", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Sonos", + "path" : "media\/sonos\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Play Favorite", + "updatedAt" : "2022-01-02T10:24:52-08:00" + } + ] + }, + { + "name" : "Tidal", + "path" : "tidal", + "scriptCommands" : [ + { + "authors" : [ + { + "name" : "Charles Harries", + "url" : "https:\/\/github.com\/charlesharries" + } + ], + "createdAt" : "2022-02-01T13:37:24Z", + "currentDirectoryPath" : null, + "description" : "Play the current track in Tidal.", + "filename" : "tidal-play.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tidal-logo.png" + }, + "identifier" : "2ea9c044515312cbf87dac8fb5e0c92a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Tidal Play", + "path" : "media\/tidal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Play", + "updatedAt" : "2022-02-01T13:37:24Z" + }, + { + "authors" : [ + { + "name" : "Charles Harries", + "url" : "https:\/\/github.com\/charlesharries" + } + ], + "createdAt" : "2022-02-01T13:37:24Z", + "currentDirectoryPath" : null, + "description" : "Skip to the next track in Tidal.", + "filename" : "tidal-next-track.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tidal-logo.png" + }, + "identifier" : "aac66a366cec215c8594f02cf425bcb0", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Tidal Next Track", + "path" : "media\/tidal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Next Track", + "updatedAt" : "2022-02-01T14:38:40Z" + }, + { + "authors" : [ + { + "name" : "Charles Harries", + "url" : "https:\/\/github.com\/charlesharries" + } + ], + "createdAt" : "2022-02-01T13:37:24Z", + "currentDirectoryPath" : null, + "description" : "Pause the current track in Tidal.", + "filename" : "tidal-pause.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tidal-logo.png" + }, + "identifier" : "58a1d13baec2c61c0a7ee815126b4fd9", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Tidal Pause", + "path" : "media\/tidal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Pause", + "updatedAt" : "2022-02-01T13:37:24Z" + }, + { + "authors" : [ + { + "name" : "Charles Harries", + "url" : "https:\/\/github.com\/charlesharries" + } + ], + "createdAt" : "2022-02-01T13:37:24Z", + "currentDirectoryPath" : null, + "description" : "Skip back to the previous track in Tidal.", + "filename" : "tidal-previous-track.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tidal-logo.png" + }, + "identifier" : "2a30f2daec4a4df68c4f0dae82c0e6ba", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Tidal Previous Track", + "path" : "media\/tidal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Previous Track", + "updatedAt" : "2022-02-01T14:38:40Z" + }, + { + "authors" : [ + { + "name" : "Cebrail AKTAS", + "url" : "https:\/\/github.com\/AktasC" + } + ], + "createdAt" : "2022-09-12T17:06:01+02:00", + "currentDirectoryPath" : null, + "description" : "Play\/Pause Tidal", + "filename" : "tidal.applescript", + "hasArguments" : false, + "icon" : { + "dark" : null, + "light" : "images\/tidal-logo.png" + }, + "identifier" : "ee85b0d540c79e75859c0753aadee02a", + "isTemplate" : false, + "language" : "applescript", + "mode" : "silent", + "needsConfirmation" : null, + "packageName" : "Tidal", + "path" : "media\/tidal\/", + "refreshTime" : null, + "schemaVersion" : 1, + "title" : "Toggle Play\/Pause", + "updatedAt" : "2022-09-13T08:16:43Z" + } + ] } ] } ], + "languages" : [ + { + "displayName" : "Python", + "icon" : "icon-python.png", + "name" : "python" + }, + { + "displayName" : "Bash", + "icon" : "icon-bash.png", + "name" : "bash" + }, + { + "displayName" : "Node", + "icon" : "icon-nodejs.png", + "name" : "node" + }, + { + "displayName" : "Swift", + "icon" : "icon-swift.png", + "name" : "swift" + }, + { + "displayName" : "AppleScript", + "icon" : "icon-applescript.png", + "name" : "applescript" + }, + { + "displayName" : "Ruby", + "icon" : "icon-ruby.png", + "name" : "ruby" + } + ], "metadata" : [ ], - "totalScriptCommands" : 572, - "updatedAt" : "2021-09-07T10:00:18Z" + "totalScriptCommands" : 841, + "updatedAt" : "2025-09-29T13:46:20Z" } \ No newline at end of file diff --git a/commands/google-maps/google-maps.sh b/commands/google-maps/google-maps.sh deleted file mode 100755 index 345205af0..000000000 --- a/commands/google-maps/google-maps.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Search Google Maps -# @raycast.mode silent -# @raycast.packageName Google Maps - -# Optional parameters: -# @raycast.icon images/google-map.png -# @raycast.argument1 { "type": "text", "placeholder": "Location", "optional": true} -# @raycast.argument2 { "type": "text", "placeholder": "Destination", "optional": true} - -first_argument=${1// /+} -second_argument=${2// /+} - -if [ "$1" = "" ]; then - open "https://www.google.com/maps" -elif [ "$2" = "" ]; then - open "https://www.google.com/maps/search/$first_argument" -else - open "https://www.google.com/maps/dir/$first_argument/$second_argument" -fi diff --git a/commands/images/icon-nodejs.png b/commands/images/icon-nodejs.png index b9abf5d4f..4efac298e 100644 Binary files a/commands/images/icon-nodejs.png and b/commands/images/icon-nodejs.png differ diff --git a/commands/images/icon-php.png b/commands/images/icon-php.png new file mode 100644 index 000000000..914df5842 Binary files /dev/null and b/commands/images/icon-php.png differ diff --git a/commands/images/icon-qrcode.png b/commands/images/icon-qrcode.png new file mode 100644 index 000000000..48b082571 Binary files /dev/null and b/commands/images/icon-qrcode.png differ diff --git a/commands/math/calculate-CAGR.sh b/commands/math/calculate-CAGR.sh new file mode 100755 index 000000000..671876a94 --- /dev/null +++ b/commands/math/calculate-CAGR.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Calculate CAGR Percentage +# @raycast.mode compact +# @raycast.packageName Math + +# Optional parameters: +# @raycast.argument1 { "type": "text", "placeholder": "From" } +# @raycast.argument2 { "type": "text", "placeholder": "To" } +# @raycast.argument3 { "type": "text", "placeholder": "Years" } + +# Documentation: +# @raycast.author Samuel Barton +# @raycast.authorURL https://github.com/samueldbarton +# @raycast.description Calculate the CAGR between "from" and "to" values over given "years," then copy the result. + +CAGR=$(echo "scale=4; e( l($2 / $1) / $3 ) - 1" | bc -l) +CAGR=$(echo "scale=2; $CAGR * 100" | bc -l) +CAGR=$(printf "%.2f" "$CAGR") +echo "$CAGR" | pbcopy +echo "The CAGR from $1 to $2 over $3 years is $CAGR%. CAGR copied to clipboard." \ No newline at end of file diff --git a/commands/math/calculate-combinations.js b/commands/math/calculate-combinations.js new file mode 100755 index 000000000..be25ba058 --- /dev/null +++ b/commands/math/calculate-combinations.js @@ -0,0 +1,71 @@ +#!/usr/bin/env node +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title nCr: Calculate Combinations +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon 𝐂 +// @raycast.argument1 { "type": "text", "placeholder": "n" } +// @raycast.argument2 { "type": "text", "placeholder": "r" } +// Documentation: +// @raycast.description nCr: Calculate combinations +// @raycast.author cSharp +// @raycast.authorURL https://github.com/noidwasavailable + +const child_process = require('child_process'); + +// Function to copy data to clipboard +const pbcopy = (data) => { + return new Promise(function (resolve, reject) { + const child = child_process.spawn('pbcopy'); + + child.on('error', function (err) { + reject(err); + }); + + child.on('close', function (err) { + resolve(data); + }); + + child.stdin.write(data); + child.stdin.end(); + }); +}; + +// get args +const n = Number(process.argv.slice(2)[0]); +const r = Number(process.argv.slice(2)[1]); + +// performance optimizations +const memoize = (fn) => { + const cache = {}; + return (...args) => { + const n = args[0]; + if (n in cache) { + return cache[n]; + } + const result = fn(n); + cache[n] = result; + return result; + }; +}; + +// factorial function +const factorial = memoize((n) => { + if (n === 0 || n === 1) { + return 1; + } else { + return n * factorial(n - 1); + } +}); + +// calculate nCr +const nCr = factorial(n) / (factorial(r) * factorial(n - r)); +console.log(`${n} choose ${r} = ${nCr}`); +pbcopy(`${nCr}`); + +return nCr; diff --git a/commands/math/images/wolfram-alpha.png b/commands/math/images/wolfram-alpha.png index 6be7b785b..9e71c2c78 100644 Binary files a/commands/math/images/wolfram-alpha.png and b/commands/math/images/wolfram-alpha.png differ diff --git a/commands/math/latex-calculator.py b/commands/math/latex-calculator.py new file mode 100755 index 000000000..015188ea6 --- /dev/null +++ b/commands/math/latex-calculator.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title LaTeX Calculator +# @raycast.mode silent +# @raycast.packageName Math +# +# Optional parameters: +# @raycast.icon 🧮 +# @raycast.argument1 { "type": "text", "placeholder": "\\frac{4}{2}}", "optional": true} +# +# Documentation: +# @raycast.description Evaluate LaTeX expressions and get the product copied to your clipboard +# @raycast.author Matt Gleich +# @raycast.authorURL https://mattglei.ch + +import pyperclip +from sympy.parsing.latex import parse_latex +import sys + +result = float(parse_latex(sys.argv[1]).evalf()) + +if result.is_integer(): + result = round(result) + +pyperclip.copy(result) +print(f"Copied {result} to clipboard") + diff --git a/commands/math/random-number.sh b/commands/math/random-number.sh new file mode 100755 index 000000000..32aa01662 --- /dev/null +++ b/commands/math/random-number.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Generate Random Number +# @raycast.mode silent +# @raycast.packageName Math +# @raycast.argument1 { "type": "text", "placeholder": "From"} +# @raycast.argument2 { "type": "text", "placeholder": "To"} +# +# Optional parameters: +# @raycast.icon 🔢 +# +# Documentation: +# @raycast.description Generate a number between a given range (inclusive) and then copy the value +# @raycast.author Matt Gleich +# @raycast.authorURL https://mattglei.ch + +VALUE=$(jot -r 1 $1 $2) +echo $VALUE | pbcopy + +echo "Copied value of" $VALUE diff --git a/commands/media/apple-music/apple-music-hate-current-track.applescript b/commands/media/apple-music/apple-music-hate-current-track.applescript new file mode 100755 index 000000000..f94d75db5 --- /dev/null +++ b/commands/media/apple-music/apple-music-hate-current-track.applescript @@ -0,0 +1,15 @@ +#!/usr/bin/osascript + +# @raycast.title Hate Current Track +# @raycast.author Bryan Schuetz +# @raycast.authorURL https://github.com/bryanschuetz +# @raycast.description Let the algorithm know how you feel about the currently playing track. +# @raycast.icon images/apple-music-logo.png +# @raycast.placeholder Hate it +# @raycast.mode silent +# @raycast.packageName Apple Music +# @raycast.schemaVersion 1 + tell application "Music" + set disliked of current track to true + log "Litterally, the worst." + end tell \ No newline at end of file diff --git a/commands/media/apple-music/apple-music-love-current-track.applescript b/commands/media/apple-music/apple-music-love-current-track.applescript new file mode 100755 index 000000000..4971ffa85 --- /dev/null +++ b/commands/media/apple-music/apple-music-love-current-track.applescript @@ -0,0 +1,20 @@ +#!/usr/bin/osascript + +# @raycast.title Love Current Track +# @raycast.author Bryan Schuetz +# @raycast.authorURL https://github.com/bryanschuetz +# @raycast.description Let the algorithm know how you feel about the currently playing track. +# @raycast.icon images/apple-music-logo.png +# @raycast.placeholder Love It <3 +# @raycast.mode silent +# @raycast.packageName Apple Music +# @raycast.schemaVersion 1 + + tell application "Music" + if player state is playing then + set favorited of current track to true + log "<3 Yeah, the song is now favorited" + else + return "No track is currently playing." + end if + end tell diff --git a/commands/media/apple-music/apple-music-search.applescript b/commands/media/apple-music/apple-music-search.applescript index c2b8db0ff..c05028182 100755 --- a/commands/media/apple-music/apple-music-search.applescript +++ b/commands/media/apple-music/apple-music-search.applescript @@ -21,10 +21,13 @@ on run argv try do shell script "open /System/Applications/Music.app" tell application "Music" to activate - end try - try - do shell script "open /Applications/iTunes.app" - tell application "iTunes" to activate + set using to "Music" + on error + try + do shell script "open /Applications/iTunes.app" + tell application "iTunes" to activate + set using to "iTunes" + end try end try # Argh, the window title varies... Add your language if it's not here... @@ -33,8 +36,8 @@ on run argv set toLaunch to true repeat while toLaunch - if application "Music" is running then set toLaunch to false - if application "iTunes" is running then set toLaunch to false + if using is "Music" and application "Music" is running then set toLaunch to false + if using is "iTunes" and application "iTunes" is running then set toLaunch to false delay 0.5 end repeat diff --git a/commands/media/apple-music/apple-music-volume-down.applescript b/commands/media/apple-music/apple-music-volume-down.applescript new file mode 100755 index 000000000..8eb19e743 --- /dev/null +++ b/commands/media/apple-music/apple-music-volume-down.applescript @@ -0,0 +1,21 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Apple Music Volume Down +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/apple-music-logo.png + +# Documentation: +# @raycast.author Juan I. Serra +# @raycast.authorURL https://github.com/jiserra +# @raycast.packageName Music + +try + tell application "Music" + set sound volume to sound volume - 5 + do shell script "echo '⬇'" + end tell +end try \ No newline at end of file diff --git a/commands/media/apple-music/apple-music-volume-up.applescript b/commands/media/apple-music/apple-music-volume-up.applescript new file mode 100755 index 000000000..0c48d462d --- /dev/null +++ b/commands/media/apple-music/apple-music-volume-up.applescript @@ -0,0 +1,21 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Apple Music Volume Up +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/apple-music-logo.png + +# Documentation: +# @raycast.author Juan I. Serra +# @raycast.authorURL https://github.com/jiserra +# @raycast.packageName Music + +try + tell application "Music" + set sound volume to sound volume + 5 + do shell script "echo '⬆'" + end tell +end try \ No newline at end of file diff --git a/commands/media/apple-tv/images/apple-tv-logo.png b/commands/media/apple-tv/images/apple-tv-logo.png index 8334608ed..f8d4ae357 100644 Binary files a/commands/media/apple-tv/images/apple-tv-logo.png and b/commands/media/apple-tv/images/apple-tv-logo.png differ diff --git a/commands/media/endel/endel-alarm.sh b/commands/media/endel/endel-alarm.sh new file mode 100755 index 000000000..6f2e9d0ff --- /dev/null +++ b/commands/media/endel/endel-alarm.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set Alarm +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set Alarm in Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +open "endel://?type=alarm" diff --git a/commands/media/endel/endel-deep-focus.sh b/commands/media/endel/endel-deep-focus.sh new file mode 100755 index 000000000..d959f4d38 --- /dev/null +++ b/commands/media/endel/endel-deep-focus.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Deep Focus +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set deep focus mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=plastikman" \ No newline at end of file diff --git a/commands/media/endel/endel-focus.sh b/commands/media/endel/endel-focus.sh new file mode 100755 index 000000000..2e9e7889e --- /dev/null +++ b/commands/media/endel/endel-focus.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Focus +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set focus mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=focus" \ No newline at end of file diff --git a/commands/media/endel/endel-lullaby.sh b/commands/media/endel/endel-lullaby.sh new file mode 100755 index 000000000..e9b152950 --- /dev/null +++ b/commands/media/endel/endel-lullaby.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Lullaby +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set AI lullaby mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=grimes" \ No newline at end of file diff --git a/commands/media/endel/endel-recovery.sh b/commands/media/endel/endel-recovery.sh new file mode 100755 index 000000000..a4bb7fb9b --- /dev/null +++ b/commands/media/endel/endel-recovery.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Recovery +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set recovery mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=recovery" \ No newline at end of file diff --git a/commands/media/endel/endel-relax.sh b/commands/media/endel/endel-relax.sh new file mode 100755 index 000000000..60956ab0e --- /dev/null +++ b/commands/media/endel/endel-relax.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Relax +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set relax mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=relax" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-deepwork.sh b/commands/media/endel/endel-scenarios-deepwork.sh new file mode 100755 index 000000000..ad924dbcd --- /dev/null +++ b/commands/media/endel/endel-scenarios-deepwork.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Deep Work +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Deep Work scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=working&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-homework.sh b/commands/media/endel/endel-scenarios-homework.sh new file mode 100755 index 000000000..5020c3d16 --- /dev/null +++ b/commands/media/endel/endel-scenarios-homework.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Homework +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Homework scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=studies&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-meditate.sh b/commands/media/endel/endel-scenarios-meditate.sh new file mode 100755 index 000000000..ea1abd60a --- /dev/null +++ b/commands/media/endel/endel-scenarios-meditate.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Meditate +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Meditate scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=meditation&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-powernap.sh b/commands/media/endel/endel-scenarios-powernap.sh new file mode 100755 index 000000000..c3cfe4230 --- /dev/null +++ b/commands/media/endel/endel-scenarios-powernap.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Power Nap +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Power Nap scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=powerNap&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-read.sh b/commands/media/endel/endel-scenarios-read.sh new file mode 100755 index 000000000..325e49589 --- /dev/null +++ b/commands/media/endel/endel-scenarios-read.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Read +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Read scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=reading&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-selfcare.sh b/commands/media/endel/endel-scenarios-selfcare.sh new file mode 100755 index 000000000..eb911cdb3 --- /dev/null +++ b/commands/media/endel/endel-scenarios-selfcare.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Self Care +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Self Care scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=selfCare&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-unwind.sh b/commands/media/endel/endel-scenarios-unwind.sh new file mode 100755 index 000000000..0a5f58a58 --- /dev/null +++ b/commands/media/endel/endel-scenarios-unwind.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Unwind +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Unwind scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=unwind&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-workout.sh b/commands/media/endel/endel-scenarios-workout.sh new file mode 100755 index 000000000..c217f7a8e --- /dev/null +++ b/commands/media/endel/endel-scenarios-workout.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Workout +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Workout scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=sports&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-scenarios-yoga.sh b/commands/media/endel/endel-scenarios-yoga.sh new file mode 100755 index 000000000..23330f64c --- /dev/null +++ b/commands/media/endel/endel-scenarios-yoga.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Yoga +# @raycast.mode silent +# @raycast.packageName Endel +# @raycast.argument1 { "type": "text", "placeholder": "Minutes", "percentEncoded": false} +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Run Yoga scenario at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +MINUTES=$1 +MINUTES=$((MINUTES * 60)) +open "endel://?type=scenario&value=yoga&duration=$MINUTES" \ No newline at end of file diff --git a/commands/media/endel/endel-sleep.sh b/commands/media/endel/endel-sleep.sh new file mode 100755 index 000000000..f77f7480c --- /dev/null +++ b/commands/media/endel/endel-sleep.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Sleep +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set focus mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=sleep" \ No newline at end of file diff --git a/commands/media/endel/endel-study.sh b/commands/media/endel/endel-study.sh new file mode 100755 index 000000000..bf6903e87 --- /dev/null +++ b/commands/media/endel/endel-study.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Study +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set study mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=study" \ No newline at end of file diff --git a/commands/media/endel/endel-timer.sh b/commands/media/endel/endel-timer.sh new file mode 100755 index 000000000..556b09690 --- /dev/null +++ b/commands/media/endel/endel-timer.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set Timer +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set Timer in Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + +open "endel://?type=timer" \ No newline at end of file diff --git a/commands/media/endel/endel-wisdom.sh b/commands/media/endel/endel-wisdom.sh new file mode 100755 index 000000000..8c542d487 --- /dev/null +++ b/commands/media/endel/endel-wisdom.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Limitation: Endel URL scheme is not final and could be changed in the future + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Wiggly Wisdom +# @raycast.mode silent +# @raycast.packageName Endel +# +# Optional parameters: +# @raycast.icon images/endel.png +# @raycast.needsConfirmation false +# +# Documentation: +# @raycast.description Set wiggly wisdom mode at Endel +# @raycast.author Sergey Korobyin +# @raycast.authorURL https://github.com/huangsemao + + +open "endel://?type=playing_mode&value=alanwatts" \ No newline at end of file diff --git a/commands/media/endel/images/endel.png b/commands/media/endel/images/endel.png new file mode 100644 index 000000000..e6985ad8f Binary files /dev/null and b/commands/media/endel/images/endel.png differ diff --git a/commands/media/foobar2000/foobar2000-next.applescript b/commands/media/foobar2000/foobar2000-next.applescript new file mode 100755 index 000000000..93b1be5b0 --- /dev/null +++ b/commands/media/foobar2000/foobar2000-next.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Next foobar2000 +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/foobar2000.png +# @raycast.packageName foobar2000 + +# Documentation: +# @raycast.description Shortcuts to next foobar2000 for Mac v2.3.0 +# @raycast.author Jing Li +# @raycast.authorURL https://github.com/lixeon + +tell application "System Events" + tell process "foobar2000" + click menu item "Next" of menu "Playback" of menu bar item "Playback" of menu bar 1 + end tell +end tell + diff --git a/commands/media/foobar2000/foobar2000-pause.applescript b/commands/media/foobar2000/foobar2000-pause.applescript new file mode 100755 index 000000000..2f4a3e86b --- /dev/null +++ b/commands/media/foobar2000/foobar2000-pause.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Pause foobar2000 +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/foobar2000.png +# @raycast.packageName foobar2000 + +# Documentation: +# @raycast.description Shortcuts to pause foobar2000 for Mac v2.3.0 +# @raycast.author Jing Li +# @raycast.authorURL https://github.com/lixeon + +tell application "System Events" + tell process "foobar2000" + click menu item "Pause" of menu "Playback" of menu bar item "Playback" of menu bar 1 + end tell +end tell + diff --git a/commands/media/foobar2000/foobar2000-pervious.applescript b/commands/media/foobar2000/foobar2000-pervious.applescript new file mode 100755 index 000000000..8d06ea165 --- /dev/null +++ b/commands/media/foobar2000/foobar2000-pervious.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Previous foobar2000 +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/foobar2000.png +# @raycast.packageName foobar2000 + +# Documentation: +# @raycast.description Shortcuts to Previous foobar2000 for Mac v2.3.0 +# @raycast.author Jing Li +# @raycast.authorURL https://github.com/lixeon + +tell application "System Events" + tell process "foobar2000" + click menu item "Previous" of menu "Playback" of menu bar item "Playback" of menu bar 1 + end tell +end tell + diff --git a/commands/media/foobar2000/images/foobar2000.png b/commands/media/foobar2000/images/foobar2000.png new file mode 100644 index 000000000..4f74bc3ba Binary files /dev/null and b/commands/media/foobar2000/images/foobar2000.png differ diff --git a/commands/media/lowfi/lowfi.sh b/commands/media/lowfi/lowfi.sh new file mode 100755 index 000000000..04248cf5c --- /dev/null +++ b/commands/media/lowfi/lowfi.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Note: lowfi and WezTerm required +# +# Install lowfi at https://github.com/talwat/lowfi +# or by cargo: cargo install lowfi +# +# Install WezTerm at https://wezfurlong.org/wezterm/install/macos.html +# or by homebrew: brew install --cask wezterm + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Lowfi +# @raycast.mode compact +# @raycast.packageName Music + +# Optional parameters: +# @raycast.icon + +export PATH="$HOME/.cargo/bin:$PATH" + +# Check if lowfi is already running +if pgrep -f "lowfi$" > /dev/null; then + echo "Found existing lowfi process" + + # Use AppleScript to find and focus the lowfi window + osascript -e ' + -- First activate WezTerm application + tell application "WezTerm" to activate + + -- Then focus the specific window + tell application "System Events" + tell process "wezterm-gui" + -- Get all windows + set allWindows to every window + repeat with w in allWindows + if title of w contains "lowfi" then + -- Try multiple methods to bring window to front + set frontmost to true + set value of attribute "AXMain" of w to true + perform action "AXRaise" of w + set position of w to {0, 40} + -- Click the window to ensure focus + click w + return "Found and focused lowfi window" + end if + end repeat + end tell + end tell + return "Could not find lowfi window" + ' +else + echo "Starting new lowfi instance" + /Applications/WezTerm.app/Contents/MacOS/wezterm start -- lowfi & +fi diff --git a/commands/media/sonos/README.md b/commands/media/sonos/README.md new file mode 100644 index 000000000..2b34adcfe --- /dev/null +++ b/commands/media/sonos/README.md @@ -0,0 +1,7 @@ +These controls require the soco-cli tool to be installed from https://github.com/avantrec/soco-cli + +This is usually all you need (possibly using `pip3`) + +``` +pip install soco-cli +``` diff --git a/commands/media/sonos/images/sonos-logo.png b/commands/media/sonos/images/sonos-logo.png new file mode 100644 index 000000000..1b83d7ed7 Binary files /dev/null and b/commands/media/sonos/images/sonos-logo.png differ diff --git a/commands/media/sonos/sonos-play-favorite.sh b/commands/media/sonos/sonos-play-favorite.sh new file mode 100755 index 000000000..6ec892c15 --- /dev/null +++ b/commands/media/sonos/sonos-play-favorite.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Dependency: This script requires `soco` cli installed: https://github.com/avantrec/soco-cli +# Install via pip: `pip install soco-cli` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Play Favorite +# @raycast.mode silent +# @raycast.packageName Sonos + +# Optional parameters: +# @raycast.icon images/sonos-logo.png + +# Documentation: +# @raycast.description Play from Sonos favorites. +# @raycast.author David Blackman +# @raycast.authorURL https://github.com/whizziwig + +# @raycast.argument1 { "type": "text", "placeholder": "Favorite Search" } + +if ! command -v soco &> /dev/null; then + echo "soco command is required (https://github.com/avantrec/soco-cli)."; + exit 1; +fi + +soco _all_ play_fav "$1" \ No newline at end of file diff --git a/commands/media/sonos/sonos-volume-down.sh b/commands/media/sonos/sonos-volume-down.sh new file mode 100755 index 000000000..5a861d819 --- /dev/null +++ b/commands/media/sonos/sonos-volume-down.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Dependency: This script requires `soco` cli installed: https://github.com/avantrec/soco-cli +# Install via pip: `pip install soco-cli` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Volume Down +# @raycast.mode silent +# @raycast.packageName Sonos + +# Optional parameters: +# @raycast.icon images/sonos-logo.png + +# Documentation: +# @raycast.description Raises volume of Sonos. +# @raycast.author David Blackman +# @raycast.authorURL https://github.com/whizziwig + +if ! command -v soco &> /dev/null; then + echo "soco command is required (https://github.com/avantrec/soco-cli)."; + exit 1; +fi + +soco _all_ relative_volume -5 \ No newline at end of file diff --git a/commands/media/sonos/sonos-volume-set.sh b/commands/media/sonos/sonos-volume-set.sh new file mode 100755 index 000000000..c0f1144d8 --- /dev/null +++ b/commands/media/sonos/sonos-volume-set.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Dependency: This script requires `soco` cli installed: https://github.com/avantrec/soco-cli +# Install via pip: `pip install soco-cli` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set Volume +# @raycast.mode silent +# @raycast.packageName Sonos + +# Optional parameters: +# @raycast.icon images/sonos-logo.png + +# Documentation: +# @raycast.description Sets volume of Sonos. +# @raycast.author David Blackman +# @raycast.authorURL https://github.com/whizziwig + +# @raycast.argument1 { "type": "text", "placeholder": "Level" } + +if ! command -v soco &> /dev/null; then + echo "soco command is required (https://github.com/avantrec/soco-cli)."; + exit 1; +fi + +soco _all_ volume $1 \ No newline at end of file diff --git a/commands/media/sonos/sonos-volume-up.sh b/commands/media/sonos/sonos-volume-up.sh new file mode 100755 index 000000000..1b0ee09c8 --- /dev/null +++ b/commands/media/sonos/sonos-volume-up.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Dependency: This script requires `soco` cli installed: https://github.com/avantrec/soco-cli +# Install via pip: `pip install soco-cli` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Volume Up +# @raycast.mode silent +# @raycast.packageName Sonos + +# Optional parameters: +# @raycast.icon images/sonos-logo.png + +# Documentation: +# @raycast.description Raises volume of Sonos. +# @raycast.author David Blackman +# @raycast.authorURL https://github.com/whizziwig + +if ! command -v soco &> /dev/null; then + echo "soco command is required (https://github.com/avantrec/soco-cli)."; + exit 1; +fi + +soco _all_ relative_volume +5 \ No newline at end of file diff --git a/commands/media/speaker-setup/Left.mp3 b/commands/media/speaker-setup/Left.mp3 new file mode 100644 index 000000000..4b9618863 Binary files /dev/null and b/commands/media/speaker-setup/Left.mp3 differ diff --git a/commands/media/speaker-setup/Right.mp3 b/commands/media/speaker-setup/Right.mp3 new file mode 100644 index 000000000..53559d18d Binary files /dev/null and b/commands/media/speaker-setup/Right.mp3 differ diff --git a/commands/media/speaker-setup/speaker-setup.sh b/commands/media/speaker-setup/speaker-setup.sh new file mode 100755 index 000000000..6ca3d983a --- /dev/null +++ b/commands/media/speaker-setup/speaker-setup.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Speaker Setup +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 🔊 + +# Documentation: +# @raycast.author Kailash Yellareddy +# @raycast.authorURL https://github.com/kyellareddy + +# SETUP: +# 1. Download the files Left.mp3 and Right.mp3 +# 2. Replace "Left.mp3" in line 21 with the file path for the file Left.mp3 +# 3. Replace "Right.mp3" in line 24 with the file path for the file Right.mp3 + +# Play the first audio file +afplay Left.mp3 + +# Play the second audio file +afplay Right.mp3 diff --git a/commands/apps/spotify/create-spotify-command.js b/commands/media/spotify/create-spotify-command.js similarity index 96% rename from commands/apps/spotify/create-spotify-command.js rename to commands/media/spotify/create-spotify-command.js index a257c2754..02357a18a 100755 --- a/commands/apps/spotify/create-spotify-command.js +++ b/commands/media/spotify/create-spotify-command.js @@ -1,5 +1,20 @@ #!/usr/bin/env node +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Create Spotify Command +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon ./images/spotify-create.png +// @raycast.packageName Spotify +// @raycast.argument1 { "type": "text", "placeholder": "Discover Weekly" } + +// Documentation: +// @raycast.description Create Spotify Shortcut Command from the Spotify URL that's in your clipboard +// @raycast.author Nichlas Wærnes Andersen +// @raycast.authorURL https://twitter.com/nichlaswa + import fs from "fs"; import { execSync } from "child_process"; @@ -24,7 +39,7 @@ const scriptContent = `#!/usr/bin/osascript # @raycast.packageName Spotify # # Optional parameters: -# @raycast.icon ./images/logo.png +# @raycast.icon ./images/spotify-logo.png # # Documentation: # @raycast.description Play ${commandName} on Spotify @@ -65,18 +80,3 @@ if (!/track|album|playlist/.test(type)) { ); console.log(`${commandName} is ready`); } - -// Required parameters: -// @raycast.schemaVersion 1 -// @raycast.title Create Spotify Command -// @raycast.mode silent - -// Optional parameters: -// @raycast.icon ./images/create.png -// @raycast.packageName Spotify -// @raycast.argument1 { "type": "text", "placeholder": "Discover Weekly" } - -// Documentation: -// @raycast.description Create Spotify Shortcut Command from the Spotify URL that's in your clipboard -// @raycast.author Nichlas Wærnes Andersen -// @raycast.authorURL https://twitter.com/nichlaswa diff --git a/commands/media/spotify/images/spotify-create.png b/commands/media/spotify/images/spotify-create.png new file mode 100644 index 000000000..583b8e0ea Binary files /dev/null and b/commands/media/spotify/images/spotify-create.png differ diff --git a/commands/media/tidal/images/tidal-logo.png b/commands/media/tidal/images/tidal-logo.png new file mode 100644 index 000000000..1d4003aa6 Binary files /dev/null and b/commands/media/tidal/images/tidal-logo.png differ diff --git a/commands/media/tidal/tidal-next-track.applescript b/commands/media/tidal/tidal-next-track.applescript new file mode 100755 index 000000000..f6935d0a2 --- /dev/null +++ b/commands/media/tidal/tidal-next-track.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Next Track +# @raycast.mode silent +# @raycast.packagename Tidal + +# Optional parameters +# @raycast.icon images/tidal-logo.png + +# Documentation: +# @raycast.author Charles Harries +# @raycast.authorURL https://github.com/charlesharries +# @raycast.description Skip to the next track in Tidal. + +tell application "System Events" + tell process "TIDAL" + click menu item "Next" of menu "Playback" of menu bar 1 + end tell +end tell +return \ No newline at end of file diff --git a/commands/media/tidal/tidal-pause.applescript b/commands/media/tidal/tidal-pause.applescript new file mode 100755 index 000000000..d3d0b94cf --- /dev/null +++ b/commands/media/tidal/tidal-pause.applescript @@ -0,0 +1,24 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Pause +# @raycast.mode silent +# @raycast.packagename Tidal + +# Optional parameters +# @raycast.icon images/tidal-logo.png + +# Documentation: +# @raycast.author Charles Harries +# @raycast.authorURL https://github.com/charlesharries +# @raycast.description Pause the current track in Tidal. + +tell application "System Events" + tell process "TIDAL" + if name of menu item 0 of menu "Playback" of menu bar 1 is "Pause" then + click menu item "Pause" of menu "Playback" of menu bar 1 + end if + end tell +end tell +return \ No newline at end of file diff --git a/commands/media/tidal/tidal-play.applescript b/commands/media/tidal/tidal-play.applescript new file mode 100755 index 000000000..147cbd637 --- /dev/null +++ b/commands/media/tidal/tidal-play.applescript @@ -0,0 +1,24 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Play +# @raycast.mode silent +# @raycast.packagename Tidal + +# Optional parameters +# @raycast.icon images/tidal-logo.png + +# Documentation: +# @raycast.author Charles Harries +# @raycast.authorURL https://github.com/charlesharries +# @raycast.description Play the current track in Tidal. + +tell application "System Events" + tell process "TIDAL" + if name of menu item 0 of menu "Playback" of menu bar 1 is "Play" then + click menu item "Play" of menu "Playback" of menu bar 1 + end if + end tell +end tell +return \ No newline at end of file diff --git a/commands/media/tidal/tidal-previous-track.applescript b/commands/media/tidal/tidal-previous-track.applescript new file mode 100755 index 000000000..d225429c1 --- /dev/null +++ b/commands/media/tidal/tidal-previous-track.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Previous Track +# @raycast.mode silent +# @raycast.packagename Tidal + +# Optional parameters +# @raycast.icon images/tidal-logo.png + +# Documentation: +# @raycast.author Charles Harries +# @raycast.authorURL https://github.com/charlesharries +# @raycast.description Skip back to the previous track in Tidal. + +tell application "System Events" + tell process "TIDAL" + click menu item "Previous" of menu "Playback" of menu bar 1 + end tell +end tell +return \ No newline at end of file diff --git a/commands/media/tidal/tidal.applescript b/commands/media/tidal/tidal.applescript new file mode 100755 index 000000000..40f9cce4a --- /dev/null +++ b/commands/media/tidal/tidal.applescript @@ -0,0 +1,26 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Play/Pause +# @raycast.mode silent +# @raycast.packagename Tidal + +# Optional parameters +# @raycast.icon images/tidal-logo.png + +# Documentation: +# @raycast.author Cebrail AKTAS +# @raycast.authorURL https://github.com/AktasC +# @raycast.description Play/Pause Tidal + +tell application "System Events" + tell process "TIDAL" + click first menu item of menu "Playback" of menu bar 1 + if name of first menu item of menu "Playback" of menu bar 1 is "Play" then + log "▶️" + else + log "⏸" + end if + end tell +end tell diff --git a/commands/navigation/hide-application.applescript b/commands/navigation/hide-application.applescript new file mode 100755 index 000000000..f9574a4fd --- /dev/null +++ b/commands/navigation/hide-application.applescript @@ -0,0 +1,18 @@ +#!/usr/bin/osascript + +# @raycast.schemaVersion 1 +# @raycast.author Chris Bailey +# @raycast.authorURL https://raycast.com/that70schris +# @raycast.description Easily hide your foremost application +# @raycast.packageName Navigation +# @raycast.title Hide Current Application +# @raycast.mode silent +# @raycast.icon 🫥 + +tell application "System Events" + tell (first process whose frontmost is true) + set _name to displayed name + end tell + + set visible of application process _name to false +end tell diff --git a/commands/navigation/images/folder-applications.png b/commands/navigation/images/folder-applications.png index ba777d123..8ef11210e 100644 Binary files a/commands/navigation/images/folder-applications.png and b/commands/navigation/images/folder-applications.png differ diff --git a/commands/navigation/images/folder-default.png b/commands/navigation/images/folder-default.png index 992295525..1cd6de045 100644 Binary files a/commands/navigation/images/folder-default.png and b/commands/navigation/images/folder-default.png differ diff --git a/commands/navigation/images/folder-desktop.png b/commands/navigation/images/folder-desktop.png index c6c7b645d..7efd10943 100644 Binary files a/commands/navigation/images/folder-desktop.png and b/commands/navigation/images/folder-desktop.png differ diff --git a/commands/navigation/images/folder-documents.png b/commands/navigation/images/folder-documents.png index 39ca27d61..40964eafc 100644 Binary files a/commands/navigation/images/folder-documents.png and b/commands/navigation/images/folder-documents.png differ diff --git a/commands/navigation/images/folder-downloads.png b/commands/navigation/images/folder-downloads.png index ca16c3e91..1ce08d14c 100644 Binary files a/commands/navigation/images/folder-downloads.png and b/commands/navigation/images/folder-downloads.png differ diff --git a/commands/navigation/images/folder-home.png b/commands/navigation/images/folder-home.png index 23c09cb2f..a62f2eeea 100644 Binary files a/commands/navigation/images/folder-home.png and b/commands/navigation/images/folder-home.png differ diff --git a/commands/navigation/images/folder-library.png b/commands/navigation/images/folder-library.png index 0b53780df..f1a65591c 100644 Binary files a/commands/navigation/images/folder-library.png and b/commands/navigation/images/folder-library.png differ diff --git a/commands/navigation/images/iterm-logo.png b/commands/navigation/images/iterm-logo.png index 18f357c5d..65a06d993 100644 Binary files a/commands/navigation/images/iterm-logo.png and b/commands/navigation/images/iterm-logo.png differ diff --git a/commands/navigation/images/quit.png b/commands/navigation/images/quit.png index 07fb5e1b3..9e9ebe930 100644 Binary files a/commands/navigation/images/quit.png and b/commands/navigation/images/quit.png differ diff --git a/commands/navigation/images/restart.png b/commands/navigation/images/restart.png index 7cd2f1fdf..0d9964dac 100644 Binary files a/commands/navigation/images/restart.png and b/commands/navigation/images/restart.png differ diff --git a/commands/navigation/open-last-downloaded.sh b/commands/navigation/open-last-downloaded.sh new file mode 100755 index 000000000..062c76356 --- /dev/null +++ b/commands/navigation/open-last-downloaded.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Last Downloaded +# @raycast.mode silent +# @raycast.packageName Navigation + +# Optional parameters: +# @raycast.icon images/folder-downloads.png + +# Documentation: +# @raycast.description Opens the last file that was downloaded + +open ~/"Downloads/$(ls -tr ~/Downloads/ | tail -n 1)" \ No newline at end of file diff --git a/commands/password-managers/bitwarden/images/bitwarden.png b/commands/password-managers/bitwarden/images/bitwarden.png deleted file mode 100644 index f9130f753..000000000 Binary files a/commands/password-managers/bitwarden/images/bitwarden.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/copy-first-matching-password.png b/commands/password-managers/bitwarden/images/copy-first-matching-password.png deleted file mode 100644 index 0977fd5d0..000000000 Binary files a/commands/password-managers/bitwarden/images/copy-first-matching-password.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/copy-first-matching-totp.png b/commands/password-managers/bitwarden/images/copy-first-matching-totp.png deleted file mode 100644 index 598e0311b..000000000 Binary files a/commands/password-managers/bitwarden/images/copy-first-matching-totp.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/create-text-send.png b/commands/password-managers/bitwarden/images/create-text-send.png deleted file mode 100644 index 267e7aa33..000000000 Binary files a/commands/password-managers/bitwarden/images/create-text-send.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/delete-send.png b/commands/password-managers/bitwarden/images/delete-send.png deleted file mode 100644 index 95a6dc6dd..000000000 Binary files a/commands/password-managers/bitwarden/images/delete-send.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/edit-send.png b/commands/password-managers/bitwarden/images/edit-send.png deleted file mode 100644 index 3570c44bc..000000000 Binary files a/commands/password-managers/bitwarden/images/edit-send.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/list-sends.png b/commands/password-managers/bitwarden/images/list-sends.png deleted file mode 100644 index 02f73ec9e..000000000 Binary files a/commands/password-managers/bitwarden/images/list-sends.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/lock.png b/commands/password-managers/bitwarden/images/lock.png deleted file mode 100644 index e38dbeae8..000000000 Binary files a/commands/password-managers/bitwarden/images/lock.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/log-in.png b/commands/password-managers/bitwarden/images/log-in.png deleted file mode 100644 index 12441d385..000000000 Binary files a/commands/password-managers/bitwarden/images/log-in.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/log-out.png b/commands/password-managers/bitwarden/images/log-out.png deleted file mode 100644 index f17e26ab7..000000000 Binary files a/commands/password-managers/bitwarden/images/log-out.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/receive-text-send.png b/commands/password-managers/bitwarden/images/receive-text-send.png deleted file mode 100644 index 6898ed0b4..000000000 Binary files a/commands/password-managers/bitwarden/images/receive-text-send.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/search-vault-items.png b/commands/password-managers/bitwarden/images/search-vault-items.png deleted file mode 100644 index ea45f9ade..000000000 Binary files a/commands/password-managers/bitwarden/images/search-vault-items.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/status.png b/commands/password-managers/bitwarden/images/status.png deleted file mode 100644 index 63c1c08e1..000000000 Binary files a/commands/password-managers/bitwarden/images/status.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/images/unlock.png b/commands/password-managers/bitwarden/images/unlock.png deleted file mode 100644 index 69979e231..000000000 Binary files a/commands/password-managers/bitwarden/images/unlock.png and /dev/null differ diff --git a/commands/password-managers/bitwarden/README.md b/commands/productivity/bitwarden/README.md similarity index 94% rename from commands/password-managers/bitwarden/README.md rename to commands/productivity/bitwarden/README.md index 8f36e405f..6dbd1c58d 100755 --- a/commands/password-managers/bitwarden/README.md +++ b/commands/productivity/bitwarden/README.md @@ -5,6 +5,7 @@ A package of script commands to interact with [Bitwarden Vaults](https://bitward - [Dependencies](#dependencies) - [Authentication Command Usage](#authentication-command-usage) * [Log In](#log-in) + * [Log In with API Key](#log-in-with-api-key) * [Log Out](#log-out) * [Lock Session](#lock-session) * [Unlock Session](#unlock-session) @@ -44,7 +45,7 @@ Additional installation options are available in the tools' respective documenta This command executes in `silent` mode, and both authenticates and unlocks a Bitwarden account session. -This is the only template command in the package. **If you use multifactor authentication to log in to your Bitwarden account, be sure to set the value of the `MFA_METHOD` variable.** The [values available to use](https://bitwarden.com/help/article/cli/#enums) are: +**If you use multifactor authentication to log in to your Bitwarden account, be sure to set the value of the `MFA_METHOD` variable.** The [values available to use](https://bitwarden.com/help/article/cli/#enums) are: | MFA Method | Value | |-------------------|:-----:| @@ -54,6 +55,12 @@ This is the only template command in the package. **If you use multifactor authe If you _do not_ use multifactor authentication to log in to your Bitwarden account, leave this variable set to `""`, and optionally remove the MFA Code argument (or leave it blank when logging in). Enabling multifactor authentication is encouraged. +### Log In with API Key + + + +This command executes in `silent` mode, and both authenticates and unlocks a Bitwarden account session using an alternative authentication method required when Bitwarden thinks the authentication comes from bot traffic. See the [Bitwarden CLI documentation](https://bitwarden.com/help/article/cli-auth-challenges/) for more information. Be sure to set the values of the `BW_CLIENTID` and `BW_CLIENTSECRET` variables. These credentials can be found in the account settings of [the web vault](https://vault.bitwarden.com/#/settings/account) (in the "API Key" section). + ### Log Out diff --git a/commands/password-managers/bitwarden/copy-first-matching-password.sh b/commands/productivity/bitwarden/copy-first-matching-password.sh similarity index 100% rename from commands/password-managers/bitwarden/copy-first-matching-password.sh rename to commands/productivity/bitwarden/copy-first-matching-password.sh diff --git a/commands/password-managers/bitwarden/copy-first-matching-totp.sh b/commands/productivity/bitwarden/copy-first-matching-totp.sh similarity index 100% rename from commands/password-managers/bitwarden/copy-first-matching-totp.sh rename to commands/productivity/bitwarden/copy-first-matching-totp.sh diff --git a/commands/password-managers/bitwarden/create-text-send.sh b/commands/productivity/bitwarden/create-text-send.sh similarity index 100% rename from commands/password-managers/bitwarden/create-text-send.sh rename to commands/productivity/bitwarden/create-text-send.sh diff --git a/commands/password-managers/bitwarden/delete-send.sh b/commands/productivity/bitwarden/delete-send.sh similarity index 100% rename from commands/password-managers/bitwarden/delete-send.sh rename to commands/productivity/bitwarden/delete-send.sh diff --git a/commands/password-managers/bitwarden/edit-send.sh b/commands/productivity/bitwarden/edit-send.sh similarity index 100% rename from commands/password-managers/bitwarden/edit-send.sh rename to commands/productivity/bitwarden/edit-send.sh diff --git a/commands/productivity/bitwarden/images/bitwarden.png b/commands/productivity/bitwarden/images/bitwarden.png new file mode 100644 index 000000000..4b4549291 Binary files /dev/null and b/commands/productivity/bitwarden/images/bitwarden.png differ diff --git a/commands/productivity/bitwarden/images/copy-first-matching-password.png b/commands/productivity/bitwarden/images/copy-first-matching-password.png new file mode 100644 index 000000000..b405ba99c Binary files /dev/null and b/commands/productivity/bitwarden/images/copy-first-matching-password.png differ diff --git a/commands/productivity/bitwarden/images/copy-first-matching-totp.png b/commands/productivity/bitwarden/images/copy-first-matching-totp.png new file mode 100644 index 000000000..2041bcbf7 Binary files /dev/null and b/commands/productivity/bitwarden/images/copy-first-matching-totp.png differ diff --git a/commands/productivity/bitwarden/images/create-text-send.png b/commands/productivity/bitwarden/images/create-text-send.png new file mode 100644 index 000000000..af2ef0c93 Binary files /dev/null and b/commands/productivity/bitwarden/images/create-text-send.png differ diff --git a/commands/productivity/bitwarden/images/delete-send.png b/commands/productivity/bitwarden/images/delete-send.png new file mode 100644 index 000000000..c1c8d5b0f Binary files /dev/null and b/commands/productivity/bitwarden/images/delete-send.png differ diff --git a/commands/productivity/bitwarden/images/edit-send.png b/commands/productivity/bitwarden/images/edit-send.png new file mode 100644 index 000000000..99d730cfb Binary files /dev/null and b/commands/productivity/bitwarden/images/edit-send.png differ diff --git a/commands/productivity/bitwarden/images/list-sends.png b/commands/productivity/bitwarden/images/list-sends.png new file mode 100644 index 000000000..6c7b51e97 Binary files /dev/null and b/commands/productivity/bitwarden/images/list-sends.png differ diff --git a/commands/productivity/bitwarden/images/lock.png b/commands/productivity/bitwarden/images/lock.png new file mode 100644 index 000000000..8126fd8a9 Binary files /dev/null and b/commands/productivity/bitwarden/images/lock.png differ diff --git a/commands/productivity/bitwarden/images/log-in-apikey.png b/commands/productivity/bitwarden/images/log-in-apikey.png new file mode 100644 index 000000000..dbe89efcf Binary files /dev/null and b/commands/productivity/bitwarden/images/log-in-apikey.png differ diff --git a/commands/productivity/bitwarden/images/log-in.png b/commands/productivity/bitwarden/images/log-in.png new file mode 100644 index 000000000..c4fcb6985 Binary files /dev/null and b/commands/productivity/bitwarden/images/log-in.png differ diff --git a/commands/productivity/bitwarden/images/log-out.png b/commands/productivity/bitwarden/images/log-out.png new file mode 100644 index 000000000..fdcdb2696 Binary files /dev/null and b/commands/productivity/bitwarden/images/log-out.png differ diff --git a/commands/productivity/bitwarden/images/receive-text-send.png b/commands/productivity/bitwarden/images/receive-text-send.png new file mode 100644 index 000000000..270e298c9 Binary files /dev/null and b/commands/productivity/bitwarden/images/receive-text-send.png differ diff --git a/commands/productivity/bitwarden/images/search-vault-items.png b/commands/productivity/bitwarden/images/search-vault-items.png new file mode 100644 index 000000000..7782b8c82 Binary files /dev/null and b/commands/productivity/bitwarden/images/search-vault-items.png differ diff --git a/commands/productivity/bitwarden/images/status.png b/commands/productivity/bitwarden/images/status.png new file mode 100644 index 000000000..0134d1383 Binary files /dev/null and b/commands/productivity/bitwarden/images/status.png differ diff --git a/commands/productivity/bitwarden/images/unlock.png b/commands/productivity/bitwarden/images/unlock.png new file mode 100644 index 000000000..182c79f2f Binary files /dev/null and b/commands/productivity/bitwarden/images/unlock.png differ diff --git a/commands/password-managers/bitwarden/list-sends.sh b/commands/productivity/bitwarden/list-sends.sh similarity index 100% rename from commands/password-managers/bitwarden/list-sends.sh rename to commands/productivity/bitwarden/list-sends.sh diff --git a/commands/password-managers/bitwarden/lock.sh b/commands/productivity/bitwarden/lock.sh similarity index 100% rename from commands/password-managers/bitwarden/lock.sh rename to commands/productivity/bitwarden/lock.sh diff --git a/commands/productivity/bitwarden/log-in-apikey.template.sh b/commands/productivity/bitwarden/log-in-apikey.template.sh new file mode 100755 index 000000000..376e19d60 --- /dev/null +++ b/commands/productivity/bitwarden/log-in-apikey.template.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Dependency: This script requires the Bitwarden CLI: +# https://bitwarden.com/help/article/cli/ +# +# Install via homebrew: `brew install bitwarden-cli` + +# These values can be found in the "API Key" section of a web vault: +# https://vault.bitwarden.com/#/settings/account +BW_CLIENTID="" +BW_CLIENTSECRET="" + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Log In +# @raycast.mode silent +# +# Optional parameters: +# @raycast.packageName Bitwarden +# @raycast.icon images/bitwarden.png +# @raycast.argument1 { "type": "text", "placeholder": "Master Password", "secure": true } +# +# Documentation +# @raycast.author Marcel Bochtler +# @raycast.authorURL https://github.com/MarcelBochtler +# @raycast.description Log in to Bitwarden using an API key. + +if [ -z "$BW_CLIENTID" ] || [ -z "$BW_CLIENTSECRET" ]; then + echo "Error: API key not set." + exit 1 +fi + +login_token=$(BW_CLIENTID=$BW_CLIENTID BW_CLIENTSECRET=$BW_CLIENTSECRET bw --raw login --apikey) +login_status=$? + +if [ $login_status -ne 0 ]; then + echo $login_token + exit 1 +fi + +unlock_token=$(bw --raw unlock "$1") +unlock_status=$? + +if [ $unlock_status -eq 0 ]; then + security add-generic-password -U -a ${USER} -s raycast-bitwarden -j "Bitwarden session token for use with Raycast" -w $unlock_token + echo "Login successful! Your session is now unlocked." + exit 0 +else + echo $unlock_token + exit 1 +fi diff --git a/commands/password-managers/bitwarden/log-in.template.sh b/commands/productivity/bitwarden/log-in.template.sh similarity index 100% rename from commands/password-managers/bitwarden/log-in.template.sh rename to commands/productivity/bitwarden/log-in.template.sh diff --git a/commands/password-managers/bitwarden/log-out.sh b/commands/productivity/bitwarden/log-out.sh similarity index 100% rename from commands/password-managers/bitwarden/log-out.sh rename to commands/productivity/bitwarden/log-out.sh diff --git a/commands/password-managers/bitwarden/receive-text-send.sh b/commands/productivity/bitwarden/receive-text-send.sh similarity index 100% rename from commands/password-managers/bitwarden/receive-text-send.sh rename to commands/productivity/bitwarden/receive-text-send.sh diff --git a/commands/password-managers/bitwarden/search-vault-items.sh b/commands/productivity/bitwarden/search-vault-items.sh similarity index 100% rename from commands/password-managers/bitwarden/search-vault-items.sh rename to commands/productivity/bitwarden/search-vault-items.sh diff --git a/commands/password-managers/bitwarden/status.sh b/commands/productivity/bitwarden/status.sh similarity index 100% rename from commands/password-managers/bitwarden/status.sh rename to commands/productivity/bitwarden/status.sh diff --git a/commands/password-managers/bitwarden/unlock.sh b/commands/productivity/bitwarden/unlock.sh similarity index 100% rename from commands/password-managers/bitwarden/unlock.sh rename to commands/productivity/bitwarden/unlock.sh diff --git a/commands/productivity/imgur/imgur-upload-clipboard-image.template.sh b/commands/productivity/imgur/imgur-upload-clipboard-image.template.sh index cebff8ced..3242c3c59 100755 --- a/commands/productivity/imgur/imgur-upload-clipboard-image.template.sh +++ b/commands/productivity/imgur/imgur-upload-clipboard-image.template.sh @@ -33,7 +33,7 @@ if [ -z "$m" ]; then exit -1 fi -#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous useage as auth type) +#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous usage as auth type) client_id="" #CAN NOT BE EMPTY if [ "$client_id" == "" ]; then @@ -80,7 +80,7 @@ else delete_hash="${output##*}" delete_hash="${delete_hash%%*}" - echo -n "$url" | pbcopy + echo -n "$url" | sed 's/\\\//\//g' | pbcopy jobdone=0 fi diff --git a/commands/productivity/imgur/imgur-upload-latest-screenshot.template.sh b/commands/productivity/imgur/imgur-upload-latest-screenshot.template.sh index 1e63d7dee..9c7d7752e 100755 --- a/commands/productivity/imgur/imgur-upload-latest-screenshot.template.sh +++ b/commands/productivity/imgur/imgur-upload-latest-screenshot.template.sh @@ -20,7 +20,7 @@ DIR=$(defaults read com.apple.screencapture location) FILE=$(ls -t "$DIR" | head -n 1) FILELOC="$DIR/$FILE" -#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous useage as auth type) +#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous usage as auth type) client_id="" #CAN NOT BE EMPTY if [ "$client_id" == "" ]; then diff --git a/commands/productivity/imgur/screenshot-and-imgur.sh b/commands/productivity/imgur/screenshot-and-imgur.sh index 176ecfda7..ee57015ee 100755 --- a/commands/productivity/imgur/screenshot-and-imgur.sh +++ b/commands/productivity/imgur/screenshot-and-imgur.sh @@ -15,7 +15,7 @@ # @raycast.author Fahim Faisal # @raycast.authorURL https://github.com/i3p9 -#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous useage as auth type) +#Client ID, use your own client ID. Get it from https://api.imgur.com/oauth2/addclient (Select anonymous usage as auth type) client_id="" #CAN NOT BE EMPTY if [ "$client_id" == "" ]; then diff --git a/commands/productivity/macocr/macocr-run-ocr.sh b/commands/productivity/macocr/macocr-run-ocr.sh new file mode 100755 index 000000000..640ce3c85 --- /dev/null +++ b/commands/productivity/macocr/macocr-run-ocr.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Dependency: This script requires `macOCR` to be installed: https://github.com/schappim/macOCR +# Install via homebrew: `brew install schappim/ocr/ocr` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Run OCR +# @raycast.mode silent + +# Optional parameters: +# @raycast.packageName macOCR +# @raycast.icon 📸 +# @raycast.argument1 { "type": "text", "placeholder": "Language (default: en-US)", "optional": true } + +# Documentation: +# @raycast.author Jakub Lanski +# @raycast.authorURL https://github.com/jaklan + +if ! command -v ocr &> /dev/null; then + echo "macOCR has to be installed (https://github.com/schappim/macOCR)"; + exit 1; +fi + +result=$(ocr -l ${1:-"en-US"}) +echo $result | tee >(pbcopy) diff --git a/commands/productivity/tesseract/tesseract-ocr.sh b/commands/productivity/tesseract/tesseract-ocr.sh new file mode 100755 index 000000000..77607961c --- /dev/null +++ b/commands/productivity/tesseract/tesseract-ocr.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Dependency: This script requires the `tesseract` cli to be installed: https://github.com/tesseract-ocr/tesseract +# Install via homebrew: `brew install tesseract` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title OCR Screenshot +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🔍 +# @raycast.argument1 { "type": "text", "placeholder": "Language", "optional": true } +# @raycast.packageName tesseract + +# Documentation: +# @raycast.description Tesseract OCR +# @raycast.author Diego Lopes +# @raycast.authorURL https://github.com/Dihgg + +if ! command -v tesseract &> /dev/null; then + echo "tesseract command is required (https://github.com/tesseract-ocr/tesseract)" + exit 1; +fi + +TEMP_FILE=$(mktemp) +screencapture -i "$TEMP_FILE" +LANG=${1:-eng} +tesseract "$TEMP_FILE" stdout -l $LANG | LANG=en_US.UTF-8 pbcopy +echo "Gathered text copied to clipboard" diff --git a/commands/productivity/writing/dictionary-lookup.swift b/commands/productivity/writing/dictionary-lookup.swift new file mode 100755 index 000000000..00ac7b872 --- /dev/null +++ b/commands/productivity/writing/dictionary-lookup.swift @@ -0,0 +1,42 @@ +#!/usr/bin/swift + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Dictionary Lookup +// @raycast.mode compact + +// Optional parameters: +// @raycast.icon 📖 +// @raycast.packageName Writing +// @raycast.argument1 { "type": "text", "placeholder": "word or phrase" } + +// Documentation: +// @raycast.description Directly use macOS Dictionary +// @raycast.author Alessandra Pereyra +// @raycast.authorURL https://github.com/alessandrapereyra + +import Cocoa +import CoreServices.DictionaryServices + +func translate(_ text: String) -> String? { + let nsstring = text as NSString + let cfrange = CFRange(location: 0, length: nsstring.length) + + guard let definition = DCSCopyTextDefinition(nil, nsstring, cfrange) else { + return nil + } + + var foundDefinitions = String(definition.takeRetainedValue()).components(separatedBy: "\n") + + if foundDefinitions.count > 1 { + foundDefinitions.removeFirst() + foundDefinitions.removeFirst() + foundDefinitions.removeLast() + } + + return foundDefinitions.joined(separator: " • ") +} + +let text = CommandLine.arguments[1] +let definition = translate(text) ?? "No definition found for \"\(text)\"" +print(definition) diff --git a/commands/productivity/writing/word-count.sh b/commands/productivity/writing/word-count.sh new file mode 100755 index 000000000..2544b26cf --- /dev/null +++ b/commands/productivity/writing/word-count.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Word Count +# @raycast.mode inline +# @raycast.refreshTime 15s + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.packageName Writing + +# Documentation: +# @raycast.description Counts the number of words of the text in the clipboard +# @raycast.author Benny Wong +# @raycast.authorURL https://bwong.net + +pbpaste | wc | awk '{print "Words: " $2 ", Lines: " $1 ", Characters: ", $3}' \ No newline at end of file diff --git a/commands/remote-control/ddc/arm64/screen-dp.sh b/commands/remote-control/ddc/arm64/screen-dp.sh new file mode 100755 index 000000000..3a7bc340d --- /dev/null +++ b/commands/remote-control/ddc/arm64/screen-dp.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Dependency: This script requires `m1ddc` cli installed: https://github.com/waydabber/m1ddc +# Install via github: `https://github.com/waydabber/m1ddc` + + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Switch to DP +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📺 +# @raycast.author goodhyun +# @raycast.packageName External Display +# @raycast.description This script will switch the external display screen to DP. + +if ! command -v m1ddc &> /dev/null; then + echo "m1ddc command is required (https://github.com/waydabber/m1ddc)."; + exit 1; +fi + +m1ddc set input 15 diff --git a/commands/remote-control/ddc/arm64/screen-hdmi.sh b/commands/remote-control/ddc/arm64/screen-hdmi.sh new file mode 100755 index 000000000..00703a4ea --- /dev/null +++ b/commands/remote-control/ddc/arm64/screen-hdmi.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Dependency: This script requires `m1ddc` cli installed: https://github.com/waydabber/m1ddc +# Install via github: `https://github.com/waydabber/m1ddc` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Switch to HDMI +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📺 +# @raycast.author goodhyun +# @raycast.packageName External Display +# @raycast.description This script will switch the external display screen to HDMI. + + +if ! command -v m1ddc &> /dev/null; then + echo "m1ddc command is required (https://github.com/waydabber/m1ddc)."; + exit 1; +fi + +m1ddc set input 17 diff --git a/commands/remote-control/ddc/x86/screen-dp.sh b/commands/remote-control/ddc/x86/screen-dp.sh new file mode 100755 index 000000000..9194ef37b --- /dev/null +++ b/commands/remote-control/ddc/x86/screen-dp.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Dependency: This script requires `ddcctl` cli installed: https://github.com/kfix/ddcctl +# Install via homebrew: `brew install ddcctl` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Switch to DP +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📺 +# @raycast.author goodhyun +# @raycast.packageName External Display +# @raycast.description This script will switch the external display screen to DP. + +if ! command -v ddcctl &> /dev/null; then + echo "ddcctl command is required (https://github.com/kfix/ddcctl)."; + exit 1; +fi + +ddcctl -d 1 -i 15 diff --git a/commands/remote-control/ddc/x86/screen-hdmi.sh b/commands/remote-control/ddc/x86/screen-hdmi.sh new file mode 100755 index 000000000..1a0c492c0 --- /dev/null +++ b/commands/remote-control/ddc/x86/screen-hdmi.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Dependency: This script requires `ddcctl` cli installed: https://github.com/kfix/ddcctl +# Install via homebrew: `brew install ddcctl` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Switch to HDMI +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📺 +# @raycast.author goodhyun +# @raycast.packageName External Display +# @raycast.description This script will switch the external display screen to HDMI. + + +if ! command -v ddcctl &> /dev/null; then + echo "ddcctl command is required (https://github.com/kfix/ddcctl)."; + exit 1; +fi + +ddcctl -d 1 -i 17 diff --git a/commands/remote-control/denon-avr/configure.applescript b/commands/remote-control/denon-avr/configure.applescript new file mode 100755 index 000000000..eb4074e08 --- /dev/null +++ b/commands/remote-control/denon-avr/configure.applescript @@ -0,0 +1,46 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Configure +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.argument1 { "type": "text", "placeholder": "Denon AVR IP" } +# @raycast.argument2 { "type": "text", "placeholder": "Method (Classic or Modern)" } +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Helperscript to configure Denon AVR Script Commands +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run argv + try + checkAlive(item 1 of argv) + writeIP(item 1 of argv) + setMethod(item 2 of argv) + log "Configuration success!" + on error err_msg + tell me to error "An error has occured: " & err_msg + end try +end run + +on checkAlive(ip_address) + try + do shell script "ping -c 1 " & ip_address + on error + tell me to error "Ip-address " & ip_address & " is incorrect, please adjust" + end try +end checkAlive + +on writeIP(ip_address) + do shell script "defaults write com.Rediwed.DenonAVR ip_address " & ip_address + return +end writeIP + +on setMethod(Method) + set Method to (do shell script "echo " & (quoted form of Method) & " | tr '[:upper:]' '[:lower:]'") + do shell script "defaults write com.Rediwed.DenonAVR method " & Method +end setMethod diff --git a/commands/remote-control/denon-avr/images/denon_logo.png b/commands/remote-control/denon-avr/images/denon_logo.png new file mode 100644 index 000000000..bac47d55d Binary files /dev/null and b/commands/remote-control/denon-avr/images/denon_logo.png differ diff --git a/commands/remote-control/denon-avr/power-off.applescript b/commands/remote-control/denon-avr/power-off.applescript new file mode 100755 index 000000000..9921dc354 --- /dev/null +++ b/commands/remote-control/denon-avr/power-off.applescript @@ -0,0 +1,35 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Power Off +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Powers off a modern Denon AVR if it is currently powered on +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run + set ip_address to (do shell script "defaults read com.Rediwed.DenonAVR ip_address") + if (do shell script "defaults read com.Rediwed.DenonAVR method") = "modern" then + runModern(ip_address) + else + runClassic(ip_address) + end if +end run + +on runModern(ip_address) + do shell script "curl " & ip_address & ":8080/goform/formiPhoneAppDirect.xml?PWSTANDBY" + log "Powering on..." +end runModern + +on runClassic(ip_address) + #classic is not yet set-up + #do shell script "curl 192.168.0.214:8080//goform/formiPhoneAppDirect.xml?MV" & (item 1 of argv) + log "Classic has not yet been set-up" +end runClassic diff --git a/commands/remote-control/denon-avr/power-on.applescript b/commands/remote-control/denon-avr/power-on.applescript new file mode 100755 index 000000000..3d1d1e760 --- /dev/null +++ b/commands/remote-control/denon-avr/power-on.applescript @@ -0,0 +1,35 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Power On +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Powers on a modern Denon AVR if it is currently powered off +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run + set ip_address to (do shell script "defaults read com.Rediwed.DenonAVR ip_address") + if (do shell script "defaults read com.Rediwed.DenonAVR method") = "modern" then + runModern(ip_address) + else + runClassic(ip_address) + end if +end run + +on runModern(ip_address) + do shell script "curl " & ip_address & ":8080/goform/formiPhoneAppDirect.xml?PWON" + log "Powering on..." +end runModern + +on runClassic(ip_address) + #classic is not yet set-up + #do shell script "curl 192.168.0.214:8080//goform/formiPhoneAppDirect.xml?MV" & (item 1 of argv) + log "Classic has not yet been set-up" +end runClassic diff --git a/commands/remote-control/denon-avr/set-volume.applescript b/commands/remote-control/denon-avr/set-volume.applescript new file mode 100644 index 000000000..a7e2d6df1 --- /dev/null +++ b/commands/remote-control/denon-avr/set-volume.applescript @@ -0,0 +1,40 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Set Volume +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.argument1 { "type": "text", "placeholder": "Placeholder" } +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Sets the Denon AVR to a specific volume level (between 0 and 80) +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run argv + if 0 � (item 1 of argv) and (item 1 of argv) � 80 then + set ip_address to (do shell script "defaults read com.Rediwed.DenonAVR ip_address") + if (do shell script "defaults read com.Rediwed.DenonAVR method") = "modern" then + runModern(ip_address, item 1 of argv) + else + runClassic(ip_address, item 1 of argv) + end if + else + log "Command not executed, illegal volume!" + end if +end run + +on runModern(ip_address, volume_level) + do shell script "curl " & ip_address & ":8080//goform/formiPhoneAppDirect.xml?MV" & (volume_level) + log "Volume set to " & volume_level & "!" +end runModern + +on runClassic(ip_address, volume_level) + #classic is not yet set-up + #do shell script "curl 192.168.0.214:8080//goform/formiPhoneAppDirect.xml?MV" & (item 1 of argv) + log "Classic has not yet been set-up" +end runClassic diff --git a/commands/remote-control/denon-avr/volume-down.applescript b/commands/remote-control/denon-avr/volume-down.applescript new file mode 100755 index 000000000..765ce49ec --- /dev/null +++ b/commands/remote-control/denon-avr/volume-down.applescript @@ -0,0 +1,35 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Volume Down +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Decreases the volume of your Denon AVR by one unit +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run + set ip_address to (do shell script "defaults read com.Rediwed.DenonAVR ip_address") + if (do shell script "defaults read com.Rediwed.DenonAVR method") = "modern" then + runModern(ip_address) + else + runClassic(ip_address) + end if +end run + +on runModern(ip_address) + do shell script "curl " & ip_address & ":8080/goform/formiPhoneAppDirect.xml?MVDOWN" + log "Volume decreased!" +end runModern + +on runClassic(ip_address) + #classic is not yet set-up + #do shell script "curl 192.168.0.214:8080//goform/formiPhoneAppDirect.xml?MV" & (item 1 of argv) + log "Classic has not yet been set-up" +end runClassic diff --git a/commands/remote-control/denon-avr/volume-up.applescript b/commands/remote-control/denon-avr/volume-up.applescript new file mode 100755 index 000000000..e1953a69e --- /dev/null +++ b/commands/remote-control/denon-avr/volume-up.applescript @@ -0,0 +1,35 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Volume Up +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon images/denon_logo.png +# @raycast.packageName Denon AVR + +# Documentation: +# @raycast.description Increases the volume of your Denon AVR by one unit +# @raycast.author Rediwed +# @raycast.authorURL github.com/Rediwed + +on run + set ip_address to (do shell script "defaults read com.Rediwed.DenonAVR ip_address") + if (do shell script "defaults read com.Rediwed.DenonAVR method") = "modern" then + runModern(ip_address) + else + runClassic(ip_address) + end if +end run + +on runModern(ip_address) + do shell script "curl " & ip_address & ":8080/goform/formiPhoneAppDirect.xml?MVUP" + log "Volume increased!" +end runModern + +on runClassic(ip_address) + #classic is not yet set-up + #do shell script "curl 192.168.0.214:8080//goform/formiPhoneAppDirect.xml?MV" & (item 1 of argv) + log "Classic has not yet been set-up" +end runClassic diff --git a/commands/remote-control/lg-tv/images/demo.png b/commands/remote-control/lg-tv/images/demo.png index bb88e1c8f..9e0c906f3 100644 Binary files a/commands/remote-control/lg-tv/images/demo.png and b/commands/remote-control/lg-tv/images/demo.png differ diff --git a/commands/remote-control/lg-tv/images/lg.png b/commands/remote-control/lg-tv/images/lg.png index 68cf0f872..c6587c058 100644 Binary files a/commands/remote-control/lg-tv/images/lg.png and b/commands/remote-control/lg-tv/images/lg.png differ diff --git a/commands/remote-control/samsung-tv/images/demo.png b/commands/remote-control/samsung-tv/images/demo.png index b76dc9b04..d3ce70843 100644 Binary files a/commands/remote-control/samsung-tv/images/demo.png and b/commands/remote-control/samsung-tv/images/demo.png differ diff --git a/commands/remote-control/samsung-tv/images/logo.png b/commands/remote-control/samsung-tv/images/logo.png index 81041fe12..7eba99db3 100644 Binary files a/commands/remote-control/samsung-tv/images/logo.png and b/commands/remote-control/samsung-tv/images/logo.png differ diff --git a/commands/system/Low Power Mode.sh b/commands/system/Low Power Mode.sh new file mode 100755 index 000000000..0adbf3add --- /dev/null +++ b/commands/system/Low Power Mode.sh @@ -0,0 +1,38 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Low Power Mode +# @raycast.mode silent + +# @raycast.icon 🔋 +# @raycast.author Kailash Yellareddy +# @raycast.authorURL https://github.com/kyellareddy + +on getLowPowerMode(str) + set trimmedStr to do shell script "echo " & quoted form of str & " | xargs" -- trim trailing spaces + set lastChar to character (length of trimmedStr) of trimmedStr -- get last character + set mode to lastChar as number -- convert to number + return mode +end getLowPowerMode +tell application "System Settings" + set output to do shell script "pmset -g | grep lowpowermode" +end tell +set result to getLowPowerMode(output) +if result = 0 then + tell application "System Settings" + do shell script "pmset -a lowpowermode 1" with administrator privileges + end tell + do shell script "echo Low Power Mode turned on." +else + tell application "System Settings" + do shell script "pmset -a lowpowermode 0" with administrator privileges + end tell + +# This makes the brightness 100% again, if it doesn't go all the way to 100% for you, change the number of times it repeats. + repeat 25 times + tell application "System Events" + key code 144 + end tell + end repeat +end if diff --git a/commands/system/Network Info.sh b/commands/system/Network Info.sh new file mode 100755 index 000000000..a43dfa8de --- /dev/null +++ b/commands/system/Network Info.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Network Info +# @raycast.mode fullOutput + +# @raycast.icon 🛜 +# @raycast.author Kailash Yellareddy +# @raycast.authorURL https://github.com/kyellareddy + +import urllib.request, json +with urllib.request.urlopen("http://ip-api.com/json") as url: + data = json.load(url) + + print("IP address:", data["query"]) + print("ISP:", data["isp"]) + + print("City:", data["city"]) + print("Region:", data["regionName"]) + print("Country:", data["country"]) + print("ZIP:", data["zip"]) \ No newline at end of file diff --git a/commands/system/audio/airpodsbattery.sh b/commands/system/audio/airpodsbattery.sh index 780f573cc..5bb908420 100755 --- a/commands/system/audio/airpodsbattery.sh +++ b/commands/system/audio/airpodsbattery.sh @@ -16,7 +16,7 @@ # @raycast.authorURL https://www.github.com/qeude # This should be changed every time new AirPods models are released. -airpods_product_ids=("0x200E" "0x200F" "0x2002") +airpods_product_ids=("0x200E" "0x200F" "0x2002" "0x2013") airpods_max_product_ids=("0x200A") delimiter=" 🎧 " diff --git a/commands/system/audio/audio-output-switch.template.applescript b/commands/system/audio/audio-output-switch.template.applescript index dcd9694f1..7fa2dcf42 100755 --- a/commands/system/audio/audio-output-switch.template.applescript +++ b/commands/system/audio/audio-output-switch.template.applescript @@ -22,6 +22,8 @@ tell application "System Preferences" reveal anchor "output" of pane id "com.apple.preference.sound" + delay 1 + tell application "System Events" tell process "System Preferences" select (row 1 of table 1 of scroll area 1 of tab group 1 of window "Sound" whose value of text field 1 is asrc) diff --git a/commands/system/audio/bluetooth-headphones-battery-level.template.sh b/commands/system/audio/bluetooth-headphones-battery-level.template.sh new file mode 100755 index 000000000..146c6e8fa --- /dev/null +++ b/commands/system/audio/bluetooth-headphones-battery-level.template.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Headphones Battery Level +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🎧 +# @raycast.packageName Audio + +# Documentation: +# @raycast.description Get the battery level of your bluetooth headphones +# @raycast.author Mortada Sarheed +# @raycast.authorURL https://github.com/mSarheed + +# Find the mac address of your headhpones by holding down option-key (⌥) (+ click on your bluetooth icon in the menubar or control centre. +# The mac address for your headphones should look something like this A1-23-45-B6-C7, change the dashes(-) to colons (:), so A1:23:45:B6:C7 +macAddr="XX:XX:XX:XX:XX" + +call="system_profiler SPBluetoothDataType" + +# Finds the name of the Headphones +headphonesName=$($call | grep -B1 "$macAddr" | head -n 1 | sed 's/.$//') + +batteryLevel=$($call | grep -A4 "$macAddr" | grep 'Battery Level:' | grep -Eo '[0-9]{1,4}') + + +if [ "$batteryLevel" != "" ]; then +echo '🔋'$headphonesName' is at '$batteryLevel'% 🔋' +else +echo "🎧 Headphones aren't connected 🤷🏻‍♂️" +fi diff --git a/commands/system/audio/get-audio-devices.swift b/commands/system/audio/get-audio-devices.swift index c10cf1c0c..a5e274ba9 100755 --- a/commands/system/audio/get-audio-devices.swift +++ b/commands/system/audio/get-audio-devices.swift @@ -19,6 +19,9 @@ import CoreAudio // Based on https://stackoverflow.com/a/58618034/793916 +// Equivalent of kAudioObjectPropertyElementMain to prevent SDK compatibility issues. +private let audioObjectPropertyElementMain: AudioObjectPropertyElement = 0 + final class AudioDevice { let audioDeviceID: AudioDeviceID @@ -31,13 +34,13 @@ final class AudioDevice { var address: AudioObjectPropertyAddress = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioDevicePropertyStreamConfiguration), mScope: AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput), - mElement: AudioObjectPropertyElement(0)) + mElement: audioObjectPropertyElementMain) var propSize: UInt32 = 0 var result = AudioObjectGetPropertyDataSize( audioDeviceID, &address, - UInt32(MemoryLayout.size), + 0, nil, &propSize) @@ -64,9 +67,9 @@ final class AudioDevice { var name: String? { var address = AudioObjectPropertyAddress( - mSelector: AudioObjectPropertySelector(kAudioDevicePropertyDeviceNameCFString), + mSelector: AudioObjectPropertySelector(kAudioObjectPropertyName), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var name: CFString? = nil var propSize = UInt32(MemoryLayout.size) @@ -85,13 +88,13 @@ func findDevices() -> [AudioDevice] { var address = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDevices), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var propSize: UInt32 = 0 var result = AudioObjectGetPropertyDataSize( AudioObjectID(kAudioObjectSystemObject), &address, - UInt32(MemoryLayout.size), + 0, nil, &propSize) @@ -136,7 +139,7 @@ func selectedDevice(output: Bool) -> String? { var idPropertyAddress = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(selector), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) let result = AudioObjectGetPropertyData( id, diff --git a/commands/system/audio/get-selected-audio-device.swift b/commands/system/audio/get-selected-audio-device.swift index b6038f929..480102cb3 100755 --- a/commands/system/audio/get-selected-audio-device.swift +++ b/commands/system/audio/get-selected-audio-device.swift @@ -20,6 +20,9 @@ import CoreAudio // Based on https://stackoverflow.com/a/58618034/793916 +// Equivalent of kAudioObjectPropertyElementMain to prevent SDK compatibility issues. +private let audioObjectPropertyElementMain: AudioObjectPropertyElement = 0 + final class AudioDevice { let audioDeviceID: AudioDeviceID @@ -32,13 +35,13 @@ final class AudioDevice { var address: AudioObjectPropertyAddress = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioDevicePropertyStreamConfiguration), mScope: AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput), - mElement: AudioObjectPropertyElement(0)) + mElement: audioObjectPropertyElementMain) var propSize: UInt32 = 0 var result = AudioObjectGetPropertyDataSize( audioDeviceID, &address, - UInt32(MemoryLayout.size), + 0, nil, &propSize) @@ -65,9 +68,9 @@ final class AudioDevice { var name: String? { var address = AudioObjectPropertyAddress( - mSelector: AudioObjectPropertySelector(kAudioDevicePropertyDeviceNameCFString), + mSelector: AudioObjectPropertySelector(kAudioObjectPropertyName), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var name: CFString? = nil var propSize = UInt32(MemoryLayout.size) @@ -86,13 +89,13 @@ func findDevices() -> [AudioDevice] { var address = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDevices), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var propSize: UInt32 = 0 var result = AudioObjectGetPropertyDataSize( AudioObjectID(kAudioObjectSystemObject), &address, - UInt32(MemoryLayout.size), + 0, nil, &propSize) @@ -137,7 +140,7 @@ func selectedDevice(output: Bool) -> String? { var idPropertyAddress = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(selector), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) let result = AudioObjectGetPropertyData( id, diff --git a/commands/system/audio/images/airpod.png b/commands/system/audio/images/airpod.png index 0c70c8bdf..9934f862b 100644 Binary files a/commands/system/audio/images/airpod.png and b/commands/system/audio/images/airpod.png differ diff --git a/commands/system/audio/set-audio-device.swift b/commands/system/audio/set-audio-device.swift index f73998b47..81a57a2bb 100755 --- a/commands/system/audio/set-audio-device.swift +++ b/commands/system/audio/set-audio-device.swift @@ -34,6 +34,9 @@ import CoreAudio // Based on https://stackoverflow.com/a/58618034/793916 +// Equivalent of kAudioObjectPropertyElementMain to prevent SDK compatibility issues. +private let audioObjectPropertyElementMain: AudioObjectPropertyElement = 0 + struct DeviceType: OptionSet { static let input = DeviceType(rawValue: 1 << 0) @@ -69,7 +72,7 @@ final class AudioDevice { var address = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioDevicePropertyStreamConfiguration), mScope: AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput), - mElement: AudioObjectPropertyElement(0)) + mElement: audioObjectPropertyElementMain) var propSize = UInt32(MemoryLayout.size) var result = AudioObjectGetPropertyDataSize(audioDeviceID, &address, 0, nil, &propSize) @@ -97,9 +100,9 @@ final class AudioDevice { var name: String? { var address = AudioObjectPropertyAddress( - mSelector: AudioObjectPropertySelector(kAudioDevicePropertyDeviceNameCFString), + mSelector: AudioObjectPropertySelector(kAudioObjectPropertyName), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var name: CFString? = nil var propSize = UInt32(MemoryLayout.size) @@ -120,12 +123,12 @@ func findDevices() -> [AudioDevice] { var address = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDevices), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) var result = AudioObjectGetPropertyDataSize( AudioObjectID(kAudioObjectSystemObject), &address, - UInt32(MemoryLayout.size), + 0, nil, &propSize) @@ -179,7 +182,7 @@ func set(_ deviceType: DeviceType, to query: String) -> (Bool, String) { var deviceIdPropertyAddress = AudioObjectPropertyAddress( mSelector: AudioObjectPropertySelector(selector), mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal), - mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster)) + mElement: audioObjectPropertyElementMain) let result = AudioObjectSetPropertyData( AudioObjectID(kAudioObjectSystemObject), diff --git a/commands/system/audio/toggle-mute-notification-sounds.applescript b/commands/system/audio/toggle-mute-notification-sounds.applescript new file mode 100755 index 000000000..779a3f4a8 --- /dev/null +++ b/commands/system/audio/toggle-mute-notification-sounds.applescript @@ -0,0 +1,27 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Mute Notifcation Sounds +# @raycast.mode silent +# @raycast.packageName System + +# Optional parameters: +# @raycast.icon 🔔 + +# Documentation: +# @raycast.author Annie Ma +# @raycast.authorURL http://www.anniema.co/ +# @raycast.description Toggles notification sounds. + +set volumeSettings to get volume settings +set alertVolume to alert volume of volumeSettings + +if alertVolume > 0 then + set volume alert volume 0 + display notification "" with title "Muted notification sounds" +else + set volume alert volume 100 + display notification "" with title "Unmuted notification sounds" +end if + diff --git a/commands/system/battery-info.sh b/commands/system/battery-info.sh new file mode 100755 index 000000000..1692ab447 --- /dev/null +++ b/commands/system/battery-info.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Battery Info +# @raycast.mode inline +# @raycast.refreshTime 3m +# @raycast.packageName System + +# +# Optional parameters: +# @raycast.icon 🔋 +# +# Documentation: +# @raycast.description Get Battery percentage, time remaining, charge status, charger wattage, total cycles etc. +# @raycast.author Fahim Faisal +# @raycast.authorURL https://github.com/i3p9 + +BATT_PERCENTAGE=$(pmset -g batt | grep "InternalBattery-0" | awk '{print $3}') +CHARGE_STATUS=$(pmset -g batt | grep "InternalBattery-0" | awk '{print $4}') +TIME_REMAINING=$(pmset -g batt | grep "InternalBattery-0" | awk '{print $5}') +CYCLE_COUNT=$(system_profiler SPPowerDataType | grep "Cycle Count" | awk '{print $3}') +CHARGE_WATT=$(pmset -g ac | grep "Wattage" | awk '{print $3}') + +BATT=${BATT_PERCENTAGE%??} + +if [[ "$CHARGE_STATUS" == "charging;" ]]; then + #Charging + if [[ "$TIME_REMAINING" == "(no" ]]; then + TO_SHOW="⚡${BATT}% - No Estimation Yet (Charging at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + else + if [[ "$TIME_REMAINING" != "(no" ]]; then + RE_MIN=${TIME_REMAINING##*:} + RE_HOUR=${TIME_REMAINING%%:*} + if [[ "$RE_HOUR" == "0" ]]; then + TIME_REMAINING_FORMATTED="${RE_MIN}m" + else + TIME_REMAINING_FORMATTED="${RE_HOUR}h ${RE_MIN}m" + fi + fi + TO_SHOW="⚡${BATT}% - ${TIME_REMAINING_FORMATTED} to Full (Charging at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + fi +elif [[ "$CHARGE_STATUS" == "finishing" ]]; then + #Finishing Charning, xx:xx time remaining + TIME_REMAINING=$(pmset -g batt | grep "InternalBattery-0" | awk '{print $6}') + RE_MIN=${TIME_REMAINING##*:} + RE_HOUR=${TIME_REMAINING%%:*} + if [[ "$RE_HOUR" == "0" ]]; then + if [[ "$RE_MIN" == "00" ]]; then + FULLY_CHARGED_FLAG="TRUE" + fi + TIME_REMAINING_FORMATTED="${RE_MIN}m" + else + TIME_REMAINING_FORMATTED="${RE_HOUR}h ${RE_MIN}m" + fi + + if [[ "$TIME_REMAINING" == "(no" ]]; then + TO_SHOW="⚡${BATT}% - No Estimation Yet (Charging at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + elif [[ "$FULLY_CHARGED_FLAG" = "TRUE" ]]; then + TO_SHOW="⚡${BATT}% - Fully Charged (Power Connected at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + else + TO_SHOW="⚡${BATT}% - ${TIME_REMAINING_FORMATTED} to Full (Charging at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + fi + +elif [[ "$CHARGE_STATUS" == "charged;" ]]; then + #Fully charged + TO_SHOW="⚡${BATT}% - Fully Charged (Power Connected at ${CHARGE_WATT}) - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + +elif [[ "$CHARGE_STATUS" == "discharging;" ]]; then + #Discharging + if [[ "$TIME_REMAINING" == "(no" ]]; then + TO_SHOW="${BATT}% - No Estimation Yet - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + else + if [[ "$TIME_REMAINING" != "(no" ]]; then + RE_MIN=${TIME_REMAINING##*:} + RE_HOUR=${TIME_REMAINING%%:*} + if [[ "$RE_HOUR" == "0" ]]; then + TIME_REMAINING_FORMATTED="${RE_MIN}m" + else + TIME_REMAINING_FORMATTED="${RE_HOUR}h ${RE_MIN}m" + fi + fi + TO_SHOW="${BATT}% - ${TIME_REMAINING_FORMATTED} Remaining - ${CYCLE_COUNT} Cycles" + echo $TO_SHOW + fi +fi diff --git a/commands/system/close-finder-windows.applescript b/commands/system/close-finder-windows.applescript new file mode 100755 index 000000000..66aa56844 --- /dev/null +++ b/commands/system/close-finder-windows.applescript @@ -0,0 +1,17 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Close All Finder Windows +# @raycast.mode silent +# @raycast.packageName System +# +# Optional parameters: +# @raycast.icon 🔪 +# +# Documentation: +# @raycast.description Close all open Finder windows. +# @raycast.author Alexander Steffen +# @raycast.authorURL https://github.com/alexjsteffen + +tell application "Finder" to close windows diff --git a/commands/system/copy-availability.swift b/commands/system/copy-availability.swift index dfe213e66..cc018740a 100755 --- a/commands/system/copy-availability.swift +++ b/commands/system/copy-availability.swift @@ -8,6 +8,8 @@ // // Optional parameters: // @raycast.icon 📅 +// @raycast.argument1 { "type": "text", "placeholder": "9:00", "optional": true } +// @raycast.argument2 { "type": "text", "placeholder": "17:00", "optional": true } // // Documentation: // @raycast.description Copies the calendar availability of today. @@ -15,80 +17,123 @@ import AppKit import EventKit -// MARK: - Main - let now = Date() -let startOfToday = Calendar.current.startOfDay(for: now) -let endOfToday = Calendar.current.date(byAdding: .day, value: 1, to: startOfToday)! - -let eventStore = EKEventStore() -let predicate = eventStore.predicateForEvents(withStart: startOfToday, end: endOfToday, calendars: nil) -let eventsOfToday = eventStore.events(matching: predicate).filter { !$0.isAllDay } - -let availability: String -if eventsOfToday.isEmpty { - availability = "I'm available the full day." -} else if eventsOfToday.allSatisfy({ $0.endDate.isAfternoon }) { - availability = "I'm available in the morning." -} else if eventsOfToday.allSatisfy({ $0.endDate.isMorning }) { - availability = "I'm available in the afternoon." -} else { - let busyTimes = eventsOfToday.map { $0.startDate...$0.endDate } - - let availableTimes = getAvailableTimesForToday(excluding: busyTimes) - let prettyPrintedAvailableTimes = availableTimes - .map { (from: DateFormatter.shortTime.string(from: $0.lowerBound), to: DateFormatter.shortTime.string(from: $0.upperBound)) } - .map { "- \($0.from) - \($0.to)" } - .joined(separator: "\n") - - availability = "Here's my availability for today:\n\(prettyPrintedAvailableTimes)" -} +let calendar: Calendar = .current -copy(availability) -print("Copied availability") +do { + let workDay: (startDate: Date, endDate: Date) + let today: (startDate: Date, endDate: Date, events: [EKEvent]) -// MARK: - Convenience + do { + // Retrieve the range for today (from 00:00 to 23:59) + today.startDate = calendar.startOfDay(for: now) + today.endDate = calendar.date(byAdding: .day, value: 1, to: today.startDate)! + // Parse the optional arguments + let timeFormatter = DateFormatter() + timeFormatter.dateFormat = "HH:mm" + var arguments = try CommandLine.arguments.dropFirst().prefix(2).map { arg throws -> Date? in + var iterator = arg.split(separator: ":").makeIterator() + guard let hours = iterator.next() else { return nil } + let minutes = iterator.next() ?? "00" + guard hours.allSatisfy(\.isNumber), + minutes.allSatisfy(\.isNumber), + let date = timeFormatter.date(from: "\(hours):\(minutes)") else { throw Error.invalidInput(arg) } + return date + }.makeIterator() + // Compose the working day range (checking that start is not after end) + workDay.startDate = arguments.next().flatMap { $0 } ?? calendar.date(bySettingHour: 9, minute: 0, second: 0, of: now)! + workDay.endDate = arguments.next().flatMap { $0 } ?? calendar.date(bySettingHour: 17, minute: 0, second: 0, of: now)! + guard workDay.startDate < workDay.endDate else { throw Error.invalidRange } + // Retrieve all the events for today + let store = EKEventStore() + let predicate = store.predicateForEvents(withStart: today.startDate, end: today.endDate, calendars: nil) + today.events = store.events(matching: predicate).filter { !$0.isAllDay } + } -extension DateFormatter { - static var shortTime: DateFormatter { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .none - dateFormatter.timeStyle = .short - return dateFormatter + let availability: String + if today.events.isEmpty { + availability = "I'm available the full day." + } else if calendar.component(.hour, from: now) < 12, + today.events.allSatisfy({ calendar.component(.hour, from: $0.endDate) >= 12 }) { + availability = "I'm available in the morning." + } else if today.events.allSatisfy({ calendar.component(.hour, from: $0.endDate) <= 11 }) { + availability = "I'm available in the afternoon." + } else { + let allowedRange = workDay.startDate...workDay.endDate + let busy = busyRanges(during: allowedRange, events: today.events) + let available = availableRanges(during: allowedRange, busy: busy) + let timeFormatter = DateFormatter() + timeFormatter.dateStyle = .none + timeFormatter.timeStyle = .short + let availableTimes = available + .map { (from: timeFormatter.string(from: $0.lowerBound), to: timeFormatter.string(from: $0.upperBound)) } + .map { "- \($0.from) - \($0.to)" } + .joined(separator: "\n") + availability = "Here's my availability for today:\n\(availableTimes)" } + + NSPasteboard.general.declareTypes([NSPasteboard.PasteboardType.string], owner: nil) + NSPasteboard.general.setString(availability, forType: NSPasteboard.PasteboardType.string) + print("Copied availability") +} catch Error.invalidInput(let arg) { + print("Invalid date input: '\(arg)'") +} catch Error.invalidRange { + print("The input date range is invalid") +} catch { + print("Unknown error.") } -extension Date { - var isMorning: Bool { Calendar.current.component(.hour, from: self) <= 11 } - var isAfternoon: Bool { Calendar.current.component(.hour, from: self) >= 12 } + +// MARK: - Convenience + +private enum Error: Swift.Error { + case invalidInput(String) + case invalidRange } -func getAvailableTimesForToday(excluding excludedTimes: [ClosedRange]) -> [ClosedRange] { - let startOfWorkDay = Calendar.current.date(bySettingHour: 9, minute: 0, second: 0, of: startOfToday)! - let endOfWorkDay = Calendar.current.date(bySettingHour: 17, minute: 0, second: 0, of: startOfToday)! - let workDay = startOfWorkDay...endOfWorkDay - - let busyTimes = [startOfToday...startOfWorkDay] + excludedTimes + [endOfWorkDay...endOfToday] - var previousBusyTime = busyTimes.first - var availableTimes = [ClosedRange]() - for time in busyTimes { - if let previousEnd = previousBusyTime?.upperBound, previousEnd < time.lowerBound { - var newAvailability = previousEnd...time.lowerBound - if let lastAvailability = availableTimes.last, newAvailability.overlaps(lastAvailability) { - newAvailability = newAvailability.clamped(to: lastAvailability).clamped(to: workDay) - availableTimes.insert(newAvailability, at: availableTimes.count - 1) - } else { - newAvailability = newAvailability.clamped(to: workDay) - availableTimes.append(newAvailability) - } +private func busyRanges(during allowedRange: ClosedRange, events: [EKEvent]) -> [ClosedRange] { + let busyRanges = events + .compactMap { $0.startDate...$0.endDate } + .sorted(by: { $0.lowerBound < $1.lowerBound }) + + var result: [ClosedRange] = [] + for busy in busyRanges.sorted(by: { $0.lowerBound < $1.lowerBound }) { + guard busy.upperBound > allowedRange.lowerBound, + busy.lowerBound < allowedRange.upperBound else { continue } + + let start = max(busy.lowerBound, allowedRange.lowerBound) + let end = min(busy.upperBound, allowedRange.upperBound) + guard start < end else { continue } + + guard let last = result.last else { + result.append(start...end) + continue + } + + if start > last.upperBound { + result.append(start...end) + } else { + result[result.endIndex - 1] = min(start, last.lowerBound)...max(end, last.upperBound) } - previousBusyTime = time } - return availableTimes + return result } -func copy(_ string: String) { - NSPasteboard.general.declareTypes([NSPasteboard.PasteboardType.string], owner: nil) - NSPasteboard.general.setString(string, forType: NSPasteboard.PasteboardType.string) +private func availableRanges(during allowedRange: ClosedRange, busy busyRanges: [ClosedRange]) -> [ClosedRange] { + var result: [ClosedRange] = [] + var milestone: Date = allowedRange.lowerBound + + for busy in busyRanges { + if busy.lowerBound > milestone { + result.append(milestone...busy.lowerBound) + } + milestone = busy.upperBound + } + + if milestone < allowedRange.upperBound { + result.append(milestone...allowedRange.upperBound) + } + + return result } diff --git a/commands/system/copy-selection-to-clipboard.applescript b/commands/system/copy-selection-to-clipboard.applescript new file mode 100755 index 000000000..6a5031e2a --- /dev/null +++ b/commands/system/copy-selection-to-clipboard.applescript @@ -0,0 +1,43 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Copy Finder Selection to Clipboard +# @raycast.mode silent +# @raycast.packageName System +# +# Optional parameters: +# @raycast.icon ?? +# +# Documentation: +# @raycast.description Copy contents of selected items in Finder to the clipboard. If there's more than one file selected, they will be combined and added to the clipboard. +# @raycast.author Felipe Turcheti +# @raycast.authorURL https://felipeturcheti.com + +on run + log "Copying contents of the selected items to the clipboard..." + + tell application "Finder" + -- get Finder selected items + set theItems to selection + end tell + + -- create a list to store contents of all selected items + set allContents to "" + + -- for each item in the Finder selection + repeat with itemRef in theItems + -- get the item path + set theItem to POSIX path of (itemRef as string) + -- read the content of the item + set fileDescriptor to open for access (POSIX file theItem) + set fileContent to read fileDescriptor for (get eof fileDescriptor) + close access fileDescriptor + -- add the content to the list + set allContents to allContents & fileContent & " +" + end repeat + + -- set the clipboard to the combined contents + set the clipboard to allContents +end run diff --git a/commands/system/custom-window.applescript b/commands/system/custom-window.applescript new file mode 100755 index 000000000..ecd2f577e --- /dev/null +++ b/commands/system/custom-window.applescript @@ -0,0 +1,50 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Custom Window Size +# @raycast.mode silent +# @raycast.packageName System + +# Optional parameters: +# @raycast.icon images/custom-window-size.png + +# Documentation: +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit +# @raycast.description Resize and center the frontmost window to any custom size. + +# @raycast.argument1 { "type": "text", "placeholder": "Width" } +# @raycast.argument2 { "type": "text", "placeholder": "Height" } + +on run argv + + tell application "System Events" + set frontApp to name of first application process whose frontmost is true + end tell + + tell application "Finder" + get bounds of window of desktop + end tell + + tell application "Finder" + set desktopBounds to bounds of window of desktop + set screenWidth to item 3 of desktopBounds + set screenHeight to item 4 of desktopBounds + end tell + + set theApp to frontApp + set appWidth to "" & ( item 1 of argv ) + set appHeight to "" & ( item 2 of argv ) + + tell application frontApp to activate + tell application "System Events" to tell application process frontApp + try + set size of window 1 to {appWidth, appHeight} + set position of window 1 to {(screenWidth - appWidth) / 2.0, (screenHeight - appHeight) / 2.0} + on error errmess + log errmess + -- no window open + end try + end tell +end run diff --git a/commands/system/default-browser-arc.applescript b/commands/system/default-browser-arc.applescript new file mode 100755 index 000000000..d36e16fa7 --- /dev/null +++ b/commands/system/default-browser-arc.applescript @@ -0,0 +1,64 @@ +#!/usr/bin/osascript + +# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser) +# Install via Homebrew: `brew install defaultbrowser` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Default to Arc +# @raycast.mode silent +# @raycast.packageName Browser + +# Optional parameters: +# @raycast.icon images/arc.png + +# Documentation: +# @raycast.author Marcos Sánchez-Dehesa +# @raycast.authorURL https://github.com/dehesa +# @raycast.description Set Arc as the default browser. + +# check to see what the current browser is +set currentDefaultBrowser to my getCurrentDefaultBrowser() + +set repeatCount to 0 + +tell application "System Events" + try + my changeDefaultBrowser("browser") + repeat until button 2 of window 1 of process "CoreServicesUIAgent" exists + delay 0.01 + set repeatCount to repeatCount + 1 + if repeatCount = 15 then exit repeat + end repeat + try + # if Chrome is the current default browser, the order of the buttons is reversed. Click button 1 to change the default browser to Arc. + if currentDefaultBrowser contains "com.google.chrome" then + click button 1 of window 1 of process "CoreServicesUIAgent" + else # otherwise click button 2 to change the default browser to Arc. + click button 2 of window 1 of process "CoreServicesUIAgent" + end if + log "Arc is now your default browser" + on error + log "Arc is already your default browser" + end try + on error + log "The \"defaultbrowser\" CLI tool is required: https://github.com/kerma/defaultbrowser 🔥" + end try +end tell + +to getCurrentDefaultBrowser() + set filePath to "~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist" + + set output to do shell script "plutil -p " & filePath & " | awk '/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\"\\\"https\\\"\") print a}'" + return output +end getCurrentDefaultBrowser + +to changeDefaultBrowser(thebrowser) + do shell script " + if ! command -v defaultbrowser &> /dev/null; then + exit 1 + fi + defaultbrowser " & thebrowser & " + exit 0 + " +end changeDefaultBrowser \ No newline at end of file diff --git a/commands/system/default-browser-chrome.applescript b/commands/system/default-browser-chrome.applescript new file mode 100755 index 000000000..a09bdad9e --- /dev/null +++ b/commands/system/default-browser-chrome.applescript @@ -0,0 +1,49 @@ +#!/usr/bin/osascript + +# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser) +# Install via Homebrew: `brew install defaultbrowser` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Default to Chrome +# @raycast.mode silent +# @raycast.packageName Browser + +# Optional parameters: +# @raycast.icon images/chrome.png + +# Documentation: +# @raycast.author Marcos Sánchez-Dehesa +# @raycast.authorURL https://github.com/dehesa +# @raycast.description Set Google Chrome as the default browser. + +set repeatCount to 0 + +tell application "System Events" + try + my changeDefaultBrowser("chrome") + repeat until button 2 of window 1 of process "CoreServicesUIAgent" exists + delay 0.01 + set repeatCount to repeatCount + 1 + if repeatCount = 15 then exit repeat + end repeat + try + click button 2 of window 1 of process "CoreServicesUIAgent" + log "Google Chrome is now your default browser" + on error + log "Google Chrome is already your default browser" + end try + on error + log "The \"defaultbrowser\" CLI tool is required: https://github.com/kerma/defaultbrowser 🔥" + end try +end tell + +to changeDefaultBrowser(thebrowser) + do shell script " + if ! command -v defaultbrowser &> /dev/null; then + exit 1 + fi + defaultbrowser " & thebrowser & " + exit 0 + " +end changeDefaultBrowser \ No newline at end of file diff --git a/commands/system/default-browser-chrome.sh b/commands/system/default-browser-chrome.sh deleted file mode 100755 index cae645ac4..000000000 --- a/commands/system/default-browser-chrome.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser/) -# Install via Homebrew: `brew install defaultbrowser` - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Switch Default Browser to Chrome -# @raycast.mode silent -# @raycast.packageName Browsing - -# Optional parameters: -# @raycast.icon 🧭 - -# Documentation: -# @raycast.author Marc Klingen -# @raycast.authorURL https://github.com/marcklingen -# @raycast.description Set Chrome as the default browser. - -if ! command -v defaultbrowser &> /dev/null; then - echo "defaultbrowser is required (https://github.com/kerma/defaultbrowser/)."; - exit 1; -fi - -defaultbrowser chrome -exit 0 diff --git a/commands/system/default-browser-chromium.applescript b/commands/system/default-browser-chromium.applescript new file mode 100755 index 000000000..b9a6bc63e --- /dev/null +++ b/commands/system/default-browser-chromium.applescript @@ -0,0 +1,49 @@ +#!/usr/bin/osascript + +# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser) +# Install via Homebrew: `brew install defaultbrowser` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Default to Chromium +# @raycast.mode silent +# @raycast.packageName Browser + +# Optional parameters: +# @raycast.icon images/chrome-icon.png + +# Documentation: +# @raycast.author Marcos Sánchez-Dehesa +# @raycast.authorURL https://github.com/dehesa +# @raycast.description Set Chromium as the default browser. + +set repeatCount to 0 + +tell application "System Events" + try + my changeDefaultBrowser("chromium") + repeat until button 2 of window 1 of process "CoreServicesUIAgent" exists + delay 0.01 + set repeatCount to repeatCount + 1 + if repeatCount = 15 then exit repeat + end repeat + try + click button 2 of window 1 of process "CoreServicesUIAgent" + log "Chromium is now your default browser" + on error + log "Chromium is already your default browser" + end try + on error + log "The \"defaultbrowser\" CLI tool is required: https://github.com/kerma/defaultbrowser 🔥" + end try +end tell + +to changeDefaultBrowser(thebrowser) + do shell script " + if ! command -v defaultbrowser &> /dev/null; then + exit 1 + fi + defaultbrowser " & thebrowser & " + exit 0 + " +end changeDefaultBrowser \ No newline at end of file diff --git a/commands/system/default-browser-chromium.sh b/commands/system/default-browser-chromium.sh deleted file mode 100755 index 1e93278f9..000000000 --- a/commands/system/default-browser-chromium.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser/) -# Install via Homebrew: `brew install defaultbrowser` - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Switch Default Browser to Chromium -# @raycast.mode silent -# @raycast.packageName Browsing - -# Optional parameters: -# @raycast.icon 🧭 - -# Documentation: -# @raycast.author Marc Klingen -# @raycast.authorURL https://github.com/marcklingen -# @raycast.description Set Chromium as the default browser. - -if ! command -v defaultbrowser &> /dev/null; then - echo "defaultbrowser is required (https://github.com/kerma/defaultbrowser/)."; - exit 1; -fi - -defaultbrowser chromium -exit 0 diff --git a/commands/system/default-browser-firefox.applescript b/commands/system/default-browser-firefox.applescript new file mode 100755 index 000000000..449f1c324 --- /dev/null +++ b/commands/system/default-browser-firefox.applescript @@ -0,0 +1,64 @@ +#!/usr/bin/osascript + +# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser) +# Install via Homebrew: `brew install defaultbrowser` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Default to Firefox +# @raycast.mode silent +# @raycast.packageName Browser + +# Optional parameters: +# @raycast.icon images/firefox.png + +# Documentation: +# @raycast.author Marcos Sánchez-Dehesa +# @raycast.authorURL https://github.com/dehesa +# @raycast.description Set Firefox as the default browser. + +# check to see what the current browser is +set currentDefaultBrowser to my getCurrentDefaultBrowser() + +set repeatCount to 0 + +tell application "System Events" + try + my changeDefaultBrowser("firefox") + repeat until button 2 of window 1 of process "CoreServicesUIAgent" exists + delay 0.01 + set repeatCount to repeatCount + 1 + if repeatCount = 15 then exit repeat + end repeat + try + # if Chrome is the current default browser, the order of the buttons is reversed. Click button 1 to change the default browser to FF. + if currentDefaultBrowser contains "com.google.chrome" then + click button 1 of window 1 of process "CoreServicesUIAgent" + else # otherwise click button 2 to change the default browser to FF. + click button 2 of window 1 of process "CoreServicesUIAgent" + end if + log "Firefox is now your default browser" + on error + log "Firefox is already your default browser" + end try + on error + log "The \"defaultbrowser\" CLI tool is required: https://github.com/kerma/defaultbrowser 🔥" + end try +end tell + +to getCurrentDefaultBrowser() + set filePath to "~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist" + + set output to do shell script "plutil -p " & filePath & " | awk '/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\"\\\"https\\\"\") print a}'" + return output +end getCurrentDefaultBrowser + +to changeDefaultBrowser(thebrowser) + do shell script " + if ! command -v defaultbrowser &> /dev/null; then + exit 1 + fi + defaultbrowser " & thebrowser & " + exit 0 + " +end changeDefaultBrowser diff --git a/commands/system/default-browser-firefox.sh b/commands/system/default-browser-firefox.sh deleted file mode 100755 index 8359298cd..000000000 --- a/commands/system/default-browser-firefox.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser/) -# Install via Homebrew: `brew install defaultbrowser` - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Switch Default Browser to Firefox -# @raycast.mode silent -# @raycast.packageName Browsing - -# Optional parameters: -# @raycast.icon 🧭 - -# Documentation: -# @raycast.author Marc Klingen -# @raycast.authorURL https://github.com/marcklingen -# @raycast.description Set Firefox as the default browser. - -if ! command -v defaultbrowser &> /dev/null; then - echo "defaultbrowser is required (https://github.com/kerma/defaultbrowser/)."; - exit 1; -fi - -defaultbrowser firefox -exit 0 diff --git a/commands/system/default-browser-front-most-app.applescript b/commands/system/default-browser-front-most-app.applescript index 7b67aeae7..83b41fc28 100755 --- a/commands/system/default-browser-front-most-app.applescript +++ b/commands/system/default-browser-front-most-app.applescript @@ -38,6 +38,8 @@ if (raycastArgv is equal to "") then set browserName to "safari" else if (appName is equal to "Safari Technology Preview") then set browserName to "safaritechnologypreview" + else if (appName contains "Firefox Dev") then + set browserName to "firefoxdeveloperedition" # set Google chrome dev as default browser # it need to put before Chrome else if (appName contains "dev") then @@ -48,8 +50,10 @@ if (raycastArgv is equal to "") then set browserName to "chromium" else if (appName is equal to "Firefox") then set browserName to "firefox" - else if (appName is equal to "Firefox Developer Edition") then - set browserName to "firefoxdeveloperedition" + else if (appName is equal to "SigmaOS") then + set browserName to "macos" + else if (appName is equal to "Arc") then + set browserName to "browser" end if else diff --git a/commands/system/default-browser-safari.applescript b/commands/system/default-browser-safari.applescript new file mode 100755 index 000000000..d1c2cc9d7 --- /dev/null +++ b/commands/system/default-browser-safari.applescript @@ -0,0 +1,64 @@ +#!/usr/bin/osascript + +# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser) +# Install via Homebrew: `brew install defaultbrowser` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Default to Safari +# @raycast.mode silent +# @raycast.packageName Browser + +# Optional parameters: +# @raycast.icon images/safari.png + +# Documentation: +# @raycast.author Marcos Sánchez-Dehesa +# @raycast.authorURL https://github.com/dehesa +# @raycast.description Set Safari as the default browser. + +# check to see what the current browser is +set currentDefaultBrowser to my getCurrentDefaultBrowser() + +set repeatCount to 0 + +tell application "System Events" + try + my changeDefaultBrowser("safari") + repeat until button 2 of window 1 of process "CoreServicesUIAgent" exists + delay 0.01 + set repeatCount to repeatCount + 1 + if repeatCount = 15 then exit repeat + end repeat + try + # if Chrome is the current default browser, the order of the buttons is reversed. Click button 1 to change the default browser to Safari. + if currentDefaultBrowser contains "com.google.chrome" then + click button 1 of window 1 of process "CoreServicesUIAgent" + else # otherwise click button 2 to change the default browser to Safari. + click button 2 of window 1 of process "CoreServicesUIAgent" + end if + log "Safari is now your default browser" + on error + log "Safari is already your default browser" + end try + on error + log "The \"defaultbrowser\" CLI tool is required: https://github.com/kerma/defaultbrowser 🔥" + end try +end tell + +to getCurrentDefaultBrowser() + set filePath to "~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist" + + set output to do shell script "plutil -p " & filePath & " | awk '/LSHandlerRoleAll/{a=$3}/LSHandlerURLScheme/{if($3==\"\\\"https\\\"\") print a}'" + return output +end getCurrentDefaultBrowser + +to changeDefaultBrowser(thebrowser) + do shell script " + if ! command -v defaultbrowser &> /dev/null; then + exit 1 + fi + defaultbrowser " & thebrowser & " + exit 0 + " +end changeDefaultBrowser diff --git a/commands/system/default-browser-safari.sh b/commands/system/default-browser-safari.sh deleted file mode 100755 index c68c2fe31..000000000 --- a/commands/system/default-browser-safari.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -# Dependency: requires defaultbrowser (https://github.com/kerma/defaultbrowser/) -# Install via Homebrew: `brew install defaultbrowser` - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Switch Default Browser to Safari -# @raycast.mode silent -# @raycast.packageName Browsing - -# Optional parameters: -# @raycast.icon 🧭 - -# Documentation: -# @raycast.author Marc Klingen -# @raycast.authorURL https://github.com/marcklingen -# @raycast.description Set Safari as the default browser. - -if ! command -v defaultbrowser &> /dev/null; then - echo "defaultbrowser is required (https://github.com/kerma/defaultbrowser/)."; - exit 1; -fi - -defaultbrowser safari -exit 0 diff --git a/commands/system/disk-free.sh b/commands/system/disk-free.sh new file mode 100755 index 000000000..6f8c4646d --- /dev/null +++ b/commands/system/disk-free.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# Addapted from existing Alfred workflow +# https://github.com/packal/repository/tree/master/com.ctn.diskfree + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Disk Free +# @raycast.packageName Utils +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.packageName System +# @raycast.icon 💾 + +# Documentation: +# @raycast.description Show free space in your mounted disks +# @raycast.author Juan Luis Romero +# @raycast.authorURL https://github.com/JuanluR8 + +# EXAMPLE: +# Macintosh HD: 95% (361 Gb) free +# 15 Gb used of 500 Gb total + +GREEN='\033[1;32m' +YELLOW='\033[1;33m' +RED='\033[1;31m' +NC='\033[0;m' + +while read -r item; do + [[ $item == /dev/* ]] || continue + + items=($item) + path="${items[@]:8}" + [[ "$path" == "/" ]] && name="$(diskutil info ${items[0]} | sed -nE 's/^ *Volume Name: +([^ ].*) *$/\1/p')" || name="${path##*/}" + + size=${items[1]:0:$((${#items[1]}-1))} + size_unit=${items[1]:$((${#items[1]}-1))}b + + used=${items[2]:0:$((${#items[2]}-1))} + used_unit=${items[2]:$((${#items[2]}-1))}b + + free=${items[3]:0:$((${#items[3]}-1))} + free_unit=${items[3]:$((${#items[3]}-1))}b + + perc=$((100-${items[4]:0:$((${#items[4]}-1))})) + + color=$NC + + if [[ perc -ge 70 ]]; then + color=$GREEN + elif [[ perc -lt 70 ]] && [[ perc -ge 30 ]]; then + color=$YELLOW + else + color=$RED + fi + + echo -e $name':' ${color} $perc'%' ${NC} '('$free $free_unit') free' + echo $used $used_unit 'used of' $size $size_unit 'total' + echo '' +done < <(df -Hl) \ No newline at end of file diff --git a/commands/system/dismiss-notifications.applescript b/commands/system/dismiss-notifications.applescript new file mode 100755 index 000000000..2c3c2716b --- /dev/null +++ b/commands/system/dismiss-notifications.applescript @@ -0,0 +1,49 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Dismiss Notifications +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🔕 +# @raycast.packageName System + +# Documentation: +# @raycast.description Close all notification alerts staying on screen, e.g., Calendar notifications. +# @raycast.author benyn +# @raycast.authorURL github.com/benyn + +tell application "System Events" to tell process "NotificationCenter" + -- Exit if there are no visible notifications. + if not (window "Notification Center" exists) then return + + -- `notificationContainer` refers to the UI element (of class `group`) holding notifications and can be either: + -- - A single, individual notification, or + -- - A collection of individual notifications and groups of stacked notifications. + set notificationContainer to a reference to group 1 of scroll area 1 of group 1 of group 1 of window "Notification Center" + + -- If it is a collection, close notifications and groups in reverse order to avoid index changes. + set notificationGroups to a reference to groups of notificationContainer + repeat with i from (number of notificationGroups) to 1 by -1 + set g to item i of notificationGroups + repeat with a in (actions of g whose description is "Close" or description starts with "Clear") + -- Ignore errors that happen if the last remaining item is an individual notification, + -- and `notificationCenter` is no longer a `group` of `group`s. + -- The final remaining notification will be closed in the second repeat statement below. + ignoring application responses + perform a + end ignoring + end repeat + end repeat + + -- Close the `notificationContainer` itself. This handles: + -- - A single, individual notification that was `notificationContainer` from the start, or + -- - The last remaining individual notification after the loop above. + repeat with a in (actions of notificationContainer whose description is "Close" or description starts with "Clear") + perform a + end repeat +end tell + +-- Prevent Raycast from displaying the successful result message. +return diff --git a/commands/system/do-not-disturb.sh b/commands/system/do-not-disturb.sh index 5f5f225bb..4bf758fbc 100755 --- a/commands/system/do-not-disturb.sh +++ b/commands/system/do-not-disturb.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # Dependency: This script requires `calm-notifications` cli installed: https://github.com/vitorgalvao/tiny-scripts/blob/master/calm-notifications # Install via homebrew: `brew install vitorgalvao/tiny-scripts/calm-notifications` @@ -11,18 +11,19 @@ # Optional parameters: # @raycast.icon 🔕 # @raycast.packageName System -# @raycast.argument1 { "type": "text", "placeholder": "command", "optional": true, "percentEncoded": true } +# @raycast.argument1 { "type": "text", "placeholder": "Command (default: toggle)", "optional": true, "percentEncoded": true } # # @Documentation: # @raycast.description Do Not Disturb # @raycast.author Antonio Dal Sie # @raycast.authorURL https://github.com/exodusanto -if [[ "$1" != "on" && "$1" != "off" && "$1" != "toggle" ]]; then - echo "Unsupported parameter value: $1 (must be [on/off/toggle])" +cmd=${1:-"toggle"} + +if [[ "$cmd" != "on" && "$cmd" != "off" && "$cmd" != "toggle" ]]; then + echo "Unsupported command: $1 (must be [on/off/toggle])" exit 1 fi -calm-notifications $1 -sleep 2 -echo "Do Not Disturb $(calm-notifications status)" \ No newline at end of file +calm-notifications $cmd +echo "Do Not Disturb $(calm-notifications status)" diff --git a/commands/system/dock-autohide-toggle.sh b/commands/system/dock-autohide-toggle.sh new file mode 100755 index 000000000..5b05c740d --- /dev/null +++ b/commands/system/dock-autohide-toggle.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Dock Autohide +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.packageName System + +# Documentation: +# @raycast.description Toggle the Dock Autohide +# @raycast.author Jelte Lagendijk +# @raycast.authorURL https://raycast.com/j3lte + +autohide=$(defaults read com.apple.dock autohide) + +if [[ $autohide == 1 ]]; then + defaults write com.apple.dock autohide -bool false; killall Dock +else + defaults write com.apple.dock autohide -bool true; killall Dock +fi diff --git a/commands/system/dock-set-autohide.sh b/commands/system/dock-set-autohide.sh new file mode 100755 index 000000000..f3a4c0287 --- /dev/null +++ b/commands/system/dock-set-autohide.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Dock Set Autohide +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.argument1 { "type": "dropdown", "placeholder": "On/Off", "data": [{"title": "Off", "value": "false"}, {"title": "On", "value": "true"}] } +# @raycast.packageName System + +# Documentation: +# @raycast.description Set the Dock autohide +# @raycast.author Jelte Lagendijk +# @raycast.authorURL https://raycast.com/j3lte + +defaults write com.apple.dock autohide -bool $1; killall Dock diff --git a/commands/system/dock-set-position.sh b/commands/system/dock-set-position.sh new file mode 100755 index 000000000..de91f8452 --- /dev/null +++ b/commands/system/dock-set-position.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Dock Position +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🤖 +# @raycast.argument1 { "type": "dropdown", "placeholder": "Position on Screen", "data": [{"title": "Left", "value": "left"}, {"title": "Right", "value": "right"}, {"title": "Bottom", "value": "bottom"}] } +# @raycast.packageName System + +# Documentation: +# @raycast.description Set the position of the Dock in the screen +# @raycast.author Jelte Lagendijk +# @raycast.authorURL https://raycast.com/j3lte + +defaults write com.apple.dock orientation -string $1; killall Dock diff --git a/commands/system/images/apple_sidecar.png b/commands/system/images/apple_sidecar.png new file mode 100644 index 000000000..53caa7439 Binary files /dev/null and b/commands/system/images/apple_sidecar.png differ diff --git a/commands/system/images/arc.png b/commands/system/images/arc.png new file mode 100644 index 000000000..eb423a235 Binary files /dev/null and b/commands/system/images/arc.png differ diff --git a/commands/system/images/chrome.png b/commands/system/images/chrome.png new file mode 100644 index 000000000..e3fb307b6 Binary files /dev/null and b/commands/system/images/chrome.png differ diff --git a/commands/system/images/custom-window-size.png b/commands/system/images/custom-window-size.png new file mode 100644 index 000000000..4344482f1 Binary files /dev/null and b/commands/system/images/custom-window-size.png differ diff --git a/commands/system/images/firefox.png b/commands/system/images/firefox.png new file mode 100644 index 000000000..4a711cace Binary files /dev/null and b/commands/system/images/firefox.png differ diff --git a/commands/system/images/minimize-window.png b/commands/system/images/minimize-window.png new file mode 100644 index 000000000..70825c024 Binary files /dev/null and b/commands/system/images/minimize-window.png differ diff --git a/commands/system/images/safari.png b/commands/system/images/safari.png new file mode 100644 index 000000000..243df56f7 Binary files /dev/null and b/commands/system/images/safari.png differ diff --git a/commands/system/inline-cpu-usage-percent.sh b/commands/system/inline-cpu-usage-percent.sh new file mode 100755 index 000000000..cfe464085 --- /dev/null +++ b/commands/system/inline-cpu-usage-percent.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title CPU Usage +# @raycast.mode inline +# @raycast.packageName System +# @raycast.refreshTime 10s + +# Optional parameters: +# @raycast.icon 🖥️ + +# Documentation: +# @raycast.description Display CPU usage percent +# @raycast.author Juan Luis Romero +# @raycast.authorURL https://github.com/JuanluR8 + + +output=$(top -l 1 | grep "CPU usage") +cpu_usage=$(echo "$output" | awk -F " " '{print $3}' | cut -d% -f1) + +echo "CPU Usage: ${cpu_usage}%" \ No newline at end of file diff --git a/commands/system/magic-keyboard-switcher/README.md b/commands/system/magic-keyboard-switcher/README.md new file mode 100644 index 000000000..a6ce88ad3 --- /dev/null +++ b/commands/system/magic-keyboard-switcher/README.md @@ -0,0 +1,21 @@ +# magic-keyboard-switcher +Script command to easility switch the bluetooth connectivity of a single Magic Keyboard between several computers. + +## How to setup + +1. Install [blueutil](https://github.com/toy/blueutil). You can use [brew](https://brew.sh/) - `brew install blueutil` +2. Find out your Magic Keyboard bluetooth MAC address. With the keyboard connected, keep the Option key pressed while you click on your status bar bluetooth icon. +
    + Bluetooth menu +
    + +3. Open the script file, set your Magic Keyboard bluetooth MAC address in the `BTMAC` variable and review the blueutil binary location set in the `BIN` variable. +4. Remove `.template` from the file name. +5. Say Ok when prompted about giving Bluetooth permissions to Raycast after executing the script command. + +## How to switch the Magic Keyboard between computers + +It's desirable to have Raycast and this script command installed in both computers. + +First, run the script command in the one that has the keyboard currently connected. It will disconnect it and make it discoverable. +Second, run the script command in the other computer. It should connect it. diff --git a/commands/system/magic-keyboard-switcher/images/bluetooth menu.png b/commands/system/magic-keyboard-switcher/images/bluetooth menu.png new file mode 100644 index 000000000..de5d4070a Binary files /dev/null and b/commands/system/magic-keyboard-switcher/images/bluetooth menu.png differ diff --git a/commands/system/magic-keyboard-switcher/images/logo.png b/commands/system/magic-keyboard-switcher/images/logo.png new file mode 100644 index 000000000..200a262fe Binary files /dev/null and b/commands/system/magic-keyboard-switcher/images/logo.png differ diff --git a/commands/system/magic-keyboard-switcher/magic-keyboard-switcher.template.sh b/commands/system/magic-keyboard-switcher/magic-keyboard-switcher.template.sh new file mode 100755 index 000000000..e27d2b939 --- /dev/null +++ b/commands/system/magic-keyboard-switcher/magic-keyboard-switcher.template.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Dependency: This script requires `blueutil` cli installed: https://github.com/toy/blueutil +# Install via homebrew: `brew install blueutil` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Magic Keyboard switcher +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/logo.png +# @raycast.packageName System + +# Documentation: +# @raycast.author blastik +# @raycast.authorURL https://github.com/blastik +# @raycast.description Switch a single magic keyboard between computers + +# blueutil location +BIN=/opt/homebrew/bin/blueutil + +# Your Magic Keyboard MAC Address +BTMAC='XX:XX:XX:XX:XX:XX' + +CMD_VAL="$($BIN --is-connected $BTMAC)" +CMD_UNPAIR="$BIN --unpair $BTMAC" +CMD_PAIR="$BIN --pair $BTMAC" +CMD_CONN="$BIN --connect $BTMAC" + +if ! command -v blueutil &> /dev/null; then + echo "blueutil command is required (https://github.com/toy/blueutil)."; + exit 1; +fi + +if [[ "$CMD_VAL" -eq 1 ]]; then + echo "Connected to $BTMAC" + echo "Going to disconnect $BTMAC" + $($CMD_UNPAIR) + if [[ $? -eq 0 ]]; then + echo "Disconnected from $BTMAC" + else + echo "Failed to disconnect from $BTMAC" + exit 1 + fi +else + echo "Not connected to $BTMAC" + $($CMD_PAIR) + sleep 1 + $($CMD_CONN) + if [[ $? -eq 0 ]]; then + echo "Connected to $BTMAC" + else + echo "Failed to connect to $BTMAC" + exit 1 + fi +fi diff --git a/commands/system/meeting_summary_script.swift b/commands/system/meeting_summary_script.swift new file mode 100755 index 000000000..57053400c --- /dev/null +++ b/commands/system/meeting_summary_script.swift @@ -0,0 +1,92 @@ +#!/usr/bin/swift + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Copy Meeting Summary +// @raycast.mode silent +// @raycast.packageName System +// +// Optional parameters: +// @raycast.icon 📝 +// +// Documentation: +// @raycast.description Copies a summary of today's meetings to the clipboard. + +import AppKit +import EventKit + +let now = Date() +let calendar: Calendar = .current + +do { + let today: (startDate: Date, endDate: Date, events: [EKEvent]) + + do { + // Retrieve the range for today (from 00:00 to 23:59) + today.startDate = calendar.startOfDay(for: now) + today.endDate = calendar.date(byAdding: .day, value: 1, to: today.startDate)! + + // Retrieve all the events for today + let store = EKEventStore() + let predicate = store.predicateForEvents(withStart: today.startDate, end: today.endDate, calendars: nil) + today.events = store.events(matching: predicate) + .filter { !$0.isAllDay } // Exclude all-day events + .sorted { $0.startDate < $1.startDate } // Sort by start time + } + + let summary: String + if today.events.isEmpty { + summary = "No meetings scheduled for today." + } else { + let dateFormatter = DateFormatter() + dateFormatter.dateStyle = .full + dateFormatter.timeStyle = .none + let todayString = dateFormatter.string(from: now) + + let timeFormatter = DateFormatter() + timeFormatter.dateStyle = .none + timeFormatter.timeStyle = .short + timeFormatter.timeZone = TimeZone.current + + let meetingList = today.events.map { event in + let startTime = timeFormatter.string(from: event.startDate) + let title = event.title ?? "Untitled Event" + let timezone = timeFormatter.timeZone.abbreviation() ?? "" + + var meetingInfo = timezone.isEmpty ? "• \(startTime): \(title)" : "• \(startTime) \(timezone): \(title)" + + // Add location if available + if let location = event.location, !location.isEmpty { + meetingInfo += " (\(location))" + } + + // Add notes if available (first line only to keep it concise) + if let notes = event.notes, !notes.isEmpty { + let firstLine = notes.components(separatedBy: .newlines).first ?? "" + let cleanedNotes = firstLine.trimmingCharacters(in: .whitespacesAndNewlines) + // Filter out junk characters (like the -::~: pattern) + let validNotes = cleanedNotes.filter { char in + char.isLetter || char.isNumber || char.isWhitespace || char.isPunctuation && !"-:~".contains(char) + } + if !validNotes.isEmpty && validNotes.count <= 100 && !validNotes.allSatisfy({ "-:~".contains($0) }) { + meetingInfo += "\n Notes: \(String(validNotes))" + } + } + + return meetingInfo + }.joined(separator: "\n") + + let meetingCount = today.events.count + + summary = """ +Meetings: +\(meetingList) +""" + } + + NSPasteboard.general.declareTypes([NSPasteboard.PasteboardType.string], owner: nil) + NSPasteboard.general.setString(summary, forType: NSPasteboard.PasteboardType.string) + print("Copied meeting summary to clipboard") +} catch { + print("Error retrieving calendar events: \(error)") +} \ No newline at end of file diff --git a/commands/system/minimize-all-windows.applescript b/commands/system/minimize-all-windows.applescript new file mode 100755 index 000000000..ce41f0ac9 --- /dev/null +++ b/commands/system/minimize-all-windows.applescript @@ -0,0 +1,18 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Minimize All Windows +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/minimize-window.png +# @raycast.packageName System +# Documentation: +# @raycast.author Ernest Ojeh +# @raycast.authorURL https://github.com/namzo +# @raycast.description This script minimizes all windows of currently running apps + +tell application "System Events" + keystroke "hm" using {command down, option down} +end tell \ No newline at end of file diff --git a/commands/system/network-quality.sh b/commands/system/network-quality.sh new file mode 100755 index 000000000..efd2e8ffd --- /dev/null +++ b/commands/system/network-quality.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Network Quality +# @raycast.mode inline +# @raycast.refreshTime 20m + +# Optional parameters: +# @raycast.icon 🌐 + +# Documentation: +# @raycast.packageName System +# @raycast.author Archie Lacoin +# @raycast.authorURL https://github.com/pomdtr +# @raycast.author LanikSJ +# @raycast.authorURL https://github.com/LanikSJ + +result=$(networkQuality -v) + +rtt=$(echo "$result" | grep "Idle Latency" | awk '{print $3}') +mbps_down=$(echo "$result" | grep "Downlink capacity" | awk '{print $3 tolower($4)}') +mbps_up=$(echo "$result" | grep "Uplink capacity" | awk '{print $3 tolower($4)}') + +echo "↓ ${mbps_down} ↑ ${mbps_up} ↔ ${rtt} ms" diff --git a/commands/system/nightshift.sh b/commands/system/nightshift.sh new file mode 100755 index 000000000..b43718193 --- /dev/null +++ b/commands/system/nightshift.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Dependency: This script requires `nightlight` to be installed: https://github.com/smudge/nightlight +# Install via homebrew: `brew install smudge/smudge/nightlight` + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Night Shift +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 🌘 +# @raycast.packageName System + +# Documentation: +# @raycast.description Toggle Night Shift mode (until tomorrow/sunrise). Required [nightlight](https://github.com/smudge/nightlight) +# @raycast.author BhEaN +# @raycast.authorURL https://github.com/bhean + +if ! command -v nightlight &> /dev/null; then + echo "Download nightlight is required (https://github.com/smudge/nightlight)". + exit 1; +fi + +nightlight toggle +status=$(nightlight status) +echo "Night Shift ${status}" diff --git a/commands/system/ocr.swift b/commands/system/ocr.swift new file mode 100755 index 000000000..cb22349e7 --- /dev/null +++ b/commands/system/ocr.swift @@ -0,0 +1,143 @@ +#!/usr/bin/swift + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title OCR +// @raycast.mode silent + +// Optional parameters: +// @raycast.icon 🖼 +// @raycast.packageName Productivity + +// Documentation: +// @raycast.author zhe +// @raycast.authorURL https://github.com/wmszhe +// @raycast.description Use macOS Vision API Identification pictures, if it contain a QR code, Copy the QR code content to the clipboard, If do not include QR codes, identify text content and supplement to clipboard + + +import Foundation +import CoreImage +import Cocoa +import Vision + +let screenCapturePath = "/tmp/ocr.png" +let recognitionLanguages = ["zh-Hans", "en-US"] +let joiner = " " + +@discardableResult +func screenCapture(_ command: String) throws -> String { + let task = Process() + let pipe = Pipe() + + task.launchPath = "/bin/bash" + task.arguments = ["-c", command] + task.standardOutput = pipe + task.standardError = pipe + + try task.run() + + let data = pipe.fileHandleForReading.readDataToEndOfFile() + if let output = String(data: data, encoding: .utf8) { + return output + } else { + throw NSError(domain: "error", code: -1, userInfo: nil) + } +} + +func convertCIImageToCGImage(inputImage: CIImage) -> CGImage? { + let context = CIContext(options: nil) + return context.createCGImage(inputImage, from: inputImage.extent) +} + +func paste(text: String) { + let pasteboard = NSPasteboard.general + pasteboard.declareTypes([.string], owner: nil) + pasteboard.clearContents() + pasteboard.setString(text, forType: .string) +} + +func recognizeTextHandler(request: VNRequest, error: Error?) { + guard let observations = request.results as? [VNRecognizedTextObservation] else { + return + } + let recognizedStrings = observations.compactMap { observation in + // Return the string of the top VNRecognizedText instance. + observation.topCandidates(1).first?.string + } + + // Process the recognized strings. + let result = recognizedStrings.joined(separator: joiner) + + print("The text content is: " + result) + + paste(text: result) +} + +func detectText(fileName: URL) { + guard + let ciImage = CIImage(contentsOf: fileName), + let img = convertCIImageToCGImage(inputImage: ciImage) + else { + return + } + + let requestHandler = VNImageRequestHandler(cgImage: img) + + // Create a new request to recognize text. + let request = VNRecognizeTextRequest(completionHandler: recognizeTextHandler) + request.recognitionLanguages = recognitionLanguages + + do { + // Perform the text-recognition request. + try requestHandler.perform([request]) + } catch { + print("Unable to perform the requests: \(error).") + } +} + +func detectImage(fileName: URL) -> Bool { + let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: nil) + + guard let ciImage = CIImage(contentsOf: fileName), let features = detector?.features(in: ciImage) else { + return false + } + + var isQRCode = false + var result = "" + for feature in features as! [CIQRCodeFeature] { + if feature.type == "QRCode" { + isQRCode = true + } + result += feature.messageString ?? "" + result += "\n" + } + + if isQRCode { + print("QR code analysis results: " + result) + paste(text: result) + } + + return isQRCode +} + +func main() { + // Only support the system above macOS 10.15 + guard #available(OSX 10.15, *) else { + return print("Only support the system above macOS 10.15") + } + do { + // It must be ensured that the screenshot is preserved successfully + try screenCapture("/usr/sbin/screencapture -i " + screenCapturePath) + print("screen capture complete, Image preservation location: " + screenCapturePath) + } catch { + return print("\(error)") + } + + // Determine whether the picture contains a QR code, if it contain a QR code, Copy the QR code content to the clipboard + guard detectImage(fileName: URL(fileURLWithPath: screenCapturePath)) else { + // If do not include QR codes, identify text content and supplement to clipboard + return detectText(fileName: URL(fileURLWithPath: screenCapturePath)) + } +} + +main() diff --git a/commands/system/open-image-from-clipboard.sh b/commands/system/open-image-from-clipboard.sh new file mode 100755 index 000000000..affb7cdc1 --- /dev/null +++ b/commands/system/open-image-from-clipboard.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Dependency: `brew install pngpaste coreutils` +# pngpaste required to grab image from clipboard +# coreutils required to create temp file with suffix + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Open Image +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📋 +# @raycast.packageName Clipboard + +# Documentation: +# @raycast.description Open Image from Clipboard in Preview for OCR or other purposes. +# @raycast.author xxchan +# @raycast.authorURL https://github.com/xxchan + +tempfile=$(gmktemp --suffix=.png) && pngpaste $tempfile && open $tempfile diff --git a/commands/system/otp.sh b/commands/system/otp.sh new file mode 100755 index 000000000..830ba3ded --- /dev/null +++ b/commands/system/otp.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Dependency: This script requires `apw`, `jq` and `awk` to be installed and in $PATH +# +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title One-Time Password +# @raycast.mode silent +# +# Optional parameters: +# @raycast.icon 🔑 +# @raycast.packageName System +# @raycast.argument1 { "type": "text", "placeholder": "Domain" } +# @raycast.argument2 { "type": "text", "placeholder": "Username Index", "optional": true } +# +# @raycast.description Get One-Time Password (OTP) from Apple Password Manager +# @raycast.author Angelos Michalopoulos +# @raycase.authorURL https://github.com/miagg + +if ! command -v apw &> /dev/null || ! command -v jq &> /dev/null || ! command -v awk &> /dev/null; then + echo "This function requires apw, jq and awk to be installed" + exit 1 +fi +UINDEX=$((${2:-1} - 1)) +CODES=$(apw otp get "$1" 2>/dev/null) +STATUS=$? +# ✋ If return code 9, not authenticated, run apw auth +if [ $STATUS -eq 9 ]; then + echo "Please authenticate first by running 'apw auth'" + exit 1 +fi +# ✋ If return code 3, domain not found, alert user +if [ $STATUS -eq 3 ]; then + echo "Domain $1 not found" + exit 1 +fi +# Grab available OTP codes for domain +CODES_COUNT=$(echo $CODES | jq '.results | length') +if [ $CODES_COUNT -gt 1 ]; then + CODE=$(echo $CODES | jq -r ".results[$UINDEX].code") + USERNAME=$(echo $CODES | jq -r ".results[$UINDEX].username") + if [ "$CODE" == "null" ]; then + echo "Please provide an index between 1 and $CODES_COUNT" + exit 1 + fi +else + CODE=$(echo $CODES | jq -r '.results[0].code') + USERNAME=$(echo $CODES | jq -r ".results[0].username") +fi +echo $CODE | pbcopy +echo "OTP code for $USERNAME copied to clipboard" \ No newline at end of file diff --git a/commands/system/rename-videos-pictures.py b/commands/system/rename-videos-pictures.py new file mode 100755 index 000000000..f4f25c862 --- /dev/null +++ b/commands/system/rename-videos-pictures.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Rename Video +# @raycast.mode fullOutput + +# Optional parameters: +# @raycast.icon 📂 +# @raycast.argument1 { "type": "text", "placeholder": "Directory's absolute path", "optional": false } +# @raycast.argument2 { "type": "text", "placeholder": "Type (video/image/all)", "optional": true } +# @raycast.argument3 { "type": "text", "placeholder": "Dry Run (true/false)", "optional": true } + +# Documentation: +# @raycast.description This is a simple Python script for recursively renaming video and picture files within a directory. Type the root directory's absolute path, and it will scan all the video and picture files in it and rename them according to the folder where they are located as the format `--`. +# @raycast.author StepaniaH +# @raycast.authorURL https://github.com/StepaniaH + +import os +import sys +import datetime +import argparse +import re + +class RenameFilesAsDate: + def __init__(self, root_directory): + self.root_directory = os.path.expanduser(root_directory) + self.error_files = {} + self.video_extensions = ('.mp4', '.avi', '.mov', '.mkv', '.wmv', '.flv', '.webm', '.m4v', '.3gp') + self.image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp', '.tiff', '.svg', '.heic') + + def rename_files(self, file_type='all', dry_run=False): + current_date = datetime.datetime.now().strftime("%m%d") + self._process_directory(self.root_directory, current_date, file_type, dry_run) + + if self.error_files: + print("\nThe following files could not be renamed:") + for original_path, error in self.error_files.items(): + print(f"{original_path}: {error}") + + def _is_already_renamed(self, filename, current_date): + """Check if the file has been named according to the target format""" + base_name = os.path.splitext(filename)[0] + pattern = re.compile(f'^.*-{current_date}-\\d+$') + return bool(pattern.match(base_name)) + + def _get_max_sequence_number(self, directory, current_date): + """Get the largest serial number existing in the current directory""" + max_seq = 0 + pattern = re.compile(f'^.*-{current_date}-(\\d+)$') + + for entry in os.listdir(directory): + match = pattern.match(os.path.splitext(entry)[0]) + if match: + seq_num = int(match.group(1)) + max_seq = max(max_seq, seq_num) + return max_seq + + def _process_directory(self, directory, current_date, file_type, dry_run): + folder_name = os.path.basename(directory) + supported_extensions = self._get_supported_extensions(file_type) + + # First collect the files that need to be renamed + files_to_rename = [] + for entry in os.listdir(directory): + entry_path = os.path.join(directory, entry) + + if os.path.isfile(entry_path): + if entry.lower().endswith(supported_extensions): + if not self._is_already_renamed(entry, current_date): + files_to_rename.append(entry) + elif os.path.isdir(entry_path): + self._process_directory(entry_path, current_date, file_type, dry_run) + + if files_to_rename: + # Get the largest serial number existing in the current directory + count = self._get_max_sequence_number(directory, current_date) + 1 + total_files = len(files_to_rename) + num_digits = len(str(total_files + count - 1)) + + # Rename collected files + for entry in sorted(files_to_rename): # Sort to ensure consistent rename order + entry_path = os.path.join(directory, entry) + new_name = f"{folder_name}-{current_date}-{count:0{num_digits}d}{os.path.splitext(entry)[1].lower()}" + new_path = os.path.join(directory, new_name) + + if dry_run: + print(f"Would rename: {entry} -> {new_name}") + else: + try: + os.rename(entry_path, new_path) + print(f"Renamed: {entry} -> {new_name}") + except OSError as e: + self.error_files[entry_path] = f"Rename failed: {str(e)}" + continue + count += 1 + + def _get_supported_extensions(self, file_type): + if file_type == 'video': + return self.video_extensions + elif file_type == 'image': + return self.image_extensions + return self.video_extensions + self.image_extensions + +def main(): + args = sys.argv[1:] + + directory = None + file_type = 'all' + dry_run = False + + if len(args) >= 1: + directory = args[0] + if len(args) >= 2 and args[1]: + file_type = args[1] + if len(args) >= 3 and args[2]: + dry_run = args[2].lower() == 'true' + + if not directory: + print("Error: Directory argument is required.") + sys.exit(1) + + renamer = RenameFilesAsDate(directory) + renamer.rename_files(file_type, dry_run) + +if __name__ == '__main__': + main() diff --git a/commands/system/reset-launchpad.sh b/commands/system/reset-launchpad.sh new file mode 100755 index 000000000..5df20819d --- /dev/null +++ b/commands/system/reset-launchpad.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Reset Launchpad +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🚀 +# @raycast.packageName System + +# Documentation: +# @raycast.description Resets the macOS Launchpad to its default state +# @raycast.author Zach Dawson +# @raycast.authorURL https://raycast.com/zdawz + +defaults write com.apple.dock ResetLaunchPad -bool true +killall Dock diff --git a/commands/system/save-image-from-clipboard.py b/commands/system/save-image-from-clipboard.py new file mode 100755 index 000000000..d95370c76 --- /dev/null +++ b/commands/system/save-image-from-clipboard.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +# Dependency: This script requires Pillow Python module +# Install via Python: python3 -m pip install Pillow + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Save Image From Clipboard +# @raycast.mode silent +# @raycast.packageName Clipboard + +# Optional parameters: +# @raycast.icon 🤖 + +# Documentation: +# @raycast.description Save Image From Clipboard +# @raycast.author Yufei Kang +# @raycast.authorURL kangyufei.net +# @raycast.author LanikSJ +# @raycast.authorURL https://github.com/LanikSJ + +from datetime import datetime +from pathlib import Path + +from PIL import ImageGrab + +home = Path.home() + + +def save_image(): + im = ImageGrab.grabclipboard() + if im != None: + filepath = home / "Downloads/ScreenShot-{}.png".format( + datetime.now().strftime("%Y%m%d-%H%M%S") + ) + im.save(filepath.as_posix()) + print(f"OK Saved In: {filepath}") + else: + print("No Image in Clipboard") + + +if __name__ == "__main__": + save_image() + diff --git a/commands/system/sidecar-toggle.template.applescript b/commands/system/sidecar-toggle.template.applescript deleted file mode 100755 index cb6dfe555..000000000 --- a/commands/system/sidecar-toggle.template.applescript +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/osascript - -# Required parameters: -# @raycast.schemaVersion 1 -# @raycast.title Sidecar Switch -# @raycast.mode silent - -# Optional parameters: -# @raycast.icon 🖥 -# @raycast.packageName System - -# Documentation: -# @raycast.description Toggles on/off a Sidecar screen. -# @raycast.author Marcos Sánchez-Dehesa -# @raycast.authorURL https://www.github.com/dehesa - -# You can figure out your device's name on System Preferences > Sidecar > Connect to menu -property deviceName : "Device name" -# Change the "Disconnect" value if your OS is in a different language than English -property buttonName : "Disconnect" - -property isConnected : false - -tell application "System Preferences" - activate - reveal pane id "com.apple.preference.sidecar" - delay 0.9 - - try - tell application "System Events" to click button buttonName of first window of application process "System Preferences" of application "System Events" - on error - tell application "System Events" to click first menu button of first window of application process "System Preferences" of application "System Events" - # If your sidecar screen device changes, you can change the "click menu item deviceName" by "click first menu item" - tell application "System Events" to click menu item deviceName of first menu of first menu button of first window of application process "System Preferences" of application "System Events" - set isConnected to true - end try - - quit -end tell - -if isConnected then - do shell script "echo Connection established to " & deviceName -else - do shell script "echo " & deviceName & " was disconnected" -end if diff --git a/commands/system/sleep-timer.applescript b/commands/system/sleep-timer.applescript new file mode 100755 index 000000000..8cd9ae4ee --- /dev/null +++ b/commands/system/sleep-timer.applescript @@ -0,0 +1,22 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Sleep Timer +# @raycast.mode silent +# @raycast.description Put your Mac to sleep (in X minutes). +# @raycast.packageName System + +# Optional parameters: +# @raycast.icon 😴 +# @raycast.argument1 { "optional": true, "type": "text", "placeholder": "(in) minutes" } + +# Documentation: +# @raycast.author AndriiBarabash +# @raycast.authorURL https://github.com/AndriiBarabash + +on run argv + delay (item 1 of argv) * 60 + tell application "Finder" to sleep +end run + diff --git a/commands/system/toggle-battery-charging.sh b/commands/system/toggle-battery-charging.sh new file mode 100755 index 000000000..a4571f298 --- /dev/null +++ b/commands/system/toggle-battery-charging.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Note: You must do two steps for this script to work. +# 1- run "curl https://raw.githubusercontent.com/actuallymentor/battery/main/setup.sh | sudo bash" to install smc and battery script +# 2- run "battery visudo" to add battery command to sudoers + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Battery Charging +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🔋 +# @raycast.packageName System + +# Documentation: +# @raycast.description Toggle charging the battery when it is plugged in. When turned off, it will always use the charger instead of the battery; when turned on, it will go to automatic mode (decide based on your settings and daily charging routine). +# @raycast.author Amir Hossein SamadiPour +# @raycast.authorURL https://github.com/SamadiPour + +hex_status=$( smc -k CH0B -r | awk '{print $4}' | sed s:\):: ) +if [[ "$hex_status" == "00" ]]; then + battery charging off + echo "Charging OFF" +else + battery charging on + echo "Charging ON" +fi diff --git a/commands/system/toggle-desktop-icons.applescript b/commands/system/toggle-desktop-icons.applescript index f6fda8956..f4d98c0f6 100755 --- a/commands/system/toggle-desktop-icons.applescript +++ b/commands/system/toggle-desktop-icons.applescript @@ -26,8 +26,20 @@ end if do shell script "defaults write com.apple.finder CreateDesktop -bool " & NewSet -tell application "Finder" - quit +tell application "Finder" to quit + +set inTime to current date +repeat + -- check Finder process not exist + tell application "System Events" + if "Finder" is not in (get name of processes) then exit repeat + end tell + -- if repeat run for 10s, exit repeat + if (current date) - inTime is greater than 10 then exit repeat + delay 0.2 +end repeat + +tell application "Finder" try activate end try diff --git a/commands/system/toggle-desktop-widget.sh b/commands/system/toggle-desktop-widget.sh new file mode 100755 index 000000000..a78783604 --- /dev/null +++ b/commands/system/toggle-desktop-widget.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Desktop Widgets +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 🔄 + +# Documentation: +# @raycast.author Federico Zivolo +# @raycast.authorURL https://github.com/FezVrasta + +# Get the current value of the preference +current_value=$(defaults read com.apple.WindowManager StandardHideWidgets) + +# Toggle the value +if [[ $current_value == 1 ]]; then + new_value=0 +else + new_value=1 +fi + +# Write the new value to the preference +defaults write com.apple.WindowManager StandardHideWidgets -int $new_value diff --git a/commands/system/toggle-ds-store.applescript b/commands/system/toggle-ds-store.applescript new file mode 100755 index 000000000..8e391b818 --- /dev/null +++ b/commands/system/toggle-ds-store.applescript @@ -0,0 +1,30 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle .DS_Store +# @raycast.mode silent +# @raycast.packageName System + +# Optional parameters: +# @raycast.icon 🧬 +# @raycast.author Astrit +# @raycast.authorURL https://github.com/astrit +# @raycast.description A script command to enable and disable .DS_Store + + +try + set ToggleDSStore to do shell script "defaults read com.apple.desktopservices" +on error + set ToggleDSStore to "1" +end try + +if ToggleDSStore is "1" then + do shell script "defaults write com.apple.desktopservices DSDontWriteNetworkStores true" + set DSStoreStatus to ".DS_Store Deactivated" +else + do shell script "defaults delete com.apple.desktopservices DSDontWriteNetworkStores" + set DSStoreStatus to ".DS_Store Activated" +end if + +DSStoreStatus diff --git a/commands/system/toggle-lid-sleep.sh b/commands/system/toggle-lid-sleep.sh new file mode 100755 index 000000000..0f76659e3 --- /dev/null +++ b/commands/system/toggle-lid-sleep.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Note: You must add pmset to sudoers for this script to work. +# 1- run to create file and open editor: +# sudo visudo -f /etc/sudoers.d/pmset +# 2- press 'i' to enter input mode +# 3- paste this line into the editor: +# ALL ALL=NOPASSWD: /usr/bin/pmset +# 4- press 'esc' to exit input mode +# 5- type this to exit and save file: +# :wq + +# Note: this will not prevent laptop sleep from timeout. +# Refer to System Settings and search for 'sleep' there for +# things like 'Turn display off on battery when inactive' and +# 'Prevent automatic sleeping on power adapter when the display is off' + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Lid Sleep +# @raycast.mode inline + +# Optional parameters: +# @raycast.icon 🐚 +# @raycast.packageName System + +# Documentation: +# @raycast.description Prevent sleep from closing laptop lid (clamshell mode) +# @raycast.author Ivan Rybalko +# @raycast.authorURL https://github.com/ivribalko + +validate_exit_code() +{ + if [ $? -ne 0 ]; then + echo "probably missing sudoers, see sources for how-to." + exit 1 + fi +} + +if [[ $(pmset -g | grep SleepDisabled | cut -f3) -eq '1' ]]; then + sudo pmset disablesleep 0 2> /dev/null + validate_exit_code + echo now on 💤 +else + sudo pmset disablesleep 1 2> /dev/null + validate_exit_code + echo now off ☕ +fi diff --git a/commands/system/toggle-natural-scrolling-macos15.applescript b/commands/system/toggle-natural-scrolling-macos15.applescript new file mode 100755 index 000000000..710b7e435 --- /dev/null +++ b/commands/system/toggle-natural-scrolling-macos15.applescript @@ -0,0 +1,69 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Natural Scrolling (macOS 15+) +# @raycast.mode silent +# @raycast.packageName System + +# Optional parameters: +# @raycast.icon 🖱 +# @raycast.author Raphael-KR +# @raycast.authorURL https://github.com/Raphael-KR +# @raycast.description Toggle natural trackpad/mouse scrolling setting for macOS 15.6.1+ + +set macVersion to system version of (system info) + +if macVersion is greater than or equal to "15" then + try + set isNaturalScrolling to (do shell script "defaults read .GlobalPreferences 'com.apple.swipescrolldirection' 2>/dev/null || echo '1'") + + if isNaturalScrolling is "1" then + do shell script "defaults write .GlobalPreferences 'com.apple.swipescrolldirection' -bool NO" + display notification "Natural Scrolling: OFF" with title "Trackpad Settings" + else + do shell script "defaults write .GlobalPreferences 'com.apple.swipescrolldirection' -bool YES" + display notification "Natural Scrolling: ON" with title "Trackpad Settings" + end if + + do shell script "/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u" + + on error e + display notification "Using GUI method as fallback" with title "Trackpad Settings" + + tell application "System Settings" + activate + set current pane to pane "com.apple.preference.trackpad" + end tell + + delay 0.6 + + tell application "System Events" + tell process "System Settings" + click radio button 2 of tab group 1 of window "Trackpad" + click checkbox 1 of tab group 1 of window "Trackpad" + end tell + end tell + + tell application "System Settings" to quit + end try + +else + display notification "For macOS 14 and earlier, use the original script" with title "Compatibility Note" + + tell application "System Settings" + activate + set current pane to pane "com.apple.preference.trackpad" + end tell + + delay 0.6 + + tell application "System Events" + tell process "System Settings" + click radio button 2 of tab group 1 of window "Trackpad" + click checkbox 1 of tab group 1 of window "Trackpad" + end tell + end tell + + tell application "System Settings" to quit +end if diff --git a/commands/system/toggle-natural-scrolling.applescript b/commands/system/toggle-natural-scrolling.applescript index 106652a37..1d3e13253 100755 --- a/commands/system/toggle-natural-scrolling.applescript +++ b/commands/system/toggle-natural-scrolling.applescript @@ -12,18 +12,32 @@ # @raycast.authorURL https://twitter.com/wileymarques # @raycast.description Script Command to change natural trackpad/mouse scrolling setting. Reverting the setting value each time. -tell application "System Preferences" - activate - set current pane to pane "com.apple.preference.trackpad" -end tell +set macVersion to system version of (system info) -delay 0.6 - -tell application "System Events" - tell process "System Preferences" - click radio button 2 of tab group 1 of window "Trackpad" - click checkbox 1 of tab group 1 of window "Trackpad" - end tell -end tell - -tell application "System Preferences" to quit +if macVersion is greater than or equal to "14" then + set isNaturalScrolling to (do shell script "defaults -currentHost read NSGlobalDomain com.apple.swipescrolldirection") + + if isNaturalScrolling is "1" then + do shell script "defaults -currentHost write NSGlobalDomain com.apple.swipescrolldirection -bool NO" + else + do shell script "defaults -currentHost write NSGlobalDomain com.apple.swipescrolldirection -bool YES" + end if + + do shell script "/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u" +else + tell application "System Settings" + activate + set current pane to pane "com.apple.preference.trackpad" + end tell + + delay 0.6 + + tell application "System Events" + tell process "System Preferences" + click radio button 2 of tab group 1 of window "Trackpad" + click checkbox 1 of tab group 1 of window "Trackpad" + end tell + end tell + + tell application "System Settings" to quit +end if diff --git a/commands/system/toggle-sidecar.template.applescript b/commands/system/toggle-sidecar.template.applescript new file mode 100755 index 000000000..1598feff5 --- /dev/null +++ b/commands/system/toggle-sidecar.template.applescript @@ -0,0 +1,41 @@ +#!/usr/bin/osascript + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle Sidecar +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon images/apple_sidecar.png +# @raycast.packageName System + +# Documentation: +# @raycast.description Toggles on/off a Sidecar screen. +# @raycast.author Marcos S�nchez-Dehesa +# @raycast.authorURL https://www.github.com/dehesa + +# The name of the device to be connected as a sidecar screen (e.g. the name of your iPad). +# You can figure out the exact device's name by going to System Preferences > Displays > Add Display. +set displayName to "Honiara" +# If your system is not in English, you should change this text to text display in the pop up menu item in System Preferences > Displays > Add Display. +set menuItemName to "Add Display" +# The System Preferences > Displays screen takes a long time to load (I don't know why). This delay waits for the screen to properly load. Your system may need less or more seconds. Do some trial and errors. +set delayInSeconds to 1.8 + +tell application "System Preferences" + activate + set current pane to pane id "com.apple.preference.displays" + + delay delayInSeconds + + tell application "System Events" + tell first window of application process "System Preferences" + tell pop up button menuItemName + click + click menu item displayName of menu menuItemName + end tell + end tell + end tell + + quit +end tell diff --git a/commands/system/vpnutil/vpnutil-config.template.sh b/commands/system/vpnutil/vpnutil-config.template.sh new file mode 100644 index 000000000..90d145d85 --- /dev/null +++ b/commands/system/vpnutil/vpnutil-config.template.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# Based on https://github.com/raycast/script-commands/tree/master/commands/system/vpn + +# Dependency: vpnutil https://github.com/Timac/VPNStatus/releases/latest +# Installation: +# 1. Download vpnutil.zip +# 2. Uncompress +# 3. Move vpnutil to /usr/local/bin +# 4. Run manually once to bypass GateKeeper protection: +# - Right-click the app in the Finder +# - Select Open +# - Click on the Open button + +# How to use this script? +# It's a template which needs further setup. Duplicate the file, +# remove `.template.` from the filename and set `VPN_NAME` variable. + +# 🚨 Set name of your VPN Config from System Preferences +export VPN_NAME="VPN_NAME_FROM_SYSTEM_PREFERENCES" + +if [ -z "$VPN_NAME" ]; then + echo "\$VPN_NAME is empty"; + echo "Please, rename it in \"vpn-config.sh\"."; + exit 1; +fi + +if ! command -v vpnutil &> /dev/null; then + echo "vpnutil is required (https://github.com/Timac/VPNStatus/releases/latest)."; + exit 1; +fi diff --git a/commands/system/vpnutil/vpnutil-start.sh b/commands/system/vpnutil/vpnutil-start.sh new file mode 100755 index 000000000..261cf579e --- /dev/null +++ b/commands/system/vpnutil/vpnutil-start.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Based on https://github.com/raycast/script-commands/tree/master/commands/system/vpn + +# Depends on vpnutil: https://github.com/Timac/VPNStatus/releases/latest +# Installation: +# 1. Download vpnutil.zip +# 2. Uncompress +# 3. Move vpnutil to /usr/local/bin +# 4. Run manually once to bypass GateKeeper protection: +# - Right-click the app in the Finder +# - Select Open +# - Click on the Open button + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Start VPN +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📡 + +# @Documentation: +# @raycast.packageName VPN +# @raycast.description Start VPN connection. +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + +CONFIG=vpnutil-config.sh + +if [ ! -f $CONFIG ]; then + echo "Create a vpn-config.sh from template!" + exit 1 +fi + +# shellcheck source=/dev/null +source $CONFIG +VPN=$VPN_NAME + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + vpnutil status "$VPN" | sed -n 1p | grep -qv Connected +} + +function poll_until_connected () { + (( loops=0 )) + (( max_loops=200 )) # 200 * 0.1 is 20 seconds. Bash doesn't support floats + + while isnt_connected "$VPN"; do + sleep 0.1 # can't use a variable here, bash doesn't have floats + (( loops=loops+1 )) + [ "$loops" -gt "$max_loops" ] && break + done + + [ "$loops" -le "$max_loops" ] +} + +vpnutil start "$VPN" + +if poll_until_connected "$VPN"; then + echo "Connected to $VPN!" +else + echo "Couldn't connect to $VPN" + vpnutil stop "$VPN" + exit 1; +fi diff --git a/commands/system/vpnutil/vpnutil-status.sh b/commands/system/vpnutil/vpnutil-status.sh new file mode 100755 index 000000000..ea384b1b1 --- /dev/null +++ b/commands/system/vpnutil/vpnutil-status.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# Based on https://github.com/raycast/script-commands/tree/master/commands/system/vpn + +# Dependency: vpnutil https://github.com/Timac/VPNStatus/releases/latest +# Installation: +# 1. Download vpnutil.zip +# 2. Uncompress +# 3. Move vpnutil to /usr/local/bin +# 4. Run manually once to bypass GateKeeper protection: +# - Right-click the app in the Finder +# - Select Open +# - Click on the Open button + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title VPN Status +# @raycast.mode inline +# @raycast.refreshTime 30s + +# Optional parameters: +# @raycast.icon 📡 + +# @Documentation: +# @raycast.packageName VPN +# @raycast.description Check VPN connection +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + + +CONFIG=vpnutil-config.sh + +if [ ! -f $CONFIG ]; then + echo "Create a vpn-config.sh from template!" + exit 1 +fi + +# shellcheck source=/dev/null +source $CONFIG +VPN=$VPN_NAME + +status=$(vpnutil status "$VPN" | sed -n 1p | awk 'NF>1{print $NF}') + +if [ "$status" == "Connected" ]; then + echo "$status to $VPN" + exit 0 +fi + +echo "$status" diff --git a/commands/system/vpnutil/vpnutil-stop.sh b/commands/system/vpnutil/vpnutil-stop.sh new file mode 100755 index 000000000..989d6ae16 --- /dev/null +++ b/commands/system/vpnutil/vpnutil-stop.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# Based on https://github.com/raycast/script-commands/tree/master/commands/system/vpn + +# Dependency: vpnutil https://github.com/Timac/VPNStatus/releases/latest +# Installation: +# 1. Download vpnutil.zip +# 2. Uncompress +# 3. Move vpnutil to /usr/local/bin +# 4. Run manually once to bypass GateKeeper protection: +# - Right-click the app in the Finder +# - Select Open +# - Click on the Open button + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Stop VPN +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📡 + +# @Documentation: +# @raycast.packageName VPN +# @raycast.description Stop VPN connection +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + + +CONFIG=vpnutil-config.sh + +if [ ! -f $CONFIG ]; then + echo "Create a vpn-config.sh from template!" + exit 1 +fi + +# shellcheck source=/dev/null +source $CONFIG +VPN=$VPN_NAME + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + vpnutil status "$VPN" | sed -n 1p | grep -qv Connected +} + +if isnt_connected "$VPN"; then + echo "$VPN isn't connected" + exit 1 +else + vpnutil stop "$VPN" + echo "Disconnected from $VPN" +fi diff --git a/commands/system/vpnutil/vpnutil-toggle.sh b/commands/system/vpnutil/vpnutil-toggle.sh new file mode 100755 index 000000000..be26a1ef3 --- /dev/null +++ b/commands/system/vpnutil/vpnutil-toggle.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Based on https://github.com/raycast/script-commands/tree/master/commands/system/vpn + +# Dependency: vpnutil https://github.com/Timac/VPNStatus/releases/latest +# Installation: +# 1. Download vpnutil.zip +# 2. Uncompress +# 3. Move vpnutil to /usr/local/bin +# 4. Run manually once to bypass GateKeeper protection: +# - Right-click the app in the Finder +# - Select Open +# - Click on the Open button + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Toggle VPN +# @raycast.mode compact + +# Optional parameters: +# @raycast.icon 📡 + +# @Documentation: +# @raycast.packageName VPN +# @raycast.description Toggle VPN connection +# @raycast.author Sergey Fuksman +# @raycast.authorURL https://github.com/fuksman + + +CONFIG=vpnutil-config.sh + +if [ ! -f $CONFIG ]; then + echo "Create a vpn-config.sh from template!" + exit 1 +fi + +# shellcheck source=/dev/null +source $CONFIG +VPN=$VPN_NAME + +# Source: https://superuser.com/a/736859 +function isnt_connected () { + vpnutil status "$VPN" | sed -n 1p | grep -qv Connected +} + +function poll_until_connected () { + (( loops=0 )) + (( max_loops=200 )) # 200 * 0.1 is 20 seconds. Bash doesn't support floats + + while isnt_connected "$VPN"; do + sleep 0.1 # can't use a variable here, bash doesn't have floats + (( loops=loops+1 )) + [ "$loops" -gt "$max_loops" ] && break + done + + [ "$loops" -le "$max_loops" ] +} + +if isnt_connected "$VPN"; then + vpnutil start "$VPN" + if poll_until_connected "$VPN"; then + echo "Connected to $VPN!" + else + echo "Couldn't connect to $VPN" + vpnutil stop "$VPN" + exit 1 + fi +else + vpnutil stop "$VPN" + echo "Disconnected from $VPN" +fi diff --git a/commands/system/wifi-password.sh b/commands/system/wifi-password.sh new file mode 100755 index 000000000..b3ee06d03 --- /dev/null +++ b/commands/system/wifi-password.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Copy Wi-Fi Password +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📟 + +# Documentation: +# @raycast.description Copy Wi-Fi password from current session +# @raycast.author Astrit Malsia +# @raycast.authorURL https://github.com/astrit +# @raycast.packageName System + +airport="/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" + +# get current ssid +ssid="`$airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'`" + +# get keychain access +pwd="`security find-generic-password -D 'AirPort network password' -ga \"$ssid\" 2>&1 >/dev/null`" + +# password cleanup +pwd=$(echo "$pwd" | sed -e "s/^.*\"\(.*\)\".*$/\1/") + +# copy the password +echo $pwd | pbcopy + +# print +echo "Password $pwd is copied!" diff --git a/commands/web-searches/clipboard-to-17track.js b/commands/web-searches/clipboard-to-17track.js new file mode 100755 index 000000000..45d42b196 --- /dev/null +++ b/commands/web-searches/clipboard-to-17track.js @@ -0,0 +1,24 @@ +#!/usr/bin/env node + +// Dependency: This script requires Nodejs. +// Install Node: https://nodejs.org/en/download/ + +// Required parameters: +// @raycast.schemaVersion 1 +// @raycast.title Clipboard to 17TRACK +// @raycast.mode silent +// @raycast.packageName Web Searches + +// Optional parameters: +// @raycast.icon 🚚 + +// Documentation: +// @raycast.description Open 17TRACK with the tracking code found in the clipboard +// @raycast.author Alessandra Pereyra +// @raycast.authorURL https://github.com/alessandrapereyra + +const child_process = require("child_process"); +const trackingCode = child_process.execSync("pbpaste").toString(); + +const url = `https://t.17track.net/en#nums=${trackingCode}`; +child_process.execSync(`open "${url}"`); diff --git a/commands/web-searches/doi-clipboard.sh b/commands/web-searches/doi-clipboard.sh new file mode 100755 index 000000000..124ca87d6 --- /dev/null +++ b/commands/web-searches/doi-clipboard.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Find Paper +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📖 +# @raycast.packageName DOI + +# Documentation: +# @raycast.description Scans clipboard and opens DOI links in your browser +# @raycast.author Razvan Azamfirei +# @raycast.authorURL https://github.com/razvanazamfirei +LINK="$(pbpaste)" +REGEX="^doi: 10." +if [[ "$LINK" =~ ^doi:10. ]]; then + IN="$LINK" + arrIN=("${IN//doi:/}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ^doi/10. ]]; then + IN="$LINK" + arrIN=("${IN//doi///}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ${REGEX} ]]; then + IN="$LINK" + arrIN=("${IN//doi: //}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ^10. ]]; then + URL="https://doi.org/${LINK}" + open "$URL" +else + echo "Please specify a DOI" + exit 1 +fi diff --git a/commands/web-searches/doi.sh b/commands/web-searches/doi.sh new file mode 100755 index 000000000..0ec6a6e55 --- /dev/null +++ b/commands/web-searches/doi.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Find Paper +# @raycast.mode silent + +# Optional parameters: +# @raycast.icon 📖 +# @raycast.argument1 { "type": "text", "placeholder": "DOI" } +# @raycast.packageName DOI + +# Documentation: +# @raycast.description Parses and opens DOI links in your browser +# @raycast.author Razvan Azamfirei +# @raycast.authorURL https://github.com/razvanazamfirei +LINK="$1" +REGEX="^doi: 10." +if [[ "$LINK" =~ ^doi:10. ]]; then + IN="$LINK" + arrIN=("${IN//doi:/}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ^doi/10. ]]; then + IN="$LINK" + arrIN=("${IN//doi///}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ${REGEX} ]]; then + IN="$LINK" + arrIN=("${IN//doi: //}") + URL="https://doi.org/${arrIN[0]}" + open "$URL" +elif [[ "$LINK" =~ ^10. ]]; then + URL="https://doi.org/${LINK}" + open "$URL" +else + echo "Please specify a DOI" + exit 1 +fi diff --git a/commands/web-searches/google-maps.sh b/commands/web-searches/google-maps.sh new file mode 100755 index 000000000..d856d504b --- /dev/null +++ b/commands/web-searches/google-maps.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Search Google Maps +# @raycast.mode silent +# @raycast.packageName Google Maps + +# Optional parameters: +# @raycast.icon images/google-map.png +# @raycast.argument1 { "type": "text", "placeholder": "Location", "optional": true} +# @raycast.argument2 { "type": "text", "placeholder": "Destination", "optional": true} + +first_argument=${1// /+} +second_argument=${2// /+} + +if [ "$1" != "" ]; then + if [ "$2" = "" ]; then + open "https://www.google.com/maps/dir/?api=1&origin=$first_argument" + else + open "https://www.google.com/maps/dir/?api=1&origin=$first_argument&destination=$second_argument" + fi +elif [ "$1" = "" ] && [ "$2" != "" ]; then + open "https://www.google.com/maps/dir/?api=1&origin=Current+Location&destination=$second_argument" +else + open "https://www.google.com/maps" +fi diff --git a/commands/google-maps/images/google-map.png b/commands/web-searches/images/google-map.png similarity index 100% rename from commands/google-maps/images/google-map.png rename to commands/web-searches/images/google-map.png diff --git a/commands/web-searches/images/opensecrets.png b/commands/web-searches/images/opensecrets.png new file mode 100644 index 000000000..31b9b71fa Binary files /dev/null and b/commands/web-searches/images/opensecrets.png differ diff --git a/commands/web-searches/images/rust.png b/commands/web-searches/images/rust.png new file mode 100644 index 000000000..1eaa7709d Binary files /dev/null and b/commands/web-searches/images/rust.png differ diff --git a/commands/web-searches/opensecrets.sh b/commands/web-searches/opensecrets.sh new file mode 100755 index 000000000..5fac9559f --- /dev/null +++ b/commands/web-searches/opensecrets.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Search OpenSecrets.org +# @raycast.mode silent +# +# Optional parameters: +# @raycast.packageName Web Searches +# @raycast.icon images/opensecrets.png +# @raycast.argument1 { "type": "text", "placeholder": "Query", "percentEncoded": true } +# @raycast.argument2 { "type": "text", "placeholder": "Type (default: donor)", "optional": true, "percentEncoded": true } +# @raycast.author Daniel Sieradski +# @raycast.authorURL https://github.com/selfagency + +case $(tr "[:upper:]" "[:lower:]" <<<$2) in +"" | "d" | "donor" | "donors") + searchtype="donors" + ;; +"p" | "pol" | "pols" | "politician" | "politicians" | "l" | "lob" | "lobbyist" | "lobbyists") + searchtype="indiv" + ;; +"o" | "org" | "orgs" | "organization" | "organizations") + searchtype="orgs" + ;; +"n" | "news") + searchtype="news" + ;; +"s" | "site") + searchtype="site" + ;; +*) + searchtype=$2 + ;; +esac + +open "https://www.opensecrets.org/search?q=$1&type=$searchtype" diff --git a/commands/web-searches/search-rust-docs.sh b/commands/web-searches/search-rust-docs.sh new file mode 100755 index 000000000..7c28cf948 --- /dev/null +++ b/commands/web-searches/search-rust-docs.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Required parameters: +# @raycast.schemaVersion 1 +# @raycast.title Search Rust Documentation +# @raycast.mode silent +# +# Optional parameters: +# @raycast.packageName Web Searches +# @raycast.icon images/rust.png +# @raycast.argument1 { "type": "text", "placeholder": "Name", "percentEncoded": true } +# +# Example query: +# Searching for `expect` will open this link in your browser: +# `https://doc.rust-lang.org/std/?search=expect`. +# +# Documentation: +# @raycast.author lemorage +# @raycast.authorURL https://raycast.com/lemorage +# @raycast.description Search Rust documentation + +query=$(echo "$1" | sed 's/ /%20/g') + +open "https://doc.rust-lang.org/std/?search=$query" diff --git a/commands/web-searches/search-script-command-marketplace.sh b/commands/web-searches/search-script-command-marketplace.sh index 17b36d23b..5280ec224 100755 --- a/commands/web-searches/search-script-command-marketplace.sh +++ b/commands/web-searches/search-script-command-marketplace.sh @@ -9,11 +9,11 @@ # @raycast.icon images/marketplace-logo.png # @raycast.argument1 { "type": "text", "placeholder": "query"} # @raycast.packageName Web Searches -# @raycast.description Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https://scriptcommands.com). +# @raycast.description Search for Script Commands in the [Unofficial Raycast Script Commands Marketplace](https://scriptcommands.alexandru.so). # Documentation: # @raycast.author Alexandru Turcanu # @raycast.authorURL https://github.com/Pondorasti -open "https://scriptcommands.com/?search=$1" +open "https://scriptcommands.alexandru.so/?search=$1" diff --git a/documentation/ARGUMENTS.md b/documentation/ARGUMENTS.md index a8fcd0a13..e9d34d296 100644 --- a/documentation/ARGUMENTS.md +++ b/documentation/ARGUMENTS.md @@ -5,14 +5,15 @@ Raycast allows you to set arguments for your script to enable you to do things l Use `argument[1..3]` metadata to specify custom arguments that will be displayed as inputs in the search bar when the script is selected. ![Custom arguments](/images/screenshots/custom-arguments.png) - The value of the argument metadata parameter should be valid json with these fields: +The value of the argument metadata parameter should be valid json with these fields: | Field | Description | Required | App Version | | ----- | ----------- | -------- | ----------- | -| type | Input type. For now only "text" value available. | ✅ | 1.2.0+ | +| type | The argument type. We currently support `"text"`, `"password"` (for secure entry), and `"dropdown"`. When the type is `password`, entered text will be replaced with asterisks. Most common use case – passing passwords or secrets to commands. | ✅ | 1.64.0+ | | placeholder | Placeholder for the input field. | ✅ | 1.2.0+ | -| optional | Set to `true` if you want to mark the argument as optional. When not provided, the argument is considered to be required (Raycast will not allow to execute the script if the argument input is empty) | | 1.3.0+ | -| percentEncoded | Set to `true` if you want Raycast to perform percent encoding on the argument value before passing it to the script. Can be handy for scripts that pass the argument directly to URL query | | 1.4.0+ | -| secure | When set to `true` entered text will be replaced with asterisks and won't be recorded by history. Most common use case – passing passwords or secrets to scripts. | | 1.18.0+ | +| optional | Set to `true` if you want to mark the argument as optional. When not provided, the argument is considered to be required (Raycast will not allow executing the script if the argument input is empty) | | 1.3.0+ | +| percentEncoded | Set to `true` if you want Raycast to perform percent-encoding on the argument value before passing it to the script. Can be handy for scripts that pass the argument directly to URL query | | 1.4.0+ | +| data | An array of objects with `title` and `value` properties, e.g.: `[{"title": "Item 1", "value": "1"}]` | ✅ when `type` is `dropdown`. | 1.64.0+ | +| ~~secure~~ | Deprecated in favor of `"type" = "password"` | | 1.18.0+ | 💡 **Maximum number of arguments:** 3 (if you have a use case that requires more, please let us know via feedback or in the [Slack community](https://www.raycast.com/community)) diff --git a/documentation/OUTPUTMODES.md b/documentation/OUTPUTMODES.md index d8b9fac21..b4f2f0ca2 100644 --- a/documentation/OUTPUTMODES.md +++ b/documentation/OUTPUTMODES.md @@ -21,7 +21,9 @@ In `inline` mode, the first line of output will be directly shown in the command **🚨 Hint:** use `cmd k` to access extra functionality such as adding to favorites or reordering the root search preferences. -# ANSII Supported Colors 🎨 +Please note that long-running tasks generating a lot of partial data are not supported for `compact`, `silent`, and `inline` modes. For example, the `zip` command generates a lot of partial logs when compressing folders with many files. Scripts using `zip` won't work on `compact`, `silent`, and `inline`; but they will work in `fullOutput`. To make it work in the other modes you need to use the `zip -q` flag. + +# ANSI Supported Colors 🎨 We support colors for `inline` and `fullOutput` mode scripts for you to customize generated output by changing its background and foreground color. @@ -62,7 +64,7 @@ We also support [8-bit](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) an ![colors inline mode](/images/screenshots/colour-example.png) | Script | Code | | ------ | ---- | -| bash | `echo -e '\\033[31;42mred text on green background\\033[0m'` | +| bash | `echo -e '\033[31;42mred text on green background\033[0m'` | | bash tput | `export TERM=linux; echo "$(tput setaf 1)$(tput setab 2)red text on green background$(tput sgr0)";` | | swift | `print("\\u{001B}[31;42mred text on green background\\u{001B}[0m")` | | osascript | `do shell script "echo '\\033[31;42mred text on green background\\033[0m'"`| diff --git a/templates/script-command.template.applescript b/templates/script-command.template.applescript index 392ac4f61..fe98b9c3a 100644 --- a/templates/script-command.template.applescript +++ b/templates/script-command.template.applescript @@ -2,7 +2,7 @@ # Raycast Script Command Template # -# Duplicate this file and remove ".template." from the filename to get started. +# Duplicate this file and remove ".template" from the filename to get started. # See full documentation here: https://github.com/raycast/script-commands # # Required parameters: diff --git a/templates/script-command.template.php b/templates/script-command.template.php index 99e524e0a..7d946f971 100644 --- a/templates/script-command.template.php +++ b/templates/script-command.template.php @@ -5,7 +5,7 @@ # Dependency: This script requires PHP # Install PHP: http://www.https://www.php.net/ # -# Duplicate this file and remove ".template." from the filename to get started. +# Duplicate this file and remove ".template" from the filename to get started. # See full documentation here: https://github.com/raycast/script-commands # # Required parameters: diff --git a/templates/script-command.template.py b/templates/script-command.template.py index 5b2ad7760..e91e99e6d 100755 --- a/templates/script-command.template.py +++ b/templates/script-command.template.py @@ -5,7 +5,7 @@ # Dependency: This script requires Python 3 # Install Python 3: https://www.python.org/downloads/release # -# Duplicate this file and remove ".template." from the filename to get started. +# Duplicate this file and remove ".template" from the filename to get started. # See full documentation here: https://github.com/raycast/script-commands # # Required parameters: diff --git a/templates/script-command.template.rb b/templates/script-command.template.rb index 02de92759..8638b88f1 100755 --- a/templates/script-command.template.rb +++ b/templates/script-command.template.rb @@ -5,7 +5,7 @@ # Dependency: This script requires Ruby # Install Ruby: http://www.ruby-lang.org/ # -# Duplicate this file and remove ".template." from the filename to get started. +# Duplicate this file and remove ".template" from the filename to get started. # See full documentation here: https://github.com/raycast/script-commands # # Required parameters: @@ -18,10 +18,14 @@ # @raycast.icon 🤖 # @raycast.currentDirectoryPath ~ # @raycast.needsConfirmation false +# @raycast.argument1 { "type": "text", "placeholder": "Placeholder text" } # # Documentation: # @raycast.description Write a nice and descriptive summary about your script command here # @raycast.author Your name # @raycast.authorURL An URL for one of your social medias +# If accepting an argument: +# arg1 = ARGV[0] + puts "Hello World!" diff --git a/templates/script-command.template.sh b/templates/script-command.template.sh index e9b58a871..14be6c7ba 100755 --- a/templates/script-command.template.sh +++ b/templates/script-command.template.sh @@ -2,7 +2,7 @@ # Raycast Script Command Template # -# Duplicate this file and remove ".template." from the filename to get started. +# Duplicate this file and remove ".template" from the filename to get started. # See full documentation here: https://github.com/raycast/script-commands # # Required parameters: diff --git a/templates/script-command.template.swift b/templates/script-command.template.swift index 013aabb7a..ece06d55b 100755 --- a/templates/script-command.template.swift +++ b/templates/script-command.template.swift @@ -2,7 +2,7 @@ // Raycast Script Command Template // -// Duplicate this file and remove ".template." from the filename to get started. +// Duplicate this file and remove ".template" from the filename to get started. // See full documentation here: https://github.com/raycast/script-commands // // Required parameters: diff --git a/toolkit b/toolkit deleted file mode 120000 index 9eafa89f8..000000000 --- a/toolkit +++ /dev/null @@ -1 +0,0 @@ -Tools/Toolkit/.build/release/Toolkit \ No newline at end of file