jschlatow / taskopen

Tool for taking notes and open urls with taskwarrior
GNU General Public License v2.0
363 stars 31 forks source link

Error when opening url without https:// #161

Closed sdondley closed 1 year ago

sdondley commented 1 year ago

On a mac, I get an error when trying to open a url that does not begin with https://:

Please select one or multiple actions:
 1) files: ./checklist.txt
    ("switch ibew2327 over to new mail server") -- 102
 2) notes: Notes
    ("switch ibew2327 over to new mail server") -- 102
 3) url: www.slashdot.org
    ("switch ibew2327 over to new mail server") -- 102
Type number(s): 3
The file /Users/steve/Documents/notes/www.slashdot.org does not exist.
Perhaps you meant 'http://www.slashdot.org'?
Command "(cmd: "open $LAST_MATCH", env: {XPC_SERVICE_NAME: 0, tmux_version: $(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p"), TERM: screen-256color, PERLBREW_PATH: /Users/steve/perl5/perlbrew/bin:/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin, LaunchInstanceID: 55E667E1-0894-4009-BE09-459344C48718, _: /usr/local/bin/taskopen, FLEXIBLE_CONTEXT: mail_migration, ARGS: , ITERM_SESSION_ID: w3t0p0:97E14CE7-AC8A-4D33-B88E-CEA82D194B43, PERLBREW_MANPATH: /Users/steve/perl5/perlbrew/perls/perl-5.36.0/man, PAGER: less, SECURITYSESSIONID: 186a6, TASK_TAGS: , PWD: /Users/steve/Documents/notes, ITERM_PROFILE: Development, TMUX: /private/tmp/tmux-501/default,67601,5, TASK_DESCRIPTION: switch ibew2327 over to new mail server, MANPATH: /Users/steve/perl5/perlbrew/perls/perl-5.36.0/man:/usr/share/man:/usr/local/share/man:/opt/X11/share/man:/System/Cryptexes/App/usr/share/man:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/share/man:/Library/Developer/CommandLineTools/usr/share/man:/usr/local/opt/ruby/share/man, TMPDIR: /var/folders/h4/kz5fpzjn2bqd05csk55z7nq00000gn/T/, LOGNAME: steve, PERLBREW_VERSION: 0.96, is_vim: ps -o state= -o comm= -t '#{pane_tty}'     | grep -iqE '^[^TXZ ]+ +(\S+\/)?g?(view|n?vim?x?)(diff)?$', COMMAND_MODE: unix2003, ANNOTATION: www.slashdot.org, TASKRC: /Users/steve/.config/taskwarrior/rc/work, TASK_PROJECT: servers.mail.migration, LANG: en_US.UTF-8, UUID: 2160ba3a-56bd-49b8-800d-3e6f7dbddbb7, LC_TERMINAL_VERSION: 3.4.16, XPC_FLAGS: 0x0, PERLBREW_HOME: /Users/steve/.perlbrew, FZF_DEFAULT_COMMAND: rg --files --hidden --glob "!.git/*", LAST_MATCH: www.slashdot.org, LABEL: , TMUX_PLUGIN_MANAGER_PATH: /Users/steve/.tmux/plugins/, __CF_USER_TEXT_ENCODING: 0x0:0:0, LESS: -R, USER: steve, COLORTERM: truecolor, TMUX_PANE: %36, COLORFGBG: 15;0, PATH: /usr/local/share/taskopen/scripts:/usr/local/lib/ruby/gems/3.1.0/bin:/usr/local/opt/ruby/bin:/usr/local/opt/openjdk/bin:/usr/local/sbin:/Users/steve/perl5/perlbrew/bin:/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin:/Users/steve/bin:/usr/local/bin:/usr/bin:/usr/local/lib/ruby/gems/3.1.0/bin:/usr/local/opt/ruby/bin:/usr/local/opt/openjdk/bin:/usr/local/sbin:/System/Cryptexes/App/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/steve/.rakubrew/versions/moar-2022.07/install/bin:/Users/steve/.rakubrew/versions/moar-2022.07/install/share/perl6/site/bin, TERM_PROGRAM: tmux, LSCOLORS: Gxfxcxdxbxegedabagacad, PERLBREW_PERL: perl-5.36.0, PERLBREW_SHELLRC_VERSION: 0.96, TERM_PROGRAM_VERSION: 3.3a, EDITOR: nvim, FILE: www.slashdot.org, TERM_SESSION_ID: w3t0p0:97E14CE7-AC8A-4D33-B88E-CEA82D194B43, SSH_AUTH_SOCK: /private/tmp/com.apple.launchd.xzJLbrFJeq/Listeners, FZF_BASE: /usr/local/Cellar/fzf/0.27.2, SHELL: /bin/zsh, HOME: /Users/steve, OLDPWD: /Volumes/My Book Thunderbolt Duo/Backups.backupdb/Steve’s iMac/2022-07-04-201649/Macintosh HD - Data/Users/stevedondley/bin, __CFBundleIdentifier: com.googlecode.iterm2, SHLVL: 2, DISPLAY: /private/tmp/com.apple.launchd.vO2Z0M5Bal/org.xquartz:0, LC_TERMINAL: iTerm2, ZSH: /Users/steve/.oh-my-zsh, ID: 102, PERLBREW_ROOT: /Users/steve/perl5/perlbrew})" failed with exit code: 1

If I add https:// to the front of it, it works fine.

sdondley commented 1 year ago

Ok, this problem seems particular to macs. To resolve, I modified the url.command to run a custom script:

url.command="taskopen_safari $LAST_MATCH"

taskopen_safari is a simple perl script:

#!/usr/bin/env perl

my $url = $ARGV[0];

if ($url !~ /^http/) {
    $url = "http://$url";
}

system "open $url";