Terminal: طلب الميزة: خيارات التعتيم القياسية مثل وحدة التحكم التقليدية.

تم إنشاؤها على ٩ مايو ٢٠١٩  ·  63تعليقات  ·  مصدر: microsoft/terminal

ربما أغفلته وهو يتصفح ملف json لكنني لم أرَ وسيلة أخرى لتحقيق الشفافية ولست معجبًا بعامل تشويش تأثيرات الأكريليك أو حقيقة أنه ينطفئ عند عدم تحديد النافذة. توفر وحدة التحكم التقليدية تعتيمًا ثابتًا تمامًا كما هو الحال في معظم عمليات nix ، أتمنى أن تكون مجرد مسألة وقت قبل أن يتم تنفيذها هنا؟

Area-User Interface Issue-Feature Product-Terminal

التعليق الأكثر فائدة

@ TCB13 فقط لكي تعرف ، نحن جميعًا أشخاص وننظر إلى صناديق البريد الوارد لدينا وقائمة انتظار الفرز وقائمة مشكلات github. نحن نقرأ كل واحدة من هذه القضايا ، ونشعر بأشياء عنها وعن الأشياء التي يقولها الناس فيها. من فضلك حاول تجنب الوقاحة.

ال 63 كومينتر

إنه غير مدعوم الآن ، لكنه بالتأكيد شيء لا نريد أن نفقده. سنحتاج إلى القيام ببعض الرفع الثقيل للحصول على تكوين المرئيات بشكل صحيح ، ولكن هذا "في الخطة".

راجع أيضًا # 593 ، الذي يحتوي على معلومات إضافية.

أنا أحب الشفافية الكلاسيكية ، لكني لم أستخدم الأكريليك مطلقًا ، وهي إحدى الميزات التي لا بد لي من امتلاكها :)

+1 على هذا!

الرجاء عدم إجراء عمليات "+1" ، فهذا يؤدي إلى حدوث ضوضاء غير ضرورية. يوجد زر +1 جيد تمامًا هنا:
image

@ zadjii-msft مع Microsoft لا يوجد شيء مثل "زر +1 جيد تمامًا" ، حتى عند إصدار ضوضاء ، لا أحد يهتم أو يستمع إلى أي شيء. أعتقد أن أي شخص استخدم أي منتج من منتجات Microsoft يعرف ذلك.

لكن مهلا ، لقد فهمت هذه النقطة. آسف.

@ TCB13 فقط لكي تعرف ، نحن جميعًا أشخاص وننظر إلى صناديق البريد الوارد لدينا وقائمة انتظار الفرز وقائمة مشكلات github. نحن نقرأ كل واحدة من هذه القضايا ، ونشعر بأشياء عنها وعن الأشياء التي يقولها الناس فيها. من فضلك حاول تجنب الوقاحة.

@ DHowett-MSFT @ zadjii-msft

حقيقة أن الأكريليك تم تضمينه بدلاً من التعتيم يعني حقًا أنه لم يفكر أحد في قابلية استخدام هذه المحطة. يبدو لي أن بعض الوزراء قالوا للتو "يا للأشياء الشفافة تبدو رائعة ، دعنا نجعلها أكثر برودة ونضيف إليها ضبابية!". عادةً ما لا تكون التطبيقات / النوافذ الطرفية شفافة لأنها تبدو رائعة ، فهي شفافة لأنها تتيح لك رؤية أشياء أخرى خلف النافذة - وهي ميزة مفيدة كما يوافق عليها معظم المستخدمين.

ربما يجب عليك أن تسأل الأشخاص الفعليين الآخرين في شركتك لماذا كنت عدوانيًا جدًا في تعليقي الآخر. :)

@ TCB13 كانت هناك أصوات تطلب إضافة أكريليك إلى محطة الأوامر ، وفي ذلك الوقت لم يكن ذلك ممكنًا لأسباب التوافق العكسي ، ولكن المحطة الطرفية الجديدة تجعل ذلك ممكنًا.

تكمن المشكلة في هذا الإصدار الجديد في أن التعتيم غير ممكن على الفور مع واجهات برمجة تطبيقات Windowing الجديدة التي يستخدمها هذا ، وهو أمر يدركه الفريق ، وسيحاول تحقيقه.

ليست هناك حاجة لأن تكون رافضًا جدًا ، فقط لأنها ليست ميزة تريدها أو تحتاجها شخصيًا.

هذا من الممكن ان يكون مفيد جدا.

بالإضافة إلى ما قيل بالفعل ، فإن القدرة على الحصول على نافذة أكريليك عند التركيز والشفافية عند عدم التركيز ستكون لطيفة للغاية لأنها ستجعل هذا الانتقال أقل تشويشًا.

متفق عليه. أنا شخصياً أريد إعداد التعتيم العادي لأنني أحب الخلفيات المظلمة للغاية مع شفافية طفيفة. عندما حاولت استخدام خيارات الأكريليك ، جعلت الخلفية ساطعة للغاية بالنسبة لي. أنا مصاص دماء على ما أعتقد 🤷‍♂.

سعيد لسماع أنه تم التخطيط له على الأقل. نشكرك على صنع هذه الأداة وأتطلع إلى الإصدارات المستقبلية مع المزيد من الميزات مثل هذه الميزة.

