Terminal: Ändern Sie das Windows-Betriebssystem, um das Standardterminal zu unterstützen [defterm]

Erstellt am 7. Mai 2019  ·  33Kommentare  ·  Quelle: microsoft/terminal

Dieses Problem verfolgt die Arbeit, die erforderlich ist, um die Unterstützung für „Standardterminals“ zu Windows hinzuzufügen.

Dies ist nicht terminalspezifisch, aber Windows Terminal wird davon profitieren.


ursprünglicher Inhalt

Dieser Bug-Tracker wird vom Entwicklungsteam der Windows-Konsole und anderen technischen Typen überwacht. Wir lieben Details!

Wenn Sie eine Funktionsanfrage haben, posten Sie diese bitte an die UserVoice .

Wichtig: Hängen Sie beim Melden von BSODs oder Sicherheitsproblemen KEINE Speicherauszüge, Protokolle oder Ablaufverfolgungen an Github-Probleme an . Senden Sie stattdessen Dumps/Traces an [email protected] und verweisen Sie auf dieses GitHub-Problem.

Bitte verwenden Sie dieses Formular und beschreiben Sie Ihr Problem kurz, aber präzise und so detailliert wie möglich

  • Ihre Windows-Build-Nummer: Microsoft Windows [Version 10.0.18885.1001]

  • Was Sie tun und was passiert: Wenn ich in einer Eingabeaufforderungssitzung im Windows-Terminal start eingebe, wird das neue Eingabeaufforderungsfenster in einem neuen Conhost-Fenster geöffnet.

  • Was ist falsch / was sollte stattdessen passieren: Die neue Eingabeaufforderung sollte in einem neuen Tab im vorhandenen Terminalfenster geöffnet werden.

Area-Server Issue-Feature Product-Conhost Work-Item

Hilfreichster Kommentar

Dies ist beabsichtigt.

Wir haben Pläne, das Festlegen einer anderen Anwendung als „Standardterminal“ unter Windows zu unterstützen, aber diese Pläne sind noch sehr grob und in Arbeit.

Alle 33 Kommentare

Dies ist beabsichtigt.

Wir haben Pläne, das Festlegen einer anderen Anwendung als „Standardterminal“ unter Windows zu unterstützen, aber diese Pläne sind noch sehr grob und in Arbeit.

Dies erfordert eine Betriebssystemfunktion. Ich aktualisiere den Titel, um die Standardänderung des Terminal-Betriebssystems darzustellen.

Ich benenne dies um, um das Schlüsselwort [defterm] am Ende hinzuzufügen, damit wir es bei der Suche leicht finden können. Die Wörter „default“ und, nun ja, „terminal“ tauchen in diesem Repository erschreckend oft auf. :Lächeln:

Ich bin gespannt, wie ConEmu das macht. Nach der Installation öffnet sich jedes neue cmd/ps/bash-Fenster in ConEmu als neuer Tab

Ich bin gespannt, wie ConEmu das macht. Nach der Installation öffnet sich jedes neue cmd/ps/bash-Fenster in ConEmu als neuer Tab

Auch hier, nicht sicher wie, aber hoffentlich wird Windows aktualisiert, um das Terminal vollständig zu unterstützen.

Ich bin gespannt, wie ConEmu das macht. Nach der Installation öffnet sich jedes neue cmd/ps/bash-Fenster in ConEmu als neuer Tab

ConEmu (missbraucht) möglicherweise die Fähigkeit, einen benutzerdefinierten Debugger für einen Prozess festzulegen. Ich glaube, Process Explorer tut dasselbe, um den Task-Manager zu "ersetzen".

Process Hacker unterstützt auch das „Ersetzen“ des Task-Managers .

Ich bin gespannt, wie ConEmu das macht. Nach der Installation öffnet sich jedes neue cmd/ps/bash-Fenster in ConEmu als neuer Tab

ConEmu (missbraucht) möglicherweise die Fähigkeit, einen benutzerdefinierten Debugger für einen Prozess festzulegen. Ich glaube, Process Explorer tut dasselbe, um den Task-Manager zu "ersetzen".

