Terminal: Funktionsanforderung: Hotkey-Dropdown-Liste für Beben / Guake / Tilda

Erstellt am 10. Mai 2019  ·  106Kommentare  ·  Quelle: microsoft/terminal

Das Kleinste, was ich am meisten vermisse, wenn ich in Windows eintauche, ist ein separates Hotkey-Terminal für jeden meiner drei Monitore. Das Beste, was ich jemals an Gott geglaubt habe, war, als mir klar wurde, dass dies möglich ist, und wenn Sie dies unter Windows erreichen könnten, müsste ich Sie möglicherweise küssen.

Area-User Interface Help Wanted Issue-Feature Product-Terminal

Hilfreichster Kommentar

Der Quake-Modus wäre eine Voraussetzung für den Wechsel von ConEmu. Ich würde es jedoch sehr bevorzugen, immer dieselbe Instanz zu öffnen, unabhängig davon, welcher Monitor / virtuelle Desktop gerade im Fokus steht.

Persönlich benutze ich win + tilde, um ConEmu zu öffnen, aber natürlich sollte die Verknüpfung konfigurierbar sein.

Alle 106 Kommentare

Sie meinen also, wenn Sie drei Monitore haben (zum Beispiel), könnten Sie einen anderen Hotkey drücken, um das Terminal dazu zu bringen, den Quake-Console-Stil von dem von Ihnen ausgewählten Monitor herunterzurutschen?

Sie meinen also, wenn Sie drei Monitore haben (zum Beispiel), könnten Sie einen anderen Hotkey drücken, um das Terminal dazu zu bringen, den Quake-Console-Stil von dem von Ihnen ausgewählten Monitor herunterzurutschen?

Genau genau. Ich weiß, dass es für ein stark genutztes Mainstream-Terminal ein bisschen ausgefallen / unnötig / knifflig erscheint, aber ich verspreche Ihnen, dass die Produktivität das ist, was Hotkey-Dropdowns wirklich zum Leuchten bringt.

Im Idealfall verfügt jeder Monitor über ein eigenes Terminal, das gleichzeitig mit den anderen offen gehalten werden kann.
In nix mit 3 Instanzen von Tilda habe ich es so eingerichtet, dass f1 den linken Monitor fallen lässt, schließt oder auswählt, wenn er geöffnet, aber nicht aktiv ist. F2 macht meinen mittleren Bildschirm und f3 macht mein Recht. Ich kann diese Hotkeys verwenden, um zwischen diesen drei Terminals zu springen, wenn sie ebenfalls bereits geöffnet sind. Das Endergebnis macht das Wechseln zwischen Terminals und anderen Hintergrundanwendungen zu einem Workflow-Traum. Es sieht auch ziemlich verdammt cool aus, wenn ich es selbst sage.

Guake, eine andere Alternative, die mir gefällt, ist auf jeweils nur ein Fenster / eine Instanz beschränkt und wird einfach auf den Monitor verschoben, auf dem sich die Maus zum Zeitpunkt des Drückens der Tastenkombination befindet. Dies ist auch eine sehr nette Funktion, aber nicht das, wonach ich suche. Ich würde nichts gegen eine Wahl des Verhaltens einzuwenden haben, aber Codezeilen wachsen nicht auf Bäumen, also würde ich das Tilda-Design bevorzugen.

Wir sind auf der Nix-Seite wirklich verwöhnt, und das macht Microsoft bemüht, ein neues, fortschrittlicheres, funktionsreiches Terminal so aufregend zu bauen. Es fühlt sich wirklich so an, als würde Microsoft um die Zeit kämpfen, die Entwickler und zukünftige Entwickler (Studenten hier) in ihrem Betriebssystem verbringen. Wenn Sie WSL2 mit einem Dropdown-Terminal koppeln, weiß ich, dass ich viel weniger Zeit damit verbringen würde, zurück zu booten und weiter zwischen Mint und 10.

Der Quake-Modus wäre eine Voraussetzung für den Wechsel von ConEmu. Ich würde es jedoch sehr bevorzugen, immer dieselbe Instanz zu öffnen, unabhängig davon, welcher Monitor / virtuelle Desktop gerade im Fokus steht.

Persönlich benutze ich win + tilde, um ConEmu zu öffnen, aber natürlich sollte die Verknüpfung konfigurierbar sein.

Ja, eine Instanz, die herunterfällt, sollte auf dem Monitor, auf dem sich unser Mauszeiger befindet, herunterfallen und fokussieren, aber nicht angezeigt werden, wenn Sie Alt + Tab ausführen. Es fühlt sich also so an, als wäre sie in das Betriebssystem integriert. Wie Guake.

@cyberhck Sind Sie sicher, dass es dort sein sollte, wo sich die Maus befindet und nicht dort, wo sich das aktuell fokussierte Fenster befindet?

@ Jaykul
Das Standardverhalten von Guake ist so, dass der Hotkey das Terminal in jedem Monitor aktiviert, in dem sich die Maus derzeit befindet, wie von Cyberhck beschrieben. Auf Wunsch kann ihm auch ein bestimmter Monitor zugewiesen werden. Es ist nur dadurch eingeschränkt, dass jeweils nur eine Instanz ausgeführt werden kann, mit der Windows Terminal kein Problem hat. Wenn Windows Terminal so eingerichtet werden könnte, wie Guake mit der Wahl zwischen statischem oder Follow-Verhalten ist, wären lediglich unabhängige Einstellungen pro Instanz erforderlich, um die Funktionalität von Guake (Follow oder Static) und Tilda (mehrere Instanzen) zu erfüllen.

Ja, wir könnten eine 3-Wege-Konfiguration haben, eine auf einem bestimmten Monitor, eine auf einem beliebigen Fenster und eine, auf der die Maus vorhanden ist (außerdem ist es sehr wichtig, eine Option zum Ausblenden vor der Anwendungsliste (Alt + Tab) zu haben, wenn Dieser Modus ist aktiviert, da ich mir vorstellen würde, dass Benutzer dies beim Wechsel zwischen IDE und Browser nicht sehen möchten.

:) :)

@Jakul , der Grund, warum ich sage, wo die Maus vorhanden ist, ist, dass sich die Maus beim Durchsuchen wahrscheinlich immer vor Ihren Augen befindet. Wenn Sie kurze Tasten verwenden, ist es wirklich einfach, die Augen zu wechseln als die Maus ganz bewegen zu müssen.

+1

Bitte antworten Sie nicht auf Threads mit einem "+1", ohne nützliches zusätzliches Feedback zu geben. Github hat eine perfekte +1, die hier nicht jeden im Posteingang des Threads anpingt:
image

Sie meinen also, wenn Sie drei Monitore haben (zum Beispiel), könnten Sie einen anderen Hotkey drücken, um das Terminal dazu zu bringen, den Quake-Console-Stil von dem von Ihnen ausgewählten Monitor herunterzurutschen?

Das Standardverhalten auf einem Multi-Monitor für Guake ist überall dort, wo sich die Maus befindet, wo das Terminal herunterfällt.

Sie können es jedoch so einstellen, dass es über die Einstellungen auf den gewünschten Monitor herunterfällt, wenn Sie dieses Verhalten nicht möchten.

Dinge, die ich dazu brauche, sind die Möglichkeit, die Animation zu deaktivieren und das Fenster vollständig auszublenden (von Taskleiste, Alt + Tab, Win + Tab usw.)

Eine zusätzliche Option, die Taskleistenschaltfläche niemals anzuzeigen, wäre auch von mir erwünscht, könnte jedoch für dieses Problem nicht relevant sein

Ich liebe den Vorschlag und es ist das einzige, was ihn davon abhält, ihn täglich zu verwenden (einmal veröffentlicht). Ich liebe es, Strg + `in ConEmu zu verwenden und verwende deshalb nicht einmal das integrierte VSCode-Terminal. Ich bin mir jedoch nicht sicher, ob mir die Schlüsselbindung pro Monitor-Idee sehr am Herzen liegt.

Würde dieser Vorschlag auch das Starten einer Instanz des Terminals beinhalten, wenn keine ausgeführt würde, ähnlich wie bei anderen Linux-Begriffen wie dem Dropdown-Menü xfce terminal mit Anwendungsverknüpfung ? Es würde mir nichts ausmachen, wenn es Win + `als Systemverknüpfung wäre, ähnlich wie Win + \

Dies ist möglich, wenn eine Verknüpfung vorhanden ist, an die ein globaler Hotkey gebunden ist, und diese Verknüpfung mithilfe der CLI zum Aufrufen des Umschalters verwendet wird, wenn bereits eine Instanz ausgeführt wird. Es scheint eine schlechte Idee zu sein, es systemweit als Hotkey zu verwenden

Ich würde in Betracht ziehen, mehr unter Windows zu entwickeln (derzeit 95% unter Linux), wenn ich ein Terminal hätte, das wie ein Guake herunterfallen könnte.

Ich verwende cmder / conemu hauptsächlich auch unter Windows und dies ist auch der Hauptgrund, warum ich noch nicht wechsle, zumal ich zwei Monitore und (normalerweise) 3 Desktops verwende, ohne eine globale Möglichkeit, einfach das Terminal I abzurufen Im Wesentlichen haben 6 Stellen, an denen das eigentliche Fenster sein könnte, klingt albern, aber es ist ärgerlich.

Viele von Ihnen erwähnen auch die Verwendung einer Tastenkombination, aber Sie sollten alle in Betracht ziehen, diese auch einer dedizierten Maustaste und, wenn möglich, einer Geste zuzuordnen. Dank mir später.

Ich bin froh zu sehen, dass andere Leute von der Idee eines konfigurierbaren Dropdown-Terminals begeistert sind. Es ist klar, dass Menschen sehr unterschiedliche Präferenzen haben, wie sich diese Dropdowns standardmäßig verhalten, aber glauben, dass die Präferenzen der meisten Menschen möglich sind, solange dies möglich ist

  1. Jede Instanz kann entweder für die Mausverfolgung oder für die Bindung an einen Monitor konfiguriert werden.
  2. Jede Instanz kann einen eigenen Hotkey haben.

Dann spielt es keine Rolle, was Ihnen im Bereich der konfigurierbaren Möglichkeiten gefällt.

Ich persönlich verwende eine Kombination aus Beben und Tilda, sodass an jeden Bildschirm ein Terminal gebunden ist und eines der Maus folgt.