متفق عليه. أنا شخصياً أعتقد أن النافذة تتحول مباشرة إلى لون صلب فجأة عندما تفقد التركيز. الشفافية التقليدية هي انتقال أفضل
سعيد لسماع أنه تم التخطيط له على الأقل. نشكرك على صنع هذه الأداة وأتطلع إلى الإصدارات المستقبلية مع المزيد من الميزات مثل هذه الميزة.

الحقيقة هي أنني لن أستخدم وحدة التحكم ، عندما لا تكون هناك شفافية كلاسيكية :) ، يجب أن يكون لديك ميزة بالنسبة لي :)

هذا لا يتعلق بهذه المشكلة ولكن بالأحرى مجموعات من المشاركات.


انقر فوق لي

> ليست هناك حاجة لأن تكون رافضًا جدًا ، لمجرد أنها ليست ميزة تريدها أو تحتاجها شخصيًا. عندما يبدو أن الناس بعيدون تمامًا عن التوقعات المشتركة لغالبية مستخدمي التطبيق ، فإنهم يتلقون ردودًا حماسية. والشفافية كانت متاحة لفترة طويلة ، لذلك لا يوجد شخص واحد يضغط على المطورين لإرضاء شخص واحد. كما يوحي بيانك الأخير ، لسبب ما ؛ لا تتردد في تحريره. ربما كان TCB13 وقحًا أو عدوانيًا في بعض الخيوط أو المناسبات الأخرى؟ باعتباره غلوًا غير ضار في الغالب في https://github.com/microsoft/terminal/issues/603#issuecomment-508031247 --- أيضًا ، silverqx ، راجع https://github.com/microsoft/terminal/issues/603#issuecomment -546613996 https://github.com/microsoft/terminal/issues/603#issuecomment-507248317 والمدة التي مرت منذ https://github.com/microsoft/terminal/tags؟after=RS2-final منذ ذلك الحين أول إصدار عام. يبدو أن الأمر سيستغرق وقتًا طويلاً. لا تفعل ذلك مرتين ، راجع https://github.com/microsoft/terminal/issues/603#issuecomment-507835880 - من https://github.com/microsoft/terminal/issues/603#issuecomment-529696036 ، iCodeSometime ، لا الاكريليك من فضلك. فقط دع الأكريليك يكون غير مرئي لأولئك الذين يريدون استخدام الشفافية. الطريقة التي يتعامل بها cmd هي لطيفة.


بالنسبة لـ cmd ، أفضل عتامة 80٪ إلى 95٪ ، أي الشفافية. كلهم نفس الشئ.

أكريليك شفافية ، على ما أعتقد. سأضطر إلى اختباره حيث أقوم بتعطيله على جميع أجهزة Windows التي أستخدمها.


فيما يتعلق ratatoeey

للتسجيل ، لقد لعبت مع هذا. التنفيذ البدائي ليس صعبًا للغاية ، لكنه ليس ... مصقولًا. تصبح النافذة بأكملها شفافة بشكل متساوٍ بما في ذلك عناصر تحكم XAML (صف علامة التبويب ومربعات الحوار وما إلى ذلك). أعتقد أنه من وجهة نظر العمارة ، سيكون من الصعب للغاية محاولة الحصول على شفافية محتوى "المحطة الطرفية" ، وحتى ذلك الحين ، ستكون جميع الأجزاء شفافة على قدم المساواة ، بما في ذلك الفواصل ، وستظل الحوارات شفافة أيضًا.

image

من الغريب أن القائمة المنسدلة MenuFlyout لعلامة التبويب الجديدة _ لا تصبح_ شفافة ، مما يثير المزيد من الأسئلة.
image

بصراحة في رأيي ، تبدو التجربة غير مصقولة بعض الشيء. إذا كان هذا ما يريده الناس حقًا ، فلن أقول لا ، لكنني أريد أيضًا التأكد من أننا نشحن شيئًا عالي الجودة. ولهذا السبب أتركه في الأعمال المتأخرة ، لمحاولة إيجاد حل أفضل.

في الواقع ، أنا أحب المناطق غير العميل شفافة. هذه هي الطريقة التي يعمل بها cmd ، ولديه بعض الوقت (ربما RS5؟):

image

بصراحة في رأيي ، تبدو التجربة غير مصقولة بعض الشيء. إذا كان هذا ما يريده الناس حقًا ، فلن أقول لا ، لكنني أريد أيضًا التأكد من أننا نشحن شيئًا عالي الجودة. ولهذا السبب أتركه في الأعمال المتأخرة ، لمحاولة إيجاد حل أفضل.

أنا أحب هذا التأثير تمامًا - النوافذ الصلبة الوحيدة التي أريدها هي الحوارات والقوائم المنسدلة - الآن أفترض أنني بحاجة فقط إلى إنشاء هذا من المصدر: - /

شكرا لربطك بالتعديل!

نعم ، أعتقد أيضًا أن كل شيء شفاف هو ميزة وليست خطأ 😄

الطريقة التي يعمل بها cmd مفيدة جدًا لأنه يمكنك قراءة ما هو تحتها (بالطبع يعتمد على مستوى الشفافية لتبدو "جيدة").

أود أن أقترح بشدة أن ينظر المطورون إلى وظيفة شفافية الكتابة في gnome-terminal wrt كدليل. من ناحيتي ، ليس لدي استخدام للاكريليك وغموضه. أريدها شفافة حتى أتمكن من رؤيتها ، سواء كانت مركزة أم لا. شكرا.

