logo

muhas.ru — это просто блог…

О linux, о используемых или просто понравившихся инструментах, вобщем обо всем что окружает мою аскетичную компьютерную жизнь и показалось достойным упоминания или заметки «на память»

От screen к tmux + конфиг

Скажу сразу, я приверженец GNU Screen, некоторые читателе сего блога даже видели мои скепсис по поводу нужности tmux и терзания основанные на принципах «работает, не трогай!» и «чем оно лучше того что я пользую сейчас?»… По прочтению очередного холиварчика screen vs tmux в котором любители скрина плохо знают tmux, а его любители screen я решился на большее чем просто посмотреть что же это за зверь.

Посему пишу в своём уютненьком о впечатлениях от знакомства и привожу свой текущий конфиг с закосом под monokai, мало ли кому пригодиться.

tmux с запущенным gnu screen в одной из панелей

Первое же отличие брасающееся в глаза — нет привычных по скрину регионов, т.е. окна нельзя сплитить. Разбивается уже внутри окна на панели. Если в скрине каждое окно было само по себе регионом, то в tmux наоборот регионы (панели в его терминологии) внутри окна, которое больше похоже на виртуальный рабочий стол у оконных менеджеров, а сами панели аки окно теминала в тайловом wm. Панели можно вынести в отельное окно на весь размер терминала и уже в нем делать новые панели. Помимо этого окна могут прыгать по сессиям, хотя это в глаза сразу и не брасается…

Второе — мышь. Ей можно тыкать в окна и панели для их выбора, мышою можно ресайзить панели. А вот копипасить выделенное при включенной мышке средствами иксов (т.е. простым выделеним текста) у меня сходу не вышло. Не работает выделение хоть тресни. Но при зажатой клавише Shift всё прекрасно работает, спасибо гуглу ☺

Третье — внешний вид и хардстатус. Т.е. вообще статус, ибо в tmux он один единственный, и нет этих широких полос статуса обрамляющих при горизонтальной разбивки на регионы, т.е. панели. Саму строку статус можно разукрасить и огламурить, список окон это отдельный (настраиваемый) элемент статуса с возможностью разделения вида активного и не активного окна.

Четвертое — хоткеи. Они хоть и отличаются от скриновых, но самый минимум можно выполнять помня GNU Screen и то что дефолтный префикс в tmux Ctrl+b. А дальше уже Ctrl+? подскажет остальные хоткеи, которые, впрочем, никто не запрещает перенастроить в конфиге ~/.tmux.conf

Остальные отличия не сразу заметны, но они есть и их не мало: начиная от самой клиен-серверной архитектуры, уймы буферв обмена да переключением сессий в уже запущенной и заканчивая подключением внешних скриптов или управления тмуксом из командной строки.
Вообще tmux оказался больше похож на полноценный тайловый wm для терминала нежели на то чем я его себе представлял по описаниям да сравнивая со скрином…

Ну и текущий мой конфиг, который несомненно будет эволюционировать по мере использования tmux и более плотного моего с ним знакомства

set -g default-terminal "screen-256color" # прикидываемся скрином дабы 256 цветов юзать
set -g history-limit 100000 # буфер скрола в строках
set -g base-index 1 # счет окон с единицы, а не с нуля
set -g pane-base-index 1  # счет панелей с единицы, а не с нуля
set -g mouse on # включаем мышь что бы как минимум переключаться по окнам и панелям

# хоткеи { # регистр важен
bind C-b last-window  # дабы по ^b^b последние окна переключать (по умолчанию ^b l)
bind V split-window -h  # горизонтальное разделение окна вместо "
bind H split-window # вертикальное разделение окна вместо %
bind C-k confirm-before -p 'kill-window #W (y/n)' kill-window # закрыть окно
# хелп по хоткеям (не забываем о префиксе в начале)
# !  вынесть панель в окно
# $  переименовать текущую сессию
# () переключение сессий
# ,  переименование окна
# ;  перейти на последнюю активную панель
# q  отобразить номера панелей (вводя номер переключимся на этот номер)
# x  убить текущую панельй
# }

set-option -g set-titles on # заголовки окон
set-window-option -g automatic-rename on # auto name

# настройка статуса и попытка раскрасить всё ala monokai
set -g status-utf8 "on"
set -g status-interval 1 # обновляем статус каждую секунду
set -g status-bg "colour235" # основной фон статусной строки
set -g message-command-fg "colour231"
#set -g status-justify "centre" # позиция списка окон [left | centre | right]
set -g status "on" # включает статусбар, off выключает
set -g message-bg "colour81"
set -g message-fg "colour231"
set -g message-command-bg "colour81"
# цвета текста краев панелей (исользуется │ или U+2502 с фоном, так что от шрифта можно наколдовать хоть черепки в качестве разделителя)
set -g pane-border-fg colour241
set -g pane-border-bg default
set -g pane-active-border-fg colour81
set -g pane-active-border-bg default
# set -g status-attr "none" # стиль статуса bright (or bold), dim, underscore, blink, reverse, hidden, or italics
# set -g status-left-attr "none" # стиль левого статуса
# set -g status-right-attr "none" # стиль правого статуса
# цвета окон: активного и неактивного
setw -g window-status-fg "colour231"
setw -g window-status-bg "colour237"
setw -g window-status-attr "none"
setw -g window-status-activity-fg "colour231"
setw -g window-status-activity-bg "colour237"
setw -g window-status-separator ""
# собственно строка статус
set -g status-left "#[fg=colour231,bg=colour81] #S #[fg=colour81,bg=colour235,nobold,nounderscore,noitalics]" # что видим слева
set -g status-right "#[fg=colour241,bg=colour235,nobold,nounderscore,noitalics] #H #[fg=colour231] #(skb -h) #[nobold,fg=default]" #  что видим справа (skb покажет раскладку в иксах)
setw -g window-status-format "#[fg=colour235,bg=colour237,nobold,nounderscore,noitalics]#[default] #I #W #[fg=colour237,bg=colour235,nobold,nounderscore,noitalics]" # формат окна (расположение списка окон с помощью status-justify)
setw -g window-status-current-format "#[fg=colour235,bg=colour81,nobold,nounderscore,noitalics]#[fg=colour231,bg=colour81] #I.#P #W #[fg=colour81,bg=colour235,nobold,nounderscore,noitalics]" # формат текущего окна
# хелп по статусу {
# #S - имя сессии
# #I - номер окна
# #P - номер панели
# #W - собственно сам заголовок, обычно имя программы
# %Y-%m-%d %H:%M - дата и время
# }

Собственно, попробовав его использовать как привычный уже скрин понял что он как минимум не хуже, а в чем-то и лучше (хотя бы мышкотыканьем или выносом окна в другую сессию). В нём столько всяких плюшек что использование его только как скрина вызывает ощущение сродни кощунству.
Конечно, полноценно tmux я не использую и всё ещё открываю для себя его возможности, но всё то для чего использовал скрин им стало выполняеться на ура всего после получаса чтения документации, гугления и написания конфига, а привычка к хоткеям скрина легко сменилась привычкой к хоткеям tmux (кои я поменял лишь по мелочам).

Я просто оставлю это здесь

Каким-то неведомым методом на большинстве компов в /etc/resolve.conf у меня прописано

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 77.88.8.8
nameserver 77.88.8.1
nameserver 208.67.222.123
nameserver 208.67.220.123
nameserver 4.2.2.1
nameserver 4.2.2.2

А на каких-то компах только гуглоднс! И заметить что проблема именно в гуглоднс было не легким делом 😑

Так что ловите небольшой список публичных dns и пропишите нужные себе

Google DNS почивший по неведомым причинам у многих провайдеров

8.8.8.8
8.8.4.4

Yandex DNS

#без фильтрации
77.88.8.8
77.88.8.1
#фильтрация опасных сайтов
77.88.8.88
77.88.8.2
#фильтрация опасных сайтов и сайтов для взрослых
77.88.8.7
77.88.8.3

OpenDNS

#новые фришные
208.67.222.123
208.67.220.123
#старые фришные, но вроде ещё рабочие
208.67.222.222
208.67.220.220

DNS апушеные в ранний период интернета для внутренних нужд Level 3, но разползшиеся по сети. Лучше не использовать, но на крайний случай пойдут, так что пихайте в конец списка

4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
4.2.2.5
4.2.2.6
P.S.

Как-то давно на рабочей машине у меня на adsl (кажется, тогда это был авангард от ростелекома) глючил dns, и по неопытноси общения с линуксом да недостатке знаний о публичных dns я нашел самый легкий, как тогда мне козалось, путь — поставил себе bind 😏

Так что днс в локалке или на локалхосте который тырит данные у корневых тоже неплохой выход из ситуации с проблемными dns

Arch Linux Updates Indicator для GNOME

В расширениях гнома обнаружил годную проверку обновлений для гнома. Висит себе среди индикаторов да по заданному времени проверяет апдейты. При появлении обновлений может вывести уведомление, циферку апдейтов поставить на своем индикаторе, а может и вообще индикатор не показывать пока апдейтов нет. Так же в выпадающем меню отображается список пакетов имеющих апдейты. Всё как у взрослых ☺

проверка обновлений archlinux

Ну а при желании запусткаете сам апдейт, хоть через yaourt хоть через 'echo "я обновился"', т.е. в настройках прописывается команды для обновления.
У меня прописано (y это алиан на yaourt)

gnome-terminal -e 'zsh -c "y -Syu ; echo Done - Press enter to exit; read"'

Расширение живет тут, оттуда же и устанавливается в гном.

Rofi — годная замена dmenu

Наткнулся я на замечательную такую заменялку dmenu, которая уже по дефолту умеет парсить .ssh/config для выбора соединения с ssh (Alt+f3), переключать окна (Alt+f12 для всех вокспейсов или f12 для текущего), ну и соответсвенно запускать приложения (Alt+f2). Да и настраивается не только параметрами командной строки, но и через Xresources.

Называется сия замечательная штука rofi. При обычном запуске висит в фоне и ждет нажатия волшебных кнопок для её отображения или запуска rofi с управляющими параметрами (к примеру, rofi -show run, для отображения диалога запуска программ). Хотя с параметром -dmenu запускается в режиме dmenu.
Но какое же dmenu без своих скриптов, посему и rofi поддерживает и их.
Drop in dmenu replacement. (Screenshot shows rofi used by teiler ).
(пример одного из скриптов отсюда)

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

В Арче, как обычно, yaourt -S rofi

zsh: corrupt history file fix

Проблема
zsh: corrupt history file ~/.zsh_history
Решение
mv ${HISTFILE} ${HISTFILE}.bak
strings ${HISTFILE}.bak > ${HISTFILE}