Xterm.js: دعم تسلسل الهروب 1337 لإظهار الصور المضمنة

تم إنشاؤها على ١٧ مارس ٢٠١٧  ·  26تعليقات  ·  مصدر: xtermjs/xterm.js

تفاصيل

  • إصدار المتصفح والمتصفح: الكل
  • إصدار نظام التشغيل: الكل
  • إصدار xterm.js: 2.4.0

طلب المواصفات

هل هناك طريقة لعرض الصور من سطر الأوامر؟

إما عن طريق النقر على الصورة (يشبه إلى حد كبير ملحق linkify) أو عن طريق أمر:

$ cat holiday-beach-pic.png

help wanted typenhancement

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

+1 لتسلسلات الهروب المخصصة. أفضل مكان للبدء به هو تنفيذ واجهات OSC و DCS محلل فرعي ، حيث يمكن للمحلل الفرعي المخصص ربط المحلل اللغوي الرئيسي. كما أن المحلل اللغوي الرئيسي لا يزال به بعض عيوب رمز الهروب وما زالت مكتبة الاختبار بحاجة إلى إكمال لتغطية جميع التسلسلات الأساسية.

كان لدى Btw DEC بالفعل بعض الامتدادات الطرفية للرسومات وتحميل الصور (REGIS و SIXEL). لا يوجد دليل على ما إذا كان من المنطقي تنفيذ هذه الأشياء ، نظرًا لأن بيئة المتصفح الخاصة بـ xterm.js لديها قدرات أفضل بكثير لرسم مثل هذه الأشياء.

ال 26 كومينتر

من الممكن النقر فوق الارتباط لفتح الصورة عبر واجهة برمجة التطبيقات التجريبية في الوقت الحالي. إنه تجريبي لأنه من المحتمل أن يتغير ولكن هنا البنية الحالية:

// Add a link for a particular regex and handle when it's clicked.
xterm.registerLinkMatcher(/\w\.png/, function (mouseEvent, imageFile) => {
  // imageFile is the text of the link
});

نأمل أن يتم الانتهاء من واجهة برمجة التطبيقات في الإصدارين المقبلين.

مرحبا دانيال ، شكرا لك على ردك السريع! هل كنت أتساءل عما إذا كانت هناك طريقة لعرض لغة تأشير النص الفائق أثناء التنقل عبر مجموعة من أحرف التحكم؟ على غرار الطريقة التي يستخدم بها DomTerm تسلسلات "\ e] 72 ؛ \ أ"؟

https://lwn.net/Articles/670078/