للتسجيل ، لقد لعبت مع هذا. التنفيذ البدائي ليس صعبًا للغاية ، لكنه ليس ... مصقولًا. تصبح النافذة بأكملها شفافة بشكل متساوٍ بما في ذلك عناصر تحكم XAML (صف علامة التبويب ومربعات الحوار وما إلى ذلك). أعتقد أنه من وجهة نظر العمارة ، سيكون من الصعب للغاية محاولة الحصول على شفافية محتوى "المحطة الطرفية" ، وحتى ذلك الحين ، ستكون جميع الأجزاء شفافة على قدم المساواة ، بما في ذلك الفواصل ، وستظل الحوارات شفافة أيضًا.

لا بأس في أن يكون شريط علامات التبويب شفافًا ، ويجب أن تكون النافذة بأكملها شفافة ، مع أشرطة التمرير أيضًا.
سيكون من الأفضل كثيرًا أن يكون لديك قدر أكبر من الشفافية للمحتوى الطرفي ، مقارنة بشريط علامة التبويب وشريط الحالة ، على سبيل المثال حوالي 10٪ ، ولكن هذا له أولوية أقل وليس جوهريًا.
يجب أن تكون الحوارات المشروطة غير شفافة ، فلا أحد يريد أن يكون لديه حوارات شفافة. 🙂
من الأفضل أن يكون لديك شفافية مختلفة للنص والخلفية ، يجب أن يكون النص أقل شفافية من الخلفية ، لتسهيل القراءة.

الشيء الأساسي هنا هو جعلها تبدو جيدة . 🚀

من الغريب أن القائمة المنسدلة MenuFlyout لعلامة التبويب الجديدة _ لا تصبح_ شفافة ، مما يثير المزيد من الأسئلة.

هذا جيد ، لا يجب أن تكون القوائم المنسدلة أو القائمة المنبثقة شفافة ، فمن الأفضل أن تكون غير شفافة.

بصراحة في رأيي ، تبدو التجربة غير مصقولة بعض الشيء. إذا كان هذا ما يريده الناس حقًا ، فلن أقول لا ، لكنني أريد أيضًا التأكد من أننا نشحن شيئًا عالي الجودة. ولهذا السبب أتركه في الأعمال المتأخرة ، لمحاولة إيجاد حل أفضل.

عليك أن تلعب بها قليلاً ، فالخلفية الأرجواني ليست مثالاً جيدًا لخلفية شفافة ، فهي تبدو أفضل بكثير مع خلفية سوداء.
بعض الأمثلة 1 ، 2 .

إذا قمت بإعداد شفافية جيدة ومتوازنة لجهاز طرفية ، فيمكن أن تساعدك في بعض السيناريوهات ، في سير العمل الخاص بي يساعدني في 5-10٪ من الحالات ، عندما لا يتعين علي التبديل إلى النافذة الأساسية. هذا جيد من الناحية العملية والقيمة المضافة هي أنه يبدو جيدًا. 🙂

هنا رابط إلى الكود ، كيف يتم تنفيذه في conemu.

@ zadjii-msft ، سأكون على ما يرام تمامًا مع شفافيتك التجريبية إذا تم تنفيذها كما في اقتراحي
تركز - useAcrylic
غير مركزة - استخدم الشفافية

https://github.com/microsoft/terminal/issues/4413

من اليسار
CMD قياسي بشفافية ، محطة مركزة ، محطة خلفية
image

هل يمكنك إضافة خيارات مختلفة للخلفية الشفافة والنص (المقدمة)
لا أريد نصًا عابرًا للامتداد. من الصعب القراءة. لكني أريد خلفية عابرة للامتداد

@ zadjii-msft @ cinnamon-msft

أرغب في زر " نظرة خاطفة" على شريط العنوان بالقرب من علامة التبويب الجديدة + الزر أو زر التصغير - ، تمامًا مثل Aero Peek.

إذا كنتم تعيدون عمل التكوين ، فيرجى التفكير في إضافته إلى TitleBar. لذلك عندما أحوم فوقها ، يمكنني رؤية الشاشة الخلفية ، بدلاً من أن أبقى شفافة طوال الوقت.

__تتناسب طرديا__

هل يمكننا الحصول على زر ملء الشاشة على شريط العنوان في جميع التطبيقات التي تسمح بالتكبير (نعم في الجهاز أيضًا)! أعتقد أننا يجب أن نضيف نظرة خاطفة إلى القائمة أيضًا IMHO ، إذا كنا نضيف في نظام Windowing نفسه.

@ Nirmal4G لقد نقلت طلبك الأول إلى # 5426. أنا متأكد تمامًا من أنه لا يوجد شيء يمكننا القيام به بشأن طلبك الثاني - يبدو أنه تغيير شامل إلى حد كبير في نافذة جميع تطبيقات Windows. قد يكون طلبًا مناسباً في Microsoft / PowerToys . IIRC ، واحدة من powertoys الأصلية عملت عن طريق تعديل أزرار التسمية التوضيحية لشريط العنوان
image

نظرًا لأن هذا يبدو أنه يمثل المشكلة الشاملة للشفافية والاكريليك ... لقد قمت للتو بتثبيت تطبيق Notepads هذا الذي قام به شخص آخر من MSFT في وقت فراغه ، ويبدو أنه قادر على الحفاظ على شفافية الأكريليك أثناء عدم التركيز في الخلفية. إنه يستخدم XAML و Windows.UI أيضًا.