@NOFUNEVER Sie haben das meiste, wonach die Leute richtig fragen, aber @cyberhck und @zakius haben ein paar andere Funktionen identifiziert, die wichtig sein könnten:

  • Fügen Sie der Liste der Konfigurationsoptionen einen Fensterfokus hinzu und überwachen Sie die Bindung / Mausverfolgung.
  • Sollte eine konfigurierbare Option vorhanden sein, die nicht auf der Alt-Registerkarte / Taskleiste angezeigt wird?

Es hört sich so an, als gäbe es immer noch Diskussionen darüber, ob dies mehrere Instanzen wie Tilda (die ich nie verwendet habe und die ich nicht kommentieren kann) oder eine einzelne Instanz wie Guake haben sollte. Vermisse ich noch etwas? Wenn nicht, sollten wir diese Frage lösen und eine Spezifikation schreiben.

( @zakius , Sie haben auch den Wunsch erwähnt, die Dropdown-Animation zu deaktivieren. Grund? Ich sehe daran nichts auszusetzen, aber eine Begründung würde helfen.)

Ich mag Animationen insgesamt nicht, da sie meinen Fokus stehlen (wenn sich etwas bewegt, sehen Sie es instinktiv an, damals könnte es Ihr Leben retten). Aber es gibt auch das, was ich blocking animations nenne, diejenigen, die Sie abwarten müssen, bevor Sie Maßnahmen ergreifen können, um zu verhindern, dass Sie den Text lesen oder Eingabebefehle ausgeben. Diese sind für den Workflow noch störender, da Sie keine andere Wahl haben als zu warten. Einige davon wurden entwickelt, um eine langsame Ausführung zu kennzeichnen, aber auf schnellen Maschinen verlangsamen sie Sie.

Der beste Ansatz wäre, die Animationszeit so zu wählen, dass 0 sie vollständig deaktiviert

Wir wollen keine Animation wie einen Mac, der zu langsam ist, aber Guake beendet die Animation in weniger als 100 ms, denke ich, also ist es bissig, vielleicht kann die Verzögerung auch eine Konfiguration sein, 0 für keine Animation. Guake-Animation scheint "genau richtig" zu sein, sie ist sehr schnell, aber Sie können sehen, woher sie kommt oder wohin sie geht.

Das Hinzufügen einer Konfiguration wäre fantastisch, da jemand, der keine Animation mag, diese deaktivieren oder in eine langsame Animation wie einen Mac verwandeln kann. Ich würde nur 80 ms oder 120 ms machen.

Ahh, wie ich wünschte, ConEmu wäre eine Lösung für mich, es funktioniert nicht für alle, es basiert auf Hotkey und alles, was über Hotkey liegt, wird als Trojaner erkannt (Fehlalarm).

Viele Leute benutzen Terminal für die Arbeit, und ihre Arbeit erlaubt ihnen nicht, etwas zu installieren, das als Trojaner erkannt wird. (wie Qonsole) https://github.com/joedf/Qonsole/issues/9

Ein weiterer wichtiger Aspekt bei der Implementierung ist, dass das Dropdown-Menü auf dem derzeit aktiven virtuellen Desktop angezeigt wird. Ich benutze virtuelle Desktops stark. Als ich ConEmu zum ersten Mal verwendete, stellte ich fest, dass das Dropdown-Terminal mich immer wieder zu Desktop 1 zurückbrachte und dann das Dropdown-Menü anzeigte. Ich habe schließlich die Einstellungen gefunden, damit es in ConEmu wie erwartet funktioniert, und es ist wichtig, dass sich Windows Terminal genauso verhält.

Ja, das hätte eigentlich offensichtlich sein müssen: D Stellen Sie sich vor, Sie drücken die Tastenkombination und das Terminal, die auf dem ersten erscheinen, wenn Sie sich in einem anderen Arbeitsbereich befinden.

Bis unsere Overlords dies zum Terminal hinzufügen, habe ich mir ein einfaches Stück C # ausgedacht, das dies in der Zwischenzeit für mich behebt: https://github.com/flyingpie/windows-terminal-quake.

Das Dropdown-Menü im Quake-Stil wird mit STRG + ~ und STRG + Q ausgeführt, was natürlich völlig veränderbar ist. Derzeit wird der Vollbildmodus gelöscht und auf dem Bildschirm + Arbeitsbereich angezeigt, auf dem sich die Maus befindet.

Sollte jemand gezogen werden, bin ich offen für Vorschläge und / oder PRs.

@flyingpie Das ist ein ziemlich ordentlicher Code, den du da hast. Es sieht so aus, als würde das meiste auch in C ++ funktionieren. Das ist also gut zu wissen.

Ich möchte nur noch einmal wiederholen, dass, obwohl niemand im Team die Zyklen haben wird, um dies für 1.0 zu tun, wir einen Beitrag der Community ziemlich gerne überprüfen würden. Im Idealfall jemand in der Gemeinschaft wäre in der Lage , die Vorschläge und Kommentare von diesem Thread in denen kompilieren Spec Vorlage und senden Sie eine PR für diese spec. Sobald diese Spezifikation genehmigt wurde, überprüfen wir gerne eine PR mit der erforderlichen Codeänderung. Sieht für mich so aus, als hätte @flyingpie wirklich 90% der Grundlagen Randfälle polieren.

Ich habe einen ähnlichen Anwendungsfall. Ich benutze keinen Quake-Stil, aber ich mag das immer offene Terminal wirklich.

