emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: just-the-text Emacs frame


From: Philipp Haselwarter
Subject: Re: just-the-text Emacs frame
Date: Sat, 11 Jun 2011 10:04:59 +0200
User-agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux)

On 2011-06-10 16:28 UT, Ted Zlatanov <address@hidden> wrote:

TZ> On Tue, 07 Jun 2011 10:25:54 +0200 Julien Danjou <address@hidden> wrote:

JD> On Mon, Jun 06 2011, Ted Zlatanov wrote:
>>> Under XMonad, that creates a strut panel but the panel won't take
>>> any keyboard input, which is a problem.

JD> I think this is a XMonad bug.I'd suggest talking to them to figure
JD> out why they are refusing to give the focus to such a window.

TZ> I did.They claim it's necessary because other panels have a heart
TZ> attack when they get the keyboard input focus.So the solution is to
TZ> configure it at the user level, since they can't match dock rules to
TZ> Emacs frames in general (I've asked for more help but it doesn't
TZ> seem to be a priority to the XMonad developers, and I don't know
TZ> Haskell enough to do this myself).

TZ> So unless I get further help, I'll just document that XMonad is not
TZ> perfect for Emacs docked strut frames and I'll provide mouse
TZ> bindings to most of the things in such frames, including a binding
TZ> to pop their buffer up in a normal frame.

TZ> Ted

I assume you use manageDocks on your manageHook?
manageDocks simply does

#+begin_src haskell
manageDocks :: ManageHook
manageDocks = checkDock --> doIgnore
#+end_src

If you want more fine grained control, just ignore the docks you really
just want out of your way and set windows with  _NET_WM_WINDOW_TYPE_DOCK
to be floating. That way, they can still get focus and input.
And don't forget to put avoidStruts on your layout.

Could give you something like this:

#+begin_src haskell
myManageHook = composeAll . concat $
    [ [ className =? i --> doIgnore | i <- myCIgnores ]
    , [ className =? c --> doFloat  | c <- myCFloats  ]
    , [ title     =? t --> doFloat  | t <- myTFloats  ]
    , [ resource  =? r --> doFloat  | r <- myRFloats  ]
    , [ resource  =? i --> doIgnore | i <- myRIgnores ]
    , [ isFullscreen   --> doFullFloat ]
    , [ isDialog       --> doFloat     ]
    , [ checkDock      --> doFloat     ]
    , [ (className =? x <||> title =? x <||> resource =? x) --> doF (W.shift 
(myWorkspaces !! 1)) | x <- my1Shifts ]
    , [ (className =? x <||> title =? x <||> resource =? x) --> doShift 
(myWorkspaces !! 2) | x <- my2Shifts       ]
    ]
    where
    myCFloats  = [ "MPlayer", "Vlc", "Gimp", "Volume-control.py" ]
    myTFloats  = []
    myRFloats  = []
    myCIgnores = [ "dzen", "Avant-window-navigator" ]
    myRIgnores = [ "kdesktop", "desktop_window" ]
    my1Shifts  = [ "Nightly" ]
    my2Shifts  = []
#+end_src

Simply adjust myCIgnores or myRIgnores according to what docks you use.

-- 
Philipp Haselwarter




reply via email to

[Prev in Thread] Current Thread [Next in Thread]