AFAIR, es ändert nur einen Registrierungsschlüssel.

Was auch immer, ConEmu schafft dies, also sollte MST das auch tun.

ConEmu injiziert Hooks (DLLs) in bestimmte Prozesse (z. B. explorer.exe oder devenv.exe), um die Erstellung neuer Konsolenfenster unter diesen Prozessen abzufangen. Sie können mehr darüber in den offiziellen Dokumenten lesen: https://conemu.github.io/en/DefaultTerminal.html

Wie in diesem Link erwähnt, ist diese Methode ein reiner _Hack_. Es ist definitiv keine praktikable Lösung für Windows Terminal.

Aber es funktioniert. Der Zugriff auf das gesamte Subsystem vereinfacht eine Sache.

Der Unterschied besteht darin, dass Windows Terminal ein offizielles Microsoft -Produkt ist, daher wird hier erwartet, dass das Standardterminal nicht mit einem uscalable ugly hack geändert wird, sondern von Windows nativ unterstützt wird.

Ich weiß nicht, ob dies der richtige Ort ist, um dies zu erwähnen, aber ich denke, es könnte relevant sein.

Aus irgendeinem Grund haben cmd und Powershell derzeit anscheinend ungewöhnlich große Schriftgrößen und Fenstergrößen, je nachdem, wie und von wo aus sie gestartet werden. Vom Startmenü, über den Explorer, über Win + R usw.

Wenn das neue Terminal zum Standard wird, wird es:

  1. Haben Sie eine konsistente Schriftgröße und Fenstergröße?
  2. Seien Sie auch das Standardterminal, wenn Sie "Poweshell-Fenster hier öffnen" usw. ausführen?

Hier sind einige Beispiele, um zu demonstrieren, was ich meine.

In der Reihenfolge, gestartet über eine Taskleistenverknüpfung, gestartet über „Powershell-Fenster hier öffnen“, gestartet durch Eingabe von „powershell“ in die Adresseingabe des Datei-Explorers (beachten Sie, dass die Standardeingabeaufforderung ebenfalls anders zu sein scheint).

image

Es wäre gut, wenn das Terminal all dies vereint. Es ist ziemlich frustrierend.

@lloydjatkinson danke! Es ist hier nur geringfügig angemessen, aber es genügt zu sagen, dass:

  • Die Konsole hat drei (!) (und eine Hälfte) verschiedene Orte, an denen sie Einstellungen liest
  • Terminal hat nur ein (und ein halbes)

Um Ihre spezifischen nummerierten Punkte zu beantworten:

  1. Ja, absolut, denn es gibt nur eine Quelle der Wahrheit für Einstellungen.
  2. Ja, das verfolgt diese Funktion. Umleitung zum Terminal jedes Mal, wenn ein Konsolenfenster zur interaktiven Verwendung gestartet wird.

Die Standard-Eingabeaufforderung sieht einfach so aus, als würde sie darstellen, dass Sie sich in einem anderen Verzeichnis befinden. Wenn Sie powershell aus der Adressleiste im Explorer starten, geschieht dies in dem Verzeichnis, das Sie gerade anzeigen.

Liebes Team, ist das noch sehr im Rückstand? Jetzt mit der Veröffentlichung von Powershell7 steigt die Nachfrage nach einem einfacheren Zugriff auf ein modernes Terminal, das in der Lage ist, die richtige Powershell zu handhaben.

1421 öffnet derzeit nur PS5.1 und es gibt keine offizielle Option, dies zu ändern

Ich habe mit Steve Lee auf Twitter gesprochen und natürlich wäre es von Vorteil, die Verwendung der beiden Produkte Terminal und Powershell auf den neuesten Versionen / Insider-Versionen von Windows 10-Clients zu fördern.

@Karl-WE Wir bringen v1 aus der Tür, bevor wir uns mit den Änderungen befassen, die an Windows erforderlich sind, um die Registrierung, Aufzählung und Ausführung alternativer Konsolenhosts (oder der Terminals, die sie verwenden würden) zu unterstützen.

Da dies wahrscheinlich eine gewisse API-Unterstützung erfordern würde, kann dies wahrscheinlich nur im Rahmen einer großen Windows-Version durchgeführt werden.

