Comments 58
Тайлинг нужен был, когда один монитор: тогда приходилось держать в фокусе сразу несколько приложений. Сейчас, например, у меня 3 монитора и куда проще открывать все нужно в фулскрине. Поэтому, обхожусь гномом.
Но вообще тема интересная. В свое время, пользовался dwm+gentoo.
Но вообще тема интересная. В свое время, пользовался dwm+gentoo.
Чур не смеяться, но я с помощью тайлинга собираю себе вказиудобные псевдо-IDE:
1) Сверху-слева несколько vim во вкладках для редактирования кода (когда же я освою табы в нем!), справа-сверху консоль для вывода результатов эксперимента, снизу консоль сборки и правки файлов с настройками эксперимента.
2) слева evince с готовой pdf, справа vim для редактирования tex и консоль для сборки tex в pdf снизу.
И это не тормозит на нетбуке в отличие от Eclipse или Kile.
1) Сверху-слева несколько vim во вкладках для редактирования кода (когда же я освою табы в нем!), справа-сверху консоль для вывода результатов эксперимента, снизу консоль сборки и правки файлов с настройками эксперимента.
2) слева evince с готовой pdf, справа vim для редактирования tex и консоль для сборки tex в pdf снизу.
И это не тормозит на нетбуке в отличие от Eclipse или Kile.
Расставляешь окна по своим местам руками каждый раз? Или скрипт какой используешь?
Расставляю пока вручную. Хотя надо и правда скрипт написать
А знаешь как программно манипулировать окнами в i3wm? Мне это очень надо, но пока не нашел как…
Насколько я понял из видео с GoogleTechTalks, можно получить управление с помощью i3wm.org/docs/ipc.html
Также он говорил про управление из консоли через передачу параметров i3-input
Сам не пробовал, фантазирую
Также он говорил про управление из консоли через передачу параметров i3-input
Сам не пробовал, фантазирую
Накопал щас управление. Команда focus ключевая, перемещается и изменяет размер только окно в фокусе (костыль?).
Поставил линукс тайлинговый оконный менеджер — напиши на Хабре!
Теперь ждем статей про dwm :)
Это какие например? У меня i3 все диалоги (которые именно диалоговые, а не обычные окна) открывает в плавающем слое.
Добавьте эту строчку в конфиг i3wm и диалоговое окно Nautilus'а (Действия над файлами) будет по умолчанию не во весь экран.
for_window [class="^Nautilus$" instance="^file_progress$"] floating enable
А как бы сделать так, что бы рестарте i3 у меня не дох xxkb?
Думал он избавит меня от мучений с интерфейсом skype, gimp, lazarus, но нифига. Старательно настроенную конфигурацию контейнеров для каждого приложения он не запоминает. Остальные его преимущества перед не тайловыми WM для меня не существенны.
Это да, этого недостает.
После прочтения документации, пытался настроить запуск Skype'а таким образом:
Но команды move и resize не работают с assign =(
Или я плохо документацию читал? Как еще можно настроить положение и размеры окон на определенном рабочем месте при загрузке?
После прочтения документации, пытался настроить запуск Skype'а таким образом:
assign [class="^SkypeTab$" instance="^SkypeTab$"] border none
assign [class="^SkypeTab$" instance="^SkypeTab$"] move up
assign [class="^SkypeTab$" instance="^SkypeTab$"] resize shrink down 32 px or 32 ppt
Но команды move и resize не работают с assign =(
Или я плохо документацию читал? Как еще можно настроить положение и размеры окон на определенном рабочем месте при загрузке?
upd:
Два последних assign в предыдущем примере это for_window (перепутал).
И вот так работает:
— фокусируемся на окне, поднимаем его вверх, изменяем размер и перемещаем фокус на рабочий стол «1: desktop».
Два последних assign в предыдущем примере это for_window (перепутал).
И вот так работает:
for_window [class="^SkypeTab$" instance="^SkypeTab$"] focus; move up; resize shrink down 30 px or 30 ppt; workspace 1: desktop
— фокусируемся на окне, поднимаем его вверх, изменяем размер и перемещаем фокус на рабочий стол «1: desktop».
переключение на русскую раскладку по Alt+Shift
Хм, а я думал, что мода использовать бесполезную клавишу CapsLock для переключения раскладки уже везде победила. ;)
победила! :)
Мне очень понравилось использовать как модификатор Win-клавишу. И запомнить ее очень просто — все «оконные» функции доступны через Windows-клавишу.
Особо приятно по Win-Esc окна закрывать.
Особо приятно по Win-Esc окна закрывать.
Я раскладки переключаю не используемым мной правым ctrl. а на капс куда удобнее поставить функцию левого ctrl.
Поставил почти как на маке: alt+space, привык моментально, менять не собираюсь.
А использовать клавишу-которую-нельзя-нажимать вообще стараюсь не использовать.
А использовать клавишу-которую-нельзя-нажимать вообще стараюсь не использовать.
Читая цикл про тайлинговые менеджеры так и не понял в чем их преимущество именно для GUI приложений. На скринах и видео — консоль. Для консоли есть Terminator и tmux, которые позволяют совместить тайлинг с удобствами классических DE. Переключиться из окна браузера в Terminator можно хоткеями. Виртуальные рабочие столы тоже можно создать столько, сколько нужно и без тайлинга и опять же, перемещаться между ними с помощью хоткеев. Возможно в одном рабочем пространстве браузер и мультиконсоль совместить:
ubuntuone.com/3MoUHwDNyLapJL8Mk3eCVa
На моем скрине: вверху хром, внизу открыт Terminator с разделенным по вертикали экраном.
Разделение экрана выполнено с помощью Unity(Compiz): Chrom поднят вверх и сжат до 50% экрана — Ctrl+Alt+8(NumLock), Terminator опущен вниз и сжат до 50% экрана — Ctrl+Alt+2(NumLock). Terminator разделен пополам вертикально — Ctrl+Shift+E.
ubuntuone.com/3MoUHwDNyLapJL8Mk3eCVa
На моем скрине: вверху хром, внизу открыт Terminator с разделенным по вертикали экраном.
Разделение экрана выполнено с помощью Unity(Compiz): Chrom поднят вверх и сжат до 50% экрана — Ctrl+Alt+8(NumLock), Terminator опущен вниз и сжат до 50% экрана — Ctrl+Alt+2(NumLock). Terminator разделен пополам вертикально — Ctrl+Shift+E.
В KDE теперь тоже есть тайловый режим, но на 4.7 работал он плохо. Для меня основное преимущество тайловых менеджеров в их ресурсоёмкости. Я плавно переходил на нетбуке KDE->Gnome->Unity->Xfce->[Awesome/i3] и только в их случае он перестал тормозить при 5 открытых djvu книгах и браузере.
Обычно раскладка окон в тайловых менеджерах более эффективна с точки зрения использования экранного пространства. Да, я согласен, что можно подкрутить и Gnome так, что у него не будет заголовков окон и т.д. Можно в i3 пользоваться плавающими окнами.
В общем, преимущество в производительности и личных предпочтениях, имхо.
Обычно раскладка окон в тайловых менеджерах более эффективна с точки зрения использования экранного пространства. Да, я согласен, что можно подкрутить и Gnome так, что у него не будет заголовков окон и т.д. Можно в i3 пользоваться плавающими окнами.
В общем, преимущество в производительности и личных предпочтениях, имхо.
А как же видео с Google Tech Talk? Всяко лучше, чем кратенькая статья, не раскрывающая в полной мере все прелести i3. Благо рассказчик подготовлен очень хорошо — ни единой заминки за всю презентацию.
Не забудьте про автозапуск gnome-settings-daemon, чтобы был корректный рендеринг шрифтов, а на ноутбуках работали сочетания клавиш с Fn.
А зачем добавлять setxkbmap в «.xsessionrc». Настройкам переключения раскладки клавиутуры самое место в «/etc/default/keyboard».
Небольшие выдержки из моего конфига i3wm.
Gedit, Nautilus, диалог Nautilus'а «Действия над файлами» и лаунчер Gmrun по-умолчанию в флоат режиме:
Сделать скриншот:
Управление громкостью клавишей Win+плюс\минус:
От трея отказался, статус-бар выглядит так (conky через dzen2 и скрипты на python):

1 — Индикатор Dropbox'a (On\Off\Sunc)
2 — Mail информер
3 — Cpu и Ram
4 — Громкость
5 — Дата
* если кому-нибудь надо, выложу конфиги.
___________________
Для получения значений class и instance окна использую утилиту xprop:
Gedit, Nautilus, диалог Nautilus'а «Действия над файлами» и лаунчер Gmrun по-умолчанию в флоат режиме:
for_window [class="^Gedit$" instance="^gedit$"] floating enable
for_window [class="^Nautilus$" instance="^nautilus$"] floating enable
for_window [class="^Nautilus$" instance="^file_progress$"] floating enable
for_window [class="^Gmrun$" instance="^gmrun$"] floating enable
Сделать скриншот:
bindsym Print exec scrot 'f%Y-%m-%d-%s_$wx$h.png' -e 'mv $f /home/UserName/Scrot/'
Управление громкостью клавишей Win+плюс\минус:
bindsym $mod+KP_Add exec amixer -c 0 sset PCM,0 5+
bindsym $mod+KP_Subtract exec amixer -c 0 sset PCM,0 5-
От трея отказался, статус-бар выглядит так (conky через dzen2 и скрипты на python):

1 — Индикатор Dropbox'a (On\Off\Sunc)
2 — Mail информер
3 — Cpu и Ram
4 — Громкость
5 — Дата
* если кому-нибудь надо, выложу конфиги.
___________________
Для получения значений class и instance окна использую утилиту xprop:
$ xprop | grep "WM_CLASS(STRING)"
Выложите конфиги пожалуйста
~/.i3/config
...
bar {
#status_command i3status
status_command conky -c ~/.i3/i3conky.conf | dzen2 -h '17' -w '600' -x '1317' -y '1062' -bg '#3c3b37' -ta 'rm'
position bottom
tray_output none
colors {
background #3c3b37
statusline #dfd5c8
# focused_workspace #ffffff #285577
# active_workspace #ffffff #333333
inactive_workspace #dfd5c8 #222222
# urgent_workspace #ffffff #900000
}
}
...
~/.i3/i3conky.conf
background no
out_to_x no
out_to_console yes
update_interval 1
TEXT
${execpi 5 ~/.i3/i3script/dropbox.py} ${execpi 600 ~/.i3/i3script/mail.py} ^fg(\#75dcff)Cpu $cpu% - Ram $memperc%^fg() ^fg(\#87ff73)Vol ${execpi 1 amixer -c 0 sget PCM | grep -o "Left.*Playback.*" | grep -o "[0-9]*%"}^fg() ^fg(\#ffa24e)${time %A %d %B %I:%M}^fg()
~/.i3/i3script/dropbox.py
#!/usr/bin/env python
# coding: utf-8
from subprocess import Popen, PIPE
status = {'Dropbox isn\'t running!': '^fg(\#ea2121)Off^fg()',
'/home/user/Dropbox: up to date': 'On',
'/home/user/Dropbox: syncing': '^fg(\#87ff73)Sync^fg()'}
def get_status():
pp = Popen('dropbox filestatus /home/user/Dropbox', shell=True, stdout=PIPE).stdout.read().replace('\n', '')
return status[pp]
print get_status()
~/.i3/i3script/mail.py
#!/usr/bin/env python
# coding: utf-8
import pycurl, StringIO, re
username = 'login'
password = 'pass'
def get_mail():
data = StringIO.StringIO()
curl = pycurl.Curl()
curl.setopt(pycurl.WRITEFUNCTION, data.write)
curl.setopt(pycurl.URL, 'https://'+username+':'+password+'@mail.google.com/mail/feed/atom')
try:
curl.perform()
except:
return False
mail = re.findall('<fullcount>(.*)</fullcount>', data.getvalue())[0]
if mail != '0': return '^fg(\#ea2121)Mail %s^fg()' % (mail)
else: return 'Mail 0'
print get_mail()
>никаких дополнительных настроек.
>Настроем их работу в паре:
Так нужно настраивать или из коробки работает?
>Настроем их работу в паре:
Так нужно настраивать или из коробки работает?
Awesome, xmonad, i3 что из этого дружественней к пользователю?
Может у вас какой-то особенный /bin/sh, но в моём после exec ничего не выполняется. Я про вот этот кусок кода:
#!/bin/sh
exec setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &
dropbox start &
Вот подтверждение:
% cat ~/tmp/exectest.sh
#!/bin/sh
exec echo 'setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &'
echo 'dropbox start &'
% /bin/sh ~/tmp/exectest.sh
setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &
%
Как видите, отработала только одна команда echo.
А вот выдержка из руководства (http://unixhelp.ed.ac.uk/CGI/man-cgi?sh):
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process
is created. The arguments become the arguments to command. If
the -l option is supplied, the shell places a dash at the begin-
ning of the zeroth arg passed to command. This is what login(1)
does. The -c option causes command to be executed with an empty
environment. If -a is supplied, the shell passes name as the
zeroth argument to the executed command. If command cannot be
executed for some reason, a non-interactive shell exits, unless
the shell option execfail is enabled, in which case it returns
failure. An interactive shell returns failure if the file can-
not be executed. If command is not specified, any redirections
take effect in the current shell, and the return status is 0.
If there is a redirection error, the return status is 1.
#!/bin/sh
exec setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &
dropbox start &
Вот подтверждение:
% cat ~/tmp/exectest.sh
#!/bin/sh
exec echo 'setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &'
echo 'dropbox start &'
% /bin/sh ~/tmp/exectest.sh
setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» &
%
Как видите, отработала только одна команда echo.
А вот выдержка из руководства (http://unixhelp.ed.ac.uk/CGI/man-cgi?sh):
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process
is created. The arguments become the arguments to command. If
the -l option is supplied, the shell places a dash at the begin-
ning of the zeroth arg passed to command. This is what login(1)
does. The -c option causes command to be executed with an empty
environment. If -a is supplied, the shell passes name as the
zeroth argument to the executed command. If command cannot be
executed for some reason, a non-interactive shell exits, unless
the shell option execfail is enabled, in which case it returns
failure. An interactive shell returns failure if the file can-
not be executed. If command is not specified, any redirections
take effect in the current shell, and the return status is 0.
If there is a redirection error, the return status is 1.
Вытащите амперсанд из-под кавычек, его передавать exec не надо:
#!/bin/sh
exec echo 'setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» '&
echo 'dropbox start' &
Тогда выполнятся обе строки:
$ ./exectest.sh
$ dropbox start
setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle»
#!/bin/sh
exec echo 'setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle» '&
echo 'dropbox start' &
Тогда выполнятся обе строки:
$ ./exectest.sh
$ dropbox start
setxkbmap «us,ru» ",winkeys" «grp:alt_shift_toggle»
Ну если так, то конечно будет две строки на выходе, т.к. exec выполниться в порождённом процессе, а не в текущем. Но объясните мне — а какой тогда смысл писать «exec»? Или ещё лучше — какой смысл в одной строке написать, а в другой — нет? Ведь по сути обе строки отработают одинаково — каждая породит новый процесс, который что-то там сделает и тихо завершится, никак не влияя на родительский.
Совершенно другое дело, если бы запуск Иксов делался бы по-дедовски, с помощью startx и .xinitrc — вот там использовать exec для запуска оконного менеджера было необходимо, и естественно, эта команда была последней.
Может всё-таки расскажете, откуда вы взяли exec? И зачем понатыкали амперсандов? Ну ладно, для дропбокса — не спорю, но для setxkbmap зачем???
Совершенно другое дело, если бы запуск Иксов делался бы по-дедовски, с помощью startx и .xinitrc — вот там использовать exec для запуска оконного менеджера было необходимо, и естественно, эта команда была последней.
Может всё-таки расскажете, откуда вы взяли exec? И зачем понатыкали амперсандов? Ну ладно, для дропбокса — не спорю, но для setxkbmap зачем???
У этого wm есть tray?
Есть. Но через некоторое время понимаешь, что трей вообще не нужен.
Он нужен для Skype, например.
и часов
Вот так выглядит статус-бар (conky через dzen2 и скрипты на python):

1 — Индикатор Dropbox'a (On\Off\Sunc)
2 — Mail информер
3 — Cpu и Ram
4 — Громкость
5 — Дата

1 — Индикатор Dropbox'a (On\Off\Sunc)
2 — Mail информер
3 — Cpu и Ram
4 — Громкость
5 — Дата
Ага, вы (или не вы) где-то рядом это уже показывали. Я пока не готов тратить 100 МБ памяти на коньки + еще метров N на python + dzen2.
Я пользуюсь Skype, который можно убить или через killall -9 skype или через менюшку в трэйе.
В i3bar есть поддержка трея (+ вход с stdin).
Я пользуюсь Skype, который можно убить или через killall -9 skype или через менюшку в трэйе.
В i3bar есть поддержка трея (+ вход с stdin).
conky - 640 КиБ
dzen - 244 КиБ
Хм. Я что-то делаю не так :)
Запускается так:
А сам конфиг такой:
bar {
...
status_command conky -c ~/.i3/i3conky.conf | dzen2 -h '17' -w '600' -x '1317' -y '1062' -bg '#3c3b37' -ta 'rm'
...
}
}
А сам конфиг такой:
background no
out_to_x no
out_to_console yes
update_interval 1
TEXT
${execpi 5 ~/.i3/i3script/dropbox.py} ${execpi 600 ~/.i3/i3script/mail.py} ^fg(\#75dcff)Cpu $cpu% - Ram $memperc%^fg() ^fg(\#87ff73)Vol ${execpi 1 amixer -c 0 sget PCM | grep -o "Left.*Playback.*" | grep -o "[0-9]*%"}^fg() ^fg(\#ffa24e)${time %A %d %B %I:%M}^fg()
Skype на отдельном рабочем месте «IM» (вместе с Pidgin'ом) — сворачивать\разворачивать ничего не надо.
Skype'у трей для чего-то еще надо?
P.S. Но повторюсь, трей есть из коробки.
Skype'у трей для чего-то еще надо?
P.S. Но повторюсь, трей есть из коробки.
Sign up to leave a comment.
Тайловый оконный менеджер i3