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)
Ответ на: комментарий от cocucka_B_TECTE

ведь давно уже есть .chm

Его давно уже нет, к сожалению.

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

А это излом в GCC, он стал строже со временем. Флажок -fcommon отключает это поведение.

Неа, это не оно.

Чтобы это починить, нужно собирать с -Wno-error=implicit-function-declaration.

Там хитрая цепочка слома логики сборки.

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

Это он не осилил.

Млять, я запускаю qman, нажимаю Shift + A, пишу print, и у меня отображается список всех страниц, где есть что-то про print. Ты уверен, что это я не осилил, а не вы вдвоём не осилили почитать README к программе? А я вот уверен. что неосиляторы README как раз вы.

Давайте еще психологическую поддержку другу окажите, на тему того что ТС притесняет вас и GNU.

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

Пейджер с гиперссылками из 230 хаскелевых пакетов. Браво, мать его, просто браво.

Ты каждый день пересобираешь пейджер?

Браво, мать его, просто браво. (c) xDDD

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

Аффвтор в своём PKGBUILD-е умудрился собрать просто все пункты из списка «как не надо делать». Вот по порядку.

Думаю, что в исходниках там такое же говнище Не, уже не «думаю», подтверждаю, говнище. Но зато «на Си с минимумом зависимостей», дооо.

Аффтар этого коммента как всегда не написал ничего конкретного.

Думаю, что конкретики и не будет. Не, уже не думаю, посмотрел комменты в теме до конца: подтверждаю, аффтар балаболит.

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

Я всего-лишь заметил, что GNU info гораздо более цельная концепция, лол. Ты автор что ли этого qman? Если нет, почему тебя это так тригернуло-то?

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

Чел, это не я уже которое сообщение в теме пишу в качестве адвоката GNU info. Заметь, адвоката оффтопного, потому что про GNU info речь в ОП не шла, и её обсуждение ты сюда сам притащил.

При этом ты еще общаешься в стиле «ты такой смешной когда бомбишь» и «почему тебя это так тригернуло-то», то есть сам берешь и записываешь себя в клоуны. Тебе это нравится? Ну ладно.

Так что триггернуло тут не меня.

Как пару дней назад было сказано @thunar в другой теме:

«Адекватные дефолты — это то что почему-то у большинства любителей линакс-way вызывает острую когнитивно-анальную боль. Ведь если что-то изначально сделано так, что не требует доводки и возни, то […]»

Данная тема внезапно стала очередной иллюстрацией этого утверждения.

гораздо более цельная концепция

Дрочить на концепции вместо реальных кейсов применения ПО — это еще одна фича посетителей данного форума.

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

сообщество пишет локализованные ман-страницы по любой теме

Установив, $RANDOM_APP_NAME, ты с вероятностью, близкой к 100%, найдёшь там только англоязычные маны.

Более того, даже если маны русскоязычные:

  • Нет никакой гарантии, что они содержат актуальную информацию по сравнению с оригиналом.
  • Нет никакой гарантии, что они содержат корректную и полную информацию по сравнению с оригиналом.
  • По ним сложнее искать.

Так что русскоязычные маны, к сожалению, тоже не вариант.

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

С другой стороны, непонятно зачем для сборки небольшой консольной утилиты на C требуется Pandoc.

Pandoc нужен, чтобы собрать qman.1 из qman.1.md.

Это как бы ладно.

Но гораздо интереснее, зачем программе cog. Описание ключей конфига и его парсинг вполне возможно сделать средствами Си и встроенного макропроцессора. Но автор решил пойти сложным путём почему-то.

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

Чел, это не я уже которое сообщение в теме пишу в качестве адвоката GNU info. Заметь, адвоката оффтопного, потому что про GNU info речь в ОП не шла, и её обсуждение ты сюда сам притащил.

Канешно. Потому что вся инфраструктура вокруг манпейджей – убога до усрачки. Почему бы не вспомнить про то, что кто-то когда-то смог сделать правильно?

Дрочить на концепции вместо реальных кейсов применения ПО — это еще одна фича посетителей данного форума.

Зачем дрочить на концепты? Мы их обсуждаем. Ты странный.

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

Разговор выглядит так:

— Вот прога для удобного чтения манов.
— GNU info рулез! В манах убогая инфраструктура!
— Мне их читать, а не писать. У GNU info всратый UI.
— Неть!!! Вот тебе костыль1! А вот костыль2! А еще автор сабжа пишет код как-то неправильно!
— Это костыли, и они не реализуют полный набор фич сабжа.
— GNU info рулез! В манах убогая инфраструктура!
wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от cumvillain

А теперь ещё и читалка из 320 пакетов на хаскеле :D

Это makedepends.

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

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

Еще насчёт pandoc-а забыл в предыдущий коммент написать:

https://aur.archlinux.org/packages/pandoc-bin

Pandoc - executable only, without 750MB Haskell depends/makedepends

Using this package will waste instead of save disk space if:

* You're a haskell developer and need the shared libraries/compilers/etc. anyway.
* You have >10 other statically-linked haskell packages around the same size as Pandoc (in which case you'll get a saving from making them all dynamically linked).

Neither of these scenarios is particularly likely.

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

У автора pandoc’ом собирается его собственный ман. Не вижу в этом ничего предосудительного.

/me гомерически хохочет

Вообще, у всей это старой юниксовой срани (m4, roff, Makefile) есть одна общая черта – рано или поздно это проще начать генерить, чем писать руками.

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

Что плохого в том, что ман доступен и как .md и как собственно ман? Ты реально ерунду какую-то пишешь.

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

рано или поздно это проще начать генерить, чем писать руками

рано или поздно

начать

Разве что если ты в 00-х, лол.

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

Что плохого в том, что ман доступен и как .md и как собственно ман? Ты реально ерунду какую-то пишешь.

То, что в отличии от какого-нибудь (кхе-кхе) info, man нельзя прочитать без пейджера, его можно только написать. mdocml слегка улучшил ситуацию, но тоже так себе. В итоге есть:

  • asciidoctor
  • pandoc
  • scdoc

и ещё с десяток генераторов из несовместимых друг с другом форматов. Это просто праздник какой-то :D

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

Как и 98% тупых историй в ойти, она исторически сложилась.

А зачем нам нужен

Жду, когда ты откроешь для себя HTML :>

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

Лови инопланетянина.

Ты ещё скажи, что XML — отличный человекочитаемый формат конфигурации.

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

рано или поздно это проще начать генерить, чем писать руками.

Поэтому Столлман решил не откладывать на потом и начать пораньше:

“Info files” are typically the result of processing Texinfo
files with the program ‘texi2any’
wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Ага. У тебя один формат на входе, который компилируется в один формат на выходе. С man page у тебя есть три формата на выходе, которые планировали писать руками, и 15 форматов на входе.

cumvillain
()
Ответ на: комментарий от intelfx

Если ты имеешь в виду наборы макросов troff, то их два.

Есть BSDшный, который mandoc. Он в OpenBSD, MacOS и кажется FreeBSD (не уверен). И есть groff с troff/nroff xD

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

который компилируется в один формат на выходе

Напомню, что мы говорим о формате, в котором жестко забито форматирование под 80 столбцов. И если мы откроем его в более широком терминале, то увидим кучу пустого места. А если в более узком — вот вот это:

https://ibb.co/Lr3rdf3

На дворе 2024-й год. Тоже напомню.

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

Напомню, что мы говорим о формате, в котором жестко забито форматирование под 80 столбцов.

И чо? В md тоже форматирование 80/100/120 столбцов, это мешает его рендерить в зависимости от разрешения экрана что ли?

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

С man page у тебя есть три формата на выходе, которые планировали писать руками, и 15 форматов на входе.

Это неминуемая судьба любой успешной технологии.

один формат на входе, который компилируется в один формат на выходе

А это судьба неуспешной.

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

это мешает его рендерить в зависимости от разрешения экрана что ли?

Не ко мне вопрос. Вопрос к разрабам GNU info.

Ни в редакторах md, ни в man page viewer-ах такой фигни нет.

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

Это просто сложившаяся система костылей.

И это тоже судьба любой успешной технологии.

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

Когда у тебя ситуация, в которой есть только один продюсер формата и только один потребитель, иными словами это называется: «данный формат никому не нужен».

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

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

/me рыдает в истерике

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

/me рыдает в истерике

Столкновение с реальностью жестоко, когда живешь в мире грёз.

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

Ладно, на самом деле интересно другое – чем это лучше vim? Потому что в нем это есть.

Тем, что vim это сложившаяся система костылей xDD

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

Но они есть. Хотя, конечно, современное поколениет быстрее найдёт эти Маны в интернете.

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

Ты сказал про формат :D

А ты сказал про более технологичную GNU info. Более технологичную чем что, чем cat?

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от irton
==> Запускается build()...
The Meson build system
Version: 1.4.0
Source dir: /home/user01/AUR/qman-git/src/qman-git/src
Build dir: /home/auser01/AUR/qman-git/src/qman-git/build
Build type: native build
Project name: qman
Project version: nightly
C compiler for the host machine: ccache cc (gcc 14.1.1 "cc (GCC) 14.1.1 20240522")
C linker for the host machine: cc ld.bfd 2.42.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program cog found: YES (/usr/bin/cog)
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.1
Run-time dependency ncursesw found: YES 6.5.20240427
Run-time dependency inih found: YES 58
Program pandoc found: NO

src/meson.build:43:9: ERROR: Program 'pandoc' not found or not executable
greenman ★★★★★
()

Но почему и эти товарищи не сделали в qman хотя бы строки с шорткатами? Как пользователь должен догадаться, какие кнопки за что отвечают? Опять идти читать всратый хелп?

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

Press 'h' for help or 'q' to quit

Это все равно, что зашел на сайт, меню нет, а навигация по разделам разбросана ссылками внутри текста:

«Добро пожаловать на наш замечательный сайт! Мы тут занимаемся выведением гибридов ежей и ужей. У нас вы можете заказать покупку корма. Кормите животных правильно! А еще вы можете купить специальную клетку, чтобы животные чувствовали себя хорошо. Надеемся, что наш сайт вам понравился, ведь его сделали лучшие дизайнеры гусиного перегона!»

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

[ Menu: m,  Help: h,  Quit: q ]

И вообще, непонятно что нажимать чтобы выбрать интересуемый термин. А как делать поиск? UI-дезигнеры вообще ни о чем не думают?

Xintrea ★★★★★
()

Обнаружил неприятное – текст не выделяется мышью, в отличие от man.

Починилось (как ни странно) добавлением в конфиг:

[mouse]
enable=false

При этом скроллинг мышью работает.

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