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

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

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

ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

К своему стыду я не знаю, что это такое.

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

{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts, NoMonomorphismRestriction #-}
import XMonad hiding ( (|||) )
import XMonad.Config.Kde
import qualified XMonad.StackSet as W -- to shift and float windows
import XMonad.Util.EZConfig
import XMonad.Actions.CycleWS
import XMonad.Actions.CycleRecentWS
import qualified XMonad.Actions.FlexibleManipulate as Flex
import XMonad.Actions.SpawnOn
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.FadeInactive
import XMonad.Layout.Combo
import XMonad.Layout.Grid
import XMonad.Layout.LayoutModifier
import XMonad.Layout.Named
import XMonad.Layout.NoBorders
import XMonad.Layout.PerWorkspace
import XMonad.Layout.Reflect
import XMonad.Layout.TwoPane
import XMonad.Layout.WindowNavigation
import XMonad.Layout.LayoutCombinators
import XMonad.Layout.IM
import XMonad.Layout.ThreeColumns
import XMonad.Util.WindowProperties
import XMonad.Util.Run
import Control.Monad
import Data.Ratio
import qualified Data.Map as M
-- подключаем библиотеки X11
import Graphics.X11.Xlib.Extras
import Graphics.X11.ExtraTypes.XF86
import Foreign.C.Types (CLong)
import XMonad.Prompt.Ssh
import XMonad.Prompt.Window
import XMonad.Prompt.Workspace
import XMonad.Prompt.XMonad

myBaseConfig = kdeConfig

-- Взять значение свойства окна
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"

myBorderWidth = 0

basicLayout = Mirror tiled where
    tiled = Tall nmaster delta ratio
    nmaster = 1
    delta   = 2/100
    ratio   = 2/5
wideLayout = Mirror basicLayout
basicALayout = avoidStruts $ basicLayout
imLayout = avoidStruts $ reflectHoriz $ withIMs ratio rosters chatLayout where
    chatLayout      = Mirror Grid
    ratio           = 1%5
    rosters         = [skypeRoster, kopeteRoster]
    kopeteRoster    = (ClassName "Kopete") `And` (Title "Kopete")
    skypeRoster     = (ClassName "Skype") `And` (Not (Title "Options")) `And` (Not (Role "Chats")) `And` (Not (Role "CallWindowForm"))

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

myLayoutHook = fullscreen $ im $ normal where
    normal     = basicLayout ||| basicALayout ||| wideLayout ||| Full
    fullscreen = onWorkspace "4, 5, 9" Full
    im         = onWorkspace "3" imLayout

myManageHook = imManageHooks <+> manageMenus <+> manageDialogs <+> manageHook myBaseConfig
imManageHooks = composeAll
     [ className =? "Gran Paradiso" --> moveTo "2"
     , title =? "Gran Paradiso Preferences" --> doFloat
     , className =? "Kmix" --> doFloat
     , className =? "Gimp" --> doFloat
     , className =? "Skype" --> moveTo "3"
     , className =? "Kopete" --> moveTo "3"
     , className =? "Amarok" --> moveTo "4"
     , title =? "SMPlayer" --> moveTo "5"
     , className =? "Quassel" --> moveTo "6"
     , className =? "wine" --> moveTo "7"
     , className =? "Qt-subapplication" --> doIgnore
     , className =? "Plasma" --> doIgnore
{-     , title =? " NX" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1041 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1042 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1043 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1044 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1045 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1046 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1047 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1048 - evv" --> moveTo "9"
     , title =? "NX - evv@Home-Server:1049 - evv" --> moveTo "9"-}
     ]
     where
     moveTo = doF . W.shift
     --role = stringProperty "WM_WINDOW_ROLE"

myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
    where fadeAmount = 0x66666666

myModMask = mod4Mask

main = xmonad $ myBaseConfig
    { modMask = myModMask
    , layoutHook = myLayoutHook
    , manageHook = myManageHook
    , borderWidth = myBorderWidth
    , logHook = myLogHook
    , terminal = "urxvt"
    }
    `additionalKeysP`
    [ ("M1-<F4>", kill),
      ("xF86XK_Launch9", prevWS),
      --("xF86XK_Mail", mpcAct "next"),
      ("xF86XK_Favorites", shiftToNext),
      ("xF86XK_Launch6", spawn "urxvt -e ssh evv@192.168.0.1"),
      ("xF86XK_Launch7", spawn "urxvt -e ssh -p 43434 evv@90.189.142.25")
    ]

-- | 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)
Спасибо сказали:
Аватара пользователя
Kain666
Сообщения: 131
ОС: Archlinux

Re: Xmonad

Сообщение Kain666 »

Блин, фиг знает почему так происходит, попробуй поспрашивать на xmonad@conference.jabber.ru
Но, как я понял, перекидывание происходит когда действия в managehook дублируются
например
className =? "Minefield" --> moveTo "web"
,resource =? "Navigator" --> moveTo "web"

это ведь одно и тоже...

У меня получилось добиться такого вот вида с нормальным поведением:

Изображение

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

import XMonad.Layout.TwoPane
import XMonad.Layout.ComboP
import XMonad.Layout.PerWorkspace


anyClass :: [String] -> Property
anyClass = foldr Or (Const False) . map ClassName
myManageHook = composeAll
    [, propertyToQuery onIM            --> moveTo "chat"]
        where
        moveTo = doF . W.shift
        onIM = anyClass ["Qutim", "Gajim.py", "Psi", "Kopete"]

myLayout = windowNavigation

        $ onWorkspace "chat"    (chat)
        $ tallL
where
    imL = withIM (1%5) (Role "MainWindow#1") Grid
    imL2 = withIM (1%5) (Role "roster") Grid
    chat = combineTwoP (TwoPane 0.5 0.5) imL2 imL (ClassName "Gajim.py")
Archlinux <strike>ion3</strike>xmonad urxvt ncmpcpp emacs screen <strike>gajim</strike>qutim rtorrent
Спасибо сказали:
Аватара пользователя
кып
Сообщения: 77
ОС: Xubuntu

Re: Xmonad

Сообщение кып »

Категорически приветствую.

Решил посмотреть на Xmonad. Поставил из репозитория версию 0.8-1 (OS Ubuntu 9.04 nebtook remix)

Запустил, никакой реакции на хоткеи.

Взял пример конфига отсюда то же самое.

Изменил mod1Mask на mod4Mask (клавиша windows) все заработало.

Ну и собственно вопрос: Почему может не работать mod1Mask ?
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Но, как я понял, перекидывание происходит когда действия в managehook дублируются

Хорошо, исправил, сделал вот так:

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

imManageHooks = composeAll . concat $
     [ [className =? "Gran Paradiso" --> moveTo "2"]
     , [className =? "Gimp" --> doFloat]
     , [className =? a --> moveTo "3" | a <- myIMs]
     ]
     where
     moveTo = doF . W.shift
     myIMs = ["Kopete", "Skype"]

и... проблема не исчезла. Твой способ не устраивает, мне нравятся именно сбоку контакт-листы.
Да, кстати, а почему ты так хитро сделал объединение классов в manageHook? Вообще, что делают строки
anyClass :: [String] -> Property
anyClass = foldr Or (Const False) . map ClassName
и propertyToQuery ?

Вообще, нормальной читабельной документации найти не могу. То, что на сайте, вроде и описывает Contrib, и непонятно как-то. Может есть где-то более доступная документация?
Спасибо сказали:
Аватара пользователя
Kain666
Сообщения: 131
ОС: Archlinux

Re: Xmonad

Сообщение Kain666 »

Я пробовал твой конфиг, у меня также перекидывает, долго разбираться времяни не было.
Я б на твоем месте взял какой нибудь стандартный конфиг и прописал бы все заново.
propertyToQuery ?
А про функцию, выдрал ее из кокого-то конфига, показалась доволно читабельной.
Как я понял просто применят функцию к элементам списка.
Про документакцию, думаю что нету, нужно знать основы haskell'a
Archlinux <strike>ion3</strike>xmonad urxvt ncmpcpp emacs screen <strike>gajim</strike>qutim rtorrent
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Ясно, спасибо, буду дальше копать сам.
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

кып, а у тебя ничего на просто Alt случаем не повешено?

