Legen Sie über Terminal ein benutzerdefiniertes Dock-Symbol für eine Anwendungsinstanz fest

Ich öffne häufig mehrere Instanzen von Anwendungen, insbesondere Emacs, da ich möglicherweise gleichzeitig an verschiedenen Projekten arbeite, und ich finde, dass dies der beste Weg ist, dies zu verwalten (ja, ich weiß, dass es viele Projektmanagement-Erweiterungen für Emacs gibt , ich muss nicht in Emacs unterrichtet werden).

Ich mache dies mit open -n -a Emacs.appdem eine neue separate Emacs-Instanz geöffnet wird. Aber es wäre wirklich schön, ein benutzerdefiniertes Dock-Symbol für die geöffneten Instanzen festzulegen, damit ich sie mit Cmd+Tab leicht unterscheiden kann.

Kennen Sie einen Hack oder eine Möglichkeit, ein benutzerdefiniertes Anwendungssymbol (Dock) für eine Instanz festzulegen? Auch wenn es ein ziemlich komplexer Shell-Befehl ist (dafür könnte ich dann ein Shellscript erstellen).

Was ich wirklich erreichen möchte, ist, ein Shellscript dafür zu erstellen, damit ich es aufrufen kann, opennew Emacs.app xund dann würde es das Emacs-Symbol verzweigen und ein Abzeichen mit einem x darin hinzufügen .

Dann kann ich opennew Emacs.app sfür „schulbezogen“, opennew Emacs.app pfür „projektbezogen“ etc.

Es würde auch helfen, nur den Titel der Anwendung zu ändern.

Antworten (1)

Ich habe keine vollständige Lösung für Sie, aber wenn ich mir die Manpages ansehe, denke ich, dass ich irgendwie sehe, wie eine erstellt werden könnte.

  • open(1) stellt die Option --args bereit, um Argumente an die aufgerufene Anwendung weiterzugeben.

  • emacs(1) liest Werte aus einer .Xresources-Datei. Einer der gelesenen Werte ist emacs.iconName.

  • Mit X können Sie Xresources für eine bestimmte App auswählen, indem Sie $XENVIRONMENT so einstellen, dass es den Pfad einer Datei enthält, die Xresource-Werte enthält. Außerdem sollen X-Programme die Optionen -name und -title unterstützen, um (glaube ich) den Namen einer zu ladenden Xresource-Datei und/oder den Titel der Anwendungsinstanz festzulegen.

Ich habe das also nicht getestet, aber Sie könnten Folgendes tun:

open -n -a Emacs.app --args "-name <resource-file-path> -title school"

Dann, in der Ressourcendatei, eine Zeile, die besagt

emacs.iconName:<path-to-school-icon-file>

In einer anderen Ressourcendatei hätten Sie iconName auf ein Arbeitssymbol usw. gesetzt.

Wenn du das ausprobierst, würde mich interessieren, wie es funktioniert.