LINUX.ORG.RU

Arch, i3 — классика

 , , , ,


8

1

Домашний arch’ик для учёбы и веселья: dotfiles. Ещё несколько скринов:

  • на первом — менюшка rofi и статус-бар в кратком виде;
  • на втором — уведомления pacman’а и статус-бар в расширенном виде;
  • на третьем — автодополнение zsh и скрытый статус-бар (обычно так и использую);
  • на четвёртомfirefox (почти дефолт), переводчик выделенного текста и ncmpcpp.

Все цвета взяты из темы gruvbox.

Если вам кажется, что на скринах всё какое-то большое, то это специально: так как у меня плохое зрение, я увеличил dpi (вроде бы по ГОСТ’ам комфортный размер символа 20’—22’ угловые минуты, но, как рассчитывать, уже не помню).

Программы

  • i3wm — для тайлинга.
  • i3status — для панельки.
  • dunst — для оповещений.
  • rofi — для менюшек.
  • zsh — для шелла.
  • rxvt-unicode — для эмулятора терминала (не очень нравится, как работает «вторичный экран»).
  • ttf-ubuntu-font-family — для шрифтов (да, меня тоже бесит точка в нуле).

Также с переменным успехом использую: redshift, clipmenu, mpd+ncmpcpp, mpv, evince/zathura, texstudio, nautilus, steam, wine и прочее. Короче, установка не минимальная (за несколько лет использования система разбухла, но в целом терпимо).

zsh-cкрипты

  • .local/bin/genu — скрипт с простым синтаксисом для вывода менюшек через rofi.
  • .local/bin/gstatus — урезает статус-бар: i3bar запускает именно его, а он уже запускает i3status и убирает ненужные секции. При получении сигнала USR1 происходит переключение между полным выводом и кратким.
  • .local/bin/geck — оповещает о доступных обновлениях (возможно, потом прикручу проверку пакетов из AUR’а).
  • .local/bin/gtrans — переводит выделенный текст (используется translate-shell).

Описание genu

Используется модифицированная тема gruvbox-dark-soft (оставлен только listview): .config/rofi/grznych.rasi.

Функция rt принимает массив, который задаёт, что́ будет отображаться, как оно будет отображаться и что будет происходить при выборе соответствующего пункта меню. Например:

#   title        key command
ex=(Shutdown     wu  systemctl\ poweroff
    Reboot       ru  systemctl\ reboot
    Suspend      sa  systemctl\ suspend
    Lock         l   glock
    Reload\ i3   e   'i3-msg reload && dunstify i3:\ reload'
    Restart\ i3  t   i3-msg\ restart
    Config\ i3   c   gedit\ ~/.config/i3/config)
  • Первый столбец — заголовок: что́ будет отображаться.
  • Второй столбец — ключи.
    • Первый символ — хоткей: при нажатии на него будет выбран этот пункт меню, также этот символ будет подчёркнут в заголовке (если он не является первым символом), например: Shutdow̲n.
    • Второй символ (необязательный):
      • u, чтобы пункт меню был красный;
      • a, чтобы пункт меню был жёлтый.
  • Третий столбец — команда, которую нужно запустить.

Теперь, чтобы вывести эту менюшку, нужно передать имя массива в качестве параметра: genu ex.

zsh-промпт

За всё отвечает функция precmd в .zshrc.

  • Первый блок — время. Цвет:
    • green, если от 10:00 до 22:00;
    • red, если от 01:00 до 07:00;
    • yellow, иначе.
  • Второй блок — текущая директория. Цвет:
    • cyan, если директория находится в хомяке;
    • magenta, иначе (симлинки разрешаются, поэтому если в хомяке находится симлинк на директорию за пределами хомяка, то цвет будет маджента).
  • Третий блок (отображается, если директория находится под контролем git) — текущая ветка и, если производится, текущая операция (merge, rebase). Цвета:
    • blue, если нет никаких изменений (неотслеживаемые файлы не учитываются);
    • green, если все файлы находятся в области подготовленных (осталось сделать коммит);
    • yellow, если есть изменённые файлы;
    • red, если есть изменённые файлы и файлы в области подготовленных.
  • Символ $. Цвет:
    • green, если код возврата последней команды 0;
    • red, иначе.

Правый промпт отображает код возврата последней команды: цвета аналогичны символу $.

Статус-бар

  • Первый блок — информация о wi-fi (имя сети и качество связи).
  • Второй блок (не отображается в кратком виде) — занятое место на первом разделе (/).
  • Третий блок (не отображается в кратком виде) — занятое место на втором разделе (/home).
  • Четвёртый блок (не отображается, если батарея заряжена) — заряд батареи.
  • Пятый блок — громкость.
  • Шестой блок — время. В расширенном виде также отображается дата.

