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

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

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

Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Portnov писал(а):
26.01.2010 19:50
Вот примерно так, если интересно: http://dumpz.org/16374/

Да, при таком раскладе баг с «замораживанием» фрейма себя не проявляет, спасибо.

Up: проявляет, но реже
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

А вот что ещё заметил: xmobar не дружит с mplayer. Валится сама и его утягивает за собой, есть подозрение, что xmobar не может правильно обработать какую-то строчку, получаемую через xlog…
Кто-то сталкивался?
И такой вопрос: есть возможность выводить на xmobar только и исключительно информацию о текущем воркспейсе (либо всех воркспейсах), а не как по умолчанию — 3-4 воркспейса включая текущий по непонятному принципу и информацию о текущей раскладке? Помимо прочего это должно ещё отсечь наиболее подозрительную в плане парсинга часть xlog`а.
Про dynamicLogWithPP читал, но разобрался только с цветами-шрифтами и сигналами от воркспейсов.
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Можно ли управлять xmonad из консоли? Т.е. консольными командами закрывать окна, перемещать их по воркспейсам, самому по воркспейсам скакать? Столкнулся с тем, что easystroke в fedora12 не может передать сочетания клавиш дальше, олько команды. Вот ищу решения...
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Xmonad

Сообщение Portnov »

См. доку к XMonad.Hooks.ServerMode.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: Xmonad

Сообщение landgraf »

landgraf писал(а):
17.12.2009 17:00
Продолжаю мучаться с ICAclient (Citrix) под tiling WM. В сабже дочерние окошки клиента (меню и все окна вроде "открыть" "настройки" и т.п.) открываются в левом верхнем углу размером в 1 пиксель. Во fluxbox работает нормально. simpleFloat layout делал, не помогает

Продолжение: для большинства Java приложений (Maple, Netbeans) помогла установка wmname и запуск "wmname LG3D", ICAClient по прежнему сопротивляется :(
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

landgraf писал(а):
03.03.2010 08:21
для большинства Java приложений (Maple, Netbeans) помогла установка wmname и запуск "wmname LG3D", ICAClient по прежнему сопротивляется :(

Я бы посоветовал Xnest с box`ом внутри.

Каким образом можно увеличить количество воркспейсов в xmonad с дефолтных 9 до, скажем, 12? Ну и хоткеи навесить, ясное дело. alt+0, alt+- alt+= (к примеру). Никому не попадался готовый конфиг?
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: Xmonad

Сообщение landgraf »

AlexYeCu
Xnest это хорошо, но как победить отваливание с такой ошибкой:

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

XIO:  fatal IO error 11 (Ресурс временно недоступен) on X server ":5.0"
      after 39026 requests (39025 known processed) with 0 events remaining.
xinit:  connection to X server lost
Спасибо сказали:
babun
Сообщения: 5
ОС: Gentoo Linux

Re: Xmonad

Сообщение babun »

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

http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24371

положить в ~/.xmonad/lib/XMonad/Layout/XKBLayout.hsc, прогнать через hsc2hs, следовать инструкции из хидера. xxkb можно оставить в качестве индикатора. Требует заголовочных файлов от иксов в системе.

Не знаю, стоит ли это посылать в contrib..

PS пытался проанонсировать на xmonad@c.j.r, там как раз кто-то сильно такое хотел - но не смог продраться через "систему защиты". Сколько капчи не вводи - визиторам на канале ничего не сказать.

апдейт: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24417
в общем, дальнейшее событие развитий - в мейл листе.
Спасибо сказали:
Аватара пользователя
DiS
Сообщения: 296
ОС: Gentoo

Re: Xmonad

Сообщение DiS »

babun, спасибо, очень полезная вещь. Если бы ещё добавить исключение для dmenu, чтоб оно всегда было на eng раскладке, а лучше чтоб eng была везде где не указана другая, было бы вообще замечательно.

babun писал(а):
26.03.2010 00:49
дальнейшее событие развитий - в мейл листе

простите за возможно глупый вопрос, но, что именно Вы имели ввиду?
Если правильно задать вопрос, то он сам по себе будет ответом.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Xmonad

Сообщение Portnov »

DiS
http://blog.gmane.org/gmane.comp.lang.haskell.xmonad

Вообще, интересующимся текущей разработкой xmonad могу посоветовать следить за развитем событий там :)
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Можно как-то заставить xmonad не путать win-клавиши?
У меня на левоq Win — Super, на правой Multi_key. Всё работает нормально, кроме одного момента: если на Super(левый win) навесить хоткей, например, Super_L+x, то набрать последовательность Multi_key+x+x уже не получится — будет обрабатываться хоткей.