Mein ConEmu-Setup führt Folgendes aus, was wt.exe bisher zu fehlen scheint (in grober Reihenfolge der Wichtigkeit):

  1. Mein ConEmu wird buchstäblich nur beim Herunterfahren oder auf ausdrückliche Anfrage beendet. Wenn ich die letzte Registerkarte schließe, ist sie immer noch geöffnet, nur ohne Registerkarten.
  2. Es wird jedes Mal am selben Ort gestartet. (0,0) auf meinem zweiten Monitor.
  3. Ich habe einen globalen Hotkey zum Umschalten des Fokus (Strg + `).
  4. Es wird nicht in der Taskleiste angezeigt. Es hat ein Tray-Symbol.
  5. Sie können nur eine Instanz davon starten.
  6. Es wird automatisch bei der Windows-Anmeldung gestartet. (wichtig für Folgendes)
  7. Es ist das Standardterminal, das automatisch andere Terminals verbraucht (IE Wenn ich wt.exe 'ausführe' und dann cmd.exe ausführe, würde ich erwarten, dass wt.exe nur eine neue Registerkarte mit der neuen Registerkarte cmd.exe öffnet) *

All dies sind ungefähr Blocker für mich, wenn ich von ConEmu zu wt.exe wechsle.

Zusätzlich:

  • Manche Leute würden immer oben sein wollen.
  • Einige Benutzer möchten den Fokusverlust minimieren, und diese Benutzer möchten im Allgemeinen die Animation zum Minimieren / Maximieren deaktivieren.
  • Einige möchten, dass das Terminal beim Fokussieren zu ihrem "aktiven" Monitor springt.
  • Einige möchten mehrere Terminalinstanzen? * *

Dies sind alles verschiedene Funktionen, die ihre eigenen Spezifikationen IMO haben sollten. Ich bin bereit, einen Teil dieses Spezifikationsprozesses voranzutreiben. @ zadjii-msft Kennen Sie einen dieser Aufzählungspunkte, die entweder bereits Spezifikationen enthalten, aus irgendeinem Grund nicht ausgeführt werden usw.?

* Tricky?

Sie haben also eine Reihe separater Probleme aufgelistet. Lassen Sie mich sehen, ob ich sie alle verknüpfen kann:

  1. # 2080 ist die WIP-Spezifikation für diese Funktion, die sich zu dem Zeitpunkt, zu dem sie fertig ist, in eine massive Spezifikation verwandeln wird.
  2. # 1043 benötigt wahrscheinlich keine spezielle TBH, sondern nur jemanden, der die Arbeit erledigt
  3. # 653 (diese Ausgabe)
  4. Ich habe die Anfrage, sie nicht in der Taskleiste zu haben, noch nie gehört. Das hat also definitiv kein eigenes Problem. Ein Taskleistensymbol scheint erforderlich zu sein, um kein Taskleistensymbol zu haben. Dies kann also wahrscheinlich eine einzelne Spezifikation / Aufgabe sein
  5. Dies fällt unter # 2080
  6. # 2189
  7. # 492 verfolgt dies, aber es werden wahrscheinlich einige Betriebssystemänderungen erforderlich sein. Dies kommt auch häufig in # 2080 vor.
  8. Ich hätte schwören können, dass dies ein eigenes Problem hat, aber es sieht so aus, als ob es nicht so wäre.
  9. Ich habe diese Anfrage noch nie gehört, aber sie klingt für mich ordentlich
  10. Scheint dieser Funktion TBH vage ähnlich zu sein. Vielleicht sollten wir beide Szenarien in dieser Spezifikation berücksichtigen?
  11. Sie sind sich nicht sicher, was Sie in diesem Punkt meinen - meinen Sie Scheiben wie # 1000?

Von diesen sind # 1043, # 653, # 2189 alle mit "Hilfe gesucht" gekennzeichnet

Ich habe bereits 4. erwähnt und um sicherzustellen, dass das Terminal nicht auf Alt + Tab oder Win + Tab angezeigt wird, wenn das Fenster ausgeblendet ist

Mehrere Instanzen bedeuten mehrere Fenster, die möglicherweise nicht auf mehrere Bildschirme oder virtuelle Desktops verteilt sein müssen, aber das würde die Handhabung globaler Hotkeys viel komplexer oder sogar unmöglich machen (ich denke, conemu deaktiviert mehrere Instanzen, wenn der Quake-Modus aktiviert wird).

Für 11 / "Mehrere Instanzen bedeuten mehrere Fenster" meine ich speziell das, was das OP hier beschrieben hat: https://github.com/microsoft/terminal/issues/653#issuecomment -491389892

Das interessiert mich nicht besonders, aber es ist ein separates verwandtes Thema. Ich denke, sie möchten, dass mehrere globale Hotkeys mehrere Instanzen auf dieselbe Weise öffnen / aktivieren / fokussieren, wie ich einen Hotkey für Punkt 3 auf meiner Liste haben möchte.

@ Zakius

Ich habe bereits 4. erwähnt und um sicherzustellen, dass das Terminal nicht auf Alt + Tab oder Win + Tab angezeigt wird, wenn das Fenster ausgeblendet ist

Mehrere Instanzen bedeuten mehrere Fenster, die möglicherweise nicht auf mehrere Bildschirme oder virtuelle Desktops verteilt sein müssen, aber das würde die Handhabung globaler Hotkeys viel komplexer oder sogar unmöglich machen (ich denke, conemu deaktiviert mehrere Instanzen, wenn der Quake-Modus aktiviert wird).

Mehrere deaktivierte Instanzen passieren in ConEmu, wenn das Dropdown-Menü "Beben" verwendet wird.
Es ist nahezu unmöglich, mit diesem Verhalten logisch umzugehen. Sie müssen Ihre Registerkarten verwenden oder einen Terminal-Multiplexer verwenden, wenn Sie mehrere Instanzen mit Beben-Dropdown-Liste möchten.

BEARBEITEN:
Möglicherweise arbeiten Sie in einem Bereich, in dem das erste geöffnete Terminalfenster der Master ist. Dies ist das Fenster, das bei Verwendung des Quake-Hotkeys immer aufgerufen wird.

Es könnte schwierig sein, dies mit Tab-Unterstützung zu verarbeiten - weshalb vielleicht kein anderes mir bekanntes Terminal dieses Verhalten unterstützt. In diesem Szenario ist auch ein Randfall zu berücksichtigen, z. B. was passiert, wenn Sie Ihr Hauptfenster schließen und ein sekundäres Fenster noch geöffnet ist - würde der Hotkey dieses sekundäre Terminalfenster weiterhin ignorieren usw.

Wenn für ConEmu Quake aktiviert ist und Sie versuchen, ConEmu erneut zu öffnen (z. B. über die Desktop-Verknüpfung), wird kein neues Fenster geöffnet, sondern nur das vorhandene laufende Terminal fokussiert.

Möglicherweise arbeiten Sie in einem Bereich, in dem das erste geöffnete Terminalfenster der Master ist. Dies ist das Fenster, das bei Verwendung des Quake-Hotkeys immer aufgerufen wird.

Es gibt auch die Möglichkeit, die Ausführung einer einzelnen Instanz pro physischem Bildschirm und virtuellem Desktop zuzulassen. Auf diese Weise wird durch den Haupt-Hotkey immer die Instanz auf Ihrem derzeit aktiven VD und Bildschirm angezeigt. Dies ist jedoch ziemlich kompliziert. Ich denke, das Deaktivieren mehrerer Instanzen ist sinnvoll

Ich denke, mehrere Instanzen können ignoriert werden, wenn die Registerkarten weiter verbessert werden und das Fenster im Bebenstil von überall aufgerufen werden kann. Zumindest für jetzt.

Es gibt auch die Möglichkeit, die Ausführung einer einzelnen Instanz pro physischem Bildschirm und virtuellem Desktop zuzulassen. Auf diese Weise wird durch den Haupt-Hotkey immer die Instanz auf Ihrem derzeit aktiven VD und Bildschirm angezeigt. Dies ist jedoch ziemlich kompliziert. Ich denke, das Deaktivieren mehrerer Instanzen ist sinnvoll

Ich würde mehrere Instanzen nicht vollständig ignorieren - manchmal ist es sehr praktisch, ein Terminal auf einem Bildschirm zu öffnen, das Protokolle überträgt oder die Systemlast anzeigt, während in einem anderen Terminal auf einem benachbarten Bildschirm gearbeitet wird.

Ich habe zuvor in den letzten Jahren den Ubuntu-Desktop verwendet (seit WSL v2 wieder Windows) und da Guake und das Ubuntu-Terminal in Bezug auf Reaktionsfähigkeit, UI-Design / Themen usw. sehr ähnlich sind, hatte ich oft das Standard-Ubuntu-Terminal geöffnet auf meinem vertikalen Bildschirm Protokolle und Systemlast beobachten.

Dies ist offensichtlich der einfache Weg, um das Problem zu umgehen, wenn mehrere Instanzen mit Dropdown deaktiviert sind. Verwenden Sie ein anderes Terminal.
Problem ist, dass die meisten Terminals unter Windows kompletter Müll sind (daher dieses Projekt ofc).

Die zusätzlichen Instanzen betrafen mehrere Monitore, als ich vorschlug
es. Eine pro Monitor, jede mit einem eigenen Hotkey. Ich benutze eine Porträtlandschaft
Porträt zu Hause eingerichtet und während des Laufens Minze laufen Guake in der
Mitte, aber es bietet nicht die zusätzlichen Instanzen, die Tilda hat, also benutze ich es auf
das äußere Porträt überwacht.

Am Montag, den 16. September 2019 um 14:00 Uhr schrieb nofunatall [email protected] :

Es besteht auch die Möglichkeit, eine einzelne Instanz pro auszuführen
physischer Bildschirm pro virtuellem Desktop und auf diese Weise würde der Haupt-Hotkey immer
Rufen Sie die Instanz auf Ihrem aktuell aktiven VD und Bildschirm auf, aber das ist es
ziemlich kompliziert, ich denke, das Deaktivieren mehrerer Instanzen ist vernünftig

Ich würde mehrere Instanzen nicht vollständig ignorieren - manchmal ist es sehr praktisch
um ein Terminal auf einem Bildschirm zu öffnen, das Protokolle überträgt oder das System anzeigt
Laden Sie während der Arbeit in einem anderen Terminal auf einem benachbarten Bildschirm.

Ich habe Ubuntu Desktop in den letzten Jahren verwendet (nur
ging seit WSL v2) und seit Guake und dem Ubuntu-Terminal zurück zu Windows
sind sehr ähnlich in Bezug auf Reaktionsfähigkeit, UI-Design / Themen usw. Ich oft
hatte das Standard-Ubuntu-Terminal auf meinem vertikalen Bildschirm geöffnet und sah sich Protokolle an
und Systemlast.

Dies ist offensichtlich der einfache Weg, um das Problem zu umgehen, wenn mehrere Instanzen mit
Dropdown ist deaktiviert - Verwenden Sie ein anderes Terminal.
Problem ist, dass die meisten Terminals unter Windows kompletter Müll sind (daher dies
Projekt ofc).

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/microsoft/terminal/issues/653?
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/ACAH5BM722EZEB5LQBXGW6TQJ7XYVANCNFSM4HL735CQ
.

Leute, wir haben hier eindeutig zwei getrennte Probleme. Könnten wir dieses so bearbeiten, dass es sich nur um den Hotkey "Quake Style" (global / einzelnes Terminal) handelt?

Dann ein zweites Problem, das durch dieses blockiert würde, um die Zuweisung eines dedizierten Hotkeys im "Quake-Stil" zu anderen Anzeigen zu ermöglichen.

Der erste scheint populärer und begehrter zu sein. Ich würde gerne auch die zweite sehen (coole Idee @NOFUNEVER hat nie an eine solche Funktion gedacht, scheint nützlich zu sein), aber es wäre schön, wenn wir das Thema ein wenig klären könnten.

Das Problem des OP ist trotz des Namens dieses Problems eher das zweite. Unabhängig davon denke ich, dass das Öffnen eines Hotkeys für ein einzelnes Terminal durch # 2080 weitgehend blockiert ist. Wir können nicht wirklich einen Hotkey haben, der ein einzelnes Terminal öffnet, bis wir ein einzelnes Terminal erzwingen können.

https://github.com/microsoft/terminal/issues/653#issuecomment -520419611

Dies ist die beste Aufschlüsselung, die ich denke.

@rlabrecque Ja, ich weiß, dass das ursprüngliche Problem mit einer ausgefalleneren Lösung zusammenhängt, aber als die meisten Leute die Kommentare betrachteten, äußerten sie den Wunsch nach einem "Beben" -Stil, und viel weniger Menschen interessierten sich für benutzerdefinierte Hotkeys für jede Anzeige.

Aus diesem Grund habe ich vorgeschlagen, dieses Problem in ein Problem im Zusammenhang mit einem Beben umzuwandeln und die Anforderung der Folgefunktion in ein separates Problem zu extrahieren, in dem wir es auch nachverfolgen können.

Es scheint mir, dass dies für jede der verschiedenen Funktionen in mehrere Punkte unterteilt werden muss, beginnend mit der grundlegenden Hotkey-to-Toggle-Sichtbarkeitsfunktion. Das geht doch ohne die anderen Funktionen, oder?

Bei mehreren Problemen wäre es viel einfacher, die Nachfrage nach den einzelnen Änderungen des Rezepts zu erkennen und die Entwicklung zu priorisieren. Es scheint, als würde die minimal funktionsfähige Funktion den Juckreiz vieler Menschen kratzen.

Ist das nicht der Kommentar, den https://github.com/microsoft/terminal/issues/653#issuecomment -520419611 beschreibt?

Für alle, die darauf warten, dass sie von conemu wechseln (wie ich) usw. Sie können den Autohotkey und ein angeheftetes Taskleistenelement als Problemumgehung verwenden.

Autohotkey-Skript:

^`::Send #5

Dadurch wird Strg + `Winkey + 5 zugeordnet und an Ihre Bedürfnisse angepasst.

Das von Flyingpie bereitgestellte Tool ist viel besser: Es muss nicht fixiert werden und die Taskleisten-Schaltfläche wird vollständig ausgeblendet, obwohl ich es mit einer anderen App verwende (da Terminal auch einige andere Dinge vermisst).

Weiter mit der AutoHotKey-Lösung:

#SC29::ToggleTerminal()

ShowAndPositionTerminal()
{
    WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

    WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, -5, -10, A_ScreenWidth + 10, A_ScreenHeight * 0.7,
}

ToggleTerminal()
{
    WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

    DetectHiddenWindows, On

    if WinExist(WinMatcher)
    ; Window Exists
    {
        DetectHiddenWindows, Off

        ; Check if its hidden
        if !WinExist(WinMatcher) || !WinActive(WinMatcher)
        {
            ShowAndPositionTerminal()
        }
        else if WinExist(WinMatcher)
        {
            ; Script sees it without detecting hidden windows, so..
            WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
            Send !{Esc}
        }
    }
    else
    {
        Run "c:\Users\kim\AppData\Local\Microsoft\WindowsApps\wt.exe"
        Sleep, 1000
        ShowAndPositionTerminal()
    }
}

Dieses Skript bindet win + ½ (auf der dänischen Tastatur die Schaltfläche oben links unter Escape) an eine Funktion, die eine laufende Terminalinstanz in den Fokus rückt oder eine neue Instanz startet, wenn sie nicht ausgeführt wird, und ihre Größe ändert und "richtig" positioniert. Wenn das Terminal bereits scharfgestellt ist, wird das Fenster ausgeblendet (sodass es nicht in Alt + Tab angezeigt wird).

Ich habe die @ kimbirkelund- Lösung ein wenig aktualisiert, um den Fehler in der Fenstergröße zu beheben, falls die Taskleiste nicht wie ich unten angedockt ist.

Sie finden den Code in meinem Kern hier oder kopieren Sie ihn direkt von unten:

; How much height of screen size the terminal window takes.
VRatio := 0.8
; The path to the Windows Terminal exe file.
WtPath = "%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe"

#SC29::ToggleTerminal()

ShowAndPositionTerminal()
{
    ScreenX := GetScreenLeft()
    ScreenY := GetScreenTop()
    ScreenWidth := GetScreenWidth()
    ScreenHeight := GetScreenHeight()
    global VRatio

    WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

    WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, ScreenX-5, ScreenY-10, ScreenWidth+10, ScreenHeight * VRatio,
}

ToggleTerminal()
{
    WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

    DetectHiddenWindows, On

    if WinExist(WinMatcher)
    ; Window Exists
    {
        DetectHiddenWindows, Off

        ; Check if its hidden
        if !WinExist(WinMatcher) || !WinActive(WinMatcher)
        {
            ShowAndPositionTerminal()
        }
        else if WinExist(WinMatcher)
        {
            ; Script sees it without detecting hidden windows, so..
            WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
            Send !{Esc}
        }
    }
    else
    {
        global WtPath
        Run %WtPath%
        Sleep, 1000
        ShowAndPositionTerminal()
    }
}

; Gets the edge that the taskbar is docked to.  Returns:
;   "top"
;   "right"
;   "bottom"
;   "left"
GetTaskbarEdge() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,

  if (TW = A_ScreenWidth) { ; Vertical Taskbar
    if (TY = 0) {
      return "top"
    } else {
      return "bottom"
    }
  } else { ; Horizontal Taskbar
    if (TX = 0) {
      return "left"
    } else {
      return "right"
    }
  }
}

GetScreenTop() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top") {
    return TH
  } else {
    return 0
  }
}

GetScreenLeft() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "left") {
    return TW
  } else {
    return 0
  }
}

GetScreenWidth() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top" or TaskbarEdge = "bottom") {
    return A_ScreenWidth
  } else {
    return A_ScreenWidth - TW
  }
}

GetScreenHeight() {
  WinGetPos,TX,TY,TW,TH,ahk_class Shell_TrayWnd,,,
  TaskbarEdge := GetTaskbarEdge()

  if (TaskbarEdge = "top" or TaskbarEdge = "bottom") {
    return A_ScreenHeight - TH
  } else {
    return A_ScreenHeight
  }
}

Ich möchte diese Funktionsanforderung nicht weiter aus der Spur bringen, aber ich wollte die Änderungen, die ich an der Arbeit vorgenommen habe, die @wizcas und @kimbirkelund bereits

  • Klemmenhöhe
  • Endopazität
  • Schriftart und -größe des Terminals
  • Farbschema

All dies, ohne die Datei neu zu kompilieren oder die JSON-Datei zu öffnen und manuell zu bearbeiten. Es speichert die Einstellungen ohne profile.json (z. B. Terminalgröße) in seiner eigenen Datei settings.ini im selben Verzeichnis. Gerne akzeptieren wir Änderungen, wenn jemand dazu beitragen möchte. Ich werde hier auch irgendwann einen Themenersteller hinzufügen, da es ein bisschen mühsam war, ein Monokai-Thema zu konvertieren, das ich gerade verwende (in meinem Kern, wenn jemand es herausarbeiten möchte). Hier ist eine kleine Vorschau des Einstellungsmenüs:

image

BEARBEITEN: Screenshot aktualisiert

Den Code erhalten Sie hier: https://gist.github.com/alenbasic/004c5abeb4cc0e0b31b7681371d48898

Eines der genannten Probleme mit verknüpften Duplikaten ist die Unterstützung des tmux-Steuermodus, die derzeit nur von iTerm unter Mac OS unterstützt wird. Es ist eine unglaublich leistungsstarke Funktionalität, aber meines Wissens starben alle Versuche, sie in anderen Terminals zu implementieren, an einem stillen Tod nicht gewarteter Gabeln. Es wäre fantastisch, es außerhalb von Mac OS zu haben.

Ich habe ein Projekt gestartet, ziemlich genau wegen dieser Funktion. https://github.com/dotjosh/WinTermPlus

@dotjosh Das sieht gut aus! Gibt es einen Grund, warum Sie dies als eigenständiges Tool und nicht als PR implementiert haben? Wie viel Aufwand wäre es, es zusammenzuführen?

@dotjosh Das sieht gut aus! Gibt es einen Grund, warum Sie dies als eigenständiges Tool und nicht als PR implementiert haben? Wie viel Aufwand wäre es, es zusammenzuführen?

Ich bin stark in C # / WPF und konnte es schnell erledigen. Ich würde gerne helfen, es zu portieren, wenn wir mit dem Verhalten zufrieden sind.

Ehrlich gesagt finde ich das super cool. Ich würde mich auf jeden Fall freuen, diese PR zu überprüfen.

Es könnte etwas schwierig sein, die Taskleisten-Tray-Bits auf das UWP-ähnliche Modell zu portieren, das wir haben (wahrscheinlich müssen Sie sich mit dem package.appxmanifest herumschlagen). Dieses Tutorial sah jedoch gut aus . Es wäre wahrscheinlich auch sinnvoller, die Einstellungen für die Größe zum Öffnen des Fensters auf profiles.json und die Bindung auch dort zu definieren (selbst wenn sie in der TerminalApp eigentlich nichts bewirkt). da ich davon ausgehe, dass die Bindung beim Betriebssystem selbst registriert werden muss. Ich bin sicher, dass es eine Möglichkeit gibt, dies in C ++ zu tun, obwohl ich nicht weiß, was es ist 😄

Ich zitiere nur etwas, was ich vorher gesagt habe:

Ich möchte nur noch einmal wiederholen, dass, obwohl niemand im Team die Zyklen haben wird, um dies für 1.0 zu tun, wir einen Beitrag der Community ziemlich gerne überprüfen würden. Im Idealfall kann jemand in der Community die Vorschläge und Kommentare aus diesem Thread in der Spezifikationsvorlage zusammenstellen und eine PR für diese Spezifikation einreichen. Sobald diese Spezifikation genehmigt wurde, überprüfen wir gerne eine PR mit der erforderlichen Codeänderung. Sieht für mich so aus, als ob @flyingpie @dotjosh wirklich 90% der Grundlagen hat, es würde hauptsächlich die Randfälle polieren .

Ehrlich gesagt brauchen wir nicht wirklich alles in der ausgefüllten Spezifikationsvorlage. Ich möchte nur wirklich sicherstellen, dass jeder Beitrag, den wir akzeptieren, die Randfälle hier durchdacht hat und das Verhalten für diese Fälle klar definiert. Nämlich:

  • Was passiert, wenn der Benutzer noch keine Terminalinstanz geöffnet hat und den globalen Hotkey drückt?
  • Was passiert, wenn der Benutzer mehrere Terminalfenster geöffnet hat? Welches öffnet sich? Passiert in diesem Fall nichts?

    • Blendet der globale Hotkey das aktive Fenster aus, wenn mehrere Terminalfenster geöffnet sind und ein Terminal derzeit fokussiert ist, oder ruft er ein minimiertes Fenster auf?

  • Kann der Benutzer festlegen, dass das Fenster maximiert angezeigt wird? Ganzer Bildschirm?
  • Was passiert, wenn der Benutzer noch keine Terminalinstanz geöffnet hat und den globalen Hotkey drückt?

Ich denke, es hängt davon ab, welche Terminal-Instanz genau ist. Wenn das Terminal nicht ausgeführt wird, sollte nichts passieren. Ich denke nicht, dass es einen Service oder etwas geben sollte, das das in den Griff bekommt. Wenn im Terminal keine Shells mehr vorhanden sind, sollte es weiterhin ausgeführt werden und darauf warten, dass eine neue Shell geöffnet wird. Das Beenden des Terminals muss expliziter sein.

  • Was passiert, wenn der Benutzer mehrere Terminalfenster geöffnet hat? Welches öffnet sich? Passiert in diesem Fall nichts?
  • Blendet der globale Hotkey das aktive Fenster aus, wenn mehrere Terminalfenster geöffnet sind und ein Terminal derzeit fokussiert ist, oder ruft er ein minimiertes Fenster auf?

Ich denke, die allgemeine Annahme ist, dass dieser Modus nur eine Terminalinstanz zulässt. Ein zweites Starten der ausführbaren Datei würde lediglich das Terminal fokussieren und möglicherweise eine neue Standard-Shell darin starten? (Ähnlich wie bei UWP-Apps. Öffnen Sie die Einstellungen, fokussieren Sie dann etwas anderes und öffnen Sie die Einstellungen erneut, nur eine Instanz.)

  • Kann der Benutzer festlegen, dass das Fenster maximiert angezeigt wird? Ganzer Bildschirm?

Ich verstehe nicht, warum nicht, wenn beide derzeit unterstützt werden. 👍 Der Hotkey funktioniert in beiden Fällen ungefähr genauso wie das Minimieren / Wiederherstellen von Minimiert.

Darf ich vorschlagen, mit der Benutzererfahrung anderer beliebter Terminals zu beginnen und diese von dort aus zu ändern, wenn sie nicht optimal sind?

  • Was passiert, wenn der Benutzer noch keine Terminalinstanz geöffnet hat und den globalen Hotkey drückt?

Nichts, weil das Terminal nicht läuft. Darüber hinaus sollte der Hotkey für andere Programme zur Verwendung in diesem Fall freigegeben werden. So verhalten sich ConEmu und Terminator.

  • Was passiert, wenn der Benutzer mehrere Terminalfenster geöffnet hat? Welches öffnet sich? Passiert in diesem Fall nichts?

Wenn die Einzelinstanzeinstellung aktiv ist: Es dürfen nicht mehrere Fenster geöffnet sein.

Wenn die Einstellung für eine einzelne Instanz nicht aktiv ist, sendet Terminator den Befehl an alle Instanzen und alle schalten den Status um. Dies könnte die einfachste Lösung sein. Es ist nicht sehr sinnvoll, den Quake-Modus mit mehreren Instanzen zu verwenden. Auf diese Weise bleiben Terminals nicht dauerhaft im verborgenen Zustand hängen (der Terminator verbirgt das Fenster in verstecktem Zustand vor der Taskleiste).

ConEmu: Durch Aktivieren des Bebenmodus wird der Einzelinstanzmodus erzwungen und das Kontrollkästchen ausgegraut. Dies ist verhaltensmäßig sinnvoller, führt jedoch zu einer höheren Komplexität.

Ich denke nicht, dass das Fehlen eines Einzelinstanzmodus (# 2227) die Implementierung dieser Funktionalität behindern sollte.

  • Blendet der globale Hotkey das aktive Fenster aus, wenn mehrere Terminalfenster geöffnet sind und ein Terminal derzeit fokussiert ist, oder ruft er ein minimiertes Fenster auf?

Siehe oben - beides. Es schaltet ihre Zustände um.

  • Kann der Benutzer festlegen, dass das Fenster maximiert angezeigt wird? Ganzer Bildschirm?

Sowohl in ConEmu als auch in Terminator ist dies für den Bebenmodus nicht relevant. Das Fenster wird in den Zustand zurückversetzt, in dem es sich befand, bevor es ausgeblendet wurde. Wenn es Vollbild war, wird es im Vollbildmodus wiederhergestellt. Gleiches gilt für maximierte und nicht maximierte Fenster.

nur ein bisschen pingelig: Keines der gängigen Terminals verwendet den tatsächlichen (exklusiven) Vollbildmodus, kann aber randlos gemacht werden

und ich denke, es ist viel besser für den Anwendungsfall

Aus Sicht des Benutzers scheint der Hauptunterschied zwischen "Vollbild" und maximiertem Fenster darin zu bestehen, dass "Vollbild" die Taskleiste abdeckt.
-------- Originalnachricht -------- Von: zakius [email protected] Datum: 15.11.2019 22:38 (GMT + 00: 00) An: Microsoft / Terminal Terminal @ noreply.github.com Cc: Igroeg Okiob [email protected] , Kommentar [email protected] Betreff: Re: [Microsoft / Terminal] Funktionsanforderung: Hotkey Dropdown ala
quake / guake / tilda (# 653) ist nur ein bisschen pingelig: Keines der gängigen Terminals verwendet den tatsächlichen (exklusiven) Vollbildmodus, kann aber randlos gemacht werden
und ich denke, es ist viel besser für den Anwendungsfall

- Sie erhalten dies, weil Sie einen Kommentar abgegeben haben. Antworten Sie direkt auf diese E-Mail, zeigen Sie sie auf GitHub an oder melden Sie sich ab.
[
{
"@context": " http://schema.org ",
"@type": "EmailMessage",
"potentielle Aktion": {
"@type": "ViewAction",
"Ziel": " https://github.com/microsoft/terminal/issues/653?email_source=notifications\u0026email_token = AB2TW7D3V347CBC62MCQ32TQT4QHVA5CNFSM4HL735C2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEG5YSA # issuecomment-554556488",
"url": " https://github.com/microsoft/terminal/issues/653?email_source=notifications\u0026email_token = AB2TW7D3V347CBC62MCQ32TQT4QHVA5CNFSM4HL735C2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEG5YSA # issuecomment-554556488",
"name": "Problem anzeigen"
},
"description": "Dieses Problem auf GitHub anzeigen",
"Verleger": {
"@type": "Organisation",
"name": "GitHub",
"url": " https://github.com "
}}
}}
]]

Ein Hotkey im Quake-Konsolenstil (ConEmu) ist ein Muss. Hat jemand das Terminal an ConEmu angeschlossen?

@dotjosh Das sieht gut aus! Gibt es einen Grund, warum Sie dies als eigenständiges Tool und nicht als PR implementiert haben? Wie viel Aufwand wäre es, es zusammenzuführen?

Ich bin stark in C # / WPF und konnte es schnell erledigen. Ich würde gerne helfen, es zu portieren, wenn wir mit dem Verhalten zufrieden sind.

Wir sind! Können wir dies eine Pull-Anfrage haben?

Ich möchte sagen, liebe, was du mit dem neuen Terminal machst. Und ich verstehe vollkommen, dass ich aufgrund anderer priorisierter Tickets nicht in der Lage bin, eine Funktionsanfrage zu erhalten. Das passiert jedem Team, mein Team ist auch nicht dagegen immun.

Aber ich muss sagen, dass das Fehlen dieser Funktion das Versagen der PM ist und irgendwie zeigt, dass sie die Auswirkungen dieser Funktion auf so viele Benutzer nicht vollständig verstehen. Das ist was, ein 2 Zeiger? vielleicht 3?

Dies ist eine niedrig hängende Fruchtfunktion, die eine enorme Wirkung hat. Ich mag es, dass ihr öffentliche PRs akzeptiert, aber wenn die Öffentlichkeit es nicht tut, zieht dies in einen Sprint. Dieses Ticket ist seit einem Jahr geöffnet.

Für einige Leute ist es überhaupt nicht wichtig, für andere ist es ein Dealbreaker, obwohl ich dank einiger hier veröffentlichter Problemumgehungen ohne ihn leben könnte, so dass ich persönlich Dinge priorisieren würde, die in keiner Weise wie # 574 ergänzt werden können (oder wahrscheinlich viele andere, das ist nur mein zweiter Dealbreaker)

Recht. Sie sprechen darüber, dass wir dies nicht angemessen priorisiert haben, und ich schätze, dass diese Funktion für Sie wichtig ist. Ich möchte jedoch fragen: Mit den vier Ingenieuren im Kernteam, welche der in den folgenden Meilensteinen abgeschlossenen Funktionen (Abfrage mit Gültigkeitsbereich plus lose Funktionen) sollten wir gekürzt haben, um Platz für eine benutzerdefinierte Fensterverwaltung zu schaffen?

  • _ Mit Fix-Committed gekennzeichnete und geschlossene Funktionen _
  • Barrierefreiheit
  • Registerkarten in der Titelleiste
  • Scheiben
  • Überprüfung der Einstellungen
  • Profilerkennung
  • rationalisierte Exit-Semantik
  • korrektes Rendern für CJK-Ideogramme
  • Eingabeunterstützung für Benutzer von Nicht-US-ANSI-Tastaturen
  • Wenn Sie die Größe ändern, wird Ihr Verlauf nicht gelöscht
  • Suche
  • (Ich könnte weiterhin Funktionen hier auflisten)

Ich kann das Engineering auf eine, vielleicht zwei Funktionen pro Entwickler und Monat festlegen. Es ist 10 Monate her und in der meisten Zeit hatten wir ein Team von 2-3 statt 4.

Wenn Sie herausfinden können, welche dieser Dinge, für die wir uns entschieden haben, Tischeinsätze waren, ohne die wir hätten versenden sollen, bin ich froh, diese Diskussion mit Ihnen zu führen.

Ich sage nicht, dass diese Funktionen überhaupt nicht wichtig sind. Mein Punkt ist, dass dies eine niedrig hängende Frucht mit fast 300 Daumen nach oben ist, mehrere doppelte Tickets erstellt wurden und nicht so involviert sind wie die meisten anderen Funktionen / Fehlerbehebungen, die Sie aufgelistet haben.

Ich will die hier geleistete Arbeit nicht herabsetzen, im Gegenteil, ich finde das, was das Team geleistet hat, erstaunlich. Sowohl das Team als auch Sie verdienen Anerkennung.

Vielleicht war ich ein bisschen hart, also entschuldige ich mich dafür. Aber ich denke immer noch, dass mein Punkt steht. Es liegt an Ihnen und dem Team, natürlich nur meine zwei Cent zu entscheiden.

Wenn dies eine so niedrig hängende Frucht ist, würde ich gerne eine PR eines Community-Mitglieds überprüfen, um diese Funktion zu behandeln 😉. Derzeit befindet sich das Entwicklerteam in den nächsten Monaten in einem Sprint zum Einfrieren von Funktionen und zum Beheben / Polieren von Fehlern. Wir werden sicherlich in unserem Rückstand nach Aufgaben suchen, die mit 1.0-Ländern beginnen sollen, und ich möchte klarstellen, dass das Team versteht, dass dies eine beliebte Frage ist.

Das Fixieren in der Taskleiste und die Verwendung von Win + 1 für den Zugriff ist als Problemumgehung in Ordnung (obwohl ich jetzt das Autohotkey-Skript kimbirkelund von https://github.com/microsoft/terminal/issues/653#issuecomment-541408854 verwende). Ich denke nicht, dass dies eine Priorität sein sollte.

Vielleicht könnte jemand das Skript von kimbirkelund oder wizcas kompilieren und eine Binärdatei für diejenigen bereitstellen, die keinen Autohotkey installieren möchten?

Es gibt viel bessere Problemumgehungen, als sie in der Taskleiste zu belassen. Was genau wir vermeiden möchten, aber wie Sie sagten, gibt es einige, obwohl es wichtig ist, dass sie auf der Prioritätenliste niedriger sind als Dinge, die nicht mit externen Tools ergänzt werden können

Meine modifizierte Version des von @kimbirkelund bereitgestellten AutoHotKey fügt der Diskussion meine zwei Cent

  • Der Hotkey ist Ctrl + ~
  • Das Terminal soll oben bleiben
  • Eine Sache, die ich für nützlich hielt, war folgende: Wenn Sie Ihr Terminal geöffnet haben und ein Fenster öffnen, während das Terminal angezeigt wird, wenn Sie das Terminal ausblenden, weiß es nichts über dieses "neue Fenster" und geht zurück zum alter aktiver. Ich benutze es seit ein paar Stunden und es scheint zu funktionieren

UPDATE: Ich habe mein Skript so aktualisiert, dass es beim Ausblenden des Terminals zu diesem Fenster wechselt, wenn Sie beispielsweise zu einem anderen Fenster wechseln (Alt + Tab)


Hier ist das Skript, hoffentlich ist es für andere nützlich 🙂:

#Persistent
SetBatchLines, -1
Process, Priority,, High

Gui +LastFound
hWnd := WinExist()

; Subscribe to win-create events to get the activated window
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage(MsgNum, Func("OnWin"))
Return

OnWin(event, hwnd)
{
  ; WinGetClass, winClass, ahk_id %lParam%
  WinGetClass, winClass, ahk_id %hwnd%
  if (winClass = "CASCADIA_HOSTING_WINDOW_CLASS")
  {
    global activatedWindow
    activatedWindow = -1
  }
  else
  {
    ; 1 is HSHELL_WINDOOWCREATED
    ; 4 is HSHELL_WINDOWACTIVATED
    if (event == 1 || event & 4)
    {
      global activatedWindow
      activatedWindow = -1
      activatedWindow = %hwnd%
    }
  }
}

; Toggle windows terminal using Ctrl,`
^`::ToggleTerminal()

ShowAndPositionTerminal()
{
  WinShow ahk_class CASCADIA_HOSTING_WINDOW_CLASS
  WinActivate ahk_class CASCADIA_HOSTING_WINDOW_CLASS

  WinMove, ahk_class CASCADIA_HOSTING_WINDOW_CLASS,, -5, -10, A_ScreenWidth + 10, A_ScreenHeight * 0.7,
  Winset, AlwaysOnTop, On, A
}

ToggleTerminal()
{
  global activatedWindow
  WinMatcher := "ahk_class CASCADIA_HOSTING_WINDOW_CLASS"

  DetectHiddenWindows, On

  if WinExist(WinMatcher)
  {
    DetectHiddenWindows, Off

    if WinExist(WinMatcher)
    {
      ; Script sees it without detecting hidden windows, so..
      WinHide ahk_class CASCADIA_HOSTING_WINDOW_CLASS
      if activatedWindow > 0
      {
        WinActivate, ahk_id, %activatedWindow%
        activatedWindow = -1
      }
      else
      {
        Send !{Esc}
      }
    }
    ; Check if its hidden
    else if !WinExist(WinMatcher) || !WinActive(WinMatcher)
    {
      ShowAndPositionTerminal()
    }
  }
  else
  {
    Run "%SCOOP%\apps\windows-terminal\current\WindowsTerminal.exe"
    Sleep, 1000
    ShowAndPositionTerminal()
  }
}

@ zadjii-msft bedeutet das, dass ein PR für ein paar Monate nicht zusammengeführt wird?
Dies war das erste, was ich gegoogelt habe, als ich das Terminal installiert habe - was Ihnen auch vielmals dafür gedankt hat, dass Sie ein echtes Terminal erstellt haben. Super aufgeregt

@ chazt3n Wir sind ziemlich bereinigen . Wir werden definitiv keine PRs dafür zusammenführen, bis wir 1.0 zu diesem Zeitpunkt veröffentlichen, aber dies ist definitiv etwas, worüber wir nachdenken, auf 2.0 umzusteigen.

Ich kann keine wirklichen Schätzungen darüber abgeben, wann eines dieser Daten zu diesem Zeitpunkt liegt, meistens nur "wann es fertig ist".

Entschuldigung, wenn dies oben bereits behandelt wurde, da ich den gesamten Thread nicht im Detail gelesen habe. Aus einer Verhaltensperspektive; Ich denke, es wäre am besten, wenn wir zwischen "Bebenmodus" oder nur im Vordergrund vorhandener Fenster / Registerkarten auf dem Hotkey wählen könnten.

Ich verwende derzeit eine andere Konsolenplattform, die mir einfach ein Kontrollkästchen in den Einstellungen gibt, um die Anwendung mit Strg + ~ in den Vordergrund zu stellen. Andernfalls werden Größe und Status meines vorhandenen Fensters vollständig berücksichtigt.

Diese Funktion ist sehr, sehr, sehr schön, da wir so oft so viele Fenster haben und das Terminalfenster (da es fast immer nicht im Vollbildmodus angezeigt wird) im Hintergrund verloren gehen kann.

Der wichtigste Teil ist, dass wir das Fenster nicht nur auf die volle Breite skalieren lassen, sondern auch die Titelleiste beibehalten. Die Titelleiste muss ebenfalls unsichtbar sein.

Entschuldigung, wenn dies oben bereits behandelt wurde, da ich den gesamten Thread nicht im Detail gelesen habe. Aus einer Verhaltensperspektive; Ich denke, es wäre am besten, wenn wir zwischen "Bebenmodus" oder nur im Vordergrund vorhandener Fenster / Registerkarten auf dem Hotkey wählen könnten.

Es ging in den versteckten Elementen des Threads verloren, aber @flyingpie hat ein C # -Programm freigegeben, um die hier . Wenn Sie sich Toggler.cs in den Zeilen 51 und 72 ansehen, sollten Sie in der Lage sein, sein Verhalten so zu ändern, dass nur das Fenster in den Vordergrund

Nach einer Weile wechselte ich zum Ahk-Ansatz. Einer der Hauptgründe war, dass ich VS nicht verwenden muss, um es zu erstellen, aber nach einigem Fummeln habe ich wirklich gute Ergebnisse erzielt. Die Basis dafür liegt auch irgendwo in diesem Thread

Beachten Sie, dass ich es stattdessen für Messenger verwende, da WT einige weitere Dinge für mich vermisst

_Eine alternative Lösung, bis es einen nativen Dropdown-Modus für Terminal gibt. 😃_

Nach ein paar Wochen kann ich https://eugeny.github.io/terminus/ empfehlen.

Schönes Terminal mit dem sogenannten "Quake-Modus" (Einstellungen> "Dock the Terminal" auf Top und "Hotkeys"> "Toggl Terminal Window" auf Ctrl-` ).