الرجاء إضافة هذه القدرة ، أيضا ، في مرحلة ما. شكرا.

صفحة المشروع: https://github.com/JasonStein/Notepads

--تعديل:
يقوم بالقفز فوق المشروع ، يقوم بعمل فرشاة أكريليك خاصة به لكل هذا:

https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

لا أعتقد أنهم يقولون إنهم لا يستطيعون الاحتفاظ بالأكريليك عند عدم التركيز ، فهم يقولون إنهم قرروا عدم اتخاذ قرار تصميم واسع النطاق للشركة من أجل الحفاظ على عمر البطارية.

نعم ، حسنًا ... الشفافية / الأكريليك في الجهاز هي نوع حلوى العين التي يتوقع المستخدم وجودها طوال الوقت. وإلا فلن يرغب أحد في ذلك ، لأن وجوده أثناء التركيز لا يفعل الكثير في هذا الصدد.

أيضًا ، من المحتمل أن يكون مستخدمو الأجهزة الطرفية مستخدمين متقدمين ، ويفكرون أيضًا في الحاجة فعليًا إلى تحرير JSON لتمكينه ، وربما يكونون على دراية بتأثير البطارية بطريقة ما.

لا يزال من الممكن أن تجعلها اختيارية.

@ المستقبل الذاتي:

  • https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

    • Shoot ، هذا باستخدام Win2D ، والذي لست متأكدًا من أنه يمكننا استخدامه ، لأنه C #

    • https://github.com/microsoft/Win2D/blob/master/winrt/docsrc/CanvasDevice.xml / https://microsoft.github.io/Win2D/html/M_Microsoft_Graphics_Canvas_CanvasDevice_GetSharedDevice.htm

  • ومع ذلك ، هناك https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositor.createhostbackdropbrush؟

    • هذا يبدو واعدا

  • https://stackoverflow.com/questions/43208841/how-to-use-acrylic-accent-createhostbackdropbrush-in-windows-10-creators-upd/44576160
  • ثم سنكتب بعض التعليمات البرمجية
            auto rootVisual = winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::GetElementVisual(RootGrid());
            auto compositor = rootVisual.Compositor();
            auto rootSprite = compositor.CreateSpriteVisual();
            rootSprite.Size(winrt::Windows::Foundation::Size(
                ::base::saturated_cast<float>(RootGrid().ActualWidth()),
                ::base::saturated_cast<float>(RootGrid().ActualHeight())));

            auto b = rootVisual.Compositor().CreateHostBackdropBrush();

            rootSprite.Brush(b);
            winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::SetElementChildVisual(RootGrid(), rootSprite);
  • أوه لا ، حتى مع هذا ، نحصل على محتوى غير واضح مسبقًا
    image

  • وهو ما يقودني إلى https://github.com/Microsoft/WindowsCompositionSamples/issues/202

  • وهو ما يقودني إلى دائرة كاملة في التحقيق الذي أجريته بالفعل في العام الماضي https://github.com/microsoft/terminal/issues/1753#issuecomment-508070516

لا أعدك بأي شيء هنا ، فقط أترك ملاحظات من علامة التبويب التي فتحتها هذا الصباح

انتظر ، هل قرأتها بشكل صحيح؟ لا يمكن أن يكون لديك نافذة شفافة جزئيًا أو أكريليك بدون طمس بسبب مشاكل أمنية؟ لما؟

أنا ، مثل الكثيرين ، أرغب بشدة / أحتاج إلى شبه شفافية طرفية كما لو كانت مستخدمة في * لا شىء على مر العصور. هل يتعين علينا حقًا الانتقال إلى "مسار شاشة التوقف" ، والتقاط الشاشة أثناء الرسم ، ورسم الصورة الملتقطة كصورة خلفية في النافذة ، ثم رسم التعتيم فوقها؟

أعني ، إلى أي مدى يمكن أن تكون النافذة شبه الشفافة متجهًا للهجوم ... حقا فضولي. وحيرة. لكن في الغالب فضولي.

من المؤكد أن هذا الخيط قديم جدًا ، منذ أن كانت الطريقة الوحيدة لعمل أكريليك هي من تطبيق UWP خالص. UWPs معزولة بشكل كبير عن القدرة على قراءة حالة العمليات الأخرى على النظام. إذا كان التطبيق في هذا السياق قادرًا على تجهيز محتويات النافذة الموجودة خلفه بشكل تافه ، فيمكنه نظريًا قراءة محتويات أي شيء آخر يعمل على النظام ، في أي سياق. هذا شيء غير ممكن على الإطلاق لتطبيقات UWP.

لقد تغير العالم كثيرًا منذ ذلك الحين - هناك تطبيقات مثل Terminal التي تستخدم UWP XAML (والأكريليك) ولكنها ليست تطبيقات UWP. في هذا النموذج الجديد ، قد يكون من الممكن بالنسبة لنا القيام بشيء مختلف ، نحتاج فقط إلى إجراء المزيد من البحث.

