xmonad উইন্ডো স্ট্যাকের উপরে xmobar প্রদর্শিত হবে না x


16

xmobarআমি প্রবেশের পরে ডান দিকের একটি অদ্ভুত আচরণ অনুভব করছি xmonad। যখন আমি xmonad(থেকে .xinitrc, আমি এক্সডিএম ব্যবহার করি) আমার xmobarউপস্থিত হয় তবে এটি উইন্ডো স্ট্যাকের শীর্ষে বা নীচে হয় না । একবার আমি একটি অ্যাপ্লিকেশন শুরু করে (যেমন টিপে টার্মিনাল এমুলেটর Mod + Shift + Return) অ্যাপ্লিকেশনটি পুরো পর্দাটি ব্যবহার করে, xmobarযেন নীচে ছিল। তারপরে আমি টিপছি Mod + Bএবং কিছুই ঘটে না, আমি একবার Mod + Bদ্বিতীয় বার চাপলে xmobarঅ্যাপ্লিকেশন উইন্ডোর আকার হ্রাস করে শীর্ষে উঠানো হয়।

এর পরে অধিবেশনটির Mod + Bঅবশিষ্টাংশের জন্য সঠিকভাবে কাজ করে xmonad, অর্থাত্ এটি হ্রাস / উত্থাপন (আড়াল / প্রদর্শন) করে xmobar

আমি আত্মবিশ্বাসী যে আমি কিছু ভুল কনফিগার করেছি। আমার xmonad.hsদেখতে দেখতে:

import XMonad
import XMonad.Hooks.SetWMName
import XMonad.Hooks.DynamicLog

main = do
  xmonad =<< statusBar "xmobar" myPP toggleStrutsKey defaultConfig
    { terminal           = "urxvt"
    , focusFollowsMouse  = True
    , clickJustFocuses   = False
    , borderWidth        = 1
    , modMask            = mod4Mask
    , workspaces         = myworkspaces
    , normalBorderColor  = "#dddddd"
    , focusedBorderColor = "#00dd00"
    , manageHook         = mymanager
    , startupHook        = setWMName "LG3D"
    }

myPP = xmobarPP { ppOutput          = putStrLn
                , ppCurrent         = xmobarColor "#336433" "" . wrap "[" "]"
                --, ppHiddenNoWindows = xmobarColor "grey" ""
                , ppTitle           = xmobarColor "darkgreen"  "" . shorten 20
                , ppLayout          = shorten 6
                --, ppVisible         = wrap "(" ")"
                , ppUrgent          = xmobarColor "red" "yellow"
                }

toggleStrutsKey XConfig { XMonad.modMask = modMask } = (modMask, xK_b)

myworkspaces = [ "code"
               , "web"
               , "media"
               , "irc"
               , "random"
               , "mail"
               , "docs"
               , "music"
               , "root"
               ]

mymanager = composeAll
  [ className =? "gimp" --> doFloat
  , className =? "vlc"  --> doFloat
  ]

আমার .xmobarrcচেহারার শুরুটি নিম্নরূপ:

Config {
  -- appearance
    font =         "xft:Bitstream Vera Sans Mono:size=9:bold:antialias=true"
  , bgColor =      "black"
  , fgColor =      "#646464"
  , position =     Top
  , border =       BottomB
  , borderColor =  "#646464"

  -- layout
  , sepChar =  "%"   -- delineator between plugin names and straight text
  , alignSep = "}{"  -- separator between left-right alignment
  , template = "%battery% | %multicpu% | %coretemp% | %memory% | %dynnetwork% | %StdinReader% }{ %date% || %kbd% "

  -- general behavior
  , lowerOnStart =     False   -- send to bottom of window stack on start
  , hideOnStart =      False   -- start with window unmapped (hidden)
  , allDesktops =      True    -- show on all desktops
  , overrideRedirect = True    -- set the Override Redirect flag (Xlib)
  , pickBroadest =     False   -- choose widest display (multi-monitor)
  , persistent =       True    -- enable/disable hiding (True = disabled)

  -- plugins (i do not use any)

  , commands = [  -- actually several commands are in here
  ]
}

আমি এর বেশ কয়েকটি সংমিশ্রণ চেষ্টা করেছি:

, lowerOnStart =
, hideOnStart =

(সত্য / সত্য, সত্য / মিথ্যা, মিথ্যা / সত্য এবং মিথ্যা / মিথ্যা এখন দেখানো হয়েছে) তবে আমি Mod + Bদু'বার চাপ দেওয়ার আগে আচরণটি বদলায় না। আমি বিশ্বাস করি যে আমি কোনওভাবে ভুল কনফিগার xmonadকরেছেন না xmobarতবে এটি কেবল অনুমান।

আমার .xinitrcসাহায্য হতে পারে:

#!/bin/sh

if test -d /etc/X11/xinit/xinitrc.d
then
    # /etc/X11/xinit/xinitrc.d is actually empty
    for f in /etc/X11/xinit/xinitrc.d/*
    do
        [ -x "$f" ] && source "$f"
    done
    unset f
fi

# uk keyboard
setxkbmap gb

xrdb .Xresources
xscreensaver -no-splash &

# java behaves badly in non-reparenting window managers (e.g. xmonad)
export _JAVA_AWT_WM_NONREPARENTING=1

# set the background (again, because qiv uses a different buffer)
/usr/bin/feh --bg-scale --no-fehbg -z /usr/share/archlinux/wallpaper/a*.jpg

# pulse audio for alsa
then
    /usr/bin/start-pulseaudio-x11
fi

exec xmonad

উত্তর:


24

দু'মাস পরে আমি এটি বের করেছিলাম। সমস্যাটি হ'ল সঠিকভাবে statusBarইভেন্টগুলি নিবন্ধন করে না Hooks.manageDocks। একবারে xmonadসমস্ত কাজ ভালভাবে চালানো হয় কারণ প্রতিটি উইন্ডো ইভেন্টের manageDocksআপডেট আপডেট করতে সক্ষম Struts। তবে যে মুহুর্তে xmonadপ্রথম উইন্ডোজ পূর্ণ স্ক্রিন তৈরির ইভেন্টটি শুরু হচ্ছে ঘটনার আগে ঘটে manageDocks। এই mages প্রথম অস্তিত্ব উপেক্ষা উইন্ডো খুলুন xmobar

manageDocksএর ইভেন্ট হ্যান্ডলার রয়েছে যা অবশ্যই শেষ ইভেন্ট হ্যান্ডলার হিসাবে সেট করা উচিত , সুতরাং statusBarব্যবহার করা যায় না। পরিবর্তে, এটা করতে প্রয়োজনীয় xmonadকল ও কনফিগার xmobarম্যানুয়ালি মাধ্যমে dynamicLog, manageHook, layoutHookএবং handleEventHook। এর জন্য একটি সংক্ষিপ্ততর কনফিগারেশন হ'ল:

main = do
    xmproc <- spawnPipe "xmobar"
    xmonad $ defaultConfig
      { modMask            = mod4Mask
      , manageHook         = manageDocks <+> manageHook defaultConfig
      , layoutHook         = avoidStruts  $ layoutHook defaultConfig
      -- this must be in this order, docksEventHook must be last
      , handleEventHook    = handleEventHook defaultConfig <+> docksEventHook
      , logHook            = dynamicLogWithPP xmobarPP
          { ppOutput          = hPutStrLn xmproc
          , ppTitle           = xmobarColor "darkgreen"  "" . shorten 20
          , ppHiddenNoWindows = xmobarColor "grey" ""
          }
      , startupHook        = setWMName "LG3D"
      } `additionalKeys`
      [ ((mod4Mask, xK_b), sendMessage ToggleStruts) ]

এটি সমস্ত ইভেন্টগুলি প্রক্রিয়াজাত করে তোলে docsEventHookএবং নিশ্চিত করে যে তৈরি করা লেআউট পরিবর্তনগুলি docsEventHookসর্বশেষ প্রয়োগ করা হয়েছে। এখন

lowerOnStart = False

(অথবা True) প্রত্যাশিত হিসাবে কাজ করে সব ক্ষেত্রেই মধ্যে xmobarrc


1
ডায়নামিকলগ প্যাকেজ স্থির statusBarনা handleEventHook = handleEventHook defaultConfig <+> docksEventHookহওয়া পর্যন্ত আপনি পাশাপাশি ব্যবহার করতে পারেন এবং ওভাররাইট করতে পারেন ।
timakro

2

আপনার কনফিগারটির সাথে আমার সাধারণের সাথে তুলনা করা, যা এই ক্ষেত্রে সঠিকভাবে কাজ করে, আমি একটি পার্থক্য দেখি যা কিছু করতে পারে:

আপনার কাছে থাকা সমস্ত general behaviourঅপশন থেকে আমার কাছে কেবল আছে

lowerOnStart = True

এবং একটি একক এর hideOnStart, overrideRedirectইত্যাদি

আপনি যেভাবে xmobar যুক্ত করেন xmonad.hsতা হ'ল আমি যতদূর পড়তে পারি, আমার মতো।

এই ক্ষেত্রে আমি যথাসম্ভব ডিফল্ট সেটিংস দিয়ে চেষ্টা করব, উদাহরণস্বরূপ পুনরায় নামকরণ করুন .xmobarrcযাতে এটি বাছাই করা হয় না এবং xmonad.hsউদাহরণস্বরূপ পরিবর্তন হয়

main = xmonad =<< statusBar "xmobar" xmobarPP toggleStrutsKey defaultConfig
toggleStrutsKey XConfig { XMonad.modMask = modMask } = (modMask, xK_b)

এবং দেখুন এটি কার্যকর হয় কিনা। পরে খানিকটা যুক্ত করুন, এবং দেখুন কখন এটি ভেঙে যায়।


ধন্যবাদ, আপনার উত্তর আমাকে মনে করিয়ে দিয়েছে যে খালি থেকে এটি আমার ডিবাগ করা উচিত xmonad.hs। এটি আমাকে আসল সমস্যাটি সন্ধান করতে বাধ্য করেছে :)
19: 08
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.