2012-02-06 15 views
6

Klavyeyi süzgeç veya pencere batırmayı kullanmayı tercih ediyorum. Ne yazık ki, yüzdüğü zaman, pencereler taşınmaz veya yeniden boyutlandırılmazlar, bu yüzden hala döşemedikleri için çok az görsel işaret vardır. İdeal olarak, şamandıra katmanına geçtikten sonra, bunların ekranın ortasına taşınmasını ve/veya yeniden boyutlandırılmasını sağlarım.Xmonad: Bir pencere yüzerken, taşıyın veya yeniden boyutlandırın

En iyi çözüm, bir tuş ile çağıracağım aşağıdaki işlevle (veya benzer bir şeyle) birlikte çalışır. Fare tıklatmayla gezinmeyi normal şekilde çalışmaya devam ediyorum.

Düzenleme: aşağıda değiştirilmiş kodda keysMoveWindowTo şeyler aslında sadece yerine "WindowID yüzer" olabilir, bu gereksiz kılar:

toggleFloat = withFocused (\windowId -> do 
           { floats <- gets (W.floating . windowset); 
           if windowId `M.member` floats 
           then withFocused $ windows . W.sink 
           else float windowId }) 

(c Kod Hala Haskell hiçbir kavrayışa sahip, çalıntı).

cevap

6

xmonad-contrib paketinin yüklü olduğunu varsayalım. Sonra değiştirilmiş fonksiyonu olacaktır XMonad.Actions.FloatKeys

sanırım bakmak gerekir: x, y, dx, dy, gx1, gy1, gx2, gy2 senin ayarlardır

... 
import XMonad.Actions.FloatKeys 
... 

toggleFloat = withFocused (\windowId -> do 
           { floats <- gets (W.floating . windowset); 
           if windowId `M.member` floats 
           then withFocused $ windows . W.sink 
           else do 
            keysMoveWindowTo (x, y) (gx1, gy1) windowId 
            keysResizeWindow (dx, dy) (gx2, gy2) windowId 
           } 
         ) 

.
Dokümanlarda belirtilen Data.Ratio; a % b, a numaralı payda ve b numaralı payda ile rasyonel sayı anlamına gelir.

import Data.Ratio ((%)) 
+1

Haha 30 dakika önce, hatta benim xmonad.hs henüz daha contrib şeyler eklemeyi düşünün benim açıklanamaz, mazoşist reddetme üstesinden hemen FloatKeys bulundu, etrafında oynuyordu: Bunu kullanmak istiyorsanız ithal etmek zorunda Bir dakika ve N/MN/M GUYS söylemek için buraya geri acele. Ama StackOverflow.com – user1191815

+0

de kurtarılan hiçbir haysiyet olmayacak ... Ayrıca, teşekkürler! – user1191815

+1

Bunu yapmaya çalışıyordum ve keysMoveWindow veya keysResize penceresini yaptığınızda pencerelerin otomatik olarak kalacağını keşfettim. Bu yüzden sadece bunlara yönelik tuşlamalara sahibim, artı 'sinkFocused = withFocused $ windows. Onları tekrar batırmak için W.sink. – Jeff