Danke Dustin für deine hervorragende Arbeit hier. Ich hoffe, dass diese Bemühungen zwischen den Teams mit den Insider- und Powershell-Teams kommuniziert werden können. Viel Glück mit den Zeitplänen für die Veröffentlichung von 1.0. Vielleicht können wir dies für 20H2 erreichen, was allen Beteiligten mindestens 9 Monate Zeit lässt.

Ich hoffe, dass dies eher früher als später hinzugefügt wird. Gibt es funktionierende inoffizielle Problemumgehungen?

Seien Sie versichert, dass dieses Problem Hunderte von Community-Kommentaren gehabt hätte, die sich alle möglichen verrückten Problemumgehungen ausgedacht hätten, wenn es welche gäbe ;)

Ich habe eine Idee für eine grundlegende Fledermausdatei:
Führen Sie Ihre bat-Datei im Hintergrund aus und schließen Sie dann das Standard-cmd-Fenster

START /B  wt cmd /c yourfile.bat
exit

Seien Sie versichert, dass dieses Problem Hunderte von Community-Kommentaren gehabt hätte, die sich alle möglichen verrückten Problemumgehungen ausgedacht hätten, wenn es welche gäbe ;)

Ich habe cmd (und jetzt powershell ) seit Jahrzehnten von Win+R aus gestartet, aber ich trainiere mich mühsam um, um stattdessen wt einzugeben. Ich schätze, man kann einem alten Hund neue Tricks beibringen. Langsam. 😁

Dies funktioniert dank des App-Ausführungsalias wt.exe in %userprofile%\AppDataLocalMicrosoftWindowsApps