Es basiert auf Electron, ist also kein "Leichtgewicht", funktioniert aber ziemlich reibungslos mit WSL2.

Ich habe es genossen, es auf den ersten Teil meiner Taskleiste zu setzen und es mit WIN + 1 zu öffnen.

Mein einziges Problem ist, dass ich es nicht immer in admin öffnen kann, was bedeutet, dass die WSL ungewöhnlich gimped ist. SO Rechtsklick, Rechtsklick, als Admin öffnen - WIN + 1 von da an.

@ chazt3n Wenn Sie in admin über die Tastatur öffnen möchten, wäre dies:
WIN + ALT + 1 , um das Kontextmenü für dieses Taskleistenelement zu öffnen.
Menütaste (neben der rechten STRG-Taste) oder UMSCHALT + F10
Wählen Sie mit den Pfeiltasten "Als Administrator öffnen" und geben Sie ein.

@ chazt3n @SamHasler keine Notwendigkeit, es auf die harte
Wenn Sie beim Öffnen einer App die Umschalttaste gedrückt halten, erhalten Sie eine zweite Kopie.
Wenn Sie beim Öffnen einer App die Umschalt- und Strg-Taste gedrückt halten, wird diese erhöht geöffnet.
_Das stimmt, ob über das Startmenü, den Ausführungsdialog oder die Taskleiste, und ob Sie es mit der Tastatur oder durch Klicken auf ..._ öffnen.

