Windows + Tmux + Cygwin

Добрый день, хабр!

Я давно плотно работаю с Linux системами, но в качестве десктопа предпочитаю Windows. Но для комфортной работы иногда нужно постараться.

Сегодня я хочу поделится опытом и впечатлениями о том как я пытался найти замену Tmux под cygwin и как я в конце концов победил Tmux и скомпилировал его под Cygwin + Windows. Кому интересно — прошу под кат.

image

Требования к системе

Я собирал tmux на windows 7 x64 с установленным Cygwin.x86. На Cygwin.x86_64 Собрать библиотеку libevent не удалось.
Начать стоит с установки Cygwin.x86. При установке помимо необходимого вам софта нужно установить:

gcc*, make, autoconf, automake, cmake.

Также необходимо будет поставить библиотеку которую требует tmux: libncurses10, libncurses-devel, ncurses.

Сборка libevent

Я черпал информацию и опыт с этой переписки. Но все равно пришлось немного изменить и поковыряться в souce code. Я не хочу вас загружать .patch файлами и лишними деталями, кому нужно — сам сможет сравнить исходники. Я же выложу свои готовые наработки, вам необходимо будет только собрать.

Еще одна из необходимых зависимостей Tmux — это библиотека libevent которой, к сожалению, нет в репозитории cygwin. Ее необходимо собрать с исходников. Я использовал libevent-2.0.21-stable. Открываем Cygwin и собираем:

tar xf libevent-2.0.21-stable.tgz
cd libevent-2.0.21-stable
./configure --libdir=/usr/lib/
make && make install


Прошу обратить внимание что при configure параметр libdir указан не зря, и Cygwin плохо дружит с /usr/local/lib.

Сборка tmux

Я выложил свои наработки Tmux

tar xf tmux-tmux-code.tgz
cd tmux-tmux-code
./configure
make && make install
tmux
echo 'Enjoy!'


Впечетления

Работает очень быстро и не сбоит! В сравнении с альтернативами такими как Byobu и Screen небо и земля.
Спасибо за внимание, желаю всем хорошей недели и комфортных условий труда!

Источники

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

UPD. Также собрал бинарники которые я собрал.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 21

    +6
    Я не хочу вас загружать .patch файлами и лишними деталями, кому нужно — сам сможет сравнить исходники.

    А вот стоило. Потом разобрать что к чему, или хотя-бы намекнуть почему изменили. А так, получилась не статья, а новость.
      +3
      Да, вы правы. Но всех мыслей описать не смогу, т.к. влип на несколько часов дебага. Я постараюсь расширить статью деталями.
      0
      А получится ли его скомпилировать под xscale-linux? Ещё проблема в том, что на этом аппарате стоит glibc 2.2.5.
        0
        Я конечно, дико извиняюсь, но хочется бинарников :)
          +2
          Обновил статью, добавил бинарники. Желаю успехов! :)
          0
          У меня следующие вопросы к автору:

          1. Зачем для запуска tmux необходим Cygwin и Windows?
          2. Работает ли в tmux vim?
            +2
            1. У меня на десктопе стоит Windows, и я полюбил Cygwin за то что он откидывает необходимость линукса под рукой, но в Cygwin мне не хватало тмукса, и я очень долго искал решение или замену. Этот пост предназначен для пользователей Cygwin.
            2. А почему ему не работать? Полет нормальный, проблем не замечаю.
              +1
              На счёт первого пункта непонимание осталось, но я так полагаю, что у тебя либо какие-то весьма экзотические требования к окружению либо ты админишь локалхост. В любом случае, осуждать не буду.

              Почему и как vim не работает в tmux или в screen можно рассказывать долго, но обычно всё сводится к одному из двух: либо съезжают цвета, либо начинают чудить «стрелки», выдавая в редактор эскейп-последовательности (порой, в весьма забавном виде). Всё это очень сильно зависит от переменной TERM, настроек vim и — по субъективным ощущениям — погоды на марсе.
            0
            А с mingw соберется?
              0
              Я лично не пробовал, но думаю что соберется. Попробуйте и поделитесь опытом
              +1
              Да, помню свой многолетний экспириенс с cygwin в бытность мою дотнетчиком. Вроде как рабочая командная строка, но, если сравнивать с настоящей унихоподобной системой, всё время чего-то не хватает. Ну, как в случае с безалкогольным пивом (или резиновой женщиной — но тут не поручусь, не пробовал такой вариант). Всё-таки нехорошие люди Microsoft, что Services for UNIX убили, настоящая полноценная POSIX-подсистема ядра NT, наверное, была бы поприличнее, если её до ума довести.
                0
                maestro-cli, vagrant, chef… какое все знакомое, однако :)
                  0
                  Есть такое дело :)
                    0
                    По одному только хостнейму всё становится понятно. :)
                    0
                    ConEmu под винду тащит + clink и как-то линукс терминалы выглядят не очень по сравнению с этой парочкой.
                      0
                      Ну, не скажите. По моему опыту, ConEmu под Windows предоставляет примерно такой же опыт, как нормальный терминал под Linux (я пользуюсь yakuake). А статья-то, в общем-то, не об этом — статья про tmux.
                      0
                      Добрый день. Я попробовал сделать как в статье, tmux построился, но запустить его не могу.
                      $ tmux --help
                      работает, но создать сессию не получается — ничего не происходит, exit code 1. Как я понимаю, вы в его сорцах копались, не подскажите — куда смотреть?
                        0
                        Нашел проблему — я пускал Cygwin.bat, которые использовал не mintty, а виндовый cmd.exe. под mintty tmux заработал (правда, почему-то пришлось /usr/bin и /usr/local/bin самому в PATH добавлять).
                          0
                          Ну и соответственно, сразу возникает вопрос, стоит вообще пытаться собрать tmux без cygwin'а (mingw)?
                            0
                            Вы знаете, я гурман, но вы тоже тот еще :) У меня даже мысли небыло использовать Tmux для cmd :)
                              0
                              Я, когда писал тот комментарий, еще не хотел :) Скорее не знал правильной терминологии, и назвал виндовый «терминал» cmd.exe. Шелл-то там cygwin'овский пускался, просто не в mintty.

                        Only users with full accounts can post comments. Log in, please.