Цветами управляет сам i3status.

>>> Просмотр (1366x768, 219 Kb)



Проверено: cetjs2 ()

так как у меня плохое зрение

лично мне приходится напрягать глаза, чтобы прочесть текст на скриншоте из-за контраста

das_tier ★★★★★
()

Недурно.

Цвета мне не нравятся, но это вкусовщина. В остальном выглядит очень даже юзабельно.

mord0d ★★★★★
()

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

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

У меня проблемы именно с размером шрифтов: через несколько минут начинаю замечать, что приходится щуриться (под конец дня глаза устают очень сильно). Тема gruvbox мне нравится как раз пониженной контрастностью, причём я могу ещё уменьшить контрастность, но тогда уже действительно не удобно становится. Ещё стоит учитывать особенности мониторов, конечно: на моём ноутбуке очень контрастный и резкий монитор (до этого был точно такой же, но там такого не было).

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

Как уже сказали, дело вкуса. Я не так давно пересел на gruvbox: если надоест, переползу на какую-нибудь другую палетку. То же самое могу сказать и о шрифтах.

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

Да не. У меня сейчас 765 пакетов. Летом ради интереса решил выпилить вообще всё, что можно выпилить (особенно пакеты из multilib): осталось около 400 пакетов (и это уже — для моей комфортной работы за ноутом — минимум), но постепенно опять установил многое, что изредка, да использую. Короче, каша есть, но более-менее контролируемая.

rassol
() автор топика

В левом терминале больше половины строки съедает пропмт шелла. Неужели это не доставляет неудобств?

Ну а так, неплохо выглядит.

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

Неужели это не доставляет неудобств?

Да вроде нет: я редко одновременно работаю с git и делаю что-то на втором терминале. Сейчас появилась идея немного переделать промпт: если директория не находится под контролем git, то всё будет так же, а если находится, то вместо директории будет отображаться название проекта и информация о ветке.

В общем, вместо этого:

[15:10][~/test][master:merge]$

будет это:

[15:10][test:master:merge]$

Но это неточно, я ещё подумаю (экономия не сказать, что большая).

Или можно вообще не отображать ветку, если это мастер-ветка (тоже надо подумать).

rassol
() автор топика

Лаконично и просто. Цвета ламповые, со вкусом подход.

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

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

Спасибо.

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

Ещё можно стрелками, мышкой и табом (шифт-табом). Я сам чаще хоткеи использую, но, бывает, стрелками перебираю.

rassol
() автор топика

Прикольно получилось. Как ни странно — не вырвиглазно даже.

Satori ★★★★★
()

Симпатично! Нравится.

HTaeD ★★★★
()

Цветовая схема красивая. Мне понравилось. Не уверен, правда, что получится в такой работать постоянно, но вообще круто получилось.

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

Ты из тех, кто не будет ставить кьютовые приложения в гтк окружение, даже если софтина того стоит?

Zhbert ★★★★★
()

Цвета на любителя. Лично мне никогда не нравились грувбокские цвета. И почему многие фапают на них? Ocean, Nord или Deracula на голову выше.

nautilus

Зачем нужен этот жиромонстр?

zsh — для шелла.

Для шелла лучше mksh.

Odalist ★★★★★
()

Как будто кого-то стошнило гуашью в монитор. Цветовая схема прям очень на любителя.

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

Ocean, Nord или Deracula на голову выше.

Как надоест gruvbox, попробую их: выглядят хорошо, сдержанно.

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

nautilus

Зачем нужен этот жиромонстр?

Бывает, пригождается, но в целом не нужен. Из gui’шных альтернатив ничего не зашло, хотя thunar понравился скоростью: нереально быстрый в сравнении с nautilus’ом. Единственное, чем не нравится thunar, — не умеет обрезать имя файла в плиточном виде. Из консольных тоже пробовал некоторые, но мне нужен предпросмотр изображений и я пока не знаю, можно ли его запилить используя консольные фм. В общем, с радостью от него откажусь, когда найду хорошую альтернативу.

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

Я тоже с трудом вывод терминала распарсил.

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

у него свой контраст. нет смысла сравнивать.

crypt ★★★★★
()

цвета могут нравится, могут нет, но стиль есть. хорошо!

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

но мне нужен предпросмотр изображений и я пока не знаю, можно ли его запилить используя консольные фм

https://github.com/ranger/ranger/wiki/Image-Previews мне зашел ranger даже без превьюх. Рекомендую.

Crystal_HMR ★★★
()
Последнее исправление: Crystal_HMR (всего исправлений: 1)