Как вообще сделать, чтобы xmonad не проявляла излишнюю самостоятельность, а считала левый и правые win/alt клавиши разными?

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

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        ISO_Next_Group (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x85),  Multi_key (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)


Наезд на xmonad не по делу, это всё нововведения F12. Будем править…
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Подскажите пожалуйста. Xmonad и прочее из darcs. Есть 2 монитора, стоит xcompmgr. неактивные окна делаются прозрачными. Как сделать, чтобы, если мышь перешла на другой монитор, то предыдущее окно не становилось прозрачным? Как вариант менее желательный - вообще отключить прозрачность неактивным окнам на втором мониторе. Мой конфиг:

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

{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts, NoMonomorphismRestriction #-}
import XMonad
import qualified XMonad.StackSet as W -- to shift and float windows
import Data.Ratio
import qualified Data.Map as M
import XMonad.Actions.CycleWS
import XMonad.Actions.WindowGo
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.SetWMName
import XMonad.Layout.Grid
import XMonad.Layout.LayoutModifier
import XMonad.Layout.PerWorkspace
import XMonad.Layout.LayoutCombinators hiding ( (|||) )
import XMonad.Layout.IM
import XMonad.Layout.IndependentScreens
--import XMonad.Layout.ShowWName
import XMonad.Util.EZConfig
import XMonad.Util.Run
import XMonad.Util.WindowProperties
import Control.Monad
import Graphics.X11.ExtraTypes.XF86
import Foreign.C.Types

-- Взять значение свойства окна
getProp :: Atom -> Window -> X (Maybe [CLong])
getProp a w = withDisplay $ \dpy -> io $ getWindowProperty32 dpy a w
-- Эта функция проверяет, выставлено ли свойство окна name в значение value
checkAtom name value = ask >>= \w -> liftX $ do
          a <- getAtom name
          val <- getAtom value
          mbr <- getProp a w
          case mbr of
            Just [r] -> return $ elem (fromIntegral r) [val]
            _ -> return False
-- Эта функция проверяет, является ли окно диалогом
checkDialog = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG"
-- Отрывающиеся (tear-off) меню
checkMenu = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_MENU"

basicLayout = Mirror tiled where
    tiled = Tall nmaster delta ratio
    nmaster = 1
    delta   = 2/100
    ratio   = 3/7
basicALayout = avoidStruts $ basicLayout
tallLayout = Mirror basicLayout
tallALayout = avoidStruts $ Mirror basicLayout
imLayout = withIMs ratio rosters chatLayout where
    chatLayout      = Mirror Grid
    ratio           = 1%5
    rosters         = [skypeRoster, pidginRoster]
    pidginRoster    = (ClassName "Pidgin") `And` (Role "buddy_list")
    --skypeRoster     = (ClassName "Skype") `And` (Not (Title "Options")) `And` (Not (Role "Chats")) `And` (Not (Title "*чат")) `And` (Not (Role "CallWindowForm"))
    skypeRoster     = (Title "evvproffessorr - Skype™ (Beta)")

myLayoutHook = fullscreen $ iml $ av $ normal where
    normal     = basicLayout ||| basicALayout ||| tallLayout ||| tallALayout ||| Full
    fullscreen = onWorkspace "0_4, 1_4, 0_5, 1_5" Full
    iml         = onWorkspace "0_3" imLayout
    av         = onWorkspace "1_1" basicALayout

manageMenus = checkMenu --> doFloat
manageDialogs = checkDialog --> doFloat

imManageHooks = composeAll . concat $
     [[className =? "Krusader" --> moveTo "0_1"]
     , [className =? "Conky" --> moveTo "1_1"]
    , [className =? "Firefox" --> moveTo "0_2"]
     , [title =? d --> doFloat | d <- myTFloats]
     , [className =? c --> doFloat | c <- myFloats]
     , [className =? a --> moveTo "0_3" | a <- myIMs]
     , [title =? "NCMPC" --> moveTo "1_2"]
     , [title =? "SMPlayer" --> moveTo "0_4"]
     , [className =? "Wine" --> moveTo "0_5"]
     , [title =? "Sun VirtualBox" --> moveTo "0_6"]
     , [className =? b --> doIgnore | b <- myIgnores]
     , [className =? "Basket" --> moveTo "1_9"]
    , [isFullscreen --> (doF W.focusDown <+> doFullFloat)]
     ]
     where
       --moveTo = doF . W.shift
       moveTo = doShift
       myIMs = ["Pidgin", "Skype"]
       myIgnores = ["Qt-subapplication", "Plasma"]
       myFloats = ["KMix", "Gimp-2.6", "Wine"]
       myTFloats = ["Firefox Preferences", "Составление фильтра для Adblock Plus", "Copying", "Moving", "Deleting", "Renaming"]

myManageHook = imManageHooks <+> manageMenus <+> manageDialogs

myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
    where fadeAmount = 0.75

-- | Data type for LayoutModifier which converts given layout to IM-layout
-- (with dedicated space for the roster and original layout for chat windows)
data AddRosters a = AddRosters Rational [Property] deriving (Read, Show)

instance LayoutModifier AddRosters Window where
  modifyLayout (AddRosters ratio props) = applyIMs ratio props
  modifierDescription _                = "IMs"

-- | Modifier which converts given layout to IMs-layout (with dedicated
-- space for rosters and original layout for chat windows)
withIMs :: LayoutClass l a => Rational -> [Property] -> l a -> ModifiedLayout AddRosters l a
withIMs ratio props = ModifiedLayout $ AddRosters ratio props

-- | IM layout modifier applied to the Grid layout
gridIMs :: Rational -> [Property] -> ModifiedLayout AddRosters Grid a
gridIMs ratio props = withIMs ratio props Grid

hasAnyProperty :: [Property] -> Window -> X Bool
hasAnyProperty [] _ = return False
hasAnyProperty (p:ps) w = do
    b <- hasProperty p w
    if b then return True else hasAnyProperty ps w

-- | Internal function for placing the rosters specified by
-- the properties and running original layout for all chat windows
applyIMs :: (LayoutClass l Window) =>
               Rational
            -> [Property]
            -> W.Workspace WorkspaceId (l Window) Window
            -> Rectangle
            -> X ([(Window, Rectangle)], Maybe (l Window))
applyIMs ratio props wksp rect = do
    let stack = W.stack wksp
    let ws = W.integrate' $ stack
    rosters <- filterM (hasAnyProperty props) ws
    let n = fromIntegral $ length rosters
    let (rostersRect, chatsRect) = splitHorizontallyBy (n * ratio) rect
    let rosterRects = splitHorizontally n rostersRect
    let filteredStack = stack >>= W.filter (`notElem` rosters)
    wrs <- runLayout (wksp {W.stack = filteredStack}) chatsRect
    return ((zip rosters rosterRects) ++ fst wrs, snd wrs)

myMouseBindings (XConfig {XMonad.modMask = mod4Mask}) = M.fromList $
    [ ((0, 9), (\_ -> toggleWS)),
      ((mod4Mask, button1), (\w -> focus w >> mouseMoveWindow w)),
      ((mod4Mask, button3), (\w -> focus w >> mouseResizeWindow w))
    ]

myWorkspaces = withScreens 2 (workspaces defaultConfig)

main = do
  xmonad $ defaultConfig {
    modMask = mod4Mask
    , layoutHook = myLayoutHook
    , manageHook = myManageHook
    , startupHook = setWMName "LG3D"
    , workspaces = myWorkspaces
    , borderWidth = 0
    , logHook = myLogHook
    , terminal = "urxvt"
    , mouseBindings = myMouseBindings
    }
    `additionalKeysP`
    [ ("M1-<F4>", kill)
    , ("M1-<Tab>", windows W.focusDown)
    , ("M1-S-<Tab>", windows W.focusUp)
     , ("<XF86Explorer>", spawn "urxvt")
     , ("<XF86Launch3>", spawn "urxvt --title NCMPC -e ncmpc -c -m -S")
     , ("<XF86Launch5>", spawn "~/.mpd/playlist.sh")
     , ("<XF86Launch6>", spawn "urxvt -e ssh -p 43434 evv@192.168.0.1")
     , ("<XF86Launch7>", spawn "urxvt -e ssh -p 43434 evv@92.125.142.238")
     --, ("<XF86Launch9>", shiftToPrev)
     , ("<XF86Mail>", toggleWS)
     --, ("<XF86Favorites>", shiftToNext)
     , ("<XF86MenuKB>", windows $ W.view "0_3")
     --, ("S-<XF86MenuKB>", (windows $ W.shift "3") >> (windows $ W.view "3"))
     --, ("C-<XF86MenuKB>", windows $ W.view "6")
     , ("<XF86Sleep>", spawn "sudo pm-suspend")
     , ("<XF86AudioLowerVolume>", spawn "amixer -q set Master 1- unmute")
     , ("<XF86AudioRaiseVolume>", spawn "amixer -q set Master 1+ unmute")
    , ("<XF86AudioMute>", spawn "mpc random")
    , ("<XF86AudioNext>", spawn "mpc next")
    , ("<XF86AudioPrev>", spawn "mpc prev")
    , ("<XF86AudioStop>", spawn "mpc stop")
    , ("<XF86AudioPlay>", spawn "mpc toggle")
     , ("<XF86MyComputer>", spawn "gmrun")
    ]
    `additionalKeysP`
    [("M-" ++ m ++ show k, windows $ onCurrentScreen f i)
     | (i, k) <- zip (workspaces defaultConfig) [1..9]
     , (f, m) <- [(W.greedyView, ""), (W.shift, "S-")]]
Спасибо сказали:
Аватара пользователя
minoru-kun
Сообщения: 620
ОС: Debian GNU/Linux

Re: Xmonad

Сообщение minoru-kun »

Собрал XMonad с Layout.Tabbed (местами не без помощи portnov'а). Хотелось бы решить следующие проблемы:
1. Область экрана разделена на два L.Tabbed при помощи L.LayoutCombinators. Alt-j, Alt-k переключают между всеми окнами сразу. А хотелось бы чтобы только между окнами в данной области.
2. Все окна попадают в верхний Layout, после чего некоторые из них я перетаскиваю при помощи L.WindowNavigation. Хотелось бы, чтобы некоторые окна попадали сразу в нижний в зависимости от их WM_CLASS.
Как такое сделать?
Спасибо сказали:
lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3

Re: Xmonad

Сообщение lazhu »

minoru-kun писал(а):
26.05.2010 14:15
Собрал XMonad с Layout.Tabbed (местами не без помощи portnov'а). Хотелось бы решить следующие проблемы:
1. Область экрана разделена на два L.Tabbed при помощи L.LayoutCombinators. Alt-j, Alt-k переключают между всеми окнами сразу. А хотелось бы чтобы только между окнами в данной области.
2. Все окна попадают в верхний Layout, после чего некоторые из них я перетаскиваю при помощи L.WindowNavigation. Хотелось бы, чтобы некоторые окна попадали сразу в нижний в зависимости от их WM_CLASS.
Как такое сделать?


Попробуйте поиграть вот с этим. Позволяет группировать окна в нескольких лэйаутах в пределах одного воркспейса.
Спасибо сказали:
Аватара пользователя
minoru-kun
Сообщения: 620
ОС: Debian GNU/Linux

Re: Xmonad

Сообщение minoru-kun »

С simpleTabbed работает как-то странно, с Simplest вообще не имеет никакого эффекта, а Tall не хочу.
Спасибо сказали:
Celebiaril
Сообщения: 2

Re: Xmonad

Сообщение Celebiaril »

Не работает оповещение активности (urgency) с psi/vacuum, при этом работает с urxvt и gajim. Также работает с psi в awesome.
Возможно ли как-то прикрутить?
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

А решил кто-нибудь проблему с диалогами OpenOffice.org? Со сменой фокуса и мерцанием окон диалогов?

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

export SAL_USE_VCLPLUGIN=gen


не работает, увы…
Спасибо сказали:
ezrgzx
Сообщения: 1
ОС: Arch Linux

Re: Xmonad

Сообщение ezrgzx »

Прошу помочь разобраться с одной проблемой.

Хочу прикрутить прозрачность к xterm средствами transset-df. Однако при использовании дополнения FadeInactive, когда окно xterm'a становится неактивным, прозрачность пропадает. Пока обхожусь rxvt-unicode, но он частенько намертво падает и тормозит с xft-шрифтами. Измаялся уже весь, гугление ничего внятного не дает.
Спасибо сказали:
B0BaH
Сообщения: 85
ОС: Gentoo и Ubuntu )

Re: Xmonad

Сообщение B0BaH »

Всем доброго времени суток, недавно поставил xmonad понравилось! Вот только возникли некоторые вопросы:

1) Можно ли xmonad настроить так чтобы для каждого рабочего стола была своя компановка? (если можно то так) например рабочий стол №1 tiled рабочий стол №2 circle
2) Как сделать так чтобы некоторый класс приложений открывался ТОЛЬКО на заданном рабочем столе? например pidgin и skype открывались бы только на рабочем столе номер 2....firefox transmission и тому подобное только на рабочем столе 1, vim и прочая нечисть открывались на 3 рабочем столе, и так далее!!

пытался 2 сделать как написано вот тут , то есть добавить в xmonad.hs следующее
myManageHook = composeAll
[ className =? "MPlayer" --> doFloat
, className =? "feh" --> doFloat
, className =? "Pidgin" --> moveTo "im"
, className =? "Firefox-bin" --> moveTo "web"
, className =? "Emacs" --> moveTo "emacs"
, className =? "Epdfview" --> moveTo "read"
, className =? "Eclipse" --> moveTo "dev"
, className =? "VirtualBox" --> moveTo "win"
]
where moveTo = doF . W.shift

но ничего не вышло, только лишь перестали реагировать комбинации клавиш и пропала панелька гнома...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Xmonad

Сообщение diesel »

B0BaH писал(а):
10.10.2010 21:22
Всем доброго времени суток, недавно поставил xmonad понравилось! Вот только возникли некоторые вопросы:

1) Можно ли xmonad настроить так чтобы для каждого рабочего стола была своя компановка? (если можно то так) например рабочий стол №1 tiled рабочий стол №2 circle

да.

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

import XMonad.Layout.PerWorkspace
.....

myLayout =  windowArrange $ avoidStruts $ fixFocus $
    onWorkspace "a:chat" myIM $
    onWorkspace "e:term" ( mytabs |||  magicFocus( centerMaster mytabs ) ||| TwoPane (3/100) (1/2) ||| Grid) $
    onWorkspace "l:mail" mytabs $
    onWorkspace "w:webs" ( mytabs ||| Accordion ||| TwoPane (3/100) (1/2)  ||| Circle ||| noBorders Full ) $
    onWorkspace "v:virt" mouseResizableTile $
    noBorders Full
.....


B0BaH писал(а):
10.10.2010 21:22
2) Как сделать так чтобы некоторый класс приложений открывался ТОЛЬКО на заданном рабочем столе? например pidgin и skype открывались бы только на рабочем столе номер 2....firefox transmission и тому подобное только на рабочем столе 1, vim и прочая нечисть открывались на 3 рабочем столе, и так далее!!


У меня вот так(последние два кажется не работают):

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

import qualified XMonad.StackSet as W
.....
myWorkspaces =  [ "a:chat", "e:term", "l:mail", "w:webs", "m:mix", "v:virt" ]
.....
myManageHook = manageDocks <+>manageMenus<+>manageDialogs<+>composeAll
    [ className =? "MPlayer"            --> doFloat
    , className =? "Gimp"               --> doFloat
    , resource  =? "desktop_window"     --> doIgnore
    , resource  =? "kdesktop"           --> doIgnore
    , className =? "Pidgin"             --> doF(W.shift "a:chat")
    , className =? "Iceweasel"          --> doF(W.shift "w:webs")
    , className =? "Chromium-browser"   --> doF(W.shift "w:webs")
    , className =? "Icedove"            --> doF(W.shift "l:mail")
    , className =? "Gnome-terminal"     --> doF(W.shift "e:term")
    , className =? "xine"           --> (ask >>= \w -> liftX (toggleBorder w) >> doCenterFloat)
    , className =? "Vlc"            --> (ask >>= \w -> liftX (toggleBorder w) >> doCenterFloat)]
Спасибо сказали:
B0BaH
Сообщения: 85
ОС: Gentoo и Ubuntu )

Re: Xmonad

Сообщение B0BaH »

насколько я понял:

для решения 1 я добавил следующее

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

myWorkspaces    = ["1:web","2:im","3:term","4","5","6","7","8","9"]
myLayout = onWorkspace "1:web" (Circle ||| Full)

но вываливается с ошибкой:

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

xmonad --recompile
xmonad.hs:16:23:
    Couldn't match expected type `GHC.Word.Word64'
           against inferred type `PerWorkspace (Choose Circle Full) l2 a'
      Expected type: l2 a -> Window
      Inferred type: l2 a -> PerWorkspace (Choose Circle Full) l2 a
    In the `layoutHook' field of a record
    In the first argument of `additionalKeysP', namely
        `gnomeConfig
           {modMask = myModmask, terminal = "gnome-terminal",
            layoutHook = myLayout, workspaces = myWorkspaces}'

xmonad.hs:47:11:
    No instance for (LayoutClass Circle a)
      arising from a use of `onWorkspace' at xmonad.hs:47:11-47
    Possible fix:
      add an instance declaration for (LayoutClass Circle a)
    In the expression: onWorkspace "1:web" (Circle ||| Full)
    In the definition of `myLayout':
        myLayout = onWorkspace "1:web" (Circle ||| Full)

Please check the file for errors.



Что не так?


Для второго я добавил:

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

myManageHook = composeAll
    [ className =? "Pidgin"    --> doF(W.shift "2:im")
    , className =? "Firefox"   --> doF(W.shift "1:web")
    ]


никаких ошибок не выдал, но вот при запуске pidgin он запустился на 1 рабочем столе (а вроде как должен на 2) или я что то не понял?

