LINUX.ORG.RU
ФорумTalks

qman — man page viewer здорового человека

 , qman,


0

3

Откопал ссылку на такую штуку в Арчевики. Простая программа, реализующая для man pages в терминале то, что еще 35 лет назад было в справочных системах под DOS-ом, + большее.

  • Страницы оглавлений, отображающие все маны, установленные в системе, сгруппированные по категориям
  • Интерактивный инкрементальный apropos и whatis (search as you type)
  • Инкрементальный поиск по странице
  • Активные гиперссылки на другие маны
  • Активные гиперссылки на http(s) и email адреса.

Навигация вверх-вниз по странице сделана максимально удобным образом:

  • Если в направлении листания на экране есть следующая ссылка, фокус переходит к ней.
  • Если в направлении листания на экране следующей ссылки не видно, текст сдвигается на 1 строку.

Программа реализована на Си с минимумом зависимостей.

Зависимости в собранном виде и размер:

vadim@aquila:~$ ldd /usr/bin/qman
	linux-vdso.so.1 (0x00007dbe6007f000)
	libncursesw.so.6 => /usr/lib/libncursesw.so.6 (0x00007dbe5ffa3000)
	libinih.so.0 => /usr/lib/libinih.so.0 (0x00007dbe5ff9e000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007dbe5fdb2000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007dbe60081000)
vadim@aquila:~$ ls -lh /usr/bin/qman
-rwxr-xr-x 1 root root 116K мая 29 11:43 /usr/bin/qman

Сорцы и скриншоты тут: https://github.com/plp13/qman

★★★

Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от dataman

При зажатом shift эмулятор терминала принудительно выделяет текст мышью, независимо от того, что по этому поводу думает приложение.

Во всяком случае, в моём терминале работает. Не знаю, как в вашем)

Позволяет выделить любой текст, хоть интерфейс mc.

wandrien ★★★
() автор топика
Ответ на: комментарий от dataman

Управление мышью вообще не сделано, насколько я понял. Только какие-то наброски к нему.

Например, тыкнуть мышью в ссылку можно (и она выделится). А перейти по ссылке – нет.

wandrien ★★★
() автор топика
Ответ на: комментарий от wandrien

При зажатом shift эмулятор терминала принудительно выделяет текст мышью

Да, в WezTerm тоже так. Но часто нужен и двойной клик по слову.

dataman ★★★★★
()
Ответ на: комментарий от Xintrea

Должно быть хотя бы так:

Ненужно. Там управление элементарное и запоминается за 2 минуты. Это не emacs.

wandrien ★★★
() автор топика
Ответ на: комментарий от dataman

Но часто нужен и двойной клик по слову.

Хм, никогда об этом не задумывался.

Проверил на mc: shift + двойной клик выделяет слово.

wandrien ★★★
() автор топика
Ответ на: комментарий от wandrien
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
grave bugs of lilyterm (→ 0.9.9.4+git20150208.f600c0-5+b2) <Outstanding>
 b1 - #970419 - lilyterm: No longer starts (likely related to VTE changes)
Summary:
 lilyterm(1 bug)
Are you sure you want to install/upgrade the above packages? [Y/n/?/...]

2015

Ладно, попробую. :)


Упал.

(lilyterm:31233): VTE-CRITICAL **: 16:20:38.736: void vte_terminal_match_set_cursor_type(VteTerminal*, int, GdkCursorType): assertion 'tag >= 0' failed

(lilyterm:31233): VTE-CRITICAL **: 16:20:38.736: void vte_terminal_match_set_cursor_type(VteTerminal*, int, GdkCursorType): assertion 'tag >= 0' failed

(lilyterm:31233): VTE-CRITICAL **: 16:20:38.736: void vte_terminal_match_set_cursor_type(VteTerminal*, int, GdkCursorType): assertion 'tag >= 0' failed

(lilyterm:31233): VTE-CRITICAL **: 16:20:38.736: void vte_terminal_match_set_cursor_type(VteTerminal*, int, GdkCursorType): assertion 'tag >= 0' failed
dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от dataman

Это в какой ОС?

У меня древний пакет:

$ pacman -Qi lilyterm 
Название             : lilyterm
Версия               : 0.9.9.2-2
Описание             : A light and easy to use libvte based X terminal emulator
Архитектура          : x86_64
URL                  : http://lilyterm.luna.com.tw/index_en.html
Лицензии             : GPL3
Группы               : Нет
Предоставляет        : Нет
Зависит от           : vte
Доп. зависимости     : Нет
Требуется            : Нет
Опционально для      : Нет
Конфликтует с        : Нет
Заменяет             : Нет
Установленный размер : 651,00 KiB
Сборщик              : Kyle Keen <keenerd@gmail.com>
Дата сборки          : Пт 16 авг 2013 07:19:47
Дата установки       : Сб 28 янв 2017 22:58:54
Причина установки    : Явно установлен
Установочный скрипт  : No
Проверен             : SHA-256

Пришло время форкнуть lilyterm, что ли. Давно хотел.

wandrien ★★★
() автор топика
Ответ на: комментарий от wandrien

Там управление элементарное и запоминается за 2 минуты

На основе чего запоминается? Откуда брать информацию об управлении?

А в течении какого времени вспоминается?

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

На основе привычности к другим подобным программам.

wandrien ★★★
() автор топика
Ответ на: комментарий от greenman

во, у меня такой патч (md2man есть в репах, а pandoc нету):

diff -ruN a/meson.build b/meson.build
--- a/meson.build	2024-05-13 03:14:21.000000000 +0900
+++ b/meson.build	2024-05-29 21:56:24.557432975 +0900
@@ -40,12 +40,12 @@
 )
 
 # Manual page
-pandoc = find_program('pandoc')
-pandoc_cmd = [pandoc, '@INPUT@', '-s', '-t', 'man', '-o', '@OUTPUT@']
+md2man = find_program('md2man')
+md2man_cmd = [md2man, '-output', '@OUTPUT@', '@INPUT@']
 custom_target('manpage',
   input: 'qman.1.md',
   output: 'qman.1',
-  command: pandoc_cmd,
+  command: md2man_cmd,
   install: true,
-  install_dir: 'man/man1'
+  install_dir: 'share/man/man1'
 )
irton ★★★★★
()
Ответ на: комментарий от irton

md2man

Можно заменить на lowdown -s -tman <input_file> -o <output_file>.

dataman ★★★★★
()
24 февраля 2025 г.
Ответ на: комментарий от dataman

Для сборки нужен cog, но в De*an это совсем другой пакет. Нужно установить python3-cogapp.

Нет.

> cat /etc/issue.net
Debian GNU/Linux 11

> apt-get install python3-cogapp
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
E: Невозможно найти пакет python3-cogapp


Похоже, в Debian надо ставить пакет cog, а строку в meson.build менять не нужно.

Но конечно же, дело на cog не заканчивается:
Run-time dependency inih found: NO (tried pkgconfig and cmake)

src/meson.build:31:0: ERROR: Dependency "inih" not found, tried pkgconfig and cmake

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Для сборки нужен cog, но в De*an это совсем другой пакет. Нужно установить python3-cogapp.

Нет.

У меня Devuan/Ceres, так что не «нет».

Похоже, в Debian надо ставить пакет cog

Вряд ли:

Package: cog
Version: 0.18.4-1
Priority: optional
Section: web
Maintainer: Alberto Garcia <berto@igalia.com>
Installed-Size: 378 kB
Depends: libc6 (>= 2.34), libcairo2 (>= 1.6.0), libdrm2 (>= 2.4.75), libegl1, libepoxy0 (>= 1.0), libglib2.0-0t64 (>= 2.79.0), libinput10 (>= 1.4.0), libmanette-0.2-0 (>= 0.1.2), libsoup-3.0-0 (>= 2.32.2), libudev1 (>= 183), libwayland-client0 (>= 1.20.0), libwayland-cursor0 (>= 1.0.2), libwpe-1.0-1 (>= 1.14.0), libwpebackend-fdo-1.0-1 (>= 1.10.0), libwpewebkit-2.0-1 (>= 2.42.0)
Homepage: https://github.com/Igalia/cog
Download-Size: 93.7 kB
APT-Sources: https://pkgmaster.devuan.org/merged ceres/main amd64 Packages
Description: Single-window web browser based on WPE WebKit
 Cog is a small, single-window web browser based on WPE WebKit.
 It provides no user interface and is suitable to be used as a webapplication container for embedded devices in kiosk mode.

А вот нужный:

Package: python3-cogapp
Version: 3.4.1-1
Priority: optional
Section: python
Source: python-cogapp
Maintainer: Debian Python Team <team+python@tracker.debian.org>
Installed-Size: 162 kB
Depends: python3:any
Homepage: https://github.com/nedbat/cog
Download-Size: 28.1 kB
APT-Manual-Installed: yes
APT-Sources: https://pkgmaster.devuan.org/merged ceres/main amd64 Packages
Description: cog content generation tool
 Cog is a file generation tool. It lets you use pieces of Python code as generators in your source files to generate whatever text you need.
 .
 Cog transforms files in a very simple way: it finds chunks of Python code embedded in them, executes the Python code, and inserts its output back into the original file. The file can contain whatever text you like around the Python code. It will usually be source code.
dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от Xintrea

В общем, для этого мезона в Debian надо доустанавливать, как минимум, еще пакеты:

- cog
- libinih-dev
- libbz2-dev

Но даже с ними будут предупреждения:

src/meson.build:44: WARNING: Passed invalid keyword argument "install_tag".
WARNING: This will become a hard error in the future.
meson.build:17: WARNING: Passed invalid keyword argument "install_tag".
WARNING: This will become a hard error in the future.

Xintrea ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)