من خلال القراءة من خلال مصدر AcrylicBrush ، ربما وجدت حلاً. لكن عليك أن تأخذ هذا بحذر لأن لديّ خبرة قليلة في تطوير واجهة مستخدم Windows.
يبدو أن إحدى طرق المصنع في فرشاة الأكريليك تدعم الخلفيات غير الواضحة مسبقًا ، على ما يبدو حيث كانت الغلاف قد فعلت ذلك بالفعل ، إذا كانت هذه الطريقة مكشوفة وإذا تم تمرير خلفية غير واضحة كخلفية ضبابية مسبقًا و IF أنا لست بعيدًا تمامًا عن العلامة هنا ، فقد لا يضيف المصنع تأثيرًا ضبابيًا على الإطلاق. لكن مرة أخرى ، لدي فرصة كبيرة لأن أكون مخطئًا هنا بنسبة 150٪ ، لذا خذ ذلك كما تشاء.

OMG ، هذه المناقشة عمرها أكثر من عام ، لكن شفافية الزجاج الأساسية لم يتم تنفيذها بعد. إنه معيار لمحطات يونكس.

alxkvx كما تمت مناقشته في هذا الموضوع بإسهاب ، فهذه مشكلة صعبة تقنيًا ، ولهذا السبب لم يتم تنفيذها بعد. إذا كان لديك أي اقتراحات بخصوص _كيف_ يمكن تنفيذ ذلك من خلال حزمة واجهة المستخدم الخاصة بنا ، فسأكون سعيدًا لسماعها.

alxkvx كما تمت مناقشته في هذا الموضوع بإسهاب ، فهذه مشكلة صعبة تقنيًا ، ولهذا السبب لم يتم تنفيذها بعد. إذا كان لديك أي اقتراحات بخصوص _كيف_ يمكن تنفيذ ذلك من خلال حزمة واجهة المستخدم الخاصة بنا ، فسأكون سعيدًا لسماعها.

حسنًا ، لم أتعمق في المشكلة في الواقع ، ولا أفهم سبب وجود مشكلات في مكدس واجهة المستخدم في ذلك ، وأنا أعلم أنه باستخدام محطة WSL ، يمكنني فقط النقر بزر الماوس الأيمن> خصائص> تعيين التعتيم وسأحصل على شفافية زجاجية. بالنسبة لي شخصيا هذه ميزة أساسية.

التعتيم والتعتيم عندما لا تكون المحطة مركزة أمر سخيف. من طلب هذا؟ 🤷 سأستمر في استخدام cmd و بوويرشيل.

alxkvx كما تمت مناقشته في هذا الموضوع بإسهاب ، فهذه مشكلة صعبة تقنيًا ، ولهذا السبب لم يتم تنفيذها بعد. إذا كان لديك أي اقتراحات بخصوص _كيف_ يمكن تنفيذ ذلك من خلال حزمة واجهة المستخدم الخاصة بنا ، فسأكون سعيدًا لسماعها.

حسنًا ، لم أتعمق في المشكلة في الواقع ، ولا أفهم سبب وجود مشكلات في مكدس واجهة المستخدم في ذلك ، وأنا أعلم أنه باستخدام محطة WSL ، يمكنني فقط النقر بزر الماوس الأيمن> خصائص> تعيين التعتيم وسأحصل على شفافية زجاجية. بالنسبة لي شخصيا هذه ميزة أساسية.

تكمن المشكلة في أن إطار عمل واجهة المستخدم (UWP XAML) الذي تم بناء محطة Windows فيه لا يدعم ببساطة الشفافية الكاملة مثل تطبيقات win32 أو WPF (مثل محطة wsl). الأداة الوحيدة التي يمكنهم الوصول إليها هي الأكريليك والتي تعني أقل للشفافية وأكثر كلكنة تصميم. قد يتطلب تنفيذه ضمن حزمة واجهة المستخدم الخاصة بهم حلاً متطرفًا مثل تعليقي أعلاه أو إعادة صياغة كاملة لكيفية تقديم وحدة التحكم (على الأقل هذا ما أفهمه ، Windows UI ليس مجال التطوير الخاص بي)

تحرير: توضيح

alxkvx كما تمت مناقشته في هذا الموضوع بإسهاب ، فهذه مشكلة صعبة تقنيًا ، ولهذا السبب لم يتم تنفيذها بعد. إذا كان لديك أي اقتراحات بخصوص _كيف_ يمكن تنفيذ ذلك من خلال حزمة واجهة المستخدم الخاصة بنا ، فسأكون سعيدًا لسماعها.

حسنًا ، لم أتعمق في المشكلة في الواقع ، ولا أفهم سبب وجود مشكلات في مكدس واجهة المستخدم في ذلك ، وأنا أعلم أنه باستخدام محطة WSL ، يمكنني فقط النقر بزر الماوس الأيمن> خصائص> تعيين التعتيم وسأحصل على شفافية زجاجية. بالنسبة لي شخصيا هذه ميزة أساسية.

تكمن المشكلة في أن إطار عمل UI (XAML) الذي تم تصميم Windows Terminal فيه لا يدعم الشفافية الكاملة مثل تطبيقات win32 (مثل محطة wsl). الأداة الوحيدة التي يمكنهم الوصول إليها هي الأكريليك والتي تعني أقل للشفافية وأكثر كلكنة تصميم. قد يتطلب تنفيذه ضمن حزمة واجهة المستخدم الخاصة بهم حلاً متطرفًا مثل تعليقي أعلاه أو إعادة صياغة كاملة لكيفية تقديم وحدة التحكم (على الأقل هذا ما أفهمه ، Windows UI ليس مجال التطوير الخاص بي)

