Example #1
0
File: icon.go Project: sqp/godock
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
}