Капец, насчет "дальше копать сам" я видимо поторопился. Адаптировать конфиг Kain666 под Kopete со Skype решительно не получается :( Мало того, в нем если перед Grid дописать Mirror - xmonad ругается "Couldn't match expected type `Grid a -> t'" oO И еще - он все равно перекидывает окно чата на первый воркспейс!! Ну как так?!

P.S. Сейчас вообще какая-то ерунда - при Mod+Q Xmonad перезапускается, но не перерисовывает воркспейсы! Приходится убивать его процесс и запускать заново, чтобы увидеть результат. А это очень напрягает :(
Спасибо сказали:
Аватара пользователя
кып
Сообщения: 77
ОС: Xubuntu

Re: Xmonad

Сообщение кып »

ProFfeSsoRr писал(а):
01.07.2009 16:58
кып, а у тебя ничего на просто Alt случаем не повешено?


Вот только что разобрался с этим.
Дело в Ubuntu и ее умолчальной переключалке раскладок Alt+Shift
Даже если в GNOME поменять на что-нить другое умолчания действуют все равно. Поэтому Mod1Mask+Shift и не работал.
В xorg.conf вставлять InputDevice бесполезно, потому как hal все делает, либо его отключать.

Но зато какое "оригинальное решение" нашел: dpkg-reconfigure console-setup ну и там что нравится, кроме Alt+Shift
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

ProFfeSsoRr писал(а):
01.07.2009 16:58
Капец, насчет "дальше копать сам" я видимо поторопился. Адаптировать конфиг Kain666 под Kopete со Skype решительно не получается :( Мало того, в нем если перед Grid дописать Mirror - xmonad ругается "Couldn't match expected type `Grid a -> t'" oO И еще - он все равно перекидывает окно чата на первый воркспейс!! Ну как так?!

то есть ghc --make xmonad.hs
нормально не проходит?
в таком случае новый конфиг не применяется совсем, поскольку бинарник который надо собирать не пересобирается. Покажи как пере grid дописываешь mirror ...
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

С миррором разобрался, насовал везде скобок и оно прокатило.

А как я конфиг Kain666 не мучал - все равно проблема с чатами копете осталась. Забил и вернул все назад на свой старый конфиг. Есть у меня подозрение, что шалит kde.config, но я нигде не могу найти то, что находится в нем.
Спасибо сказали:
Аватара пользователя
Kain666
Сообщения: 131
ОС: Archlinux

Re: Xmonad

Сообщение Kain666 »

2ProFfeSsoRr

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

imL = withIM (1%5) (Role "MainWindow#1") (Mirror Grid)

а так ?
Я все же советую начать все с чистого листа, с дефолтного конфига.
Ну и поспрашивать в xmonad.conference@jabber.ru может чего подскажут
Archlinux <strike>ion3</strike>xmonad urxvt ncmpcpp emacs screen <strike>gajim</strike>qutim rtorrent
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Ну да, как-то так оно там применилось. Но все равно я так и не смог получить то, что у тебя на скрине, все окна скайпа у меня оказывались в той же половине, где и чат Копете, и я, побившись минут 40, вернул все назад.

Хм, так я уже методом отключения нафиг разных частей конфига выяснил, что единственное подозрительное место - это import XMonad.Config.Kde Соответственно, надо бы поглядеть в этот самый конфиг, чего у него там внутри написано. А как поглядеть я понятия не имею, он хз где и хз как лежат.
Спасибо сказали:
Аватара пользователя
Kain666
Сообщения: 131
ОС: Archlinux

Re: Xmonad

Сообщение Kain666 »

Вот он и вот еще
Archlinux <strike>ion3</strike>xmonad urxvt ncmpcpp emacs screen <strike>gajim</strike>qutim rtorrent
Спасибо сказали:
ProFfeSsoRr
Сообщения: 16
ОС: Arch

Re: Xmonad

Сообщение ProFfeSsoRr »

Спасибо, понятно, что дело не в нем. Попутно узнал, что мне надо kde4config писать :))

Блин, ну я вообще уже нифига не понимаю. Уже все части конфига по отдельности отключал - глюк остался. Буду пробовать завтра с нуля его заново собрать. Хотя по сути опять же будет копи-паст по частям... Но вдруг соображу, где же проблема.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: Xmonad

Сообщение Portnov »

Если что, вот мой текущий конфиг: http://iportnov.ru/files/xmonad.hs . Благополучно работает в kde4. Правда, xmonad из darcs.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Yur4eg
Сообщения: 14

Re: Xmonad

Сообщение Yur4eg »

Помогите новообращеному в xmonad. Все делал по мануалу http://www.haskell.org/haskellwiki/Xmonad/Config_archive/John_Goerzen%27s_Configuration но не запускается xmobar

xmobar взял из darcs и собрал без поддержки xft и utf8
xmonad 0.8-1 из респозитория Debian

конфиг xmobar

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

Config { font = "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-iso10646-1"
       , bgColor = "black"
       , fgColor = "grey"
       , position = TopW L 90
       , lowerOnStart = True
       , commands = [ Run Weather "EGPF" ["-t"," <tempF>F","-L","64","-H","77","--normal","green","--high","red","--low","lightblue"] 36000
                    , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: <usedratio>%"] 10
                    , Run Swap [] 10
                    , Run Date "%a %b %_d %l:%M" "date" 10
                    , Run StdinReader
                    ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "%StdinReader% }{ %cpu% | %memory% * %swap%    <fc=#ee9a00>%date%</fc> | %EGPF%"
       }

И xmonad.hs

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

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys)
import System.IO
import XMonad.Hooks.SetWMName

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

main = do
    xmproc <- spawnPipe "/home/yur4/xmobar/dist/build/xmobar/xmobar  /home/yur4/.xmobarrc"
    xmonad $ defaultConfig
        { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above
                        <+> manageHook defaultConfig
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
    , startupHook = setWMName "LG3D"
        , logHook = dynamicLogWithPP $ xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
    , terminal = "urxvt"
        , modMask = mod4Mask     -- Rebind Mod to the Windows key
        } `additionalKeys`
        [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
        , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
        , ((0, xK_Print), spawn "scrot")
        ]
Спасибо сказали:
Yur4eg
Сообщения: 14

Re: Xmonad

Сообщение Yur4eg »

Запускаю в xmonad quake3 и перестают работать все хоткеи и даже мышку не вытащить за пределы окошка квейка. Как-то с этой напастью бороться можно? Что-то гуглом не нашел ничего. Драйвера проприетарные nvidia, если вдруг это имеет значение.
Спасибо сказали:
Аватара пользователя
Sabivan
Сообщения: 38
ОС: ОффтопXP Xubuntu 9.04

Re: Xmonad

Сообщение Sabivan »

Долгое время не пользовался xmonad, просто так сложилось что постоянно сидел под fluxbox, потом xfce4. И вот недавно попался на глаза топик про musca. Решил попробовать на свежеустановленной Xubuntu 9.04. Не понравилась. Но именно благодаря musca решил попробоать для сравнения wmii - а он мне сразу приглянулся. Я не могу судить о сильных и слабых того или иного тайлового WM, но кажется xmonad дает больше возможностей нежели wmii, если, конечно, суметь этими возможностями воспользоваться.
Хотя меня прельщает в wmii именно его легкость (потребовалось скачать всего несколько сотен килобайт для установки wmii, в то время как xmonad тянет больше 50 Мб). Мне просто интересно, многие ли пользователи xmonad'а программируют на haskell? Мб именно использование haskell в повседневной жизни является определяющим фактором в пользу выбора xmonad из других тайловых WM. Извините если оффтоп :)
Семь бед - RTFM один ответ! =]
Спасибо сказали:
smeea
Сообщения: 87

