В основном я пишу клиентскую программу, которая получает ответ и журналы с сервера, клиент также может отправлять запрос на сервер для получения различной информации. Я использовал проклятия, и вывод выглядит довольно хорошо. Это похоже на VI, вывод вверху и ввод команды пользователем на стороне клиента внизу. Единственное, я не могу прокрутить назад. Мой босс сказал мне сделать это как «больше команд в Linux», и я хочу придерживаться своего решения и добавить полосу прокрутки сбоку для окна вывода... Я был Сервер мышления отправляет журналы случайным образом, и почти невозможно (или слишком сложно) сделать так, чтобы это выглядело более...
Добавьте полосу прокрутки на Ncurses или сделайте так, чтобы она понравилась больше
Ответы (3)
Если вы поддерживаете список или массив строк в своем клиенте и просите ncurses отрисовывать диапазон строк в виде скользящего окна, вы можете перемещать свое окно вверх и вниз в ответ на ^F ^B ^U ^D ^Y ^E
команды, которые просто перерисовывают экран с разными индексами.
Я бы не стал пытаться рисовать полосу прокрутки: это выглядело бы неуместно в системе Linux. Даже mc
не имеет полос прокрутки. Просто покажите сводку содержимого в нижней строке, подобно Top
, Bot
, All
, N%
vim
, когда :set ruler
включено, это будет чувствовать себя как дома.
Я не совсем уверен, спрашиваете ли вы, как реализовать прокрутку или как нарисовать полосу прокрутки с помощью ncurses. Моя догадка вторая.
Предполагая, что ваш ncurses скомпилирован с поддержкой Unicode (не забудьте правильно установить среду при инициализации ncurses, загляните в «setlang»), вы можете использовать следующие символы:
Unicode:
▲ - U+25B2 BLACK UP-POINTING TRIANGLE
▼ - U+25BC BLACK DOWN-POINTING TRIANGLE
▮ - U+25AE BLACK VERTICAL RECTANGLE
ASCII:
176 - ░ Light shaded block
177 - ▒ Medium shaded block
178 - ▓ Dark shaded block
219 - █ Block block
Написание кода для отображения темного блока в нужном месте должно быть довольно простым.
Если я неправильно понял ваш вопрос, мои извинения.
Другой вариант — переписать ваш клиент как IRC bot или IM клиент. Пользователи отправляют сообщения либо клиенту напрямую, либо по определенному каналу, а бот выполняет действие и отправляет обратно все необходимые ответы.
Прелесть в том, что вы можете пропустить все элементы пользовательского интерфейса самостоятельно — прокрутите назад, и история будет обрабатываться через irssi или xchat или какой-то другой клиент. Пользователи могут запускать клиент, который им нравится больше всего.
Ведение журналов может осуществляться через центральный механизм, публиковаться для всего мира или передаваться конкретным менеджерам/администраторам по мере необходимости.
Недостатком является то, что вам нужно поддерживать и запускать сервер IRC или сервер XMPP. Если вы уже используете их где-то еще в организации, и их целесообразно использовать для этой цели, рычаги могут быть оправданы. Если вы еще не используете его, экономия на клиенте может не стоить расходов на поддержку еще одного сервиса.
Команда, в которую я входил в прошлом, любила иметь интерфейс IRC для BuildBot, чтобы сообщать о проверках, успешной сборке, ошибках сборки, успешном тестировании, неудачных тестах, для нашей непрерывной интеграции сборки и настройки тестирования.
more(1)
поддерживает только возврат к файлам, а не каналы, поэтомуls -laR | more
не позволяет прокручивать назад. Это была одна из основных особенностейless(1)
, когда она была впервые представлена. :) - person sarnold   schedule 08.07.2011