Skip to content

Instantly share code, notes, and snippets.

@falcucci
Created March 24, 2023 15:46
Show Gist options
  • Save falcucci/f86a9f48444b7e014e8f1ba04ca38cbd to your computer and use it in GitHub Desktop.
Save falcucci/f86a9f48444b7e014e8f1ba04ca38cbd to your computer and use it in GitHub Desktop.
#!/usr/bin/osascript
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title nv
# @raycast.mode compact
# Optional parameters:
# @raycast.icon 🤖
# Documentation:
# @raycast.description nv
# @raycast.author Alexsander Falcucci
#!/usr/bin/osascript
# Dependency: requires iTerm (https://iterm2.com)
# Install via Homebrew: `brew install --cask iterm2`
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Run Shell Command
# @raycast.mode silent
# @raycast.packageName iTerm
# Documentation
# @raycast.author Andrei Borisov
# @raycast.authorURL https://github.com/andreiborisov
#
# echo "Opening Neovide in the current directory -> "$1""
# open /Users/falcucci/neovide/target/release/bundle/osx/Neovide.app --args $PWD/$1 --multigrid
-- Set this property to true to open in a new window instead of a new tab
property open_in_new_window : false
-- Handlers
on new_window()
tell application "iTerm" to create window with default profile
end new_window
on new_tab()
tell application "iTerm" to tell the first window to create tab with default profile
end new_tab
on call_forward()
tell application "iTerm" to activate
end call_forward
on is_running()
application "iTerm" is running
end is_running
on is_processing()
tell application "iTerm" to tell the first window to tell current session to get is processing
end is_processing
on has_windows()
if not is_running() then return false
if windows of application "iTerm" is {} then return false
true
end has_windows
on send_text(custom_text)
tell application "iTerm" to tell the first window to tell current session to write text custom_text
end send_text
-- Main
on run argv
if has_windows() then
-- Open the command in the current session unless it has a running command, e.g., ssh or top
if is_processing() then
if open_in_new_window then
new_window()
else
new_tab()
end if
end if
else
-- If iTerm is not running and we tell it to create a new window, we get two
-- One from opening the application, and the other from the command
if is_running() then
new_window()
else
call_forward()
end if
end if
-- Make sure a window exists before we continue, or the write may fail
repeat until has_windows()
delay 0.01
end repeat
send_text("open /Users/falcucci/neovide/target/release/bundle/osx/Neovide.app --args $PWD/$1 --multigrid")
call_forward()
end run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment