LINUX.ORG.RU
-- Core
import XMonad
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import System.Exit
import Graphics.X11.Xlib
import Graphics.X11.ExtraTypes.XF86
--import IO (Handle, hPutStrLn)
import qualified System.IO
import XMonad.Actions.CycleWS (nextScreen,prevScreen)
import Data.List
 
-- Prompts
import XMonad.Prompt
import XMonad.Prompt.Shell
 
-- Actions
import XMonad.Actions.MouseGestures
import XMonad.Actions.UpdatePointer
import XMonad.Actions.GridSelect
 
-- Utils
import XMonad.Util.Run (spawnPipe)
import XMonad.Util.Loggers
import XMonad.Util.EZConfig
import XMonad.Util.Scratchpad
-- Hooks
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.UrgencyHook
import XMonad.Hooks.Place
import XMonad.Hooks.EwmhDesktops

-- Layouts
import XMonad.Layout.NoBorders
import XMonad.Layout.ResizableTile
import XMonad.Layout.Tabbed
import XMonad.Layout.DragPane
import XMonad.Layout.LayoutCombinators hiding ((|||))
import XMonad.Layout.DecorationMadness
import XMonad.Layout.TabBarDecoration
import XMonad.Layout.IM
import XMonad.Layout.Grid
import XMonad.Layout.Spiral
import XMonad.Layout.Mosaic
import XMonad.Layout.LayoutHints

import Data.Ratio ((%))
import XMonad.Layout.ToggleLayouts
import XMonad.Layout.Spacing
import XMonad.Hooks.ManageHelpers
import XMonad.Layout.Gaps
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.SetWMName

defaults = defaultConfig {
        terminal      = "terminator"
        --`, font                 = "xft:Droid Sans Mono:size=10"
        , normalBorderColor  = "black"
        , focusedBorderColor  = "orange"        
        , workspaces          = myWorkspaces
        , modMask             = mod4Mask
        , borderWidth         = 1
        , startupHook         = setWMName "LG3D"
        , layoutHook          = myLayoutHook
        , manageHook          = myManageHook
        , handleEventHook     = fullscreenEventHook
        }`additionalKeys` myKeys

myWorkspaces :: [String]
-- myWorkspaces =  ["1:web","2:dev","3:term","4:vm","5:media"] ++ map show [6..9]
myWorkspaces =  map show [1..9]

-- Whether focus follows the mouse pointer.
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = False


-- tab theme default
myTabConfig = defaultTheme {
   activeColor          = "#6666cc"
  , activeBorderColor   = "#000000"
  , inactiveColor       = "#666666"
  , inactiveBorderColor = "#000000"
  , decoHeight          = 10
 }

-- Color of current window title in xmobar.
xmobarTitleColor = "#FFB6B0"

-- Color of current workspace in xmobar.
xmobarCurrentWorkspaceColor = "green"

myLayoutHook = spacing 6 $ gaps [(U,15)] $ toggleLayouts (noBorders Full) $
    smartBorders $ Mirror tiled ||| mosaic 2 [3,2]  ||| tabbed shrinkText myTabConfig
      where 
        tiled = Tall nmaster delta ratio
        nmaster = 1
        delta   = 3/100
        ratio   = 3/5

--myLayoutHook = smartBorders $ avoidStruts $ toggleLayouts (noBorders Full)
    --(smartBorders (tiled ||| mosaic 2 [3,2] ||| Mirror tiled ||| tabbed shrinkText myTab))
    --where
    --    tiled   = layoutHints $ ResizableTall nmaster delta ratio []
    --    nmaster = 1
    --    delta   = 2/100
    --    ratio   = 1/2                              
                              
myManageHook :: ManageHook
        
myManageHook = composeAll . concat $
        [ [className =? c --> doF (W.shift "1") | c <- myWeb]
        , [className =? c --> doF (W.shift "2") | c <- myDev]
        , [className =? c --> doF (W.shift "3") | c <- myTerm]
        , [className =? c --> doF (W.shift "4") | c <- myVMs]
        , [manageDocks]
        ]
        where
        myWeb = ["Firefox","Chromium","Chrome"]
        myDev = ["Eclipse","Gedit","sublime-text"]
        myTerm = ["Terminator","xterm"]
        myVMs = ["VirtualBox"]
        
        --KP_Add KP_Subtract
myKeys = [
        -- xmonad quit
         ((mod4Mask .|. controlMask .|. shiftMask, xK_q), io (exitWith ExitSuccess))
        -- xmonad recompile & restart
         , ((mod4Mask .|.controlMask, xK_r), spawn "xmonad --recompile; killall trayer; killall xmobar; xmonad --restart;trayer --edge top --align right --height 18 --padding 0 --transparent true --alpha 0 --widthtype percent --width 5 --tint 0x2b2b2b  --distancefrom right --distance 1 --expand true --monitor 1")

         , ((mod4Mask .|. controlMask, xK_Left ), prevScreen)
         -- run terminal
         , ((mod4Mask .|. shiftMask, xK_Return), spawn "st")
         -- autostart start
         , ((mod4Mask .|. shiftMask, xK_F5), spawn "~/.xmonad/autostart.sh")
         -- x11 lock
         , ((mod4Mask .|. mod1Mask, xK_l), spawn "xscreensaver-command -lock")
         -- keepassx open
         , ((mod4Mask .|. mod1Mask, xK_k), spawn "/home/user/.dwm/scripts/wm/program.sh")



         , ((mod4Mask, xK_Right), nextScreen) 
         , ((mod4Mask, xK_g), goToSelected defaultGSConfig)
                     , ((mod4Mask, xK_s), spawnSelected defaultGSConfig ["chromium","idea","gvim"])
                     , ((mod4Mask, xK_KP_Add), spawn "amixer set Master 10%+ && ~/.xmonad/getvolume.sh >> /tmp/.volume-pipe")
                     , ((mod4Mask, xK_KP_Subtract), spawn "amixer set Master 10%- && ~/.xmonad/getvolume.sh >> /tmp/.volume-pipe")
         , ((mod4Mask, xK_b     ), sendMessage ToggleStruts)
         ]
                   


main = do
        xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmonad/.xmobarrc"
        xmonad $ defaults {
        logHook =  dynamicLogWithPP $ defaultPP {
            ppOutput = System.IO.hPutStrLn xmproc
          , ppTitle = xmobarColor xmobarTitleColor "" . shorten 100 .wrap "  [ <fc=gray>" "</fc> ]  "
          , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor "" . wrap "[" "]"
          , ppSep = "   "
          , ppWsSep = " "
          --, ppLayout = const ""
          , ppLayout  = (\ x -> case x of
              "Spacing 6 Mosaic"                      -> "[:]"
              "Spacing 6 Mirror Tall"                 -> "[M]"
              "Spacing 6 Hinted Tabbed Simplest"      -> "[T]"
              "Spacing 6 Full"                        -> "[ ]"
              _                                       -> x )
          , ppHiddenNoWindows = showNamedWorkspaces
      } 
      , focusFollowsMouse  = myFocusFollowsMouse
} where showNamedWorkspaces wsId = if any (`elem` wsId) ['a'..'z']
                                       then pad wsId
                                       else ""

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

после запуска xmonad, делаю xdm restart и такое же начинает наблюдаться в dwm

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

нажимаешь htop, шапка и несколько(штук 5 процессов отрисовываются), через некоторое время отрисовывается остальная часть процессов. top запускаешь, ничего не отображается, потом top весь появляется

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

Еще раз: на большом конфиге st тормозит, на минимальном - нормально рабоотает. В dwm st нормально работает. Проблема кроется где-то в конфиге

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

Еще раз: на большом конфиге st тормозит, на минимальном - нормально рабоотает. В dwm st нормально работает. Проблема кроется где-то в конфиге

Бинарный поиск во все поля. Закомментируй половину конфигурационного файла и проверяй — работает нормально или нет. Если работает нормально, то раскомментируй половину закоменнтированной части. Если тормозит, то закомментируй половину раскомментированной части. И так далее, думаю смысл понятен.

Как мне кажется — тут это будет самым оптимальным вариантом.

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

а ну-ка покажи что там можно половину закомментить)))))

Ты что не видишь, что этот конфиг простой как утюг? Там нечего комментить

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

Кто бы мог сомневаться, что это smartBorders виноваты. Нет, пока не перехожу на xmonad. К большому сожелению.

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

Ты что не видишь, что этот конфиг простой как утюг? Там нечего комментить

Если ты не смог сам решить проблему, и создал для этого тред, то вестимо не простой как утюг.

Кто бы мог сомневаться, что это smartBorders виноваты.

Это вообще что и зачем? (пользователь xmonad)

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

Если ты не смог сам решить проблему, и создал для этого тред, то вестимо не простой как утюг.

как видишь, при своей простоте и минимум функционала - нашлось место для тормозов. Притом на ровном месте.

Это вообще что и зачем? (пользователь xmonad)

при одном окне не отрисовывает border

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

Конфиг не простой (импортнул столько, что у меня глаза на лбу). SmartBorders и его производные от версии к версии глючат плюс всё зависит, как напишешь (надо понимать последовательность) конфиг. Я вообще от такой абстракции ушёл (и тебе советую).

P.S. Тут, я смотрю, у нас появились нтересные модераторы? Значит требование показать конфиг - это флуд?

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

как видишь, при своей простоте и минимум функционала - нашлось место для тормозов. Притом на ровном месте.

А если smart borders включать в самом минимальном конфиге, то тоже лагает? Не гуглятся проблемы с тормозами для smart borders, возможно, что где-то в другом месте собака зарыта.

при одном окне не отрисовывает border

А. Я границу окон просто выключаю обычно.

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

Легче изучить си и понять как работает dwm и дописать его, нежели сделать работоспособным xmonad. Вывод, сделанный за несколько лет попыток перейти на него.

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

Для начала стоит посмотреть ~/.xmonad/xmonad.errors и добиться того, чтобы он стал пустым. Т.е. исправить все ошибки в конфиге.

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

а что там? Пара депрекейтед. Пофиксил, но это не решило проблему

Xwo ★
() автор топика

Все говорят, что dwm не особо нкциональная штука. Но на практике начинаешь накручивать функционал на xmonad, чтобы добиться такой же функциональности, как у dwm + 5 патчей, и начинается: вот это отваливается и вот это тормозит. Ужас.

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