Mit anderen Worten, drücken Sie die gesamte Ecke der Tastatur, bevor Sie 1 drücken: Strg + Umschalt + Win + 1 öffnet eine neue Kopie mit erhöhten Rechten.

@ Jaykul Wenn ich Leuten von dem magischen Aufzugsmodifikator erzähle, sagen sie immer "whattttt"

Ich arbeite gerade an einem solchen Projekt und würde gerne mit allen zusammenarbeiten, die daran interessiert sind, mitzuhelfen. Ich sollte bis Ende des Wochenendes eine Alpha-Version haben, die CMD, Powershell und WSL mit Dropdown-Funktionen unterstützt.

Ich bin daran interessiert, Guake / Yakuake zu erweitern und was sie jedoch mit einigen zusätzlichen Ideen wie NOFUNEVER getan haben, die beschrieben wurden, dass mehrere Monitore gleichzeitig verwendet werden können, aber ich bin mir nicht sicher, wie das aussehen würde.

Dies ist noch NICHT zum Testen bereit, aber ich sollte bis Ende des Wochenendes ein Alpha zum Testen bereit haben. Wenn jemand an einer Zusammenarbeit interessiert ist, sende mir bitte eine E-Mail an mwayne. [email protected]. Jemand, der gut darin ist, Apps zu thematisieren und mit Steuerelementen in C # zu arbeiten, wäre eine große Hilfe.

https://github.com/usrcletus/winuake

Bitte sei einfach zu mir, es ist in super rauen Phasen lol.

Ich würde gerne sehen, wie diese Funktionalität funktioniert. Sehr zufrieden mit der Funktionsweise von Windows Terminal (es ist eine der wenigen Windows Terminal-Apps, die beim Geschwindigkeitstest "cmatrix" nicht ersticken und sterben!). Bitte geben Sie es an (wenn Sie können :)). Wenn Sie an diese Funktionalität gewöhnt sind, können Sie nicht mehr ohne sie leben.

Diese Funktion ist sehr zeitsparend.
Ich freue mich sehr auf Windows Terminal 2.0

Sehr viel Wasser, würde die Umgebung zwischen Linux und Windows wirklich viel schöner machen.

Sehr viel Wasser, würde die Umgebung zwischen Linux und Windows wirklich viel schöner machen.

Dafür müssten einige Linux-Terminalemulatoren über alle Conemu-Funktionen verfügen. Windows verfügt bereits über alle Funktionen

Das Team hat eine Roadmap veröffentlicht und dieses Problem ist da drin (obwohl es Priorität 3 auf einer Skala von 0 bis 2 hat)

Entschuldigung, unsere Skala geht tatsächlich auf 3. Whoops! :Lächeln:

Trotzdem scheint es, dass diese Probleme es nicht einmal in die Veröffentlichung in 1 Jahr schaffen. Schade. Ich war sehr daran interessiert, das neue Terminal zu verwenden, aber ohne die Hotkey-Funktion ist es im Vergleich zu Guake unter Linux zu umständlich.

Glücklich machte es zumindest die Liste. :) - WSL2 Docker hat Windows zu einem machbareren täglichen Treiber gemacht. Diese Funktion wird es nur noch weiter vorantreiben, wenn es landet.

Ich bin damit einverstanden, dass dies eine praktische Funktion ist, und ich würde sie wirklich brauchen, wenn ich Windows verwende.
Alle genannten Funktionen sollten jedoch vom Fenstermanager anstelle eines Terminals ausgeführt werden.

Technisch gesehen wäre das optimal, wenn WM dies zulässt. Sie könnten alle Fenster problemlos bearbeiten, aber es ist unwahrscheinlich, dass wir das bald bekommen. Die beste Wette wäre, das zu PowerToys hinzuzufügen

Nicht unbedingt. Es bedeutet nur, dass Microsoft-Mitarbeiter nicht daran arbeiten.
Jeder kann die Funktion als PR einreichen.

Wenn jemand eine sehr einfache AutoHotkey-Lösung wünscht, siehe Kern: https://gist.github.com/atruskie/99a498ac43b91deb91eab4069b6047b9

Es ist nicht die genaue Lösung, aber es erledigt die Arbeit ohne großen Aufwand.

#NoEnv
#SingleInstance force
SendMode Input
DetectHiddenWindows, on
SetWinDelay, 0

#`::
    terminal := WinExist("ahk_exe WindowsTerminal.exe")
    if (terminal) 
    {
        active := WinActive("ahk_id " terminal)
        if (active)
            WinMinimize, ahk_id %active%
        else
            WinActivate, ahk_id %terminal%
    }
    else
        Run, wt.exe
Return

@ Defcon0 Ich habe es einfach als ersten Eintrag in meine

@Jaykul hat auch in admin einen Schritt geöffnet

Wenn jemand eine sehr einfache AutoHotkey-Lösung wünscht, siehe Kern: https://gist.github.com/atruskie/99a498ac43b91deb91eab4069b6047b9

Es ist nicht die genaue Lösung, aber es erledigt die Arbeit ohne großen Aufwand.

#NoEnv
#SingleInstance force
SendMode Input
DetectHiddenWindows, on
SetWinDelay, 0

#`::
    terminal := WinExist("ahk_exe WindowsTerminal.exe")
    if (terminal) 
    {
        active := WinActive("ahk_id " terminal)
        if (active)
            WinMinimize, ahk_id %active%
        else
            WinActivate, ahk_id %terminal%
    }
    else
        Run, wt.exe
Return

Ich habe vor einiger Zeit einen solchen Inhalt geschrieben: https://gist.github.com/sharunkumar/af7ba56e3cce8238ae9c986c619e8d1c

Dieser wechselt zurück zu dem aktiven Fenster, in dem Sie sich befanden, bevor Sie zu WT gewechselt sind

global PreviousActiveWindow

#`::
DetectHiddenWindows, On
if (WinExist("ahk_class CASCADIA_HOSTING_WINDOW_CLASS")) {
    if(WinActive("ahk_class CASCADIA_HOSTING_WINDOW_CLASS")) {
        WinActivate, ahk_id %PreviousActiveWindow%
    } else {
        WinGet, PreviousActiveWindow, , A ; 'A' for currently active window
        WinActivate, ahk_class CASCADIA_HOSTING_WINDOW_CLASS
    }
} else {
    TerminalLink = %localappdata%\Microsoft\WindowsApps\wt.exe
    if FileExist(TerminalLink) {
        WinGet, PreviousActiveWindow, , A ; 'A' for currently active window
        Run, %TerminalLink%
    } else {
        MsgBox, Windows Terminal not installed
    }
}
Return

Ich habe dieses Repository für eine einfache App gefunden, die dem Terminal ein Beben hinzufügt:
https://github.com/flyingpie/windows-terminal-quake

Funktioniert gut genug für meine Anwendungsfälle.

Ich fand, dass dies leicht mit dem Keyboard Manager PowerToy und der oben genannten Windows-Taste + NUM-Verknüpfung erreicht werden kann, um eine Anwendung zu starten, die an Ihre Taskleiste angeheftet ist. Stecken Sie einfach das Windows-Terminal in Ihre Taskleiste (meine befindet sich auf Position 6) und öffnen Sie das PowerToys Keyboard Manager-Tool. Ich habe WIN + ` mit Cmder verwendet und so die Verknüpfung WIN + ` zu WIN + 6 . Wenn ich jetzt WIN + ` mache, wird das Windows-Terminal in den Vordergrund gerückt oder eine neue Instanz gestartet, wenn sie noch nicht ausgeführt wird (was sogar noch besser ist als das, was Cmder nativ macht).

image

Nein, es ist nicht dasselbe
minimieren! = Fenster ausblenden
Durch das Verstecken von Fenstern wird es Ihnen völlig aus dem Weg geräumt

Sie haben Recht, dies ist sicherlich kein Bebenmodus - entschuldigen Sie etwaige Verwirrung. Ich fand dieses Problem nur auf der Suche nach einer Möglichkeit, das Terminal durch eine benutzerdefinierte globale Verknüpfung in den Vordergrund zu rücken, was für mich ein Deal Breaker war, da ich an dieses Verhalten von Cmder gewöhnt bin. Persönlich habe ich kein Bedürfnis nach Quake-Modus verspürt, daher füllte diese Verknüpfungslösung die Lücke und ich dachte, ich würde sie weitergeben.

Dies ist die am besten bewertete Feature-Anfrage und ist seit über einem Jahr offen?

Wie zum Teufel ist das noch nicht implementiert?

Hey, ich poste hier nur ein paar Forschungsnotizen, weil ich sie nicht verlieren möchte.

RegisterHotKey schien in meinen Experimenten nichts zu tun. Vielleicht habe ich es falsch gemacht? Vielleicht isst die XAML-Insel die Nachricht WM_HOTKEY , bevor sie überhaupt bei unserem wndproc ankommt? Es scheint sowieso kein Feedback zu dieser Funktion zu geben, daher bin ich mir nicht sicher, wie hilfreich das in einem "Multi-Instance-Modus" ist.

SendMessage(_window.get(), WM_SETHOTKEY, VK_OEM_3, 0) tatsächlich funktioniert. Es gibt sogar 2 wenn ein anderes Fenster mit diesem Hotkey bereits gesetzt ist, was sehr schön ist. Das wird alles für uns tun - wenn die Taste irgendwo im System gedrückt wird, wird das Terminalfenster aktiviert, auch wenn es minimiert ist. Unsicher über "auf Taskleiste minimiert", aber Fortschritt ist Fortschritt.

Leider ist es nicht trivial, ein zweites Terminalfenster auf das Schließen des ersten Fensters warten zu lassen und dann den Hotkey abholen zu lassen. Und wer bekommt den Hotkey, wenn 3 WT-Fenster geöffnet sind? Im Moment wird also nur dem ersten Fenster der Hotkey zugewiesen, und allen nachfolgenden Fenstern wird der Hotkey nicht zugewiesen, bis das erste Fenster geschlossen wird. Dann würde das nächste erstellte WT-Fenster den Hotkey erhalten. Das ist sicherlich umständlich.

Das Neuladen von Einstellungen würde wahrscheinlich auch dazu führen, dass einem zufälligen WT-Fenster der Hotkey zugewiesen wird.

In diesem Thread gibt es eine Reihe von Fragen, daher werde ich versuchen, sie zusammenzufassen, aber noch keine ganzheitliche Lösung vorschreiben.

  • Drücken Sie irgendwo einen Hotkey, um das einzelne Terminalfenster zu aktivieren, wo immer es war (erfordert den Einzelinstanzmodus sowie globale Hotkey-Unterstützung).
  • Drücken Sie irgendwo einen Hotkey, um das einzelne Terminalfenster auf dem aktuellen Monitor zu aktivieren. Wenn es vorher nicht auf diesem Monitor war, verschieben Sie es dorthin. (erfordert den Einzelinstanzmodus sowie globale Hotkey-Unterstützung)
  • Drücken Sie einen Hotkey, um das "nächste" Terminalfenster zu aktivieren. (Dies erfordert wahrscheinlich einen IPC wie das, woran # 5000 arbeitet)
  • Zum Fach minimieren, drücken Sie einen Hotkey, um das einzelne Terminalfenster / das nächste Terminalfenster zu aktivieren (# 5727).
  • Das Terminal wird nicht in der Alt + Tab-Ansicht angezeigt. Drücken Sie einen Hotkey, um das einzelne Terminalfenster / das nächste Terminalfenster zu aktivieren (ich bin mir nicht sicher, ob dies von den oben genannten abweicht
  • Wenn das Terminal mit dem Hotkey aufgerufen wird, lassen Sie es von oben "hineinschieben" (Unsicher, ob dies mit der oben beschriebenen Methode SendMessage(WM_SETHOTKEY) möglich ist.)

    • Ebenso beim Deaktivieren herausschieben?

Wow, ich bin mir sicher, dass ich einige der in den 95 Kommentaren zu diesem Thread behandelten Szenarien verpasst habe, aber das ist schon ein Durcheinander von Einstellungen.


EDIT 17-Aug-2020: Oh hey, so hakt PowerToys die Tastatur für globale Nachrichten ein. Lassen Sie uns das einfach tun.
https://github.com/microsoft/PowerToys/blob/49b56d9b52bdfedd6ad1404bd0b20e884d2b574b/src/modules/shortcut_guide/shortcut_guide.cpp#L150 -L173

Meiner bescheidenen Meinung nach klingt das Minimieren auf Tablett nach einer anderen Funktion.

Wenn mehrere Instanzen und verschiedene Instanzen auf verschiedenen Anzeigen aufgerufen werden, klingt dies nach einer zweiten Iteration dieser Funktion.

Ich denke, es wäre besser, sich zuerst auf einfachere Szenarien zu konzentrieren, wie eine einzelne Instanz, die per Slide-In auf einem Hotkey und Slide-Out auf demselben Hotkey aufgerufen wird. Wenn es mehrere Instanzen gibt, sollte es wahrscheinlich eine Regel geben, die man dann beschwört

IMO, da WT mehrere Registerkarten hat, ist das beste Szenario eine Instanz und wird dort aufgerufen, wo sich die Maus befindet, wenn mehrere virtuelle Desktops oder Monitore vorhanden sind. Wie Guake.

Hi @ zadjii-msft - Ich habe mir auch einige ähnliche Bereiche angesehen und wollte die Forschung konsolidieren und einige Implementierungsgedanken teilen. Beim Durchlesen der Materialien konnte ich nicht sicher sein, ob mir fehlte, wo das Team nach Möglichkeiten gesucht hat, relevante UAP / UWP-Funktionen zu nutzen. Hoffentlich ist dies noch kein ausgetretener Boden!

Zunächst die Hotkey-Registrierung. Ich habe die WM_HOTKEY-Recherche gefunden, die Sie als Ergänzung zu dieser hier beschriebenen UWP-Hotkey-Registrierungsroute durchgeführt haben . Ist dies ein Ansatz, über den Sie bereits nachgedacht haben? Ich dachte, es könnte ein guter Ansatz sein, da das Explorer-Kontextmenü "Windows Terminal hier starten" bereits implementiert wurde, sodass der AppService / IPC (# 5000) nicht mehr erstellt / getestet werden muss, da wir einfach das erweitern und verbessern können, was bereits vorhanden ist .

Während ich mich damit befasste, stieß ich auf diese möglicherweise relevante SO-Antwort, in der ein Ansatz beschrieben wurde, der mit Windows.UI.Core.CoreDispatcher.AcceleratorKeyActivated verknüpft ist, um Benachrichtigungen zu erhalten, wenn spezielle Tastenkombinationen gedrückt werden, z. B. CTRL+~ . Ist dies etwas, das anwendbar sein könnte?

Apropos Prozessmodell ...

Leider ist es nicht trivial, ein zweites Terminalfenster auf das Schließen des ersten Fensters warten zu lassen und dann den Hotkey abholen zu lassen. Und wer bekommt den Hotkey, wenn 3 WT-Fenster geöffnet sind? Im Moment wird also nur dem ersten Fenster der Hotkey zugewiesen, und allen nachfolgenden Fenstern wird der Hotkey nicht zugewiesen, bis das erste Fenster geschlossen wird. Dann würde das nächste erstellte WT-Fenster den Hotkey erhalten. Das ist sicherlich umständlich.
Das Neuladen von Einstellungen würde wahrscheinlich auch dazu führen, dass einem zufälligen WT-Fenster der Hotkey zugewiesen wird.

Es gibt einen roten Faden bei diesen Herausforderungen, der, sobald er aus der Gleichung herausgerissen wurde, die Dinge viel klarer und einfacher macht. Dieser rote Faden ist die Logik und Komplexität des WT-Instanz-Managements. Ich denke, dass ein Großteil des Restes aus dieser zentralen Herausforderung resultiert. Wie viele Herausforderungen kann diese am besten gelöst werden, indem sie in kleinere Herausforderungen unterteilt wird. Ich denke, dass die Einführung eines Vermittlers es für WT unnötig macht, etwas über das Instanzmanagement zu wissen, geschweige denn die globale Hotkey-Registrierung und -Bindung (z. B. Anwendung ist nicht im Fokus) zu handhaben. Dies spricht mich vom SRP-Standpunkt aus an, und es scheint mir, dass die Arbeit zur Bereitstellung des Explorer-Kontextmenüs "Windows Terminal hier starten" konzeptionell mit diesem übereinstimmt, wenn nicht sogar in der Realität. Das TriggerEvent der UWP-Desktop-Erweiterungen kann von IPC-Diensten verwendet werden, um serialisierte Aktionen (Befehle) an laufende wt-Instanzen zu übergeben oder zu analysieren und als Startargumente für neue wt-Prozesse zu übergeben

Der Prozess, der den globalen Hotkey verarbeitet, ist sowohl eine Taskleistenanwendung als auch ein Einzelinstanzmodusprozess (wahrscheinlich eine WinForms-App), der eine NotifyIcon-Komponente zusammen mit dem Kontextmenü des Taskleistensymbols und den Dispatcher-Komponenten enthält. Dies hat den positiven Nebeneffekt, dass die WT-Codebasis nicht um viele neue und komplizierte Einstellungen + Logik erweitert werden muss, da wt nichts über einen sogenannten "Bebenmodus" wissen muss: smile:. Die Systray-Anwendung wäre die Quelle / das Repository für diese Art von Einstellungen, von denen ich denke, dass sie mit # 7170 absolut funktionieren und davon profitieren werden

  • Drücken Sie irgendwo einen Hotkey, um das einzelne Terminalfenster zu aktivieren, wo immer es war (erfordert den Einzelinstanzmodus sowie globale Hotkey-Unterstützung).

Das Kontextmenü der Systray-App kann ein Flyout enthalten, das eine Liste von WT-Profilen anzeigt, auf die Benutzer klicken können, um das Profil auszuwählen, das beim Aufrufen "im Stil des Bebenmodus" verwendet werden soll. Es wird möglicherweise standardmäßig das erste aufgelistete Profil verwendet, wenn es nicht angegeben ist. Wenn es Pläne / Spezifikationen für die Implementierung der internen Logik zum Abrufen von Profillisten und deren Details gibt, würde das Design von der Möglichkeit profitieren, außerhalb des wt.exe-Prozesses verwendet zu werden (wie in, sollte die notifyicon-Anwendung keine Funktionalität duplizieren müssen um die Liste der Profile und dergleichen zu laden, wenn dies überhaupt möglich ist). Da die Systray-App Instanzen verwaltet, muss wt nicht unbedingt den Einzelinstanzmodus selbst implementieren. Das PowerToys-Repos zeigt die UWP-IPC-Deklarationen im Manifest an und enthält wahrscheinlich nützlichere Nuggets.

Fassen Sie einen bereits info-dichten Beitrag zusammen:

Die meisten Bedenken mit Aufzählungszeichen verschwinden oder werden durch diesen Ansatz stark gemildert, wenn Sie darüber nachdenken. Wenn ich einen Schritt zurücktrete und das Ganze betrachte, habe ich das Gefühl, dass diese Funktion der Realität näher kommt, als wir dachten!

  • Drücken Sie irgendwo einen Hotkey, um das einzelne Terminalfenster auf dem aktuellen Monitor zu aktivieren. Wenn es vorher nicht auf diesem Monitor war, verschieben Sie es dorthin. (erfordert den Einzelinstanzmodus sowie globale Hotkey-Unterstützung)
  • Drücken Sie einen Hotkey, um das "nächste" Terminalfenster zu aktivieren. (Dies erfordert wahrscheinlich einen IPC wie das, woran # 5000 arbeitet)
  • Zum Fach minimieren, drücken Sie einen Hotkey, um das einzelne Terminalfenster / das nächste Terminalfenster zu aktivieren (# 5727).
  • Das Terminal wird nicht in der Alt + Tab-Ansicht angezeigt. Drücken Sie einen Hotkey, um das einzelne Terminalfenster / das nächste Terminalfenster zu aktivieren (ich bin mir nicht sicher, ob dies von den oben genannten abweicht
  • Wenn das Terminal mit dem Hotkey aufgerufen wird, lassen Sie es von oben "einschieben" (Unsicher, ob dies mit der oben beschriebenen Methode SendMessage(WM_SETHOTKEY) möglich ist.)

    • Ebenso beim Deaktivieren herausschieben?

Ressourcen für NotifyIcon, WinForms und WPF:
http://www.abhisheksur.com/2012/08/notifyicon-with-wpf-applications.html
https://www.codeproject.com/articles/36788/wpf-xaml-notifyicon-and-taskbar-system-tray-popup
https://mcguirev10.com/2019/01/27/system-tray-icons-wpf-net-core-preview.html

HTH!

BEARBEITEN:
Wenn Sie die Entwürfe der Prozessmodellspezifikationen durchlesen, haben Sie anscheinend auch den separaten Prozessansatz identifiziert. Ich nehme an, dass der Teil des "Monarchen" teilweise oder vielleicht (?) Ganz vom IPC / Appservice gespielt werden könnte

Ich habe ein schnelles und schmutziges Dienstprogramm erstellt, das den globalen Hotkey registriert, um das letzte Windows-Terminalfenster umzuschalten. Ich denke, es wäre eine gute Lösung um die offizielle Implementierung.

https://github.com/Inndy/TerminalSummoner

Ich habe eine Autohotkey-Lösung von https://github.com/ehpc/quake-windows-bash geändert, um die Benutzererfahrung zu verbessern. Ich habe die Lösung von @Inndy nicht

Mein Skript befindet sich hier: https://github.com/rengler33/dotfiles/blob/master/C/Users/Rub/wt-quake-like.ahk

Verwenden Sie den Hotkey Strg + `

  1. Wenn das Windows-Terminal nicht gestartet wird, wird es gestartet *
  2. Wenn es gestartet, aber minimiert ist, wird es wiederhergestellt
  3. Wenn es aktiv ist, wird es minimiert
  4. Andernfalls (dh es ist wiederhergestellt, aber unscharf) bringen Sie es in den Fokus