ну и вот мой xmonad.hs

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

import XMonad
import XMonad.Config.Desktop
import XMonad.Layout.Circle
import XMonad.Config.Gnome
import XMonad.Util.EZConfig
import XMonad.Layout.IM
import Data.Ratio ((%))
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.ManageHook
import XMonad.Layout.PerWorkspace
import XMonad.Hooks.ManageDocks
main = xmonad $ gnomeConfig
        { modMask = myModmask -- Use Super instead of Alt
        , terminal = "gnome-terminal"
        , layoutHook = myLayout
        , workspaces = myWorkspaces
        , manageHook  = myManageHook
        -- more changes
        }
        `additionalKeysP`
                 [ ("M1-m", spawn "exaile")
                 , ("M1-f", spawn "firefox")
                 , ("M1-v", spawn "vlc")
                 , ("M1-p", spawn "pidgin")
                 , ("M1-v", spawn "gvim")
               ]

myModmask = mod4Mask

myWorkspaces    = ["1:web","2:im","3:term","4","5","6","7","8","9"]
myLayout = onWorkspace "1:web" (Circle ||| Full) $

myManageHook = composeAll
    [ className =? "Pidgin"    --> doF(W.shift "2:im")
    , className =? "Firefox"   --> doF(W.shift "1:web")
    ]
Спасибо сказали:
B0BaH
Сообщения: 85
ОС: Gentoo и Ubuntu )

Re: Xmonad

Сообщение B0BaH »

Сам разобрался, надо было всего лишь включить мозг, вот конфиг если кому нужно:

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

import XMonad
import XMonad.Config.Desktop
import XMonad.Layout.Circle
import XMonad.Config.Gnome
import XMonad.Util.EZConfig
import XMonad.Layout.IM --layout for pidgin
import Data.Ratio ((%))
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.ManageHook
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.WindowArranger
import Data.Maybe             --fixfocus
import XMonad.Layout.PerWorkspace
import XMonad.Layout.NoBorders
import XMonad.Layout.Grid
main = xmonad $ gnomeConfig
        { modMask = myModmask -- Use Super instead of Alt
        , terminal = "gnome-terminal"
        , layoutHook = desktopLayoutModifiers myLayout
        , workspaces = myWorkspaces
        , manageHook  = myManageHook
        -- more changes
        }
        `additionalKeysP`
                 [ ("M1-m", spawn "exaile")
                 , ("M1-f", spawn "firefox")
                 , ("M1-v", spawn "vlc")
                 , ("M1-p", spawn "pidgin")
                 , ("M1-v", spawn "gvim")
               ]

myModmask = mod4Mask

myWorkspaces    = ["1:web","2:chat","3:term","4:media"]
--myLayout = withIM (1%6) (ClassName "Pidgin")
--myLayout = Circle  ||| tiled ||| Mirror tiled ||| Full
myLayout =  windowArrange $
    onWorkspace "1:web" (tiled ||| Circle ||| Full) $
    onWorkspace "2:chat" (withIM (1%6) (ClassName "Pidgin") Circle) $
    onWorkspace "3:term" (tiled ||| Full) $
    onWorkspace "4:media" (Grid ||| Circle ||| tiled ||| Full) $
    noBorders Full
   where
    -- default tiling algorithm partitions the screen into two panes
     tiled   = Tall nmaster delta ratio

    -- The default number of windows in the master pane
     nmaster = 1

    -- Default proportion of screen occupied by master pane
     ratio   = 1/2

    -- Percent of screen to increment by when resizing panes
     delta   = 3/100

--myLayout = onWorkspace "1:web" myWeb
myManageHook = composeAll
    [ manageHook gnomeConfig
    , className =? "Gnome-terminal" --> doShift "3:term"
     -- needs: import XMonad.Hooks.ManageHelpers (isFullscreen,doFullFloat)
    , isFullscreen --> doFullFloat
    , className =? "Pidgin"    --> doF(W.shift "2:chat")
    , className =? "Firefox"   --> doF(W.shift "1:web")
    , className =? "Exaile" --> doF(W.shift "4:media")
    , className =? "Vlc" --> doF(W.shift "4:media")
    ]


и кстати diesel спасибо за подсказку!
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Xmonad

Сообщение diesel »

B0BaH писал(а):
10.10.2010 23:10
Что не так?


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

myLayout = onWorkspace "1:web" (Circle ||| Full) $
           Full

надо указывать еще Layout который будет по дефолту

