Свое рабочее место все хотят сделать чуть лучше и удобнее чем оно идет из "Коробки". в данной инструкции можно быстро и без боли настроить Шелл-терминал ZSH, для лучшего отображения информации и при необходимости расширять его функционал плагинами. Попутно установим один из Kitty - мультиплексный терминал, который позволяет использовать вкладки и "окна" в работе. Используя его можно структурировать рабочее место легко и быстро. Плюсом данной инструкции будет то что вы получите свежие и стабильные версии некоторых пакетов, т.к. установку и сборку будем производить непосредственно из репозиториев.

Для начала обновим все пакеты, обращу внимание, разные строчки будут для разных дистрибутивов. (Ubuntu и Ubuntu подобные дистрибутивы типа Linux Mint и т.п. будем писать Ubuntu для краткости):

Ubuntu: sudo apt update

Fedora: sudo dnf update

Установим Git для скачивания пакетов. (если у вас он установлен, можно шаг пропустить):

Ubuntu: sudo apt install git

Fedora: sudo dnf install git

Далее устанавливаем мультиплексный терминал Kitty, установим его из репозиториев самих систем. информацию о самом терминале, горячих клавишах можно почитать здесь (https://sw.kovidgoyal.net/kitty/):

Ubuntu: sudo apt install kitty

Fedora: sudo dnf install kitty

Пришло время установить сам Шелл ZSH

Ubuntu: sudo apt install zsh

Fedora: sudo dnf install zsh

На всякий случай, создадим файл конфигурации если он не создался при установке:

touch ~/.zshrc

Назначим zsh коммандной оболочкой (шелл) по умолчанию в нашей системе, в зависимости от ваших настроек в системе, может понадобиться ввести пароль для смены шелла:

chsh -s $(which zsh)

Для возможности установки дополнительных плагинов и "прокачивания" ZSH установим для него фреймворк OhMyZsh информацию о нем можно почитать здесь (https://ohmyz.sh/)

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Для дальнейшей установки, дабы не мусорить в своих каталогах, создадим в корне профиля папку tmp

cd ~/ && mkdir tmp && cd tmp

Скачиваем скрипты из моего репозитория, в нем можно найти рабочие настройки для различных используемых в работе приложений.таких как (i3 - тайловый менеджер, polybar, helix - редактор кода, wezterm - мультиплексный терминал, picom - красивости для оконного менеджера, nvim - редактор кода, kitty - мультиплексный терминал), конкретно нас нитересует скрипт установки необходимых шрифтов:

git clone https://github.com/apilot/dotfiles.git

cd ~/tmp/dotfiles

Выбираем шрифты которые хотим установить. основные шрифты уже выбраны. если необходимо можно убрать комментарий перед наименованием шрифта в списке или закомментировать те что не нужны. в любом случае в последствии вы можете потом удалить лишнее из самой папки ~/.local/share/fonts :

Сделаем скрипт исполняемым:

chmod +x ./fonts_install.sh

Запускаем его:

./font_install.sh

Далее установим тему с менеджером для ее "тонкой" настройки:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Необходимо отредактировать файл ~/.zshrc, заменить значение ключа ZSH_THEME на :
ZSH_THEME="powerlevel10k/powerlevel10k"

Запускаем редактор:

nano ~/.zshrc

Для сохранения нажимаем Ctrl + X и нажимаем Enter

Закрываем терминал.

Нажимаем ALT-F2 и набираем команду

kitty

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

нас спрашивают видим ли мы ромб между стрелками
нас спрашивают видим ли мы ромб между стрелками
виден ли замок между стрелками
виден ли замок между стрелками
спрашивают видим ли мы стрелку вверх, на этом шаге у меня получилось не верно, стрелки нет, посему нажал нет
спрашивают видим ли мы стрелку вверх, на этом шаге у меня получилось не верно, стрелки нет, посему нажал нет
на следующем шаге стрелка появилась, продолжаем настройку
на следующем шаге стрелка появилась, продолжаем настройку
спрашивает на какую из цифр указывает зеленая стрелка вниз
спрашивает на какую из цифр указывает зеленая стрелка вниз
интересуются нормально ли отображаются иконки вместе с текстом, не наезжают ли они на X крестики
интересуются нормально ли отображаются иконки вместе с текстом, не наезжают ли они на X крестики
выбираем то на что нам будет приятнее смотреть
выбираем то на что нам будет приятнее смотреть
так как предполагается использование русских символов, выбираем UNICODE
так как предполагается использование русских символов, выбираем UNICODE
выбираем степень затемненности нашей информационной строки шела
выбираем степень затемненности нашей информационной строки шела
выбираем нужно ли, и в каком формате, время в статусной строке терминала
выбираем нужно ли, и в каком формате, время в статусной строке терминала
как хотим разделять информацию в левой части панели
как хотим разделять информацию в левой части панели
какого типа будет "голова" левой части терминала
какого типа будет "голова" левой части терминала
какой тип будет у "хвоста" левой части
какой тип будет у "хвоста" левой части
выбираем в одну или две строки показывать статусную строку. по использованию могу лишь посоветовать 2 строки. т.к. информация о ветке в гите будет съедать много места и на "тело" командной строки останется совсем не много. а так во всю ширину будет возможность писать команды.
выбираем в одну или две строки показывать статусную строку. по использованию могу лишь посоветовать 2 строки. т.к. информация о ветке в гите будет съедать много места и на "тело" командной строки останется совсем не много. а так во всю ширину будет возможность писать команды.
хотим ли мы визуально соединять левую и правую часть ифнормационной части терминала и каким способом
хотим ли мы визуально соединять левую и правую часть ифнормационной части терминала и каким способом
нужны ли нам соединительные линии для двух строк одного пространства, коммандной строки и информационной панели
нужны ли нам соединительные линии для двух строк одного пространства, коммандной строки и информационной панели
тоже на любителя, компактный вариант или с разделением в строку
тоже на любителя, компактный вариант или с разделением в строку
вариант отображения иконок в статусной строке
вариант отображения иконок в статусной строке
здесь как вам больше нравится
здесь как вам больше нравится
интересная опция с вариантом не перегружать последовательность комманд
интересная опция с вариантом не перегружать последовательность комманд
подтверждаем первым рекомендованным пунктом
подтверждаем первым рекомендованным пунктом
сохраняем настройки в нашем файле конфигурации zsh
сохраняем настройки в нашем файле конфигурации zsh
в результате получаем вот такой терминал, с легко читаемой информацией о состоянии и пути дериктории в которой работаем.
в результате получаем вот такой терминал, с легко читаемой информацией о состоянии и пути дериктории в которой работаем.

Всем добра!

Комментарии (15)


  1. vtb_k
    27.11.2023 22:19

    OhMyZsh ставить не нужно, лучше пакетным менеджером(например zinit) выкачать только нужные файлы. В корне оставить только .zshenv файл, а в нем

    export XDG_CONFIG_HOME="$HOME/.config"
    export XDG_DATA_HOME="$HOME/.local/share"
    export XDG_CACHE_HOME="$HOME/.cache"
    
    export ZDOTDIR=$XDG_CONFIG_HOME/zsh
    export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh"
    if [ ! -d $ZSH_CACHE_DIR ]; then
      mkdir -p $ZSH_CACHE_DIR
    fi
    

    В ~/.config/zsh уже ставить и .zshrc и aliases.zsh/functions.zsh или любую другую организацию файлов. Не стоит захламлять домашнюю директорию.
    Мой конфиг можно увидеть тут.


    1. NN1
      27.11.2023 22:19

      Можно подробнее ?

      Чем плоха установка oh my zsh?


      1. mrobespierre
        27.11.2023 22:19
        +1

        Да всем плоха. Bloated, opinionated - вы платите ценой диких тормозов (оно в десятки раз тормознее zsh со своим конфигом) за функционал 90%+ которого вы скорее всего не используете. Лучше потратить один раз несколько часов на ручную настройку zsh, чем довериться постороннему человеку, который не разбирается.


        1. Tuxozaur
          27.11.2023 22:19
          +1

          Зачем тратить часы на настройку, когда можно поставить fish?


          1. aboyarinov Автор
            27.11.2023 22:19

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


      1. vtb_k
        27.11.2023 22:19

        Ниже уже ответили - скорость загрузки конечно же. Zinit менеджер например использует zsh-defer пакет, который отлаженно загружает модули один за другим. Поэтому строка приветствия загружается почти сразу.


    1. aboyarinov Автор
      27.11.2023 22:19
      -2

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


      1. vtb_k
        27.11.2023 22:19

        пример настройки рассчитан на новичков

        А что новичкам нужно именно неправильный способ предлагать? Что бы у них все тормозило и они вернулись на bash?

        использовать чужое пространство для поднятия своего статуса и рекламы в ссылках своих конфигов просто не культурно

        это вы серьёзно? Рекламы чего именно? Конфига?
        Раз в статье вы привели неправильный способ, то нужно поделиться правильным. Не переживайте, мне за мои конфиги никто не платит))))


        1. aboyarinov Автор
          27.11.2023 22:19
          -1

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

          в репозитории инструкция по установке https://github.com/romkatv/powerlevel10k#installation для OhMyZsh вторая сверху, видимо разработчики не считают это не правильным, раз предлагают такой способ.


          1. vtb_k
            27.11.2023 22:19
            +1

            Отлично, главное чтобы был выбор


  1. DieSlogan
    27.11.2023 22:19

    Следующим шагом будет установка antigen с кучей плагинов :)


    1. aboyarinov Автор
      27.11.2023 22:19

      мне того что есть в OhMyZsh хватает )) https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

      но благодарю за наводку )


    1. Mayurifag
      27.11.2023 22:19

      Сейчас скорее можно выбрать https://github.com/mattmc3/antidote


  1. Shaman_RSHU
    27.11.2023 22:19
    +2

    Читать не стал. А почему fedora - это ubuntu подобный дистрибутив? Потому, что при установке далее...далее получается Gnome? :) Fedora RPM based, Ubuntu DEB based. Пакеты в федоре всегда посвежее....


    1. aboyarinov Автор
      27.11.2023 22:19

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