yarkov
@yarkov
Проект "Жизнь после смерти" - lifeafterdeath.ru

Можно ли в терминале отобразить кликабельный путь к файлу?

Конкретная хотелка такая ))

В процессе сборки проекта в терминал выводятся такие строки:
Сборка компонента "CardsCarousel" (/usr/app/vueapp/src/webparts/CardsCarousel/entry.ts) завершена


Можно ли путь
/usr/app/vueapp/src/webparts/CardsCarousel/entry.ts
сделать кликабельным как гиперссылку? И по клику открыть например Nautilus или открыть файл в VSCode.

Терминал стандартный убунтовский. Если можно сделать кроссплатформенно, то вообще гуд.

P.S. Гуглил, но возможно сегодня меня забанили там.
  • Вопрос задан
  • 296 просмотров
Решения вопроса 2
karabanov
@karabanov Куратор тега Ubuntu
Системный администратор
file:///usr/app/vueapp/src/webparts/CardsCarousel/entry.ts

Будет подсвечен, как ссылка, если зажать Ctrl и клацнуть левой кнопкой, то файл откроется в программе которая назначена обработчиком файлов *.ts - вероятно в текстовом редакторе.
Ответ написан
@Vindicar
xterm и совместимые терминалы умеют обрабатывать события мыши. На том же stackoverflow можно найти вот такой код:
echo -e "\e[?1000;1006;1015h" # Enable tracking
echo -e "\e[?1000;1006;1015l" # Disable tracking

Это на баше, разумеется. Выводишь правильную escape-последовательность, и терминал будет слать тебе соыбтия мыши как другие escape-последовательности на стандартный вход программы.
Mouse click looks like \e[<0;3;21M and a release \e[<0;3;21m. Where 3 is x and 21 is y, from top-left 1-based. (Note that it is x-y and not row-col).

Но такой подход оставляет проблему отслеживания положения кликабельного текста, и требует, чтобы твоя программа продолжала работать.

Предположительно, некоторые терминалы могут также переварить вот такое:
echo -e '\e]8;;http://example.com\aThis is a link\e]8;;\a'

Но для твоей задаче потребуется, чтобы система имела схему URL для открытия папки с файлом, типа file:// или еще чего-то подобного.

Ну а виндовый терминал очень ограниченный, так что кроссплатформенность малореальна. Хотя какие-то реализации curses под винду всё же есть.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
urxvt терминал наверняка так умеет. Он всё умеет. Например у него стандартный extension -- matcher. Можно попробовать наконфигить в ~/.Xresource что нибудь вроде такого
URxvt.perl-ext-common:      default,matcher
# key bindings
URxvt.matcher.button:       1
URxvt.keysym.C-Delete:    matcher:last
URxvt.keysym.M-Delete:    matcher:list
# regexps
URxvt.matcher.pattern.1: (?:\\s)([\\~\\.]?\\/\{1,1\}[\\.\\w]\\S+)\\b
# launchers
URxvt.matcher.launcher.1:  VSCode $1
URxvt.urlLauncher:          xdg-open
# change the font highlight style
!URxvt.matcher.rend.1:          Uline fg01
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
можно использовать alacritty
Hints
правим конфиг, конкретнее смотри: alacritty.yml#L458
как пример:
hints:
  enabled:
  - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
            [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
    command: xdg-open
    post_processing: true
    mouse:
      enabled: true
      mods: None
    binding:
      key: U
      mods: Control|Shift

  - regex: "/[[:graph:]]{0,}.(txt|ts)"
    command: /usr/bin/code
    post_processing: true
    mouse:
      enabled: true
      mods: None


при клике мышкой на /usr/app/vueapp/src/webparts/CardsCarousel/entry.ts , из вашего примера, запустит в программе vscode (/usr/bin/code) данный файл

плюс сам alacritty кроссплатформенный, то есть работает нативно и под виндой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы