59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"os/user"
|
|
"path/filepath"
|
|
)
|
|
|
|
func DesktopDirectory() (string, error) {
|
|
myself, err := user.Current()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
homedir := myself.HomeDir
|
|
desktop := filepath.Join(homedir, ".local", "share", "applications")
|
|
return desktop, nil
|
|
}
|
|
|
|
func CreateShortcuts() error {
|
|
desktopDir, err := DesktopDirectory()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
torBrowserPath, err := pathToMe()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
tordesktop := filepath.Join(desktopDir, "torbrowser.desktop")
|
|
torbrowserShortcut := torBrowserPath + " -torbrowser"
|
|
if err := makeLink(torbrowserShortcut, tordesktop); err != nil {
|
|
return err
|
|
}
|
|
i2pbrowserPath := torBrowserPath + " -i2pbrowser"
|
|
i2pdesktop := filepath.Join(desktopDir, "i2ptorbrowser.desktop")
|
|
if err := makeLink(i2pbrowserPath, i2pdesktop); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func desktopTemplate(command string) string {
|
|
return `[Desktop Entry]
|
|
Encoding=UTF-8
|
|
Version=1.0
|
|
Type=Application
|
|
Terminal=false
|
|
Exec=/bin/sh -c "` + command + `"
|
|
Name=Tor Browser
|
|
Categories=Network;WebBrowser;
|
|
Icon=/var/lib/i2pbrowser/icons/onion.png
|
|
`
|
|
}
|
|
|
|
func makeLink(src, dst string) error {
|
|
log.Println("Creating desktop shortcut:", dst)
|
|
return ioutil.WriteFile(dst, []byte(desktopTemplate(src)), 0644)
|
|
}
|