พื้นที่เก็บข้อมูลนี้มีซอร์สโค้ดสำหรับ:
เทอร์มินัลวินโดวส์
ดูตัวอย่างเทอร์มินัล Windows
โฮสต์คอนโซล Windows ( conhost.exe
)
ส่วนประกอบที่ใช้ร่วมกันระหว่างทั้งสองโครงการ
ColorTool
โปรเจ็กต์ตัวอย่างที่แสดงวิธีใช้งาน Windows Console API
ที่เก็บข้อมูลที่เกี่ยวข้อง ได้แก่ :
เอกสารประกอบ Windows Terminal (Repo: มีส่วนร่วมในเอกสาร)
เอกสารประกอบคอนโซล API
แบบอักษรรหัส Cascadia
บันทึก
Windows Terminal ต้องใช้ Windows 10 2004 (build 19041) หรือใหม่กว่า
ติดตั้ง Windows Terminal จาก Microsoft Store สิ่งนี้ช่วยให้คุณใช้เวอร์ชันล่าสุดได้ตลอดเวลาเมื่อเราออกบิลด์ใหม่พร้อมการอัปเกรดอัตโนมัติ
นี่เป็นวิธีที่เราต้องการ
สำหรับผู้ใช้ที่ไม่สามารถติดตั้ง Windows Terminal จาก Microsoft Store ได้ สามารถดาวน์โหลดบิลด์ที่เผยแพร่ได้ด้วยตนเองจากหน้าการเผยแพร่ของที่เก็บนี้
ดาวน์โหลดไฟล์ Microsoft.WindowsTerminal_
จากส่วน สินทรัพย์ หากต้องการติดตั้งแอป คุณสามารถดับเบิลคลิกที่ไฟล์ .msixbundle
จากนั้นตัวติดตั้งแอปควรจะทำงานโดยอัตโนมัติ หากล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม คุณสามารถลองใช้คำสั่งต่อไปนี้ที่พร้อมท์ PowerShell:
# หมายเหตุ: หากคุณใช้ PowerShell 7+ โปรดเรียกใช้# Import-Module Appx -UseWindowsPowerShell# ก่อนที่จะใช้ Add-AppxPackage.Add-AppxPackage Microsoft.WindowsTerminal_.msixbundle
บันทึก
หากคุณติดตั้ง Terminal ด้วยตนเอง:
คุณอาจต้องติดตั้ง VC++ v14 Desktop Framework Package สิ่งนี้ควรจำเป็นสำหรับ Windows 10 รุ่นเก่าเท่านั้น และเฉพาะในกรณีที่คุณได้รับข้อผิดพลาดเกี่ยวกับแพ็คเกจเฟรมเวิร์กที่ขาดหายไป
Terminal จะไม่อัปเดตอัตโนมัติเมื่อมีการเปิดตัวบิวด์ใหม่ ดังนั้นคุณจะต้องติดตั้ง Terminal รุ่นล่าสุดเป็นประจำเพื่อรับการแก้ไขและการปรับปรุงล่าสุดทั้งหมด!
ผู้ใช้ winget สามารถดาวน์โหลดและติดตั้ง Terminal รุ่นล่าสุดได้โดยติดตั้งแพ็คเกจ Microsoft.WindowsTerminal
:
ติดตั้ง winget --id Microsoft.WindowsTerminal -e
บันทึก
การสนับสนุนการพึ่งพามีอยู่ใน WinGet เวอร์ชัน 1.6.2631 หรือใหม่กว่า หากต้องการติดตั้ง Terminal รุ่นเสถียร 1.18 หรือใหม่กว่า โปรดตรวจสอบให้แน่ใจว่าคุณมีไคลเอ็นต์ WinGet เวอร์ชันอัปเดตแล้ว
ผู้ใช้ Chocolatey สามารถดาวน์โหลดและติดตั้ง Terminal รุ่นล่าสุดได้โดยการติดตั้งแพ็คเกจ microsoft-windows-terminal
:
choco ติดตั้ง microsoft-windows-terminal
หากต้องการอัพเกรด Windows Terminal โดยใช้ Chocolatey ให้รันสิ่งต่อไปนี้:
choco อัปเกรด microsoft-windows-terminal
หากคุณมีปัญหาใด ๆ เมื่อติดตั้ง/อัปเกรดแพ็คเกจ โปรดไปที่หน้าแพ็คเกจ Windows Terminal และปฏิบัติตามกระบวนการ Chocolatey Triage
ผู้ใช้ Scoop สามารถดาวน์โหลดและติดตั้ง Terminal รุ่นล่าสุดได้โดยการติดตั้งแพ็คเกจ windows-terminal
:
ถังตักเพิ่มความพิเศษ สกู๊ปติดตั้ง windows-terminal
หากต้องการอัพเดต Windows Terminal โดยใช้ Scoop ให้รันสิ่งต่อไปนี้:
สกู๊ปอัพเดต windows-terminal
หากคุณมีปัญหาใดๆ เมื่อติดตั้ง/อัปเดตแพ็คเกจ โปรดค้นหาหรือรายงานปัญหาเดียวกันนี้ในหน้าปัญหาของพื้นที่เก็บข้อมูล Scoop Extras
Windows Terminal Canary เป็น Windows Terminal ที่สร้างขึ้นทุกคืน โครงสร้างนี้มีโค้ดล่าสุดจากสาขา main
ของเรา ทำให้คุณมีโอกาสลองใช้คุณสมบัติต่างๆ ก่อนที่จะเข้าสู่ Windows Terminal Preview
Windows Terminal Canary เป็นข้อเสนอที่มีความเสถียรน้อยที่สุดของเรา ดังนั้นคุณอาจค้นพบข้อบกพร่องก่อนที่เราจะมีโอกาสพบข้อบกพร่องเหล่านั้น
Windows Terminal Canary มีให้บริการในรูปแบบการแจกจ่าย App Installer และการแจกจ่าย ZIP แบบพกพา
การแจกจ่าย App Installer รองรับการอัปเดตอัตโนมัติ เนื่องจากข้อจำกัดของแพลตฟอร์ม ตัวติดตั้งนี้จึงใช้งานได้บน Windows 11 เท่านั้น
การกระจาย ZIP แบบพกพาเป็นแอปพลิเคชั่นแบบพกพา จะไม่อัปเดตโดยอัตโนมัติและจะไม่ตรวจสอบการอัปเดตโดยอัตโนมัติ การแจกจ่าย ZIP แบบพกพานี้ใช้งานได้บน Windows 10 (19041+) และ Windows 11
การกระจาย | สถาปัตยกรรม | ลิงค์ |
---|---|---|
ตัวติดตั้งแอป | x64, อาร์ม64, x86 | ดาวน์โหลด |
ซิปพกพา | x64 | ดาวน์โหลด |
ซิปพกพา | ARM64 | ดาวน์โหลด |
ซิปพกพา | x86 | ดาวน์โหลด |
เรียนรู้เพิ่มเติมเกี่ยวกับประเภทของการแจกจ่าย Windows Terminal
แผนสำหรับ Windows Terminal ได้รับการอธิบายไว้ที่นี่ และจะได้รับการอัปเดตเมื่อโครงการดำเนินไป
โปรดสละเวลาสักครู่เพื่อตรวจสอบภาพรวมด้านล่างก่อนที่จะเจาะลึกโค้ด:
Windows Terminal เป็นแอปพลิเคชั่นเทอร์มินัลใหม่ ทันสมัย เปี่ยมด้วยคุณสมบัติ และมีประสิทธิภาพสำหรับผู้ใช้บรรทัดคำสั่ง ประกอบด้วยคุณลักษณะมากมายที่ชุมชนบรรทัดคำสั่งของ Windows ร้องขอบ่อยที่สุด รวมถึงการรองรับแท็บ, Rich Text, โลกาภิวัตน์, การกำหนดค่า, ธีมและสไตล์ และอื่นๆ
Terminal จะต้องบรรลุเป้าหมายและมาตรการของเราเพื่อให้แน่ใจว่าจะยังคงรวดเร็วและมีประสิทธิภาพ และไม่ใช้หน่วยความจำหรือพลังงานจำนวนมาก
โฮสต์คอนโซล Windows conhost.exe
คือประสบการณ์ผู้ใช้บรรทัดคำสั่งดั้งเดิมของ Windows นอกจากนี้ยังโฮสต์โครงสร้างพื้นฐานบรรทัดคำสั่งของ Windows และเซิร์ฟเวอร์ Windows Console API, เอ็นจิ้นอินพุต, เอ็นจิ้นการเรนเดอร์, การตั้งค่าผู้ใช้ ฯลฯ รหัสโฮสต์ของคอนโซลในพื้นที่เก็บข้อมูลนี้เป็นแหล่งที่มาจริงที่ conhost.exe
ใน Windows สร้างขึ้นเอง
นับตั้งแต่เข้าเป็นเจ้าของบรรทัดคำสั่งของ Windows ในปี 2014 ทีมงานได้เพิ่มคุณสมบัติใหม่หลายประการให้กับคอนโซล รวมถึงความโปร่งใสของพื้นหลัง การเลือกตามบรรทัด การรองรับลำดับ ANSI / Virtual Terminal สี 24 บิต Pseudoconsole ("ConPTY" ) และอื่นๆ
อย่างไรก็ตาม เนื่องจากเป้าหมายหลักของ Windows Console คือการรักษาความเข้ากันได้แบบย้อนหลัง เราจึงไม่สามารถเพิ่มคุณสมบัติหลายอย่างที่ชุมชน (และทีมงาน) ต้องการในช่วงหลายปีที่ผ่านมา รวมถึงแท็บ ข้อความ Unicode และอิโมจิ
ข้อจำกัดเหล่านี้ทำให้เราสร้าง Windows Terminal ใหม่
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับวิวัฒนาการของบรรทัดคำสั่งโดยทั่วไป และบรรทัดคำสั่งของ Windows โดยเฉพาะในบล็อกโพสต์ชุดนี้ในบล็อกของทีม Command-Line
ในขณะที่ยกเครื่องคอนโซล Windows เราได้ปรับปรุงฐานโค้ดให้ทันสมัยอย่างมาก โดยแยกเอนทิตีเชิงตรรกะออกเป็นโมดูลและคลาสอย่างหมดจด แนะนำจุดขยายที่สำคัญบางจุด แทนที่คอลเลกชันและคอนเทนเนอร์เก่าที่ปลูกเองในประเทศหลายรายการด้วยคอนเทนเนอร์ STL ที่ปลอดภัยและมีประสิทธิภาพมากขึ้น และทำให้โค้ดง่ายขึ้นและ ปลอดภัยยิ่งขึ้นโดยใช้ Windows Implementation Libraries ของ Microsoft - WIL
การยกเครื่องใหม่นี้ส่งผลให้องค์ประกอบหลักหลายประการของ Console พร้อมสำหรับการนำกลับมาใช้ใหม่ในการใช้งานเทอร์มินัลบน Windows ส่วนประกอบเหล่านี้ประกอบด้วยโครงร่างข้อความและกลไกการเรนเดอร์ที่ใช้ DirectWrite ใหม่ บัฟเฟอร์ข้อความที่สามารถจัดเก็บทั้ง UTF-16 และ UTF-8 ตัวแยกวิเคราะห์/ตัวปล่อย VT และอื่นๆ
เมื่อเราเริ่มวางแผนแอปพลิเคชัน Windows Terminal ใหม่ เราได้สำรวจและประเมินแนวทางและกลุ่มเทคโนโลยีหลายประการ ในที่สุดเราก็ตัดสินใจว่าจะบรรลุเป้าหมายได้ดีที่สุดด้วยการลงทุนในโค้ดเบส C++ ต่อไป ซึ่งจะทำให้เราสามารถนำส่วนประกอบที่ได้รับการปรับปรุงให้ทันสมัยที่กล่าวมาข้างต้นกลับมาใช้ใหม่ได้ทั้งในคอนโซลที่มีอยู่และ Terminal ใหม่ นอกจากนี้ เรายังตระหนักว่าสิ่งนี้จะทำให้เราสามารถสร้างแกนหลักของ Terminal ขึ้นมาเป็นตัวควบคุม UI ที่นำมาใช้ซ้ำได้ ซึ่งผู้อื่นสามารถรวมเข้ากับแอปพลิเคชันของตนเองได้
ผลลัพธ์ของงานนี้บรรจุอยู่ภายใน repo นี้และจัดส่งเป็นแอปพลิเคชัน Windows Terminal ที่คุณสามารถดาวน์โหลดได้จาก Microsoft Store หรือโดยตรงจากการเผยแพร่ของ repo นี้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Windows Terminal คุณอาจพบว่าแหล่งข้อมูลบางส่วนเหล่านี้มีประโยชน์และน่าสนใจ:
บล็อกบรรทัดคำสั่ง
ชุดบล็อกพื้นหลังบรรทัดคำสั่ง
การเปิดตัว Windows Terminal: เทอร์มินัล "Sizzle Video"
การเปิดตัว Windows Terminal: เซสชัน Build 2019
เรียกใช้เป็นวิทยุ: แสดง 645 - Windows Terminal พร้อม Richard Turner
Azure Devops Podcast: ตอนที่ 54 - Kayla Cinnamon และ Rich Turner บน DevOps บน Windows Terminal
เซสชัน Microsoft Ignite 2019: บรรทัดคำสั่ง Windows สมัยใหม่: Windows Terminal - BRK3321
สาเหตุ: คุณกำลังเปิดใช้โซลูชันที่ไม่ถูกต้องใน Visual Studio
วิธีแก้ไข: ตรวจสอบให้แน่ใจว่าคุณกำลังสร้างและปรับใช้โครงการ CascadiaPackage
ใน Visual Studio
บันทึก
OpenConsole.exe
เป็นเพียง conhost.exe
ที่สร้างขึ้นในเครื่อง ซึ่งเป็นคอนโซล Windows แบบคลาสสิกที่โฮสต์โครงสร้างพื้นฐานบรรทัดคำสั่งของ Windows OpenConsole ถูกใช้โดย Windows Terminal เพื่อเชื่อมต่อและสื่อสารกับแอปพลิเคชันบรรทัดคำสั่ง (ผ่าน ConPty)
เอกสารประกอบโครงการทั้งหมดอยู่ที่ aka.ms/terminal-docs หากคุณต้องการมีส่วนร่วมในเอกสาร โปรดส่งคำขอดึงใน repo Windows Terminal Documentation
เรารู้สึกตื่นเต้นที่ได้ทำงานเคียงข้างคุณ ซึ่งเป็นชุมชนที่น่าทึ่งของเรา เพื่อสร้างและปรับปรุง Windows Terminal!
ก่อนที่คุณจะเริ่มทำงานกับฟีเจอร์/การแก้ไข โปรดอ่านและปฏิบัติตามคู่มือผู้ร่วมให้ข้อมูลของเราเพื่อช่วยหลีกเลี่ยงความพยายามที่สูญเปล่าหรือซ้ำซ้อน
วิธีที่ง่ายที่สุดในการสื่อสารกับทีมคือผ่านปัญหา GitHub
โปรดแจ้งปัญหาใหม่ คำขอคุณลักษณะ และข้อเสนอแนะ แต่ ให้ค้นหาปัญหาที่มีอยู่แล้วที่เปิด/ปิดไว้ก่อนหน้าที่คล้ายกันก่อนที่จะสร้างปัญหาใหม่
หากคุณต้องการถามคำถามที่คุณรู้สึกว่าไม่รับประกันปัญหา (แต่) โปรดติดต่อเราผ่านทาง Twitter:
คริสโตเฟอร์ เหงียน ผู้จัดการผลิตภัณฑ์: @nguyen_dows
Dustin Howett หัวหน้าฝ่ายวิศวกรรม: @dhowett
Mike Griese นักพัฒนาอาวุโส: @[email protected]
คาร์ลอส ซาโมรา ผู้พัฒนา: @cazamor_msft
Pankaj Bhojwani นักพัฒนา
Leonard Hecker ผู้พัฒนา: @LeonardHecker
คุณต้องใช้งาน Windows 10 2004 (build >= 10.0.19041.0) หรือใหม่กว่าจึงจะสามารถรัน Windows Terminal ได้
คุณต้องเปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์ในแอปการตั้งค่า Windows เพื่อติดตั้งและเรียกใช้ Windows Terminal ในเครื่อง
คุณต้องติดตั้ง PowerShell 7 หรือใหม่กว่า
คุณต้องติดตั้ง Windows 11 (10.0.22621.0) SDK
คุณต้องติดตั้ง VS 2022 เป็นอย่างน้อย
คุณต้องติดตั้งปริมาณงานต่อไปนี้ผ่านตัวติดตั้ง VS หมายเหตุ: การเปิดโซลูชันใน VS 2022 จะแจ้งให้คุณติดตั้งส่วนประกอบที่ขาดหายไปโดยอัตโนมัติ:
C ++ (v143) เครื่องมือแพลตฟอร์ม Windows สากล
การพัฒนาเดสก์ท็อปด้วย C++
การพัฒนาแพลตฟอร์ม Windows สากล
ส่วนประกอบส่วนบุคคลต่อไปนี้
คุณต้องติดตั้ง .NET Framework Targeting Pack เพื่อสร้างโครงการทดสอบ
พื้นที่เก็บข้อมูลนี้ใช้โมดูลย่อย git สำหรับการขึ้นต่อกันบางส่วน เพื่อให้แน่ใจว่าโมดูลย่อยได้รับการกู้คืนหรืออัปเดต ต้องแน่ใจว่าได้รันสิ่งต่อไปนี้ก่อนที่จะสร้าง:
อัปเดตโมดูลย่อย git --init --recursive
OpenConsole.sln อาจสร้างขึ้นจากภายใน Visual Studio หรือจากบรรทัดคำสั่งโดยใช้ชุดสคริปต์และเครื่องมืออำนวยความสะดวกในไดเร็กทอรี /tools :
นำเข้าโมดูล .toolsOpenConsole.psm1Set-MsBuildDevEnvironmentInvoid-OpenConsoleBuild
.เครื่องมือrazzle.cmd BCZ
หากต้องการดีบัก Windows Terminal ใน VS ให้คลิกขวาที่ CascadiaPackage
(ใน Solution Explorer) และไปที่คุณสมบัติ ในเมนูแก้ไขข้อบกพร่อง เปลี่ยน "กระบวนการแอปพลิเคชัน" และ "กระบวนการงานเบื้องหลัง" เป็น "เนทีฟเท่านั้น"
จากนั้นคุณควรจะสามารถสร้างและแก้ไขข้อบกพร่องของโครงการ Terminal ได้โดยการกด F5 ตรวจสอบให้แน่ใจว่าได้เลือกแพลตฟอร์ม "x64" หรือ "x86" - Terminal ไม่ได้สร้างขึ้นสำหรับ "Any Cpu" (เนื่องจาก Terminal เป็นแอปพลิเคชัน C++ ไม่ใช่ C#)
- คุณจะ ไม่ สามารถเปิด Terminal ได้โดยตรงโดยการเรียกใช้ WindowsTerminal.exe สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุ โปรดดูที่ #926, #4043
โปรดตรวจสอบเอกสารสั้นๆ เหล่านี้ด้านล่างเกี่ยวกับแนวปฏิบัติด้านการเขียนโค้ดของเรา
- หากคุณพบสิ่งที่ขาดหายไปในเอกสารเหล่านี้ คุณสามารถบริจาคให้กับไฟล์เอกสารใดๆ ของเราได้ทุกที่ในพื้นที่เก็บข้อมูล (หรือเขียนไฟล์ใหม่!)
นี่เป็นงานที่กำลังดำเนินการในขณะที่เราเรียนรู้สิ่งที่เราจะต้องจัดเตรียมให้กับผู้คนเพื่อที่จะเป็นผู้มีส่วนร่วมที่มีประสิทธิภาพในโครงการของเรา
สไตล์การเข้ารหัส
องค์กรรหัส
ข้อยกเว้นในโค้ดเบสเดิมของเรา
พอยน์เตอร์และมาโครอัจฉริยะที่มีประโยชน์สำหรับการเชื่อมต่อกับ Windows ใน WIL
โครงการนี้ได้นำหลักจรรยาบรรณของ Microsoft Open Source มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูคำถามที่พบบ่อยเกี่ยวกับจรรยาบรรณหรือติดต่อ [email protected] หากมีคำถามหรือความคิดเห็นเพิ่มเติม