PS. UPS, опоздал :)
Спасибо сказали:
Аватара пользователя
damex
Сообщения: 276
Статус: segfault in your face
ОС: Hardened Funtoo x86_64

Re: Xmonad

Сообщение damex »

начал переползать опять на чистый xmonad и увы снова чтото идет не так как хотелосьбы ...
пробовал настроить layout ShowWName но увы оно так съедать кустомизацию и не захотело.

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

import XMonad
import System.Exit
import XMonad.Layout.Circle
import XMonad.Layout.NoBorders
import XMonad.Layout.ShowWName
import XMonad.Util.Run
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import qualified XMonad.StackSet as W
import qualified Data.Map        as M

main = do
 spawn "feh --bg-scale ~/desktop.png"
 xmobar <- spawnPipe "xmobar ~/.xmonad/xmobar"
 xmonad $ defaultConfig{
  terminal ="urxvt",
  focusFollowsMouse = False,
  borderWidth = 1,
  modMask = mod4Mask,
  workspaces = ["dp1","dp2","dp3","dp4","dp5","dp6"],
-- workspaces = ssworkspaces,
  normalBorderColor = "#202020",
  focusedBorderColor = "#e67817",
  keys = myKeys,
  mouseBindings = myMouseBindings,
  layoutHook = showWName' mySWNConfig myLayout,
  manageHook = myManageHook <+> manageDocks,
  logHook = dynamicLogWithPP $ defaultPP {ppOutput = hPutStrLn xmobar},
  startupHook = return ()}

mySWNConfig = defaultSWNConfig
 {swn_font = "-xos4-terminus-bold-*-normal-*-14-*-*-*-*-*-iso10646-*"
 ,swn_bgcolor = "#202020"
 ,swn_color = "#e67817"
 ,swn_fade = 1}

-- ssworkspaces :: [String]
-- ssworkspaces = ["dp1","dp2","dp3","dp4","dp5","dp6","dp7"]

myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
 [((controlMask .|. mod1Mask,xK_q),spawn $ XMonad.terminal conf)
 ,((controlMask .|. mod4Mask,xK_a),spawn "firefox")
 ,((mod1Mask .|. mod4Mask,xK_a),spawn "urxvt -e mcabber")
 ,((mod4Mask,xK_Up),spawn "amixer set 'PCM' 5+ > /dev/null")
 ,((mod4Mask,xK_Down),spawn "amixer set 'PCM' 5- > /dev/null")
 ,((0,xK_Print),spawn "scrot ~/scrots/%m-%d-%T_scrot.png")
 ,((mod1Mask,xK_x),withFocused $ windows . W.sink)
 ,((mod1Mask,xK_q),spawn "xkill")

--, ((mod1Mask,xK_x), withFocused (sendMessage . expandWindowAlt) >> sendMessage Expand)
--, ("M-h", withFocused (sendMessage . shrinkWindowAlt) >> sendMessage Shrink)


-- , ((mod1Mask,xK_x), sendMessage MirrorShrink)
-- , ((mod1Mask,xK_z), sendMessage MirrorExpand)

    -- close focused window
    , ((modMask .|. shiftMask, xK_c     ), kill)

     -- Rotate through the available layout algorithms
    , ((modMask,               xK_space ), sendMessage NextLayout)

    --  Reset the layouts on the current workspace to default
    , ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)

    -- Resize viewed windows to the correct size
    , ((modMask,               xK_n     ), refresh)

    -- Move focus to the next window
    , ((mod1Mask,               xK_Tab   ), windows W.focusDown)

    -- Move focus to the next window
    , ((modMask,               xK_j     ), windows W.focusDown)

    -- Move focus to the previous window
    , ((modMask,               xK_k     ), windows W.focusUp  )

    -- Move focus to the master window
    , ((modMask,               xK_m     ), windows W.focusMaster  )

    -- Swap the focused window and the master window
    , ((modMask,               xK_Return), windows W.swapMaster)

    -- Swap the focused window with the next window
    , ((modMask .|. shiftMask, xK_j     ), windows W.swapDown  )

    -- Swap the focused window with the previous window
    , ((modMask .|. shiftMask, xK_k     ), windows W.swapUp    )

    -- Shrink the master area
    , ((modMask,               xK_h     ), sendMessage Shrink)

    -- Expand the master area
    , ((modMask,               xK_l     ), sendMessage Expand)

    -- Push window back into tiling
--    , ((modMask,               xK_t     ), withFocused $ windows . W.sink)

    -- Increment the number of windows in the master area
    , ((modMask              , xK_comma ), sendMessage (IncMasterN 1))

    -- Deincrement the number of windows in the master area
    , ((modMask              , xK_period), sendMessage (IncMasterN (-1)))

    -- toggle the status bar gap
    -- TODO, update this binding with avoidStruts , ((modMask              , xK_b     ),

    -- Quit xmonad
    , ((modMask .|. shiftMask, xK_q     ), io (exitWith ExitSuccess))

    -- Restart xmonad
    , ((modMask              , xK_q     ), restart "xmonad" True)
    ]
    ++

    --
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    --
    [((m .|. mod1Mask, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++

    --
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    --
    [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
        | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]

myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
 [((mod1Mask,button1),(\w -> focus w >> mouseMoveWindow w))
 ,((mod1Mask,button2),(\w -> focus w >> windows W.swapMaster))
 ,((mod1Mask,button3),(\w -> focus w >> mouseResizeWindow w))]

myLayout = avoidStruts $ smartBorders (tiled ||| Circle ||| Mirror tiled ||| Full)
 where
  tiled = Tall nmaster delta ratio
  nmaster = 1
  ratio = 1/2
  delta = 3/100
--  tiled = ResizableTall 1 (2/100) (1/2) []

myManageHook = composeAll
 [className =? "MPlayer" --> doFloat
 ,className =? "Gimp" --> doFloat
 ,className =? "Qmmp" --> doFloat
 ]

хотелосьбы помощи с настройкой =_=

upd: таки оно сожрало конфиг скрашив сперва хмонад ..
Non-technical questions sometimes don't have an answer at all. @ Linus Torvalds
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

1. Так, OO.o не нравится focusFollowsMouse = true. С false всё ок. Можно как-нибудь сделать focusFollowsMouse = true на всех workspaces кроме одного (на котором запускается офис)?

2. Как менять focusFollowsMouse при запуске софта/по хоткею?

https://bbs.archlinux.org/viewtopic.php?id=82214

У меня этот способ не заработал, к тому же без EZConfig хотелось бы обойтись.
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

После обновления Fedora12 --> Fedora14 ростр Skype`а больше не определяется по Role "Main Window". Xprop ничего внятного не говорит на этот счёт..
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

Кстати говоря, кто пользуется xmonad из кабал с Fedora14?
Что-то там полезли проблемы — не находятся интерфейсы (could not load interface for) для utils и actions, да и cabal отказывается что-либо устанавливать, ссылаясь на невозможность установить часть пакетов.

UP: проблема с переходом с базы 3.x на 4.x, похоже..

UP2: но что делать — непонятно…

UP3: пока упёрся в это:

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

xmonad.hs:692:28:
    Couldn't match expected type `containers-0.3.0.0:Data.Map.Map
                                    (ButtonMask, KeySym) (X ())'
           against inferred type `M.Map (KeyMask, KeySym) (X ())'
    In the `keys' field of a record
    In the second argument of `($)', namely
        `defaultConfig
           {focusFollowsMouse = myFocusFollowsMouse,
            borderWidth = myBorderWidth, modMask = myModMask,
            numlockMask = myNumlockMask, workspaces = myWorkspaces,
            normalBorderColor = myNormalBorderColor,
            focusedBorderColor = myFocusedBorderColor,
строка 692 --->  keys = myKeys,


UP2:

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

ghc-pkg hide containers-0.4.0.0
— подсказали на #xmonad.
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

После обновления неожиданно xmobar стал неправильно отображать кириллицу:

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

 СообÑ&#137;ение


Замечу, что оно так уже в .xmonad/status.

Как можно исправить?
Спасибо сказали:
Аватара пользователя
damex
Сообщения: 276
Статус: segfault in your face
ОС: Hardened Funtoo x86_64

Re: Xmonad

Сообщение damex »

Как можно исправить?

а какже конфиг и прочая инфа? :)
Non-technical questions sometimes don't have an answer at all. @ Linus Torvalds
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: Xmonad

Сообщение AlexYeCu »

damex писал(а):
15.01.2011 21:35
Как можно исправить?

а какже конфиг и прочая инфа? :)


xmonad.hs

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

$ cat .xmobarrc
Config { font = "-Misc-Fixed-*-R-Normal--9-120-75-75-C-70-ISO8859-1"

       , bgColor = "black"
       , fgColor = "green"

       , position = Static { xpos = 0
                           , ypos = 38
                           , width = 1280
                           , height = 17
                           }
       , lowerOnStart = True
       , commands = [ Run PipeReader "/home/AlexYeCu/.xmonad/status" "xlog"
                    ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%xlog%"
       }


UP: шрифт в .xmobarrc был указан как

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

font = "xft:terminus-9:style=normal"
, ситуация та же.
Спасибо сказали: