2012-02-06 16 views
6

Tôi thích sử dụng bàn phím để thả nổi hoặc chìm cửa sổ. Thật không may, khi nổi, cửa sổ không được di chuyển hoặc thay đổi kích thước, do đó, có rất ít dấu hiệu trực quan rằng chúng vẫn không được lát gạch. Lý tưởng nhất, khi chuyển sang lớp nổi, tôi muốn chúng di chuyển đến giữa màn hình và/hoặc thay đổi kích thước.Xmonad: khi thả nổi cửa sổ, di chuyển hoặc đổi kích thước cửa sổ

Giải pháp tốt nhất sẽ hoạt động cùng với chức năng bên dưới (hoặc một cái gì đó tương tự), mà tôi gọi bằng móc khóa - Tôi muốn nổi thông qua nhấp chuột để vẫn hoạt động bình thường.

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

(Mã bị đánh cắp, tôi vẫn không có nắm bắt Haskell: c)

Edit: những thứ keysMoveWindowTo trong mã sửa đổi dưới đây có thể thực sự chỉ cần thay thế "nổi windowId", mà nó làm cho không cần thiết.

Trả lời

6

Tôi cho rằng bạn đã cài đặt gói xmonad-contrib. Sau đó, bạn nên có một cái nhìn tại XMonad.Actions.FloatKeys

Tôi đoán chức năng sửa đổi sẽ là:

... 
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 
           } 
         ) 

nơi x, y, dx, dy, gx1, gy1, gx2, gy2 là thiết lập của bạn.
Nhà điều hành % được đề cập trong tài liệu là từ Data.Ratio; a % b có nghĩa là số hợp lý với tử số a và mẫu số b. Bạn phải nhập khẩu nếu bạn muốn sử dụng nó:

import Data.Ratio ((%)) 
+1

Haha 30 phút trước, tôi đã vượt qua không thể giải thích của tôi, từ chối masochistic thậm chí cân nhắc việc thêm chưa nhiều thứ contrib trong xmonad.hs của tôi, tìm thấy FloatKeys ngay lập tức, fiddled xung quanh cho một phút và vội vã quay lại đây để nói N/MN/M GUYS. Nhưng sẽ không có phẩm giá được cứu vớt ... trên StackOverflow.com – user1191815

+0

Ngoài ra cảm ơn !! – user1191815

+1

Tôi đã cố gắng để làm điều này và phát hiện ra rằng cửa sổ tự động nổi khi bạn làm keysMoveWindow hoặc keysResize cửa sổ. Vì vậy, tôi chỉ có keybindings cho những người, cộng với 'sinkFocused = withFocused $ windows. W.sink' để đánh chìm chúng một lần nữa. – Jeff