Skip to content

Instantly share code, notes, and snippets.

@leroycep
Created July 5, 2022 02:02
Show Gist options
  • Save leroycep/457d0ab3258bf5a588ece82c3cc2134a to your computer and use it in GitHub Desktop.
Save leroycep/457d0ab3258bf5a588ece82c3cc2134a to your computer and use it in GitHub Desktop.
A qutebrowser userscript for quickly adding tasks to todoist
#!/usr/bin/env nu
let SECRETS_FILE = ([$env.QUTE_CONFIG_DIR "qute-add-todoist.secrets"] | path join)
if not (echo $SECRETS_FILE | path exists) {
qute $'message-error "Could not find secrets file! Copy the API token into ($SECRETS_FILE)""'
qute 'open -t https://todoist.com/app/settings/integrations'
exit
}
let token = (open $SECRETS_FILE | str trim)
# Write a command to the qutebrowser FIFO
def qute [command: string] {
printf '%s\n' $command | save --append $env.QUTE_FIFO
}
def add-task [content: string, description?: string] {
let result_json = (https --ignore-stdin -A bearer -a $token POST api.todoist.com/rest/v1/tasks $"content=($content)" $"description=($description)")
let result = (echo $result_json | from json)
qute $'message-info "added task, see at ($result.url)""'
}
if $env.QUTE_MODE == 'command' {
# QUTE_URL: The URL selected via hints.
# QUTE_SELECTED_TEXT: The plain text of the element selected via hints.
let text = $env.QUTE_SELECTED_TEXT
let link = $"[($env.QUTE_TITLE)]\(($env.QUTE_URL))"
if $text == '' {
add-task $link
} else {
add-task $text $link
}
} else if $env.QUTE_MODE == 'hints' {
# QUTE_URL: The URL selected via hints.
# QUTE_SELECTED_TEXT: The plain text of the element selected via hints.
add-task $"[$env.QUTE_SELECTED_TEXT]\(($env.QUTE_URL))"
} else {
qute $'message-warning "unknown QUTE_MODE ($env.QUTE_MODE)"'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment