diff --git a/cmd/internal/templates/app.desktop b/cmd/internal/templates/app.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..9efeec3cf583f5fd20e74977d701077b7fe332df
--- /dev/null
+++ b/cmd/internal/templates/app.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Type=Application
+Name={{.Name}}
+Exec={{.Exec}}
+Icon={{.Name}}
diff --git a/cmd/internal/templates/app.manifest b/cmd/internal/templates/app.manifest
new file mode 100644
index 0000000000000000000000000000000000000000..3d886929cb6392aa7f1a8498d8708367d4c8bade
--- /dev/null
+++ b/cmd/internal/templates/app.manifest
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/cmd/internal/templates/app.plist b/cmd/internal/templates/app.plist
new file mode 100644
index 0000000000000000000000000000000000000000..4be22c4144593dcaa83f4b314d0a0ac4fecd7d89
--- /dev/null
+++ b/cmd/internal/templates/app.plist
@@ -0,0 +1,62 @@
+
+
+
+
+ NSPrincipalClass
+ TCrCocoaApplication
+ LSUIElement
+ <{{.LSUIElement}}/>
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleExecutable
+ {{.execName}}
+ CFBundleLocalizations
+
+ {{.locale}}
+
+ CFBundleName
+ {{.execName}}
+ CFBundleIdentifier
+ com.{{.execName}}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundlePackageType
+ APPL
+ CFBundleSignature
+ proj
+ CFBundleShortVersionString
+ 0.1
+ CFBundleVersion
+ 1
+ CSResourcesFileMapped
+
+ CFBundleIconFile
+ {{.execName}}.icns
+ CFBundleDocumentTypes
+
+
+ CFBundleTypeRole
+ Viewer
+ CFBundleTypeExtensions
+
+ *
+
+ CFBundleTypeOSTypes
+
+ fold
+ disk
+ ****
+
+
+
+ NSHighResolutionCapable
+
+ NSHumanReadableCopyright
+ {{.copyright}}>
+
+
\ No newline at end of file
diff --git a/common/common.go b/common/common.go
index 9393cca1c42cd1142550e8ad87c5f79ee22543f7..b94d98926502c15c134cdd3629beba044126715b 100644
--- a/common/common.go
+++ b/common/common.go
@@ -755,3 +755,13 @@ func GetInstancePtr(ptr uintptr) unsafe.Pointer {
ptr = *(*uintptr)(unsafe.Pointer(ptr))
return unsafe.Pointer(ptr)
}
+
+//GoroutineID 获取当前携程ID
+func GoroutineID() (id uint64) {
+ var buf [30]byte
+ runtime.Stack(buf[:], false)
+ for i := 10; buf[i] != ' '; i++ {
+ id = id*10 + uint64(buf[i]&15)
+ }
+ return id
+}