LINUX.ORG.RU

i3wm вопросы

 


0

2

Настраиваю оболочку и столкнулся с затрудениями. Нужно на автозапуск запустить 3 терминала, 1 вертикально, и два рядом горизонтально, это в одной рабочей области. Кроме запуска терминалов, нужно запустить команду из файла .bash_alias в каждом из запущенных терминалов, на крайний случай bash скрипт, но записанный в команде, а не в файле. Так вот я застыл на момент, сменить тип делений окон с горизонтально на вертикально и не могу выполнить любую bash команду. Вот то что у меня есть сейчас: exec --no-startup-id i3-msg 'workspace $ws3; exec gnome-terminal --working-directory=/var/www/lucky.loc/;exec gnome-terminal --working-directory=/var/www/lucky.loc/;exec gnome-terminal --working-directory=/var/www/lucky.loc/'



Последнее исправление: q3ta (всего исправлений: 2)

А тебе не подойдет кастомный лэйаут для нужного рабочего стола?

https://i3wm.org/docs/layout-saving.html

По поводу запуска команды в терминале - смотри man по терминалу, который используешь. К примеру, для termite это будет

termite -e ls --hold
jarres
()

И замени тэг с i3wm на i3, на первый почти никто не подписан.

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

о лейаутах щас посмотрю, а вот запуск терминала использовал что-то типа gnome-terminal -e alsamixer работает отлично, а вот с тем же ls и тд не работает, щас пробую разные вариации и гуглю

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

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

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

Если i3-save-tree не сохраняет нормально лэйаут по какой-то причине, то ты можешь руками написать файл с лэйаутом - это же обычный json.

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

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

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

спасибо, посмотрю и на него чуть позже

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

Не совсем понимаю зачем именно i3 использовать. На мой взгляд единственный бонус тайловых рисовальщиков в их легкости. И соответственно все что наравне или примерно наравне с fluxbox это нечто весьма странное. Единственный тайл, что мало жрет памяти (меньше rio) это bspwm 1,2 ~ 2 мб. Главная фишка fluxbox это запоминание расположения окон, которые выставив раз можно больше не править. Браузер можно открывать с оформлением окна за границей видимой области, заняв весь экран. Кнопки биндить тоже можно. Разбивку как в тайловых рисовальщиках окон тут можно поискать для openbox как это можно сделать и наверняка это заработает и для fluxbox. Каких-то особенных бонусов от тайлинга в i3 не заметно. Жирный тайлинг это разве что xmonad - поиграться с хаскелом. По крайней мере он без конфига потребляет 21 мегабайт - чуть больше i3.

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

~/.config/i3/config


# запускать gnome-terminal-[1-3] на workspace 2
assign [title="gnome-terminal-1"] 2
assign [title="gnome-terminal-2"] 2
assign [title="gnome-terminal-3"] 2

# добавить layout на workspace 2
exec --no-startup-id i3-msg "workspace 2; append_layout ~/.config/i3/layouts/layout.json"

# запустить gnome-terminal-[1-3] с нужными командами
exec --no-startup-id gnome-terminal -- bash -c "command_1 && bash"
exec --no-startup-id gnome-terminal -- bash -c "command_2 && bash"
exec --no-startup-id gnome-terminal -- bash -c "command_3 && bash"

~/.config/i3/layouts/layout.json


{
    "layout": "splith",
    "percent": 0.5,
    "type": "con",
    "nodes": [
        {
            "name": "gnome-terminal-1",
            "percent": 0.5,
            "type": "con",
            "swallows": [
                {
                    title="gnome-terminal-1"
                }
            ]
        },
        {
            "name": "gnome-terminal-2",
            "percent": 0.5,
            "type": "con",
            "swallows": [
                {
                    title="gnome-terminal-2"
                }
            ]
        },
    ]
}

Примерно так должно быть.
В этом примере я в swallows и в assign использую в качестве критерия title окна, но при этом в автозапуске терминалов его никак не устанавливаю (не умею в gnome-terminal, гугли).
Другие критерии подробно есть тут: https://i3wm.org/docs/userguide.html#command_criteria

Конфиг выше я не запускал, могут быть ошибки.

jarres
()

И проще стартовать одно окно Terminator с вкладками. 3 urxvt наверняка сожрут больше памяти чем terminator.

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

urxvt (уже посоветовали), st Еще на любителя есть terminator, terminology

