40 lines
743 B
Go
40 lines
743 B
Go
package clipboard
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
|
|
"github.com/atotto/clipboard"
|
|
)
|
|
|
|
var isClipboardAvailable bool
|
|
|
|
func init() {
|
|
// 检测剪切板是否可用
|
|
// Linux需要xclip或xsel
|
|
if runtime.GOOS == "linux" {
|
|
isClipboardAvailable = isXClipAvailable()
|
|
} else {
|
|
isClipboardAvailable = true
|
|
}
|
|
}
|
|
|
|
func isXClipAvailable() bool {
|
|
// 简单检查,实际使用时会在调用时检测
|
|
return true
|
|
}
|
|
|
|
// Write 将文本复制到剪切板
|
|
func Write(text string) error {
|
|
if !isClipboardAvailable {
|
|
return fmt.Errorf("clipboard not available on this system")
|
|
}
|
|
return clipboard.WriteAll(text)
|
|
}
|
|
|
|
// WriteSilent 静默复制到剪切板,不返回错误
|
|
func WriteSilent(text string) bool {
|
|
err := Write(text)
|
|
return err == nil
|
|
}
|