يدعم Xaml الشفافية ، لكن نوافذ UWP و Xaml Islands لا تدعم ذلك.

عندما تكون المحطة الطرفية قادرة على الانتقال إلى WinUI 3 Desktop ، ويمكنها النقر على HWND نفسها ، فستكون قادرة على تنفيذ شفافية غير واضحة.

سيتأخر الأكريليك نفسه لـ WinUI 3 - حيث يتعين عليهم إعادة تشغيله أثناء استخراجه من نظام التشغيل

انتظر لا ، دعنا نوضح بعض المفاهيم الخاطئة - نحن بالفعل قادرون على الوصول إلى HWND مباشرة ، لأننا بالفعل تطبيق win32. نحن نعمل مع XAML وفرق التكوين لمحاولة إيجاد حل لذلك. من وجهة نظري (حاليًا) ، تتمتع جزيرة XAML دائمًا بخلفية معتمة ، مما يعني أنه لا يمكننا الحصول على مكونات شفافة في XAML تكون شفافة طوال الطريق إلى HWND. ليس لدي أي فكرة عما إذا كان WinUI 3 سيحل هذا الأمر بطريقة سحرية بالنسبة لنا ، وهو أمر سنحتاج إلى مناقشته أكثر مع هذا الفريق. لحسن الحظ ، هم يعملون في الردهة المجاورة لنا (أو على الأقل فعلوا ذلك عندما عملنا جميعًا في مباني المكاتب) ، لذا فإن إجراء هذه المناقشات ليس بالأمر الصعب 😄

@ المستقبل الذاتي:

أنا متأكد من أن Win2D يدعم c ++ / winrt (مكتوب في c ++!) ، ولكن حتى لو لم يكن لحالة الاستخدام هذه ، فهناك ما يلي:

https://github.com/fobrs/Win2DinMFC

أيضًا ، أعتقد أن الأكريليك المخصص يجب أن يكون ممكنًا لأنني تمكنت من تحقيق أكريليك (بزوايا دائرية !!!) في WPF ، باتباع هذه العينة:

https://github.com/microsoft/Windows.UI.Composition-Win32-Samples/tree/master/dotnet/WPF/AcrylicEffect

وهذا المنشور استثنائي:

https://notes.yvt.jp/Desktop-Apps/ التمكين-Backdrop-Blur

هذه كلها مفيدة حقًا إذا كنت تستخدم WPF XAML ، لكننا نستخدم UWP XAML ، والتي للأسف ستحتوي دائمًا على خلفية غير شفافة. نحن نعمل مع فريق WinUI على أمل تخفيف هذا التقييد لـ WinUI 3.0. قد يمر بعض الوقت قبل أن يكون هناك أي تقدم آخر بشأن هذه المشكلة ، بينما نعمل على التفاصيل الفنية معهم.

@ zadjii-msft لذا ، فأنت تخبرني أن التحكم في wpf في الجهاز يمكن أن يدعم الاكريليك القابل للتخصيص بلور الاكريليك ، ولكن ليس UWP واحد (للمستقبل المنظور) ... أوقات غريبة 😅😅

أوه ، لا يمكن لـ UWP XAML دعم الأكريليك على ما يرام ، إنها مجرد "عتامة تقليدية" (عتامة بدون تأثير الأكريليك) لا يمكن لـ UWP XAML دعمها حاليًا.

يسعدني أن تواصل هذه المناقشة في مكان آخر (ربما تقدم مشكلة جديدة إذا كانت لديك مشكلة؟) لأن هذا هو موضوع _شفافية غير ضبابية_. لدينا بالفعل "أكريليك" في عنصر تحكم UWP ، ومناقشة "كيفية الحصول على الأكريليك في تحكم UWP" هو ... أعني ، على سبيل المثال ، محاولة شرح كيف يمكن أن يصبح حصانًا إذا كان حقًا حقًا أراد ان؟

@ zadjii-MSFTDHowett عذرا، لم أكن أقصد ذلك. بالأكريليك قصدت الأكريليك بنصف قطر ضبابي قابل للتخصيص

@ zadjii-msft أريد أن أجري بعض التجارب ، هل يمكنك أن تدلني على مكان إنشاء نافذة استضافة xaml / DesktopWindowXamlSource في التعليمات البرمجية الخاصة بك؟ إنها قاعدة بيانات كبيرة جدًا 😅😅

AnuthaDev إنه في src/cascadia/WindowsTerminal/IslandWindow.cpp

حسنًا ، على الأقل ممكن لـ wpf بالتأكيد:
Screenshot (363)

ربما يمكن إنشاء النافذة في IslandWindow.cpp باستخدام WS_EX_NOREDIRECTIONBITMAP والطريقة المتبعة هنا يمكن استخدامها لإنشاء فرشاة أكريليك غير ضبابية . يؤدي استخدام () createhostbackdropbrush () إلى التمويه تلقائيًا ، لذا فإن Createbackdropbrush () هو الخيار الوحيد. أو ربما لن ينجح ... أتساءل. سنحاول ونعلمك ....

تحرير: الراوي: لم ينجح!

ربما يمكن إنشاء النافذة في IslandWindow.cpp باستخدام WS_EX_NOREDIRECTIONBITMAP والطريقة المتبعة هنا يمكن استخدامها لإنشاء فرشاة أكريليك _non blur_. يؤدي استخدام () createhostbackdropbrush () إلى التمويه تلقائيًا ، لذا فإن Createbackdropbrush () هو الخيار الوحيد. أو ربما لن ينجح ... أتساءل. سنحاول ونخبرك ...

لا أعتقد ذلك لأن هذه الطريقة تحت WPF. يتم استخدام XAML في إطارين مختلفين WPF (تلك الطريقة) و UWP (المستخدمة في WT). لقد بحثت في مصدر أكريليك UWP ، والشيء الوحيد الذي يمكن أن يعمل على تحقيق الشفافية التقليدية هو حل هاكي حقًا حيث يمكنك خداع نظام التشغيل بشكل أساسي للاعتقاد بأن الخلفية قد تم تعتيمها بالفعل ، لذا فهي ليست كذلك لإضافة تمويه بنفسه ، لكنني شجرة جميلة حتى لو لم يكن متوافقًا مع جزر XAML.

@ zadjii-MSFTDHowett حسنا، حتى هنا هو ما وجدته:
من الممكن بالتأكيد الحصول على طلاء أكريليك ضبابي مخصص في تطبيق c ++ win32 باستخدام win2d:

(نصف قطر التمويه 1):
Screenshot (364)

لكن!! لا يمكنك القيام بذلك مع جزر xaml. كما تعلم بالفعل سيكون هناك بالتأكيد خلفية غير شفافة خلف xaml ...

للقيام بذلك ، نحتاج إلى استخدام تكوين apis وتقديمه إلى hwnd DesktopWindowTarget.

لذلك، كما هو عليه حاليا، للحصول على عدم الشفافية هذا بدلا من swapchainpanel.

(إذا كنت تعرف هذا بالفعل ، آسف لإضاعة وقتك ...)

وبالتالي ، لا شفافية بدون تغيير كبير في البنية.

(استنتاج كان واضحًا بالفعل ولم أساهم فيه بشيء مطلقًا)

نعم ، إذن TLDR لأي شخص لا يرغب في قراءة كل المناقشة السابقة هو أن إطار العمل المستخدم لمحطة windows لا يدعم حاليًا هذه الميزة ومع ذلك فإن التطوير على هذا الإطار مستمر والشفافية (على حد فهمي هو) في الأعمال. لذلك بمجرد أن يدعم إطار العمل (جزر XAML) الشفافية ، يمكن بدء هذه المشكلة.

نعم ، إذن TLDR لأي شخص لا يرغب في قراءة كل المناقشة السابقة هو أن إطار العمل المستخدم لمحطة windows لا يدعم حاليًا هذه الميزة ومع ذلك فإن التطوير على هذا الإطار مستمر والشفافية (على حد فهمي هو) في الأعمال. لذلك بمجرد أن يدعم إطار العمل (جزر XAML) الشفافية ، يمكن بدء هذه المشكلة.

أتساءل لماذا لم يتم تضمين ميزة الشفافية في البداية في هذا المشروع ولم يتم أخذها في الاعتبار عند اختيار محرك واجهة المستخدم. بعد أكثر من 10 سنوات من العمل مع محطات Linux الطرفية ، تتمتع جميعها بهذه الميزة ويتم استخدامها بنشاط من قبل العديد من المستخدمين. غريب بالنسبة لي.

لدى Powershell & CMD خيار ضبط الشفافية. أدرك أن التقنيات المستخدمة مختلفة ولكن العديد من المستخدمين يستخدمون تكوينات الشفافية

لدى Powershell & CMD خيار ضبط الشفافية. أدرك أن التقنيات المستخدمة مختلفة ولكن العديد من المستخدمين يستخدمون تكوينات الشفافية

نعم ، نفس محطة WSL

يمكن تحقيق شفافية CMD و PWSH من خلال هذه المحطة ، ولكن مما أجمعه لا يريد غالبية الأشخاص (بمن فيهم أنا) هذا الإصدار من الشفافية ، بل هو شفافية طرفية تشبه * nix ، حيث تكون الخلفية فقط شفافة بدلاً من كل شيء ، تم تضمين النص.

أيضًا ، هناك بعض الطرق المبتكرة لتزييف الشفافية ، من خلال انتزاع الشاشة RECT ، ورسمها على الجهاز نفسه ، ثم طلاء لون شبه شفاف ، ولكن حتى في ذلك هناك قيود ومزالق.

ربما يمكن تنفيذ ذلك عن طريق إنشاء نافذة أدناه (جنبًا إلى جنب؟) نافذة جزر xaml (مع ضبط النافذة الأصلية على WS_EX_NOREDIRECTIONBITMAP) وتعيين WS_CLIPSIBLINGS عليها ، ثم يمكن استخدام تكوين API و Directx interop لعرض المحتوى بخلفية شفافة ( مثل هكذا ) إلى هذه النافذة. لذلك ، لن تحتاج إلى إزالة جزر xaml ويجب أن تظل أشياء مثل أشرطة التمرير تعمل ، فقط جزء swapchainpanel سيتم استبداله. أو ربما إذا لم يفلح ذلك ، فيمكنك قطع ثقب فوق جزء لوحة المفاتيح باستخدام HRGN ، بحيث تصبح نافذة التكوين الموجودة تحتها مرئية. لا ينبغي أن يكون هناك أي تراجع ملحوظ في الأداء ينتقل من swapchainpanel إلى hwnd (على الأرجح)