Надо ставить, пробовать, смотреть, что тебе подходит в данный момент. Я какое-то время после переезда на i3, по привычке пользовался konsole, пока urxvt не нашел. Теперь st, причем до этого я его смотрел, но как-то не покатил.

он дефолтный

Ойвсё!

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

1 что мешает в urxvt точно также открывать вкладки?

2 что мешает стартовать urxvtd, раз уж тебе постоянно терминал нужен?

3 что мешает в urxvt отрубить нахрен буфер вывода («прокрутку»), раз уж ты себе поставл i3 и тебе, наверняка, лень тянуться к мышке?

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

3 urxvt наверняка сожрут больше памяти чем terminator.

наглая ложь.

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

gnome-terminal -e alsamixer работает отлично, а вот с тем же ls и тд не работает

он серьёзно в это не умеет? даже xterm самый дефолт вот так может:

xterm -e 'ls -lrt;pwd;whoami; echo "Press any key..."; read -n 1;'

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

если банально заменить xterm на gnome-terminal, то результата не будет, работает вариант от jarres в таком виде gnome-terminal — bash -c «command_1 && bash»

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

при чем тут буфер вывода? urxvt ставил, его полностью нужно кастомизировать, моя цель была вывести окна в i3 в нужном порядке, 50 | 50 (25 + 25 вертикально). если в i3 юзать лэйауты для привязки окна к месту в разметке, то тайтл окна не задать ни в urxvt нормально, ни в гномоском терминале.

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

Убил с пол часа на тот же терминатор, сначала подумал ура, но потом команды в терминале почему-то при автостарте не работают, только генерит ошибки от пайтона. Еще оно в разметку берет все запущенные терминалы где бы не было. По началу не понял откуда брались новые терминалы в сохраненном лэйауте. А он их хапает со всех рабочих мест и пересобирать вечно раскладку лэйута это как-то ппц.

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

Привет, спасибо за ответы, был болел и не мог ответить. У тебя там в json ошибка с title="", но то такое. Уже придумал решение которое собирался попробовать. Перед этим обновил систему, пересобрал json (оно его сохранило после обновы). Но баш который раньше работал по твоему примеру больше не работает... Не работает именно при автозапуске из i3. Короче еще те приколы...

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

По началу не понял откуда брались новые терминалы в сохраненном лэйауте. А он их хапает со всех рабочих мест и пересобирать вечно раскладку лэйута это как-то ппц.

Вот тут не совсем понял, что не получается.

Идея была в следующем: каким-то образом задать нужным терминалам title и в layout забирать терминалы с нужными title.
Небольшой пример:

запуск терминала

termite -t "termite_one" -e "ls" --hold

смотрим его свойства (через xprop)

WM_CLASS(STRING) = "termite", "Termite"
WM_ICON_NAME(STRING) = "termite_one"
_NET_WM_ICON_NAME(UTF8_STRING) = "termite_one"
WM_NAME(STRING) = "termite_one"
_NET_WM_NAME(UTF8_STRING) = "termite_one"

соответсвенно можно выбирать нужный терминал с помощью WM_NAME

Но баш который раньше работал по твоему примеру больше не работает...

не работает exec --no-startup-id gnome-terminal -- bash -c "command_3 && bash"?

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

По началу не понял откуда брались новые терминалы в сохраненном лэйауте. А он их хапает со всех рабочих мест и пересобирать вечно раскладку лэйута это как-то ппц.

Это я о terminator писал.

не работает exec --no-startup-id gnome-terminal — bash -c «command_3 && bash»?

мое упущение, я добавлял от себя еще привязку к workspace и i3-msg, без них работает. Я даже окнам дал заголовок таким образом:

exec --no-startup-id gnome-terminal --title=PPL --working-directory=/var/www/lucky.loc/ — bash -c «bash /app/shell/lucky_ppl.sh && bash»
exec --no-startup-id gnome-terminal --title=PML --working-directory=/var/www/lucky.loc/ — bash -c «bash /app/shell/lucky_pml.sh && bash»

изменил твои привязки на:

assign [title=«PML»] $ws3
assign [title=«PPL»] $ws3

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

щас установлю xprop и проведу еще пару проверок, может я еще что-то упускаю или где-то ошибся

q3ta
() автор топика
Ответ на: комментарий от jarres
urxvt -name "irssi-container" -e irssi

где именно пишется этот код? я пробовал в конфиге:

exec --no-startup-id rxvt-unicode -name "gits" -e gnome-terminal --working-directory=/var/www/lucky.loc
exec --no-startup-id rxvt-unicode -name "ppl" -e gnome-terminal --working-directory=/var/www/lucky.loc --title=ppl --command "bash /app/shell/lucky_ppl.sh"
exec --no-startup-id rxvt-unicode -name "pml" -e gnome-terminal --working-directory=/var/www/lucky.loc --title=pml --command "bash /app/shell/lucky_pml.sh"
оно запускает терминал, но запускает где попало...

вот так щас выглядит мой json

{
    "border": "normal",
    "current_border_width": 2,
    "floating": "auto_off",
    "geometry": {
       "height": 458,
       "width": 734,
       "x": 0,
       "y": 0
    },
    "name": "gits",
    "percent": 0.5,
    "swallows": [
       {
        "class": "gnome-terminal-server",
       "instance": "gits"
       }
    ],
    "type": "con"
}

{
    "border": "normal",
    "floating": "auto_off",
    "layout": "splitv",
    "percent": 0.5,
    "type": "con",
    "nodes": [
        {
            "border": "normal",
            "current_border_width": 2,
            "floating": "auto_off",
            "geometry": {
               "height": 458,
               "width": 734,
               "x": 0,
               "y": 0
            },
            "name": "ppl",
            "percent": 0.5,
            "swallows": [
               {
                "class": "gnome-terminal-server",
               "instance": "ppl"
               }
            ],
            "type": "con"
        },
        {
            "border": "normal",
            "current_border_width": 2,
            "floating": "auto_off",
            "geometry": {
               "height": 458,
               "width": 734,
               "x": 0,
               "y": 0
            },
            "name": "pml",
            "percent": 0.5,
            "swallows": [
               {
                "class": "gnome-terminal-server",
               "instance": "pml"
               }
            ],
            "type": "con"
        }
    ]
}

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

при чем тут буфер вывода?

Анонимус переживал за расход памяти. Ну а к размещению — конечно не при чём.

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

Сделал и проверил у себя небольшой рабочий пример.

~/.config/i3/layout.json

// vim:ts=4:sw=4:et
{
    "border": "none",
    "current_border_width": 0,
    "floating": "auto_off",
    "geometry": {
       "height": 528,
       "width": 756,
       "x": 0,
       "y": 0
    },
    "name": "termite-one",
    "percent": 0.5,
    "swallows": [
       {
	   "class": "^Termite$",
	   "instance": "^termite$",
	   "title": "^termite\\-one$"
       }
    ],
    "type": "con"
}

{
    // splitv split container with 2 children
    "border": "normal",
    "floating": "auto_off",
    "layout": "splitv",
    "percent": 0.5,
    "type": "con",
    "nodes": [
        {
            "border": "none",
            "current_border_width": 0,
            "floating": "auto_off",
            "geometry": {
               "height": 528,
               "width": 756,
               "x": 0,
               "y": 0
            },
            "name": "termite-two",
            "percent": 0.5,
            "swallows": [
               {
		   "class": "^Termite$",
		   "instance": "^termite$",
		   "title": "^termite\\-two$"
               }
            ],
            "type": "con"
        },
        {
            "border": "none",
            "current_border_width": 0,
            "floating": "auto_off",
            "geometry": {
               "height": 528,
               "width": 756,
               "x": 0,
               "y": 0
            },
            "name": "termite",
            "percent": 0.5,
            "swallows": [
		{
		    "class": "^Termite$",
                    "instance": "^termite$",
                    "title": "^termite\\-three$"  
               }
            ],
            "type": "con"
        }
    ]
}

~/.config/i3/config (частично)


# i3 config file (v4)

#-----------------------------------------------------------------------
#                         layout test
#-----------------------------------------------------------------------

assign [instance="termite-one"]		6
assign [instance="termite-two"]	       	6
assign [instance="termite-three"]	6

exec --no-startup-id i3-msg "workspace 6; append_layout ~/.config/i3/layout.json"

exec --no-startup-id termite --title "termite-one"   --exec "echo 'termite 1'" --hold
exec --no-startup-id termite --title "termite-two"   --exec "echo 'termite 2'" --hold
exec --no-startup-id termite --title "termite-three" --exec "echo 'termite 3'" --hold  
 

на всфкий случай полный конфиг тут: https://pastebin.com/z7njmWPX

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

теперь по поводу запуска терминалов:

вместо

