This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License. See the LICENSE file for details.
Tired of htop and its limited forks? Meet LIMbo – a powerful, intuitive, and highly functional Text User Interface (TUI) for monitoring your Linux system and navigating your Docker environments. Designed for speed and ease of use, LIMbo goes beyond basic monitoring, offering deep insights and seamless directory transitions with minimal keystrokes.
Traditional TUI monitors like htop often fall short on functionality, especially when managing complex Docker setups or frequently jumping between project directories. LIMbo was born out of the need for a more comprehensive and ergonomic tool. My design philosophy prioritizes efficiency: even navigation scripts (l.sh, b.sh) are named to be single-hand accessible and quickly tab-completed for a fluid workflow.
The core lim command launches a powerful, interactive TUI system monitor, offering real-time insights into your system's performance and processes.
- Comprehensive Overview: Displays CPU, Memory, GPU, Disk I/O, Network I/O, Load Averages, Uptime, and general system information
- Dynamic Process List:
- Detailed Process Information: View PID, Username, CPU Usage, Memory Usage (RSS and VMS), and a "smart" display name for processes
- Smart Process Naming: Automatically translates common executable names (e.g.,
python3,node,mysqld) into more descriptive labels (e.g., "Python Script", "Node.js", "MySQL"). For Java processes, it attempts to extract the JAR name. - Memory Change Indicator: Easily spot processes with increasing (
+), decreasing (-), or unchanged (*) Resident Set Size (RSS) since the last refresh. - Resource Highlighting: Processes consuming significant CPU or Memory are highlighted for quick identification.
- Interactive Sorting: Sort the process list by various metrics (RSS, CPU, MEM%, PID, VMS, Name) by pressing
Tab(forward) orShift+Tab(backward). Specific keys (r,c,m,p,v,n) also directly sort by RSS, CPU, Memory, PID, VMS, and Name respectively. - Search/Filter: (Planned for future, not yet implemented)
- Interactive Modes: Toggle specialized views for targeted actions
- Docker Mode (
d): Filters the process list to show only Docker container processes- Container Identification: Clearly shows the associated Docker container name or short ID
- Docker Actions (Enter): When a Docker process is selected, pressing
Enteropens a menu to:- Inspect (
i): Rundocker inspectand display detailed container information in a popup - Restart (
r): Immediately restart the selected Docker container. - Shell (
s): Provides thedocker exec -it <container_id> /bin/bashcommand for easy copying to open a shell inside the container.
- Inspect (
- Killer Mode (
k): Enables a "kill" confirmation menu for selected processes.- Signal Confirmation (Enter): When a process is selected, pressing
Enterbrings up a prompt to sendSIGTERM(s) orSIGKILL (-9)(k).
- Signal Confirmation (Enter): When a process is selected, pressing
- Docker Mode (
- Navigation: Use
↑/↓for line-by-line navigation,PgUp/PgDnfor page scrolling, andHome/Endto jump to the top/bottom of the list. Mouse click selection is also supported. - Help (
h): Access an in-app help screen with keybindings and feature explanations. - Refresh (
r): Force a refresh of the Docker cache.
This dedicated TUI allows you to quickly go to Docker Compose project directories or custom bookmarked paths.
- Combined List: Displays both Docker containers (with their compose path and status) and custom directory bookmarks in a single, sortable list.
- Quick Navigation (
gorEnter): Select an item and pressgorEnterto generate one-time navigation scripts (l.shandb.sh) in your current directory.l.sh: A tiny, self-deleting script thatcds you into the target directory and launches a newbashshell. It informs you how to return to your original directory.b.sh: Created inside the target directory, this script brings you back to your original working directory. Both scripts self-delete after a few seconds for cleanliness. This means you can type./l.sh(with Tab completion) from anywhere to instantly jump to your project, and./b.shto return.
- Docker Inspect (
i): Similar to the main monitor, pressingion a Docker entry runsdocker inspectfor detailed information. - Bookmark Management:
- Add Bookmark (
a): Interactively add a new bookmark with a name and a target path (defaults to current directory). - Delete Bookmark (
d): Delete the currently selected bookmark.
- Add Bookmark (
Beyond the TUIs, LIMbo provides a set of powerful command-line utilities for quick tasks, with Bash completion for common arguments.
lim inspect <container_id_or_name>(lim i): Displaysdocker inspectoutput for a given container, with Rich formatting if available.lim go <container_id_or_name>: Generatesl.shandb.shscripts to jump to the Docker Compose directory of a specified container.lim updatecache: Forces an immediate refresh of the Docker container cache, used by both TUIs and CLI commands. This cache normally updates every 5 minutes via a cron job.lim tp <bookmark_name>: Jumps to a bookmarked directory, similar tolim gobut for custom paths.lim tp add <name> [path]: Adds a new bookmark. Path defaults to current directory.lim tp del <name>: Deletes a bookmark.lim tp list: Lists all saved bookmarks in a nicely formatted table.
The idea behind l.sh (for Launch) and b.sh (for Back) is pure ergonomics. They are intentionally short, one-character names to minimize typing. Combined with Bash tab-completion (./l.<TAB>), they offer an unparalleled speed for navigating to deeply nested project directories or Docker Compose folders, far surpassing traditional cd commands or complex aliases.
When you use lim tui or lim go, these scripts are temporarily created in your current directory. This means you don't need to worry about managing them; they appear when you need them and self-delete shortly after use. The l.sh script immediately takes you to the target directory and drops you into a new shell, providing a seamless transition. The b.sh script, created in the target directory, lets you return to where you started with the same single-hand, quick-completion convenience.
-
Clone the repository:
git clone https://github.com/srose69/Lim cd lim -
Run the installer:
chmod +x install.sh sudo ./install.sh
The installer will:
- Update package lists and install core dependencies (
python3,pip,jq,python3-venv). - Install Python libraries (
psutil,rich,docker). - Check for and install Docker if not present, and add your user to the
dockergroup (requires logout/login ornewgrp dockerto take effect). - Copy LIMbo scripts to
/usr/lib/limand create symlinks (lim,lim_update_cache.py) in/usr/local/binand/usr/local/sbin. - Set up a cron job to automatically update the Docker cache every 5 minutes.
- Install Bash completion for
limcommands to/etc/bash_completion.d/.
Note: If you are added to the
dockergroup during installation, you will need to log out and log back in, or runnewgrp dockerfor the changes to take effect. - Update package lists and install core dependencies (
- Start the main monitor:
lim
- Start the Docker & Bookmark navigator:
lim tui
- Go to a Docker Compose directory:
lim go <container_name_or_id> # Then in your current terminal: ./l.sh # (and press Tab to auto-complete)
- Add a bookmark:
lim tp add my_project ~/Projects/my_project - Jump to a bookmark:
lim tp my_project # Then in your current terminal: ./l.<TAB><ENTER> # (press Tab to auto-complete)
- Docker Cache: LIMbo caches Docker container information in
~/.config/lim/docker_cache.json. - Bookmarks: Your saved bookmarks are stored in
~/.config/lim/bookmarks.json. - Cache Expiration: The Docker cache automatically refreshes every 5 minutes by default, but this can be configured in
~/.config/lim/config.json.
Возможно, местами недоработан. Находится в долгосрочной разработке. Используйте на свой страх и риск.
Этот проект распространяется под лицензией Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). Подробности смотрите в файле LICENSE.
Устали от htop и его ограниченных форков? Встречайте LIMbo – мощный, интуитивно понятный и высокофункциональный текстовый пользовательский интерфейс (TUI) для мониторинга вашей Linux-системы и навигации по вашим Docker-окружениям. Разработанный для скорости и простоты использования, LIMbo выходит за рамки базового мониторинга, предлагая глубокие аналитические данные и бесшовные переходы между директориями с минимальным количеством нажатий клавиш.
Традиционным TUI-мониторам, такие как htop, часто не хватает функциональности, особенно при управлении сложными Docker-средами или частых переходах между директориями проектов. LIMbo появился из потребности в более комплексном и эргономичном инструменте. Моя философия дизайна ставит во главу угла эффективность: даже навигационные скрипты (l.sh, b.sh) названы так, чтобы их можно было вводить одной рукой и быстро дополнять с помощью Tab для плавного рабочего процесса.
Основная команда lim запускает мощный, интерактивный TUI-монитор системы, предлагая информацию о производительности вашей системы и процессах в реальном времени.
- Полный Обзор: Отображает информацию о ЦПУ, памяти, ГПУ, вводе/выводе дисков, сетевом вводе/выводе, средних нагрузках, времени безотказной работы и общую системную информацию.
- Динамический Список Процессов:
- Подробная Информация о Процессах: Просмотр PID, имени пользователя, использования ЦПУ, использования памяти (RSS и VMS) и "умного" отображаемого имени для процессов.
- "Умные" Имена Процессов: Автоматически преобразует общие имена исполняемых файлов (например,
python3,node,mysqld) в более описательные метки (например, "Python Script", "Node.js", "MySQL"). Для процессов Java пытается извлечь имя JAR-файла. - Индикатор Изменения Памяти: Легко отслеживайте процессы с увеличивающимся (
+), уменьшающимся (-) или неизменным (*) размером Resident Set Size (RSS) с момента последнего обновления. - Подсветка Ресурсов: Процессы, потребляющие значительное количество ЦПУ или памяти, подсвечиваются для быстрой идентификации.
- Интерактивная Сортировка: Сортируйте список процессов по различным метрикам (RSS, CPU, MEM%, PID, VMS, Name) нажатием
Tab(вперед) илиShift+Tab(назад). Также конкретные клавиши (r,c,m,p,v,n) напрямую сортируют по RSS, ЦПУ, памяти, PID, VMS и имени соответственно. - Поиск/Фильтр: (Планируется на будущее, еще не реализовано)
- Интерактивные Режимы: Переключайтесь между специализированными режимами для целевых действий:
- Режим Docker (
d): Фильтрует список процессов, показывая только процессы Docker-контейнеров.- Идентификация Контейнера: Четко показывает связанное имя или короткий ID Docker-контейнера.
- Действия Docker (Enter): При выборе процесса Docker нажатие
Enterоткрывает меню для:- Просмотра (
i): Запускаетdocker inspectи отображает подробную информацию о контейнере во всплывающем окне. - Перезапуска (
r): Немедленно перезапускает выбранный Docker-контейнер. - Shell (
s): Предоставляет командуdocker exec -it <container_id> /bin/bashдля удобного копирования, чтобы открыть оболочку внутри контейнера.
- Просмотра (
- Режим Убийцы (
k): Включает меню подтверждения "убийства" для выбранных процессов.- Подтверждение Сигнала (Enter): При выборе процесса нажатие
Enterвызывает запрос на отправкуSIGTERM(s) илиSIGKILL (-9)(k).
- Подтверждение Сигнала (Enter): При выборе процесса нажатие
- Режим Docker (
- Навигация: Используйте
↑/↓для построчной навигации,PgUp/PgDnдля прокрутки страниц иHome/Endдля перехода в начало/конец списка. Поддерживается выбор мышью. - Помощь (
h): Доступ к встроенному экрану помощи с описанием сочетаний клавиш и функций. - Обновление (
r): Принудительное обновление кеша Docker.
Этот специализированный TUI позволяет быстро переходить к директориям проектов Docker Compose или к пользовательским закладкам.
- Объединенный Список: Отображает как Docker-контейнеры (с их путем compose и статусом), так и пользовательские закладки директорий в одном, сортируемом списке.
- Быстрая Навигация (
gилиEnter): Выберите элемент и нажмитеgилиEnter, чтобы сгенерировать одноразовые навигационные скрипты (l.shиb.sh) в вашей текущей директории.l.sh: Маленький, самоудаляющийся скрипт, который переводит вас в целевую директорию и запускает новуюbashоболочку. Он информирует вас о том, как вернуться в исходную директорию.b.sh: Созданный внутри целевой директории, этот скрипт возвращает вас в исходную рабочую директорию. Оба скрипта самоудаляются через несколько секунд для чистоты. Это означает, что вы можете ввести./l.sh(с автодополнением по Tab) из любого места, чтобы мгновенно перейти к вашему проекту, и./b.sh, чтобы вернуться, с тем же удобством одной руки и быстрым завершением.
- Docker Inspect (
i): Аналогично основному монитору, нажатиеiна записи Docker запускаетdocker inspectдля получения подробной информации. - Управление Закладками:
- Добавить Закладку (
a): Интерактивно добавляйте новую закладку с именем и целевым путем (по умолчанию – текущая директория). - Удалить Закладку (
d): Удаляет выбранную закладку.
- Добавить Закладку (
Помимо TUI, LIMbo предоставляет набор мощных утилит командной строки для быстрых задач, с автодополнением Bash для общих аргументов.
lim inspect <container_id_или_имя>(lim i): Отображает выводdocker inspectдля данного контейнера с форматированием Rich, если оно доступно.lim go <container_id_или_имя>: Генерирует скриптыl.shиb.shдля перехода в директорию Docker Compose указанного контейнера.lim updatecache: Принудительно обновляет кеш Docker-контейнеров, используемый как TUI, так и CLI-командами. Этот кеш обычно обновляется каждые 5 минут с помощью cron-задачи.lim tp <имя_закладки>: Переходит в закладку, аналогичноlim go, но для пользовательских путей.lim tp add <имя> [путь]: Добавляет новую закладку. Путь по умолчанию – текущая директория.lim tp del <имя>: Удаляет закладку.lim tp list: Выводит все сохраненные закладки в красиво отформатированной таблице.
Идея l.sh (от Launch — запуск) и b.sh (от Back — назад) — это чистая эргономика. Это намеренно короткие, односимвольные имена, чтобы минимизировать ввод. В сочетании с автодополнением Bash по Tab (./l.sh<TAB>) они обеспечивают беспрецедентную скорость для навигации по глубоко вложенным директориям проектов или папкам Docker Compose, значительно превосходя традиционные команды cd или сложные алиасы.
Когда вы используете lim tui или lim go, эти скрипты временно создаются в вашей текущей директории. Это означает, что вам не нужно беспокоиться об их управлении; они появляются, когда нужны, и самоудаляются вскоре после использования. Скрипт l.sh немедленно переводит вас в целевую директорию и запускает новую оболочку, обеспечивая плавный переход. Скрипт b.sh, созданный в целевой директории, позволяет вернуться туда, откуда вы начали, с тем же удобством одной руки и быстрым завершением.
-
Клонируйте репозиторий:
git clone https://github.com/srose69/Lim cd lim -
Запустите установщик:
chmod +x install.sh sudo ./install.sh
Установщик выполнит:
- Обновление списков пакетов и установка основных зависимостей (
python3,pip,jq,python3-venv). - Установка библиотек Python (
psutil,rich,docker). - Проверку и установку Docker, если он отсутствует, а также добавление вашего пользователя в группу
docker(требует выхода из системы/входа или запускаnewgrp dockerдля вступления изменений в силу). - Копирование скриптов LIMbo в
/usr/lib/limи создание символических ссылок (lim,lim_update_cache.py) в/usr/local/binи/usr/local/sbin. - Настройку cron-задачи для автоматического обновления кеша Docker каждые 5 минут.
- Установку автодополнения Bash для команд
limв/etc/bash_completion.d/.
Примечание: Если вы были добавлены в группу
dockerво время установки, вам потребуется выйти из системы и войти снова, или выполнитьnewgrp docker, чтобы изменения вступили в силу. - Обновление списков пакетов и установка основных зависимостей (
- Запустить основной монитор:
lim
- Запустить навигатор Docker и закладок:
lim tui
- Перейти в директорию Docker Compose:
lim go <имя_или_id_контейнера> # Затем в вашем текущем терминале: ./l.sh # (и нажмите Tab для автозавершения)
- Добавить закладку:
lim tp add my_project ~/Projects/my_project - Перейти по закладке:
lim tp my_project # Затем в вашем текущем терминале: ./l.<TAB><ENTER> # ( Tab для автозавершения)
- Кеш Docker: LIMbo кэширует информацию о Docker-контейнерах в
~/.config/lim/docker_cache.json - Закладки: Ваши сохраненные закладки хранятся в
~/.config/lim/bookmarks.json - Срок действия кеша: Кеш Docker автоматически обновляется каждые 5 минут по умолчанию, но это можно настроить в
~/.config/lim/config.json