Вопрос от нуба

Подскажи пожалуйста, влияет ли использование zsh, если каждый день имею дело только с bash, на работе. По логике, в начале сценария указать путь к оболочке bash, проблем не должно быть? И корректно ли выполнится сценарий на баше, если в качестве оболочки указан zsh?

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

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

Нет. Установил недавно nnn, но времени разбираться пока что нет. Как появится, обязательно посмотрю. Почему, кстати, ranger, а не nnn?

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

Тот же вопрос: почему ranger, а не nnn?

rassol
() автор топика
Ответ на: Вопрос от нуба от lckrspirit

Скрипт будет выполнять программа, указанная в шебанг. Например, #!/bin/sh указывает, что будет запущен sh и имя этого файла будет передано ему как параметр. Ещё можно делать так:

  • #!/bin/rm — имя файла будет передано программе rm, что приведёт к его удалению;
  • #!/bin/cat — выведёт на экран содержимое файла.

Ещё надо заметить, что sh — это, как правило, симлинк (в арче — на bash, в некоторых других дистрибутивах — на dash), но надо учитывать, что, даже если sh — это симлинк на bash, между #!/bin/sh и #!/bin/bash есть разница, потому что при запуске bash’а через sh он пытается эмулировать тот самый sh. Также поступает, например, zsh, когда его запускают от имени sh (пытается эмулировать sh) или от имени bash (пытается эмулировать bash).

Короче, если ты изменил оболочку, то это никак не повлияет на скрипты, а вот если ты ещё и симлинки изменил, то тут, наверно, есть шанс нарваться на проблемы. Ещё я не знаю, могут ли возникнуть проблемы, если у скрипта в шебанге прописан sh, а запускаться он будет на разных системах (в одной sh будет симлинком на bash, в другой — на zsh, а в третьей — на dash). Наверно, не должно, но точно не знаю.

rassol
() автор топика

Ещё замечу, что я решил, вынести раскладку клавиатуры из системных директорий в хомяк: .xinitrc подгружает .Xkeymap через xkbcomp -w0 ~/.Xkeymap $DISPLAY. Пока экспериментирую, но если есть идеи или советы (может, есть более удачный способ), рад буду услышать.

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

Решил всё-таки переделать. Раскладку клавиатуры поместил в .config/xkb/symbols. Подгружается она с помощью следующей команды в .xinitrc:

setxkbmap ruf "" grp_led:caps -print | xkbcomp -I$HOME/.config/xkb - $DISPLAY

Преимущество такого подхода в следующем: это обычный файл раскладки, в отличие от файла .Xkeymap, поэтому его легко можно закинуть в /usr/share/X11/xkb/symbols и использовать команду:

setxkbmap ruf "" grp_led:caps

От обычных раскладок он отличается только тем, что используется сразу две группы: us и ru. Сделано это было для того, чтобы переопределить клавишу RAlt (теперь она изменяет группу, пока нажата: если была русская группа, то, пока нажата эта клавиша, будет английская группа, и наоборот).

Почему не использовать опцию grp:switch для setxkbmap? Дело в том, что у неё такое определение:

key <RALT> { [ Mode_switch, Multi_key ] };

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

Я использую следующее определение, чтобы Shift+Ralt всегда вёл себя одинаково:

key <RALT> { [ Mode_switch, Mode_switch ] };

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

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

Установил ranger, настроил превьюшки (одна строка в конфиге). Вроде прикольно, но надо ещё настраивать и разбираться. Спасибо.

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

Всегда рад помочь. Если тебе интересно, можешь взглянуть на FFF

Его даже устанавливать не нужно. Нужно закинуть собственно сам fff в Path. Он у меня лежит в ~/.local/bin

Тоже умеет показывать превьюшки, плюс он очень быстрый.

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

Да, видел уже его: прикольная штука. Тоже попробую потом. Пока буду разбираться с ranger’ом.

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

настроил превьюшки

А можно настроить так, чтобы показывал не миниатюры картинок, а во всем терминале. Тут нужно изменить конфиг так:

set preview_images_method urxvt-full, убрав значение w3m

У меня выглядит вот так

П.С.

Тут нужен urxvt, собраный с поддержкой pixbuf

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

не миниатюры картинок, а во всем терминале

Да, спасибо, уже прочитал про это. Выглядит прикольно, но как-то лень пока собирать urxvt с поддержкой pixbuf, хотя это минут пять.

Меня больше интересует, как прикрутить предпросмотр для файлов djvu. Скопировал нужные секции в файл scope.sh, но почему-то оно не завелось, причём даже текстовый предпросмотр не работает. Пока не было времени разобраться, почему такое.

rassol
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.