من: Daniel Imms [email protected]
الرد على: "sourcelair / xterm.js" [email protected]
التاريخ: السبت 18 مارس 2017 الساعة 4:47 مساءً
إلى: "sourcelair / xterm.js" [email protected]
نسخة إلى: cristynkells [email protected] ، المؤلف [email protected]
الموضوع: Re: [sourcelair / xterm.js] كيفية عرض الصور في السطر (# 614)

من الممكن النقر فوق الارتباط لفتح الصورة عبر واجهة برمجة التطبيقات التجريبية في الوقت الحالي. إنه تجريبي لأنه من المحتمل أن يتغير ولكن هنا البنية الحالية:

// إضافة ارتباط لـ regex معين والتعامل معه عند النقر فوقه.
xterm.registerLinkMatcher (/ \ w.png / ، الوظيفة (mouseEvent ، imageFile) => {
// imageFile هو نص الرابط
}) ؛
-
أنت تتلقى هذا لأنك قمت بتأليف الموضوع.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

cristynkells ليس هناك الآن ، لا يدعم xterm القياسي أي شيء من هذا القبيل ، لذا إذا أردنا دعمه ، فسيتعين بالتأكيد أن يكون في ملحق.

تضمين التغريدة

من المؤكد أنه يجب أن يكون في ملحق

هل هذا مدعوم اليوم؟ الآن لا أرى كيف يمكن القيام بذلك حتى مع إضافة. أحاول بشكل أساسي التحقيق في ما يتطلبه الأمر لبناء شيء ما باستخدام مخططات مضمنة (شيء لدينا بالفعل في IDE ، PTVS ، RTVS ، Spyder ، وما شابه على سبيل المثال https://ipython.org/ipython-doc/3/ التفاعلية / qtconsole.html).

DonJayamanne منذ هذه المشكلة أصبحت على دراية

نفذت لعرض المحطات

نعم ، وجدت أن iTerm يقوم بذلك.

شكرا على العودة.

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

printf "\n\033]1337;File=;inline=1:`cat a.png | base64`\a\n"`

وقد استخدمته بالفعل في مشروع .

ebraminio إذا كنا

ztmr : يمكنك استخدام أوامر termcap الأخرى لتحريك المؤشر وعرض الصورة أينما تريد. هذا ما أفعله في jplot لإعادة رسم الصورة في مكانها.

rs : أوه ، بالطبع ، كيف يمكنني أن أنسى CUP! : س)

عفوًا ، تم تصنيف هذا بشكل غير صحيح. ستكون هذه ميزة رائعة للحصول على مساهمة ، فيما يلي بعض أفكاري:

  • هل نحتاج إلى طريقة قابلة للتوصيل لدعم تسلسل الهروب؟
  • ربما هذا يجب أن يعيش داخل الملحق؟
  • حاليًا كل صف بطول ثابت ، هل الصور التي سيتم عرضها ثابتة على هذه الشبكة أيضًا أم يجب أن يكون الحجم مختلفًا؟ على سبيل المثال مع ارتفاع الصف = 10 بكسل وارتفاع الصورة = 15 بكسل ، يجب أن تستهلك الصورة 15 بكسل أو 20 بكسل على الجهاز). إذا كان الأخير قد نرغب في معالجة https://github.com/xtermjs/xterm.js/issues/1140 أولاً.

+1 لتسلسلات الهروب المخصصة. أفضل مكان للبدء به هو تنفيذ واجهات OSC و DCS محلل فرعي ، حيث يمكن للمحلل الفرعي المخصص ربط المحلل اللغوي الرئيسي. كما أن المحلل اللغوي الرئيسي لا يزال به بعض عيوب رمز الهروب وما زالت مكتبة الاختبار بحاجة إلى إكمال لتغطية جميع التسلسلات الأساسية.

كان لدى Btw DEC بالفعل بعض الامتدادات الطرفية للرسومات وتحميل الصور (REGIS و SIXEL). لا يوجد دليل على ما إذا كان من المنطقي تنفيذ هذه الأشياء ، نظرًا لأن بيئة المتصفح الخاصة بـ xterm.js لديها قدرات أفضل بكثير لرسم مثل هذه الأشياء.

SIXEL مدعوم من قبل بعض البرامج (gnuplot) وبعض المحطات الطرفية (mlterm ، xterm) ، حتى أن هناك libsixel (https://github.com/saitoha/libsixel) لسهولة التحويل. يبدو أنه ليس ميتًا كما اعتقدت ...

غير متأكد من أمر OSC 1337 ، يبدو أن هذا مدعوم من قبل iterm2 فقط.

تحرير: راجع أيضًا وحدة تحكم jupyter و https://github.com/liftoff/GateOne ، كلاهما قادر على عرض الرسومات ، ولست متأكدًا مما إذا كانا قد اخترقاها حول / أعلى الجهاز على مستوى أعلى. قد تكون هذه ميزة إضافية لطيفة لـ xterm.js ، ولا يزال هناك شك حول ما إذا كان يجب أن يكون هذا جزءًا من الجهاز نفسه ، لأنه يثير العديد من الأسئلة من البيانات والحالة إلى تمثيل الإخراج.

من وجهة نظري ، سيكون دعم Sixel جيدًا لشيء يشبه لوحة القيادة. يمكن بسهولة إظهار المقاييس والأشياء الموجودة فيه - حتى أن هناك متصفحات ، iirc ، التي تدعم التقديم معها.

فيما يلي بعض لقطات الشاشة حول كيفية عمل موضع / تحديد الصورة في iterm2 ، لست متأكدًا تمامًا من كيفية عمل الهوامش حتى الآن.

screen shot 2018-07-24 at 6 48 52 am

screen shot 2018-07-24 at 6 53 49 am

أعتقد أن SIXEL هو السبيل للذهاب للصور ، كما أحرز بعض التقدم مع محلل SIXEL المبكر (https://github.com/jerch/node-sixel).
بمجرد أن ننتهي مع تخطيط المخزن المؤقت الجديد وإعادة صياغة العلامة / الديكور ، يجب أن يكون هذا مستقيمًا للتكامل.

في حين أن sixel هو "معيار" (وأعتقد أنه من المرغوب دعمه) ، إلا أنه معيار قديم إلى حد ما. إنه غير مناسب تمامًا للأجهزة أو البرامج أو سير العمل اليوم. قلة قليلة من الناس قد سمعوا بها ، وقلة قليلة من البرامج تنتجها أو تستهلكها. إنه غير فعال للغاية للصور الفوتوغرافية (لا يدعم العديد من الألوان جيدًا) ، وهو مقيد بالصور التي يكون ارتفاعها من مضاعفات 6.

مفهوم (إن لم يكن بالضرورة التفاصيل) لتسلسل الهروب 1337 أسهل كثيرًا بالنسبة لمعظم الأشخاص (والبرامج) للعمل معه: تشفير base64 لتنسيقات ملفات الصور القياسية الحالية: png و gif و jpeg و svg اختياريًا . أعتقد أن هذا هو الطريق للذهاب. بناء جملة 1337 صعب بعض الشيء (الخيار inline الافتراضي هو 0 - هاه؟) ، لكنه يعمل. هل هناك تسلسل هروب آخر له وظائف مشابهة تستخدمها محطات أخرى؟

(على الرغم من أن DomTerm لا يدعم تسلسل الهروب 1337 ، إلا أنه يدعم نفس الفكرة ، باستثناء أنه يجب عليك التفاف البيانات في عنصر <img> أو <svg> html. إضافة دعم لتسلسل الهروب 1337 يجب أن تكون تافهة.)

PerBothner Imho ، الجزء المهم هو # 1901 ، بمجرد حل السؤال عن كيفية التعامل مع الشبكة وطبقات "الصناديق الأجنبية" ، لا أرى أي سبب يمنعنا من دعم تنسيقات الصور التي يدعمها متصفح المتصفح. ولكن من أجل ذلك ، أود أن أرى مناقشة أوسع (على منصة egmontkob ؟) وربما إعادة التفكير في التسلسل. بالنسبة إلى sixel ، يكون التسلسل موجودًا بالفعل لمدة 30 ثانية ، ولا يزال المعالجة الصحيحة لحالة التمثيل متزعزعة (مرة أخرى # 1901).

أتفق تمامًا مع أحدث تعليق لـ jerch .

لقد أنشأت مشكلة على موقع freedesktop.org terminal-wg لمحاولة توحيد "عرض الصور البسيط". آمل أن نتمكن من الحصول على اتفاق بشأن تسلسل هروب شبه محمول مناسب. ربما تسلسل هروب 1337 (على الرغم من وجود بعض المشكلات) ؛ ربما شيء آخر.

أعتقد أنه يمكن تقسيم هذا إلى قضيتين:

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

  2. استضافة محتوى DOM غريب ، في هذه الحالة صورة ، لكن المحتوى الآخر له نفس الخصائص: عنصر DOM مع x ، y ، w ، h بالنسبة لشبكة فرعية من الخلايا على شبكة الأحرف الخاصة بالمحطة الطرفية.

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

  • حاليًا كل صف بطول ثابت ، هل الصور التي سيتم عرضها ثابتة على هذه الشبكة أيضًا أم يجب أن يكون الحجم مختلفًا؟ على سبيل المثال مع ارتفاع الصف = 10 بكسل وارتفاع الصورة = 15 بكسل ، يجب أن تستهلك الصورة 15 بكسل أو 20 بكسل على الجهاز). إذا كان الأخير قد نرغب في معالجة # 1140 أولاً.

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

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

قد فعلت:

https://github.com/xtermjs/xterm.js/blob/bd0d267d972a1aab4777cddecf9bf8196d7aa44f/typings/xterm.d.ts#L1060 -L1127

ربما يكون تعليقي قديمًا بعض jerch هو الشخص الرئيسي الذي ينظر إلى الصور بهذا ، https://github.com/xtermjs/xterm.js/pull/2503 و https://gitlab.freedesktop.org / Terminal-wg / المواصفات / القضايا / 12

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

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

قد يكون ممكنًا بالفعل مع الامتداد ، لست متأكدًا مما إذا كانت المعالجات المخصصة يمكنها ربط مجموعة معينة من الأعمدة / الصفوف وعرض ارتفاع أي منهما لتقديم عدة صفوف مخصصة؟

تعال إلى هذا بعد اكتشاف تنسيقات sixel ولاحظت أنها غير متوفرة في المحطات التي أستخدمها كثيرًا (أحدها هو vs code).

@ tracker1 راجع # 2503 لمعرفة حالة التطوير الحالية.

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