Hallo Team, Benutzer, da wt jetzt sehr gute Optionen und einen voreingestellten Einstellungs-json und einen vom Benutzer definierbaren Teil hat, der auch die Einstellung enthält, welche Konsole die Standardkonsole ist, die beim Start von wt geöffnet wird - ich dachte, das würde ausreichen holen Sie sich alle groben Pläne (https://github.com/microsoft/terminal/issues/492#issuecomment-490092382), um zumindest den folgenden Versuch aufzunehmen:

Integration von Win+X.

Wie ich denke, wie Sie dies erreichen können:

  • Wenden Sie sich für Einstellungen an Jennifer Gentlemen und das Team
  • Fügen Sie ein neues Einstellungselement hinzu, das die folgende Einstellung ersetzen oder aktualisieren kann, um wt anstelle von Powershell oder cmd zu starten
  • Aktualisieren Sie die ADMX-Datei entsprechend, damit sie auch über GPO festgelegt werden kann
  • Vorbehalt: wt muss vom Benutzer installiert werden

  • Der Benutzer kann die Standardkonsolenoption verwenden, um anzugeben, welche von dort standardmäßig geöffnet werden sollen

wie
"profiles": [ "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}" { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell 7", "source": "Windows.Terminal.PowershellCore", "useAcrylic": true }, ],

Einstellungen > Personalisierung > Taskleiste

"Win+X cmd durch Powershell ersetzen"

replace-command-prompt

Vielleicht ist es eine naive Sichtweise eines Benutzers, aber ich kann mir nicht vorstellen, dass es seit Jahren möglich ist, cmd an dieser Stelle auf Powershell umzustellen, ohne den kleinen Schritt nach vorne zu machen, diese beiden Elemente wieder durch wt zu ersetzen. Und ja, es wäre sinnvoll, wt mit und ohne Administratorrechte zu haben, standardmäßig ist es auch nicht erhöht wie jede andere Konsole (mit wenigen Ausnahmen).

show-windows-powershell

Können Sie bitte erklären, warum das so viel Arbeit ist? Es wäre ein Anfang.

Die Auswahl einer Standard-Terminalanwendung in Einstellungen> Apps und Funktionen> Standard-App zu haben - ich kann verstehen, dass dies mehr Arbeit unter der Haube erfordert. Ich habe mit NirSoft ShellExView überprüft, dass dies im Moment nicht so einfach zu erreichen ist.

Das Ändern der oben erwähnten Win + X-Einstellung ist jedoch bereits vorhanden.
Bitte beachten Sie, dass es sogar ein Drittanbieter-Tool gibt, das das Win+X-Menü nach Belieben ändern kann, aber die Download-Quelle würde ich heutzutage eher als nicht vertrauenswürdig einstufen.

Sie finden das Tool hier, aber die Verwendung erfolgt auf eigene Gefahr
Win+X Menü-Editor
Erstellt von Sergey "Happy Bulldozer" Tkachenko
http://winaero.com
Diese Software verwendet den Quellcode des hashlnk-Tools
hashlnk wurde von Rafael Rivera erstellt
http://www.withinwindows.com/

Ich hoffe, ich darf diesen Verweis posten, andernfalls bitte entfernen. Wenn ich die App als ZIP- oder Onedrive-Datei hochladen darf, lassen Sie es mich bitte wissen. Es gibt keinen Hinweis darauf, dass es nicht erlaubt ist, es an anderer Stelle zu spiegeln.

ps Ich habe selbst versucht, wt zu einer neuen Gruppe im Win+X-Menü hinzuzufügen, aber aus irgendeinem unklaren Grund schlägt es fehl. Berechtigungen scheinen ungefähr richtig zu sein. Ich kann jede Datei als Link hinzufügen, außer Dinge aus
%localappdata%MicrosoftWindowsApps (auch mit vollständigem Pfad).

wt

Ich bin neugierig, was dies konstruktionsbedingt verhindert. Es scheint, weil die Apps Dateien mit einer Größe von 0 KB und eine Art Symlink enthalten? Im Task-Manager können Sie auch nicht den Speicherort eines wt-Prozesses öffnen. Ich vermute, dass dies die Art der App-Virtualisierung von MS-Apps ist. Gilt auch für andere wie Edge Chromium, Notepads etc.

Angesichts dieser Informationen und Umstände könnte ich jetzt verstehen, warum es so schwierig ist, diese Änderung zu erreichen. Sie können nicht über den Explorer darauf zugreifen, aber Sie können es über Win+R / Suche starten. Wie seltsam.

Sie können wt.exe nicht direkt hinzufügen, da es sich nicht um eine "echte Datei" handelt, aber wenn Sie eine Verknüpfung zu wt.exe erstellen, kann das Tool sie hinzufügen und es funktioniert einwandfrei.

Sie können hier mehr darüber lesen: https://www.hanselman.com/blog/TotallyUnsupportedHacksAddWindowsTerminalToTheWinXShortcutMenu.aspx

Wenn ich die Funktion von WinX richtig verstehe, erstellt Windows nicht nur Links nach Pfad, wahrscheinlich um Spoofing zu verhindern, sondern auch um einen Hash der Datei zu generieren. Da alle "Apps" eine Dateigröße von null haben, kann das "kann nicht geöffnet werden" darauf zurückzuführen sein, dass der Hash nicht generiert werden kann, wahrscheinlich nicht, weil er nicht darauf zugreifen / ihn lesen kann.

Danke für den Hinweis thlac @shanselman , das macht es noch schwieriger zu verstehen, warum es keinen offiziellen Weg gibt. Wenn Ofc eine Verknüpfung zu einer Datei hat, besteht die Gefahr, dass sie manipuliert wird, was der ursprünglichen Designidee zu widersprechen scheint, dass WinX nicht leicht manipuliert werden kann.
Tatsächlich besteht das Risiko, dass PUA/Malware Ziele in diesem Menü ändern könnte.

@Karl-WE Wollte nur sicherstellen, dass hier alle auf der gleichen Seite sind. Windows Terminal ist eine Terminal-/Konsolenanwendung – keine Shell . Cmd und PowerShell sind Shells . (Siehe auch: https://www.hanselman.com/blog/WhatsTheDifferenceBetweenAConsoleATerminalAndAShell.aspx )

Daher ist die Win + X-Einstellung (IMHO) für dieses Problem irrelevant (da sie nur die Shell bestimmt, nicht die Terminalanwendung).

Ich verstehe deine Definition. Am Ende hilft WinX angesichts der vielen gleichen Anfragen bei der Erstellung von Windows Terminal

  • stärker hervortreten, was nur zu seinem Erfolg und seiner Verbreitung beitragen und letztendlich die aufgewendete Arbeit würdigen kann.

  • Helfen Sie Benutzern, ihre bevorzugte Standard-Shell zugänglicher zu machen.
    Womöglich sind cmd oder PoSh 5.1 im Moment nicht so konfigurierbar.

Wenn ich es so sehe, stimme ich Ihrem festgestellten Unterschied immer noch zu, aber letztendlich besteht das Ziel darin, den Zugriff auf eine Shell zu erleichtern und gleichzeitig die besseren Funktionen von Terminal im Vergleich zur Standardkonsole zu haben.

@nu8 Sie werden wahrscheinlich zustimmen, dass „das Ersetzen Ihres System-Conhosts durch die Version von Conhost, die aus diesem Repository erstellt wurde“ und „Windows automatisch eine Instanz von Terminal starten zu lassen“ sehr unterschiedliche Dinge sind;)

Dieses Repository hostet sowohl den Konsolenhost _und_ das Terminal. Das eine baut auf dem anderen auf, aber sie sind sicherlich nicht gleich.

@nu8 Angesichts der enormen Menge an Dingen, die @DHowett überprüfen und sichten muss, gibt es manchmal vielleicht Unterschiede. Wie Sie zitiert haben, ist klar, dass 492 in der Zeitleiste vor 1817 kam und sich die Dinge ändern können.
Es wäre ärgerlicher, wenn er es anders herum posten würde. Aber wie auch immer:

Die gute Nachricht ist: Es ist im Zeitplan, nicht mehr im Rückstand

sehen

1 | Standardterminal | Wenn eine Befehlszeilenanwendung gestartet wird, sollte sie im Windows-Terminal (falls installiert) oder Ihrem bevorzugten Terminal geöffnet werden
Ausgabe: Nr. 492
Spezifikation: #2080

Quelle: https://github.com/microsoft/terminal/blob/master/doc/terminal-v2-roadmap.md

@DHowett danke für deine Arbeit hier, ich habe eine kleine Frage:
Glaubst du, wir können damit rechnen, dass dies im Windows-Update 20h2 oder 21h1 eingeführt wird? Sind Ihnen interne Arbeiten (auf OS-Ebene) bekannt, die in diese Richtung gehen?
Ich verstehe, dass sich Pläne ändern können, aber ich bin trotzdem neugierig :)

Wir sind das Team, das die Arbeit auf Betriebssystemebene erledigen müsste, um diese Funktion zu aktivieren, also wäre ich sehr überrascht, wenn wir _nicht_ wissen würden, dass daran gearbeitet wird, dies zu aktivieren.

Wir kommen gerade erst über die Version 1.0 des Terminals hinaus, also haben wir noch nicht wirklich damit angefangen. Ich würde sagen, es ist unwahrscheinlich, dass es in 20H2 oder 21H1 landet, wenn man bedenkt, dass wir das Feature wahrscheinlich schon fertig (oder zumindest als Prototyp) haben müssten, um es in eine dieser Versionen zu bekommen.

Ich frage mich, was zuerst kommen wird - Defterm-Einstellung oder volle GPU-Beschleunigungsunterstützung in WSL2, an diesem Punkt könnten wir stattdessen einfach native Linux-Terminals verwenden, zumindest für die Entwicklung, die virtualisiert werden kann

Da diese Ausgabe so viele Abonnenten hat, werde ich sie sperren.
Wenn Sie etwas beizutragen haben, das sich auf die technische Richtung für diese Funktion auswirkt, senden Sie mir bitte eine E-Mail an die Adresse in meinem GitHub-Profil.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

mrmlnc picture mrmlnc  ·  3Kommentare

warpdesign picture warpdesign  ·  3Kommentare

NickITGuy picture NickITGuy  ·  3Kommentare

ghvanderweg picture ghvanderweg  ·  3Kommentare

dev-logan picture dev-logan  ·  3Kommentare