Re: Xmonad

Сообщение smeea »

>xmonad тянет больше 50 Мб
Я вас огорчу, но он тянет даже больше, под 300 (!) метров, кажется, если до этого хаскеллем не пользовался.
>Мб именно использование haskell в повседневной жизни является определяющим фактором в пользу выбора xmonad из других тайловых WM.
Именно так обычно и бывает. По крайней мере среди хаскеллистов хмонад крайне популярен. Но это вовсе не значит, что без программирования на хаскелле хмонад не нужен - он вполне комфортно используется и теми, кто не программирует на хаскелле и является в целом мощным, быстро разрабатываемым и удобным тайлинговым вм. Но, разумеется, разобраться хотя бы в основных моментах конфигописания и прочитать документацию придется, из коробки он не заработает так, как это нужно именно вам.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable
Контактная информация:

Re: Xmonad

Сообщение Portnov »

xmonad имеет то преимущество, что конфиг пишется на том же языке, что сам wm. Фактически, конфиг - это и есть wm, а то что ставится - это только библиотеки, облегчающие написание wm. Такими же свойствами обладает dwm, но haskell - язык гораздо более высокого уровня...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
petrun
Сообщения: 45

Re: Xmonad

Сообщение petrun »

Объясните баг это или фича?
Включена Full раскладка и открыто больше 1 окна.Перемещаем на этот воркспейс
флоат окно и берем фокус на другое full окно.Потом берем в фокус флоат окно и окно и на переднем плане видим не то full окно,что было в фокусе перед этим,
а то, что было в фокусе,когда на воркспейс кинули флоат окно.
P.S то же самое происходит и с Xmonad.Layout.Simplest
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Вот пару дней как пересел с ion3 на xmonad.
Пока неприятна только одна вещь --- в ионе у меня была привычка открывать mplayer в небольшом фрейме, а в оставшихся 2-х заниматься каким-нибудь делом, а вот в xmonad так не получается, потому что искажаются пропорции mplayer, а подгонять размеры под каждый фильм не удобно.
Всё что нагуглил, так это превращение mplayer в плавающее окно (doFloat), но по моему это не удобно, так как мышу привык не использовать.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