exec --no-startup-id rxvt-unicode -name "pml" -e gnome-terminal --working-directory=/var/www/lucky.loc --title=pml --command "bash /app/shell/lucky_pml.sh"

нужно что-то вроде

exec --no-startup-id gnome-terminal --working-directory=/var/www/lucky.loc --title=pml --command "bash /app/shell/lucky_pml.sh"

если --title в gnome-terminal делает то, что я думаю.

при этом убедись, что swallows в layout.json содержат правильные условия (class, instance, title)
пример смотри в моем предыдущем сообщении с поправкой на то, что я использовал termite вместо gnome-terminal

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

termite --title «termite-one» устанавливает тайтл при простом открытие терминала? если да, то щас посмотрю можно ли его собрать или установить под ubuntu, просто гномовский терминал ставит тайтлы лишь при bash скриптах а при чистом запуске терминала он игнорирует данный атрибут, спасибо за ответ!

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

зачем тебе gnome-terminal в i3?

Это отличный терминал в 2019. Наверное даже лучший на данный момент. Я тоже использую его в i3. Мгновенный запуск, быстрая работа, минимальное кол-во потребляемой памяти, удобная настройка – что еще надо от терминала?

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

не понял вопрос. title будет выставлен, если терминал запущен командой «termite --title my title»

При запуске терминала командой «termite» title выставлен не будет.

Если иногда нужно запускать приложение с определенный title, то можно эту команду на хоткей подвесить, например

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

Мгновенный запуск, быстрая работа, минимальное кол-во потребляемой памяти

А если, например, с st сравнить?

Но-да не в том дело. На сколько мне известно, gnome-terminal тянет за собой гном. Это не плохо, если тебе нужны другие приложения гнома, но для тех, кому нет — сомнительный выбор.

webmonkey
()
Ответ на: комментарий от webmonkey
jarres@gentoo user % USE="-gnome-shell -nautilus" emerge -pv gnome-terminal

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/libxml2-2.9.9-r1:2::gentoo  USE="ipv6 python* readline -debug -examples -icu -lzma -static-libs -test" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_6 -python3_4 -python3_5 -python3_7" 0 KiB
[ebuild  N     ] dev-util/itstool-2.0.2::gentoo  PYTHON_TARGETS="python2_7" 95 KiB
[ebuild  N     ] gnome-base/dconf-0.30.1::gentoo  USE="-gtk-doc -test" 102 KiB
[ebuild     U  ] x11-libs/vte-0.54.1:2.91::gentoo [0.48.4:2.91::eroen] USE="crypt introspection -debug -glade -vala -vanilla (-termite-patch%*)" 1,062 KiB
[ebuild  N     ] x11-terms/gnome-terminal-3.30.1::gentoo  USE="-debug -gnome-shell -nautilus -vanilla" 2,082 KiB

А вот если без этих флагов, то да, пытается поставить gnome-shell и две тележки барахла в придачу.

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

Здесь все на антонимы нужно заменить? 🤣

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

поставил termite, привязал на title и все замечательно, увы в gnome-terminal нет нормальной установки title, по этому все так и вышло... по идеи последний вопрос...

exec --no-startup-id termite -t gits -d /var/www/lucky.loc --exec "echo 'test'" --hold

как после исполнения данной команды не блокировать работу termite, то есть оно сделало echo и все. без --hold, оно не создает новый терминал, а с ним выполняются лишь указанные команды

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

А если, например, с st сравнить?

Последний раз когда я его смотрел он был убогим куском говна. g-t открывается у меня почти мгновенно, дополнительной памяти для каждого экземпляра терминала почти не требует (работает по принципу клиент-сервер, как urxvtd и urxvtc).

И я даже могу сравнить потребление ресурсов:

Каждый экземпляр st жрет по 12 метров. gnome-terminal-server жрет около 36 метров, каждый экземляр g-t почти не добавляет занимаемой памяти, например больше 12 экземпляров g-t жрут 45 метров. Т.е. уже при 4 экземлярах терминала g-t выигрывает по ресурсам у st.

https://imgur.com/sRSD6U7

https://imgur.com/PMrrJh3

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

щито поделать. оно shell не запускает.

Да не. Непроизвольная реакция на что-то явно, как бы это сказать то, даже не знаю.

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

спасибо) вроде базово настроил все что хотел) остальную кастомизацию уже как-то позже буду пробовать...

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

отлично :)

на всякий случай - не забудь отметить тему как решенную.

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