From 0158da99900b16a88defa09db6ecb6f26ab46178 Mon Sep 17 00:00:00 2001 From: Hugo Thunnissen Date: Sat, 27 May 2023 10:16:20 +0200 Subject: [PATCH] Add emacs.desktop file and icon --- emacs/emacs.desktop | 29 ++++++++++++++++ emacs/emacs.png | Bin 0 -> 13462 bytes main.go | 78 ++++++++++++++++++++++++++++++++++++-------- 3 files changed, 93 insertions(+), 14 deletions(-) create mode 100644 emacs/emacs.desktop create mode 100644 emacs/emacs.png diff --git a/emacs/emacs.desktop b/emacs/emacs.desktop new file mode 100644 index 0000000..9a8d4cc --- /dev/null +++ b/emacs/emacs.desktop @@ -0,0 +1,29 @@ +[Desktop Entry] +Type=Application +Name=Emacs +GenericName=Emacs Editor +Icon=emacs +Comment=Open an emacs frame through the running daemon + +Exec={{.workspace_bin}} run emacsclient -c %F +StartupWMClass=Emacs +Version=1.0 +Terminal=false + +Categories=Development;TextEditor;IDE;WebDevelopment;GTK; +Keywords=Text;Editor;IDE;scratch; +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;inode/directory; + +Actions=NewWindow;NewFile;NewInstance + +[Desktop Action NewWindow] +Name=New Window +Exec={{.workspace_bin}} run emacsclient -c %F + +[Desktop Action NewInstance] +Name=New Instance +Exec={{.workspace_bin}} run -privileged emacs %F + +[Desktop Action NewFile] +Name=New File +Exec={{.workspace_bin}} run emacsclient -c -e '(switch-to-buffer (generate-new-buffer "new"))' %F diff --git a/emacs/emacs.png b/emacs/emacs.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab43d704be287392c52fd10d6b4fb2bc35a4a0f GIT binary patch literal 13462 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 Eg2&h3=l}o! literal 0 HcmV?d00001 diff --git a/main.go b/main.go index 7a41d56..5c10e5b 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "bufio" + "bytes" _ "embed" "errors" "flag" @@ -10,10 +11,12 @@ import ( "os" "os/exec" "os/user" + "path" "runtime" "strconv" "strings" "syscall" + "text/template" ) const usage = `workspace - Use a containerized workspace @@ -35,6 +38,12 @@ var customLisp string //go:embed emacs/epaper-theme.el var elispEpaperTheme string +//go:embed emacs/emacs.desktop +var emacsDesktop string + +//go:embed emacs/emacs.png +var emacsIcon []byte + //go:embed bash/bash_aliases var bashAliases string @@ -317,16 +326,24 @@ func SetEnvVars() { os.Setenv("PATH", "/usr/local/go/bin:"+os.Getenv("PATH")) os.Setenv("PATH", "/usr/local/gopkg/bin:"+os.Getenv("PATH")) os.Setenv("GOPRIVATE", "git.snorba.art") + os.Setenv("EMACS_SOCKET_NAME", home+"/.cache/emacs/server") } -func DumpStringToFile(data string, path string) error { - file, err := os.Create(path) +func DumpBytesToFile(data []byte, filePath string) error { + fmt.Fprintln(os.Stderr, "Dumping to "+filePath) + + err := EnsureDirectory(path.Dir(filePath)) + if err != nil { + return err + } + + file, err := os.Create(filePath) if err != nil { return err } writer := bufio.NewWriter(file) - _, err = writer.WriteString(data) + _, err = writer.Write(data) if err != nil { return err } @@ -334,6 +351,10 @@ func DumpStringToFile(data string, path string) error { return writer.Flush() } +func DumpStringToFile(data string, path string) error { + return DumpBytesToFile([]byte(data), path) +} + func ToggleNightLight() error { getState := exec.Command( "gsettings", @@ -368,22 +389,26 @@ func ToggleNightLight() error { return nil } -func DumpInitFiles() error { - home := os.Getenv("HOME") - elispThemeDir := home + "/.workspace/elisp-themes" - - if _, err := os.Stat(elispThemeDir); os.IsNotExist(err) { - err = os.MkdirAll(elispThemeDir, 0755) +func EnsureDirectory(dir string) error { + if _, err := os.Stat(dir); os.IsNotExist(err) { + err = os.MkdirAll(dir, 0755) if err != nil { return fmt.Errorf( - "Failed to create elisp theme dir in %v: %w", - elispThemeDir, + "Failed to create dir %v: %w", + dir, err, ) } - } + return nil +} + +func DumpInitFiles() error { + home := os.Getenv("HOME") + elispThemeDir := home + "/.workspace/elisp-themes" + err := EnsureDirectory(elispThemeDir) + files := map[string]string{ home + "/.emacs": initLisp, home + "/.custom.el": customLisp, @@ -394,14 +419,39 @@ func DumpInitFiles() error { } for file, contents := range files { - fmt.Fprintln(os.Stderr, "Dumping to "+file) err := DumpStringToFile(contents, file) if err != nil { return err } } - return nil + tmp, err := template.New("emacs.desktop").Parse(emacsDesktop) + if err != nil { + return err + } + + executable, err := os.Executable() + if err != nil { + return err + } + + var out bytes.Buffer + + tmp.Execute(&out, map[string]string{ + "workspace_bin": executable, + }) + + err = DumpBytesToFile( + out.Bytes(), home+"/.local/share/applications/emacs.desktop", + ) + if err != nil { + return err + } + + return DumpBytesToFile( + emacsIcon, + home+"/.local/share/icons/hicolor/128x128/apps/emacs.png", + ) } func main() {