Xmonad (Вопросы и обсуждение)

ion, dwm, wmii, awesome, xmonad и другие

Модератор: Модераторы разделов

petrun
Сообщения: 45

Re: Xmonad

Сообщение petrun »

barsukADV писал(а):
31.07.2009 15:26
Так в xmonad тоже можно заранее экран на части поделить?
Я почему-то думал, что WindowNavigation --- это только для keybinding-ов, чтоб удобней перемещаться по окошкам.

WindowNavigation - это действительно только дял кейбиндингов.Для деления на части заранее существует LaoutCombo и, основанное на ней
LayoutCombinators , предоставляющее несколько удобных синтаксических констукций (*//*, **||*, итд.). WindowNavigation только предоставляет несколько функций для кидания окошек между лайоутами внутри Combo.
Не так давно появилась еще удобная LaoyutComboP, там можно указать (класс|тайтл|роль) окна,которое будет привязанно к определенному лайоуту внутри комбо.
То есть оно похоже на LayoutIM, только гибче.
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Было:
myMainLayout = toggleLayouts (noBorders Full) (avoidStruts (windowNavigation (combineTwo (TwoPane 0.03 0.5) (myTabs) (Grid False))))

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

Тепер изменил на:
myMainLayout = toggleLayouts (noBorders Full) (avoidStruts(windowNavigation $ (myTabs *|* (myTabs */* myTabs))))

В результате:
Not in scope: `*|*`
Not in scope: `*/*`

Чего-то я наверное опять не допонял

Упс.
Последний пост поздно заметил
Буду пробовать...
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Ну с этим вроде всё понятно.
Получается я раньше в принципе то же самое делал, только без *|* и */*.

Теперь следующий вопрос
а между табами можно как нибудь по человечески переключаться, а то они не всегда подряд открываются?

И ещё, почему
myMainLayout = toggleLayouts (noBorders Full)(avoidStruts(windowNavigation $ (myTabs *||* (combineTwo (Grid) (myTabs) (myTabs)))))
работает, а если вместо Grid использовать HintedGrid, то вылазит ошибка No instance for (LayoutClass Grid ())
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

barsukADV писал(а):
31.07.2009 17:39
работает, а если вместо Grid использовать HintedGrid, то вылазит ошибка No instance for (LayoutClass Grid ())

Потому что HintedGrid:

You can use this module with the following in your ~/.xmonad/xmonad.hs:

import XMonad.Layout.HintedGrid

Then edit your layoutHook by adding the Grid layout:

myLayouts = Grid False ||| Full ||| etc..
main = xmonad defaultConfig { layoutHook = myLayouts }

Automatic mirroring of hinted layouts doesn't work very well, so this Grid comes with built-in mirroring. Grid False is the normal layout, Grid True is the mirrored variant (rotated by 90 degrees).


Проще говоря потому что layout'а HintedGrid - нет. Ктстати а зачем: (combineTwo (Grid) (myTabs) (myTabs))? Почему тогда уже не: (myTabs */* myTabs)?


petrun, спасиба знал что пишу что-то неправильно, но не знал в чем. Давно этим занимался.
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Вообще хотелось бы в идеале (myTabs *|* (combineTwo(HintedGrid)(myTabs)(myTabs)))
Просто Grid не подходит всё из-за того же mplayer-а. (написал с Grid просто для примера)
Спасибо сказали:
C10H15N
Сообщения: 277
Статус: \(0_0)/ !!111

Re: Xmonad

Сообщение C10H15N »

А подскажите, что и как можно прикрутить в качестве панельки со списком окон к Xmonad-у, но чтоб место не занимала, а вызывалась по хоткеям? А то я порой не помню, где что, но место отьедать на экране постоянно не хочется.
Спасибо сказали:
Аватара пользователя
boh
Сообщения: 86
ОС: Debian Lenny

Re: Xmonad

Сообщение boh »

Как можно идентифицировать приложения, запущенные в терминале для управления ими с помощью manageHook? Может, можно при запуске отдельной программы в своём терминале прописать этому окну какое-то уникальное свойство?
Я так люблю свою страну, и ненавижу государство! (LUMEN)
Дверь не ломай - пробуй в неё войти. (Кукрыниксы)
Спасибо сказали:
xetf
Сообщения: 2
ОС: gentoo

Re: Xmonad

Сообщение xetf »

boh, зависит от эмулятора терминала. Для urxvt - если запустить приложение, например, так:

Код: Выделить всё

urxvt -name blablabla -e mutt
окном можно будет управлять средствами manageHook по свойству resource. Например так:

Код: Выделить всё

resource =? "blablabla" --> doFloat
Спасибо сказали:
Аватара пользователя
boh
Сообщения: 86
ОС: Debian Lenny

Re: Xmonad

Сообщение boh »

xetf писал(а):
12.08.2009 23:38
boh, зависит от эмулятора терминала. Для urxvt - если запустить приложение, например, так:

Код: Выделить всё

urxvt -name blablabla -e mutt
окном можно будет управлять средствами manageHook по свойству resource. Например так:

Код: Выделить всё

resource =? "blablabla" --> doFloat

Спасибо. Но хотелось бы что-то универсальное для любого иксового окна. Я, вот, пользуюсь terminator-ом в качестве эмулятора терминала. А в нём можно жёстко задать только заголовок окна (и это не очень удобно).
Я так люблю свою страну, и ненавижу государство! (LUMEN)
Дверь не ломай - пробуй в неё войти. (Кукрыниксы)
Спасибо сказали:
Yur4eg
Сообщения: 14

Re: Xmonad

Сообщение Yur4eg »

Потихоньку осваиваю xmonad. Накопилось несколько новых вопросов.

Как сделать окна firefox удобных для работы размеров? Поясню, многие его окошки, которые по логике должны быть плавающими, на самом деле такими не являются ("Настройки", "Загрузки"), а если их делать через myManageHook плавающими, то они занимают весь экран.

И второй вопрос. Можно ли xmonad подружить с stardict. Нагуглил только одно описание, как это сделать через XMonad.Util.NamedScratchpad но как оказалось это доступно только для форка xmonad - bluetile.
Спасибо сказали:
C10H15N
Сообщения: 277
Статус: \(0_0)/ !!111

Re: Xmonad

Сообщение C10H15N »

> а если их делать через myManageHook плавающими, то они занимают весь экран.

Сталкивался с подобным.Это файерфокс запомнил размеры,чтоль.Надо вначале сделать их нужного размера,а потом уж doFloat.Алсо, для плавающих окон http://iportnov.blogspot.com/2009/01/xmonad.html
Спасибо сказали:
xetf
Сообщения: 2
ОС: gentoo

Re: Xmonad

Сообщение xetf »

Для firefox лучше не прописывать каждое вспомогательное окно как плавающее, а сделать так:

Код: Выделить всё

myManageHook = composeAll
[
........................
(className =? "Firefox" <||> resource =? "Navigator") --> doFloat,
resource =? "Navigator" --> doSink,
.......................
]
     where
doSink  = ask >>= \w -> liftX (reveal w) >> doF (W.sink w)

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

XMonad.Util.NamedScratchpad есть в xmonad-contrib из darcs.
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Сейчас использую Xmonad в связке с KDE, но в принципе понимаю, что KDE мне особо и не нужен, если смогу адекватно заменить его удобства. А именно:
1) вроде как в качестве панели можно использовать xmobar, но сколько я его не пытался запустить, какие конфиги не делал - он не стартует, ругаясь на конфиг.
2) в качестве мини-консоли для вызова по горячей клавише для запуска программ вроде как предназначен dzen, но опять же - он где и как вообще настраивается, и как должен появляться? Вообще по нему не нашел ничего, будто бы прога настолько очевидна и проста, что даже пары слов о нем чиркануть не надо.
3) как вылогиниваться, выключать комп, перезагружаться? В KDE при использовании KDM все понятно - в главном меню все пункты есть, и на кнопку питания на системнике можно любое действие повесить. А если без KDE и без KDM, то как оно все?
4) ничего не понимаю с автозагрузкой. Пробовал добавить в .xinitrc все программы, которые мне нужны - не стартуют, стартует только xmonad и все. Пробовал сделать скрипт, а в .xinitrc добавить только exec ~/xmonad-start.sh - так опять же из всего скрипта только xmonad и запускается. А если потом самому этот скрипт запустить уже из xmonad, то все проги корректно стартуют.
5) как настроить внешний вид GTK приложений? В KDE у меня qt-gtk-engine стоит, а тут ведь надо какой-то обходной путь.
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Xmonad

Сообщение Aectann »

ProFfeSsoRr писал(а):
27.09.2009 07:31
4) ничего не понимаю с автозагрузкой. Пробовал добавить в .xinitrc все программы, которые мне нужны - не стартуют, стартует только xmonad и все. Пробовал сделать скрипт, а в .xinitrc добавить только exec ~/xmonad-start.sh - так опять же из всего скрипта только xmonad и запускается. А если потом самому этот скрипт запустить уже из xmonad, то все проги корректно стартуют.

А как у вас выглядит запускающий скрипт? Должен быть такого вида:

app1 &
app2 &
...
exec xmonad

(т.е. xmonad должен быть последним)
My god... it's full of stars!...
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Хм, он у меня где-то посередке :) И просто xmonad, без exec (т.к. это ж не скрипт вроде как, а просто команда, бинарник).
Спасибо сказали:
Yur4eg
Сообщения: 14

Re: Xmonad

Сообщение Yur4eg »

А можно ли сделать так, чтобы по горячей клавиши циклически переключать два воркспейса между собой? В идеале это будут два последних воркспейса, на которые я переключался Mod+цифра
Спасибо сказали:
Аватара пользователя
al1
Сообщения: 33
ОС: slackware_13

Re: Xmonad

Сообщение al1 »

никак не могу найти способ запуска 2 xmobar одновременно. может кто подлиться кодем. желательно с пояснениями, ибо xmonad юзаю не особо долго
Выровняйте мне /dev/hands :)
Спасибо сказали:
shiz
Сообщения: 4

Re: Xmonad

Сообщение shiz »

al1 писал(а):
07.10.2009 22:49
никак не могу найти способ запуска 2 xmobar одновременно. может кто подлиться кодем. желательно с пояснениями, ибо xmonad юзаю не особо долго

у меня запускается так:

#status bar
xmobar $HOME/.xmonad/xmobarbotrc &
xmobar $HOME/.xmonad/xmobartoprc &

xmobarbotrc, xmobartoprc - это конфиги для двух статусбаров (снизу и сверху, соответственно)
Спасибо сказали:
Yur4eg
Сообщения: 14

Re: Xmonad

Сообщение Yur4eg »

А как можно объединить два layout на одном workspace? Хочется иметь на половину экрана Full, а вторую половину переключать между Full и Grid.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: Xmonad

Сообщение Portnov »

import XMonad hiding (|||)
...
import XMonad.Layout.LayoutCombinators
...

layout1 = (Full ||| Grid) *|* Full
myLayoutHook = layout1 ||| ...

Примерно так. Вобщем, см. доку по X.L.LayoutCombinators.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
al1
Сообщения: 33
ОС: slackware_13

Re: Xmonad

Сообщение al1 »

shiz писал(а):
12.10.2009 00:01
al1 писал(а):
07.10.2009 22:49
никак не могу найти способ запуска 2 xmobar одновременно. может кто подлиться кодем. желательно с пояснениями, ибо xmonad юзаю не особо долго

у меня запускается так:

#status bar
xmobar $HOME/.xmonad/xmobarbotrc &
xmobar $HOME/.xmonad/xmobartoprc &

xmobarbotrc, xmobartoprc - это конфиги для двух статусбаров (снизу и сверху, соответственно)


хотел изящно, из основного файла))) но да я почти разобрался.... есть пара нюансов правда))) сейчас их ковыряю
Выровняйте мне /dev/hands :)
Спасибо сказали:
shiz
Сообщения: 4

Re: Xmonad

Сообщение shiz »

из основного это из xmonad.hs ?
Спасибо сказали:
Аватара пользователя
al1
Сообщения: 33
ОС: slackware_13

Re: Xmonad

Сообщение al1 »

shiz писал(а):
18.10.2009 00:07
из основного это из xmonad.hs ?

да, я сейчас пока смутно представляю как сделать раздельные файлы конфигурации для них, да так чтобы во время перезагрузки xmonad'а панельки адекватно перезапустились
Выровняйте мне /dev/hands :)
Спасибо сказали:
shiz
Сообщения: 4

Re: Xmonad

Сообщение shiz »

у меня так стартует xmobar из xmonad.hs

Код: Выделить всё

import XMonad.Util.Run
....
main = do
    xmproc <- spawnPipe "/home/shiz/build/bin/xmobar /home/shiz/.xmonad/xmobartoprc"
    xmonad $ defaultConfig  {
              ...
              logHook            = dynamicLogWithPP $  xmobarPP {
                                                        ppOutput = hPutStrLn xmproc
                                                        , ppCurrent = xmobarColor "red" "" . wrap "[" "]"
                                                        , ppTitle   = xmobarColor "blue"  "" . shorten 40
                                                        , ppLayout  = xmobarColor "red" "" }}

Можно рядом с xmproc <- spawnPipe ... добавить запуск второго xmobar с другим конфигом типа такого:
xmproctwo <- spawnPipe "/home/shiz/build/bin/xmobar /home/shiz/.xmonad/twoconfig" или посмотреть что-нибудь из возможностей haskell по запуску программ и средствами haskell стартовать второй xmobar с нужным конфигом.
Спасибо сказали:
Аватара пользователя
al1
Сообщения: 33
ОС: slackware_13

Re: Xmonad

Сообщение al1 »

shiz писал(а):
20.10.2009 23:27
у меня так стартует xmobar из xmonad.hs

Код: Выделить всё

import XMonad.Util.Run
....
main = do
    xmproc <- spawnPipe "/home/shiz/build/bin/xmobar /home/shiz/.xmonad/xmobartoprc"
    xmonad $ defaultConfig  {
              ...
              logHook            = dynamicLogWithPP $  xmobarPP {
                                                        ppOutput = hPutStrLn xmproc
                                                        , ppCurrent = xmobarColor "red" "" . wrap "[" "]"
                                                        , ppTitle   = xmobarColor "blue"  "" . shorten 40
                                                        , ppLayout  = xmobarColor "red" "" }}

Можно рядом с xmproc <- spawnPipe ... добавить запуск второго xmobar с другим конфигом типа такого:
xmproctwo <- spawnPipe "/home/shiz/build/bin/xmobar /home/shiz/.xmonad/twoconfig" или посмотреть что-нибудь из возможностей haskell по запуску программ и средствами haskell стартовать второй xmobar с нужным конфигом.


программу можно запустить просто spawnPipe "[прога]", но если пременить новые нстройки через Alt+Q, то старый экземпляр программы не убьется а новый запуститься. вот в чем крсяк.
Выровняйте мне /dev/hands :)
Спасибо сказали:
C10H15N
Сообщения: 277
Статус: \(0_0)/ !!111

Re: Xmonad

Сообщение C10H15N »

>старый экземпляр программы не убьется а новый запуститься.

Так запускайте killall программа & программа
И некчему в сам Иксмонад пихать, выносите во внешний скрипт-это банально удобней (не надо его пересобирать при изменениях-хоть мелочь, но всё-таки).
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1136
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Каким образом можно в xmonad воспользоваться клавишами super (левый win) и meta (правый alt), при условии, что modm — на левом alt?
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: Xmonad

Сообщение Portnov »

Если нужно использовать их как отдельные клавиши - то они называются xK_Super_R и _L соответственно. Если как модификаторы - то это обычно mod4. Уточнить можно с помощью xev и xmodmap.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1136
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Как отдельные. Увы, у меня xmonad почему-то ругается на xK_Super_L…
Кстати, так и не смог прописать XF86Standby и аналогичные… Только кейсимом, т.е. 0x… , что неудобно как-то.
Причём помню, что как-то прописывал, правда давно. Увы, весь гугл перерыл, ничего внятного по теме не нашёл, хоть список поддерживаемых XF86-клавиш на официальном форуме получился приличный.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

http://www.haskell.org/haskellwiki/Xmonad/Key_codes


есть подозрение что использовать kX_Super_L как KeyMask, можно примерно вот так:

Код: Выделить всё

superl_l_mask::KeyMask
superl_l_mask = 65515


ну и потом что-то типа:

Код: Выделить всё

,((superl_l_mask, xK_m), windows( W.shift "m:mix"))
Спасибо сказали:
Ответить