barsukADV писал(а):
30.07.2009 23:09
Вот пару дней как пересел с ion3 на xmonad.
Пока неприятна только одна вещь --- в ионе у меня была привычка открывать mplayer в небольшом фрейме, а в оставшихся 2-х заниматься каким-нибудь делом, а вот в xmonad так не получается, потому что искажаются пропорции mplayer, а подгонять размеры под каждый фильм не удобно.
Всё что нагуглил, так это превращение mplayer в плавающее окно (doFloat), но по моему это не удобно, так как мышу привык не использовать.

надо что-нибудь типа:

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

------------------------
 Mplayer |
----------

smth    |  smth

        |
------------------------|


или как?
Спасибо сказали:
petrun
Сообщения: 45

Re: Xmonad

Сообщение petrun »

barsukADV писал(а):
30.07.2009 23:09
получается, потому что искажаются пропорции mplayer, а подгонять размеры под каждый фильм не удобно.

То есть вам нужно,что бы xmonad сохранял пропорции окна mplayer?Или абсолютный размер тоже нужен как у float окна?
Если первое то есть Hinted(Tile|Grid) и LayoutHints.Разумнее всего,пожалуй работает вариант с Grid.
Но мне они не понравились,так как пропадает полезная площадь экрана)
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

to diesel
Ну да, почти так

to petrun
Спасибо, то что надо. ) (что-то я про Hinted не то раньше думал и не пробовал)

Теперь Combo, tabbed и HintedGrid --- Очень удобно!

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

Re: Xmonad

Сообщение diesel »

barsukADV писал(а):
31.07.2009 01:27
to diesel
Ну да, почти так

тогда можно и например какой-то такой layout:
(windowNavigation $ ((mytabs */*** mytabs) *|* mytabs))
вместо mytabs(это Tabbed, похожий на табы во фрейме в ion3) может быть что-нить более подходящее.
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Не понял пока про то, что после $
Сейчас workspace разделено пополам, с одной стороны Tabbed (цвета специально настроил совсем не как в ионе), а с другой HintedGrid --- по мне вполне удобно получилось.
Теперь надо, со scratchpadam-и разобраться.
Тут именованые есть или самому попробовать сделать (завтра на работе всё равно делать нечего)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

barsukADV писал(а):
31.07.2009 02:02
Не понял пока про то, что после $

windowNavigation позволяет создавать layout, на основе комбинирования нескольких layout'ов(если я не прав в терминологии, поправьте).
mytabs - здесь название кастомного Tabbed layout, вместо него, как я уже сказал может быть любой другой.
/ - задает разделение между layout'ами по горизонтали
| - по вертикали
в данном случае:
((mytabs */*** mytabs) *|* mytabs)

что-то1 *|* что-то2
делим экран на две равных части, одна из них с layout'ом "что-то1", вторая с "что-то2"
"что-то1" соответственно тоже делится на две части, одна из них занимает 1/4, вторая 3/4.

Еще пример, моя ионовская схема: http://muaddeep.googlepages.com/ion-next.png будет примерно вот так в этих терминах:
(windowNavigation $ ((mytabs */* mytabs) ****|* mytabs))

единственное что, я не разбирался с авторастаскиванием окон, при моих знаниях haskell'а это немного сложно, сейчас эксперементирую с авторастаскиванием на примере IM-layout, о котором тут выше много было.
Спасибо сказали:
barsukADV
Сообщения: 8
ОС: Gentoo

Re: Xmonad

Сообщение barsukADV »

Я наверное что-то упустил...
Так в xmonad тоже можно заранее экран на части поделить?
Я почему-то думал, что WindowNavigation --- это только для keybinding-ов, чтоб удобней перемещаться по окошкам.
PS
Пока на основном workspace у меня так получилось
Изображение
(mplayer, vim, результат TeX-а в evince, firefox)
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: Xmonad

Сообщение diesel »

barsukADV писал(а):
31.07.2009 15:26
Так в xmonad тоже можно заранее экран на части поделить?

да
Спасибо сказали:
Ответить