func (o *dockIcon) LaunchCommand(log cdtype.Logger, args ...string) bool { cmd := o.GetCommand() switch { case cmd == "": case cmd[0] == '<': // Launch as shortkey. success := shortkeys.Trigger(cmd) if success { return true } // try also as exec. exec, e := log.ExecShlex(cmd, args...) if log.Err(e, "parse command", cmd) { return false } e = exec.Run() return e == nil default: // Exec command. exec, e := log.ExecShlex(cmd, args...) if log.Err(e, "parse command", cmd) { return false } e = exec.Run() if log.Err(e, "launch command", cmd, strings.Join(args, " ")) { // try also as shortkey. return shortkeys.Trigger(cmd) } return true } return false }