* Hinweis: Dieses Skript verwendet auch eine Windows-Verknüpfung, die ich gerne verwende und die beim Öffnen einige Optionen hinzufügt
https://github.com/rengler33/dotfiles/blob/master/C/Users/Rub/wt.exe.lnk
Könnte aber ersetzt werden, um einfach BashHandle anstelle von Shortcut zu starten

Ich habe eine Autohotkey-Lösung von https://github.com/ehpc/quake-windows-bash geändert

Dank dafür.

Ich habe mich von @ rengler33s Skript inspirieren lassen und einige Änderungen an meinem eigenen 3-Bildschirm-Setup vorgenommen:
https://gist.github.com/oryon-dominik/562970f77f2ad4d9bd57bea58ddc8ef5
Das Skript erzeugt ein Windows-Terminal auf dem aktiven Bildschirm. (STRG + CIRCUMFLEX)
Schlechte Animationen und ein bisschen Flackern, daher ist es eher eine Problemumgehung.

Ich freue mich sehr darauf, diese Funktion offiziell zu implementieren.

Ich wollte auch von ConEmu zu Windows Terminal wechseln, aber mir fehlte auch Quake Style. Wenn jemand interessiert ist - Ich habe eine kleine App erstellt, die Windows-Terminalfenster speichert und abruft (Sie können andere Apps hinzufügen, um diesen Quake-Stil zu erhalten, wenn Sie möchten).

Überprüfen Sie mein Repo und alle Funktionen hier: https://github.com/rzym-on/termial-tray

Ich hoffe wirklich, dass diese Funktion irgendwann standardmäßig verfügbar sein wird. Fühlen Sie sich vorerst frei, meine kleine Lösung zu verwenden.

Ich wollte auch von ConEmu zu Windows Terminal wechseln, aber mir fehlte auch Quake Style. Wenn jemand interessiert ist - Ich habe eine kleine App erstellt, die Windows-Terminalfenster speichert und abruft (Sie können andere Apps hinzufügen, um diesen Quake-Stil zu erhalten, wenn Sie möchten).

Überprüfen Sie mein Repo und alle Funktionen hier: https://github.com/rzym-on/termial-tray

Ich hoffe wirklich, dass diese Funktion irgendwann standardmäßig verfügbar sein wird. Fühlen Sie sich vorerst frei, meine kleine Lösung zu verwenden.

Danke dafür. Gibt es eine Möglichkeit, die Animationsgeschwindigkeit des angezeigten Windows Terminal-Fensters anzupassen, genauso wie ConEmu?

@mkanet Ich möchte die Diskussion über das Projekt eines anderen auf dessen Repo umleiten und diesen Thread auf das aktuelle Problem konzentrieren. Vielen Dank!

Eine andere Idee könnte ein Parameter sein, um wt.exe wie folgt zu befehlen: -T, --toggle
Wenn keine Instanz des Terminals vorhanden ist, öffnen Sie eine neue
Sonst (Wenn aktiv, minimieren, sonst wiederherstellen / aktivieren)

Es ist wie die AutoHotKey-Logik oben, aber es befindet sich in wt.exe und ist zugänglich für .lnk-Verknüpfungen / globale Tastenzuordnungen / Windows-Taskleiste Win + Number usw.

Es wäre fantastisch, wenn Sie dafür keine weitere Drittanbieter-App benötigen würden. Und ich bin auch süchtig nach Strg + `

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen