basic common app packages

This commit is contained in:
2025-06-16 22:19:00 +05:30
parent 8654f21b62
commit 0240ec154e
49 changed files with 5481 additions and 232 deletions

19
open/darwin.go Normal file
View File

@@ -0,0 +1,19 @@
//go:build darwin
// Copyright 2024 Patial Tech. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package open
import (
"os/exec"
)
func open(input string) *exec.Cmd {
return exec.Command("open", input)
}
func openWith(input string, appName string) *exec.Cmd {
return exec.Command("open", "-a", appName, input)
}

21
open/linux.go Normal file
View File

@@ -0,0 +1,21 @@
//go:build linux
// Copyright 2024 Patial Tech. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package open
import (
"os/exec"
)
// http://sources.debian.net/src/xdg-utils
func open(input string) *exec.Cmd {
return exec.Command("xdg-open", input)
}
func openWith(input string, appName string) *exec.Cmd {
return exec.Command(appName, input)
}

16
open/open.go Normal file
View File

@@ -0,0 +1,16 @@
// Copyright 2024 Patial Tech. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package open
// WithDefaultApp open a file, directory, or URI using the OS's default application for that object type.
func WithDefaultApp(input string) error {
cmd := open(input)
return cmd.Run()
}
// WithApp will open a file directory, or URI using the specified application.
func App(input string, appName string) error {
return openWith(input, appName).Run()
}

36
open/windows.go Normal file
View File

@@ -0,0 +1,36 @@
//go:build windows
// Copyright 2024 Patial Tech. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package open
import (
"os"
"os/exec"
"path/filepath"
"strings"
)
var (
cmd = "url.dll,FileProtocolHandler"
runDll32 = filepath.Join(os.Getenv("SYSTEMROOT"), "System32", "rundll32.exe")
)
func cleaninput(input string) string {
r := strings.NewReplacer("&", "^&")
return r.Replace(input)
}
func open(input string) *exec.Cmd {
cmd := exec.Command(runDll32, cmd, input)
// cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
return cmd
}
func openWith(input string, appName string) *exec.Cmd {
cmd := exec.Command("cmd", "/C", "start", "", appName, cleaninput(input))
// cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
return cmd
}