تكمن المشكلة في متابعة حل بديل للقرصنة في أنه اختراق متطفل وعرضة للأخطاء بطبيعتها. من المرجح أن يدعم WinUI 3 الوظيفة المقترحة لذلك هناك خطط لتطبيقها ، إنها مجرد لعبة انتظار لسلسلة الأدوات الرسمية لدعمها. أكد المطورون بالفعل أنهم يتعاونون بشكل مباشر مع فريق WinUI في هذا الشأن.

(استنتاج كان واضحًا بالفعل ولم أساهم فيه بشيء مطلقًا)

لن أقول إنك لم تساهم بشيء - يسعدني دائمًا الحصول على تأكيد خارجي لبحثي الخاص. كنت سأكون أكثر سعادة إذا كنت قد أثبتت أنني مخطئ ووجدت طريقة فعالة للقيام بذلك 😉

كما ذكرنا سابقًا في هذا الموضوع - نحن نعمل مع فريق WinUI لإضافة هذا إلى WinUI 3.0. أعتقد أنه يتم تتبع ذلك في https://github.com/microsoft/microsoft-ui-xaml/issues/1247. هذا هو المسار الذي سنتبعه لإضافة هذه الميزة إلى Terminal ، لأن قيادة هذا الحل يعني أيضًا تشغيل ميزة منصة التطوير المهمة للنظام الأساسي بأكمله ، وهو ما سيساعد في تحسين التطبيقات الأخرى على Windows أيضًا.

كما ذكرنا سابقًا في هذا الموضوع - نحن نعمل مع فريق WinUI لإضافة هذا إلى WinUI 3.0. أعتقد أنه يتم تعقب ذلك في Microsoft / microsoft-ui-xaml # 1247 . هذا هو المسار الذي سنتبعه لإضافة هذه الميزة إلى Terminal ، لأن قيادة هذا الحل يعني أيضًا تشغيل ميزة منصة التطوير المهمة للنظام الأساسي بأكمله ، وهو ما سيساعد في تحسين التطبيقات الأخرى على Windows أيضًا.

نظرًا لأن فريق المحطة قد اختار اتجاهًا في هذا الاتجاه ، فهل يجب إزالة علامة "المساعدة المطلوبة"؟

tajetaje الصيد الجيد ، شكرا!

(استنتاج كان واضحًا بالفعل ولم أساهم فيه بشيء مطلقًا)

لن أقول إنك لم تساهم بشيء - يسعدني دائمًا الحصول على تأكيد خارجي لبحثي الخاص. كنت سأكون أكثر سعادة إذا كنت قد أثبتت أنني مخطئ ووجدت طريقة فعالة للقيام بذلك 😉

كما ذكرنا سابقًا في هذا الموضوع - نحن نعمل مع فريق WinUI لإضافة هذا إلى WinUI 3.0. أعتقد أنه يتم تعقب ذلك في Microsoft / microsoft-ui-xaml # 1247 . هذا هو المسار الذي سنتبعه لإضافة هذه الميزة إلى Terminal ، لأن قيادة هذا الحل يعني أيضًا تشغيل ميزة منصة التطوير المهمة للنظام الأساسي بأكمله ، وهو ما سيساعد في تحسين التطبيقات الأخرى على Windows أيضًا.

@ zadjii-msft ، أستطيع أن أرى كيف ستلعب WinUI دورًا في هذا الأمر ، لكني لست متأكدًا من كيفية وصولنا إلى هذه المشكلة بلا حدود. فيما يتعلق بالنتيجة الفعلية التي يلاحقها معظم الناس ، أعتقد أن هذا عرض جميل من # 743 ) لما يمكن أن يكون:

image

(استنتاج كان واضحًا بالفعل ولم أساهم فيه بشيء مطلقًا)

لن أقول إنك لم تساهم بشيء - يسعدني دائمًا الحصول على تأكيد خارجي لبحثي الخاص. كنت سأكون أكثر سعادة إذا كنت قد أثبتت أنني مخطئ ووجدت طريقة فعالة للقيام بذلك 😉
كما ذكرنا سابقًا في هذا الموضوع - نحن نعمل مع فريق WinUI لإضافة هذا إلى WinUI 3.0. أعتقد أنه يتم تعقب ذلك في Microsoft / microsoft-ui-xaml # 1247 . هذا هو المسار الذي سنتبعه لإضافة هذه الميزة إلى Terminal ، لأن قيادة هذا الحل يعني أيضًا تشغيل ميزة منصة التطوير المهمة للنظام الأساسي بأكمله ، وهو ما سيساعد في تحسين التطبيقات الأخرى على Windows أيضًا.

@ zadjii-msft ، أستطيع أن أرى كيف ستلعب WinUI دورًا في هذا الأمر ، لكني لست متأكدًا من كيفية وصولنا إلى هذه المشكلة بلا حدود. فيما يتعلق بالنتيجة الفعلية التي يلاحقها معظم الناس ، أعتقد أن هذا عرض جميل من # 743 ) لما يمكن أن يكون:

image

https://github.com/microsoft/microsoft-ui-xaml/issues/1247 يتتبع كلا من بلا حدود وشفافية

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات