| Re: [Sawfish] Patch to save memory and speed up StyleTab |
[ Thread Index | Date Index | More lists.tuxfamily.org/sawfish Archives ]
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, On Sun, 20 Apr 2014 13:20:40 +0200 wrote fuchur <flohtransporter@xxxxxxxxx>: >>looks good, I'm gonna test a bit more before commiting. Here i have more for testing. I have completes cabinets gui. Patches "10-tab-tiler-add.patch 11-tab-tiler-add.patch" apply after all other patches from this thread. Cabinet also needs cabinet-missing.png in "/usr/share/sawfish/images" (the default images folder from sawfish) please add this icon. Add: (require 'sawfish.wm.state.maximize) (require 'sawfish.wm.tabs.tabgroup) (require 'sawfish.wm.ext.window-history) in your ~/.sawfish/rc, why see below. Now cabinet works. Bugs: (i have now idea why) Without (require 'sawfish.wm.state.maximize) (require 'sawfish.wm.tabs.tabgroup) (require 'sawfish.wm.ext.window-history) in your ~/.sawfish/rc this key-commands not work: maximize-window-toggle maximize-window-fullscreen-toggle maximize-window-horizontally-toggle maximize-window-vertically-toggle maximize-window-fullxinerama-toggle maximize-fill-window maximize-fill-window-horizontally maximize-fill-window-vertically tab-release-window tab-move-to-end tab-move-to-beginning tab-move-to-right tab-move-to-left window-history-save-position window-history-save-dimensions window-history-save-attributes window-history-forget if you have a new/clean "~/.sawfish/" folder. Cabinet can only call key-commands which you can call from sawfish-client. In events i have disable the re-exit hook see comment in the file. - -- Regards, Fuchur GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53 C116 E5BC 70D5 B8D7 B2B0 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlNmNvIACgkQ5bxw1bjXsrDnYQCfduoswUIyExYJIJx2REDZarFd XKYAnAmC7/7w3ZB5bTY77nVag+cQLM8i =Q+JY -----END PGP SIGNATURE-----
diff -urNad sawfish.orgi/lisp/sawfish/wm/autoload.jl sawfish/lisp/sawfish/wm/autoload.jl
--- sawfish.orgi/lisp/sawfish/wm/autoload.jl
+++ sawfish/lisp/sawfish/wm/autoload.jl
@@ -126,6 +126,8 @@
(autoload-command 'slide-group-right 'sawfish.wm.commands.slide-window)
(autoload-command 'slide-group-up 'sawfish.wm.commands.slide-window)
(autoload-command 'slide-group-down 'sawfish.wm.commands.slide-window)
+(defgroup cabinet "Cabinet" :group focus :require sawfish.wm.ext.cabinet)
+(autoload-command 'cabinet-switch 'sawfish.wm.ext.cabinet)
(defgroup gpsy "Grow, Pack, Shrink & Yank" :group move :require sawfish.wm..commands.grow-pack)
(defgroup cycle "Window Cycling" :group focus :require sawfish.wm.commands..x-cycle)
(defgroup shade-hover "Shade Hover" :group focus :require sawfish.wm.ext.shade-hover)
diff -urNad sawfish.orgi/lisp/sawfish/wm/ext/cabinet.jl sawfish/lisp/sawfish/wm/ext/cabinet.jl
--- sawfish.orgi/lisp/sawfish/wm/ext/cabinet.jl
+++ sawfish/lisp/sawfish/wm/ext/cabinet.jl
@@ -1,716 +1,956 @@
-;; cabinet.jl 1.1 -- A tool for window display,search and manipulation
-;; Time-stamp: <2012-01-16 12:51:02 hqwrong>
-
+;; cabinet.jl
;; Copyright (C) 2011, 2012 hqwrong <hq.wrong@xxxxxxxxx>
+;; This file is part of sawfish.
- ;; This program is free software: you can redistribute it and/or modify
- ;; it under the terms of the GNU General Public License as published by
- ;; the Free Software Foundation, either version 3 of the License, or (at
- ;; your option) any later version.
-
- ;; This program is distributed in the hope that it will be useful, but
- ;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ;; General Public License for more details.
-
- ;; You should have received a copy of the GNU General Public License
- ;; along with this program. If not, see `http://www.gnu.org/licenses/'.
-
-;;
-;;; Commentary:
-
-;; Note:
-;; The words "window" and "application" mean same
-;; thing,they are used interchangeablly. The word "item"
-;; means the item displayed on Cabinet, which corresponding
-;; to an application. The words "selected item" means the
-;; first item on Cabinet. The words "selected window" means
-;; the window corresponding to the selected item.
-
-;; ** Start up
-;; Cabinet required `hqw-util.jl', it should have been published along
-;; with Cabinet. To separate them apart, because hqw-util.jl's
-;; independence, you may find it useful at other occasions.
-
-;; Put `hqw-util.jl' and `cabinet.jl' into your load directory,and
-
-;; (require 'cabinet)
-
-;; Use command `cabinet-switch' to start Cabinet.
-;; To bind it to "W-s",copy the following line to your rc file.
-
-;; (bind-keys global-keymap "W-s" 'cabinet-switch)
-
-;; ** Cabinet Features.
-;; Cabinet has a similar interface with iswitch,it also adds
-;; some own features, like:
-
-;; 1) Support window icons to be shown
-;; Actually,this is my main motive to write Cabinet. For
-;; People are apt to distinguish from images instead of
-;; text.
-
-;; 2) Support cycling among workspaces
-;; Most times the reason you create another workspace is
-;; to make a bunch of applications distinguished from
-;; others. It's a bad idear to mix them together to choose
-;; from. The better one is only let you have applications of
-;; current workspace,and enable you to cycle among
-;; workspaces.
-;; Though, Cabinet afford you a choice: To toggle between
-;; workspace-mode -- to just show windows of current workspace --
-;; and all-mode -- to show all the windows. When in
-;; workspace mode, the tag on split line is something like
-;; 2/3, which means the largest workspace id is 3, and now
-;; you are in workspace of id 2. When in all mode, the tag
-;; should be "ALL".
-;; Notice to make you cycle through workspaces,you should
-;; set workspace boundary to 'wrap-around,put this in your
-;; rc file:
-
-;; (setq workspace-boundary-mode 'wrap-around)
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at
+;; your option) any later version.
-;; 3) Distinguish windows for display from windows for
-;; manipulation.
-;; Some applications, most time you are not inclined to
-;; select them via Cabinet, for you already have a hot key
-;; for them or other reasons, but somehow you just want to
-;; see them there: being displayed on Cabinet. You may see a
-;; split line on Cabinet, the items below it are windows
-;; that you just want to display. This feature makes Cabinet
-;; could somehow functions like a panel.
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
-;; 4) Use forground color instead of tag to indicate window
-;; status.
-;; Because the same reason for enabling icons. Because it
-;; saves a charater's space.
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see `http://www.gnu.org/licenses/'.
-;; 5) Enable users to manipulate a bunch of windows.
-;; Use "Super-Spc" to mark the selected window, and use
-;; procedure `with-marked-wl', you can manipulate
-;; them. The marks will be cleared out after you quit
-;; from Cabinet. Cabinet affords a procedure to tile marked
-;; windows horizontally .
-;; 6) Item format
-;; Item format is like this :
-;; icon + window name + <window class> + viewport id + workspace id
-;; Variable `cabinet-item-text' controls what to append to icon.
-;; You are welcomed to reset it.
+(define-structure sawfish.wm.ext.cabinet
+
+ (export cabinet-switch
+ ;;
+ cabinet-keymap-complete
+ cabinet-item-text
+ ;; you'll need following procedures only when
+ ;; you want to extend cabinet-keymap
+ with-update-on-workspace
+ with-selected
+ with-marked-wl
+ with-exit-and-clear-mark
+ with-update-on-input
+ with-new-wlist
+ with-draw)
+
+ (open rep
+ rep.data
+ rep.system
+ rep.regexp
+ rep.lang.math
+ rep.io.timers
+ sawfish.wm.util.events
+ sawfish.wm.prg.compton
+ sawfish.wm.tabs.tabgroup
+ sawfish.wm.state.shading
+ sawfish.wm.state.iconify
+ sawfish.wm.stacking
+ sawfish.wm.util.workarea
+ sawfish.wm.viewport
+ sawfish.wm.state.maximize
+ sawfish.wm.util.display-window
+ sawfish.wm.custom
+ sawfish.wm.commands
+ sawfish.wm.colors
+ sawfish.wm.events
+ sawfish.wm.fonts
+ sawfish.wm.images
+ sawfish.wm.misc
+ sawfish.wm.util.x
+ sawfish.wm.windows
+ sawfish.wm.workspace)
-;; ** Cabinet Keymap
-;; I made the default keymap(cabinet-keymap) according to my
-;; favour, So it's recommended to create yours. The easiest
-;; way to get started will be to copy the default keymap
-;; binding from the cabinet.jl, and modify it.
-;; Most key bindings are obvious, while some need extra explanation.
-;; Here is a list:
-;; "Super-v" toggle workspace-mode and all-mode
-;; "Super-s" cycle windows
-;; "Super-r" reversely cycle windows
-;; "Super-S" cycle workspaces.(Notice 'S' is capital)
-;; "Super-R" reversely cycle workspaces.
-;; "Super-z" toggle iconify property of selected window.
-;; "Super-SPC" mark selected window
-;; "Super-x" exchange windows-for-display and windows-for-manipulation
-;; "Super-g" Same with "RET",but will restore stack order.
-;; "Super-t" tile horizontally marked windows
-;; "Super-T" tile vertically marked windows
-;; ** For ones who want to extend cabinet keymap
-;; You may notice, in keymap definition, there are a bunch of
-;; procedures like `with-draw', `with-new-wlist' and so on. Yes,
-;; it's comfusing and ugly, but it's flexible, it enables
-;; you to extend cabinet-keymap at will. Anyway,I've tried
-;; to make doc string clear to alleviate you aversion.:-)
+ (defgroup cabinet "Cabinet"
+ :group focus
+ :require sawfish.wm.ext.cabinet)
-;; ** Version list
-;; Cabinet 1.0 2011.11
-;; Cabinet 1.1 2011.12.16 fixed a bug
+ (defgroup filter "Filter"
+ :group (focus cabinet))
+
+ (defgroup bindings "Keybindings"
+ :group (focus cabinet))
-;; Enjoy!!
+ (defcustom cabinet:margin (cons 10 10)
+ "Margin to the border of cabinet."
+ :group (focus cabinet)
+ :type (pair (number 1 50 10 1) (number 1 50 10 1)))
+
+ (defcustom cabinet:item-margin 6
+ "Margin between items."
+ :group (focus cabinet)
+ :range (1 . 50)
+ :type number)
+
+ (defcustom cabinet:input-line-margin 25
+ "Margin between input line and the first item."
+ :group (focus cabinet)
+ :range (1 . 100)
+ :type number)
+
+ (defcustom cabinet:icon-size 24
+ "Icon size."
+ :group (focus cabinet)
+ :range (8 . 128)
+ :type number)
+
+ (defcustom cabinet:workspace-mode-on-initial nil
+ "Display only windows from current workspace."
+ :group (focus cabinet)
+ :type boolean)
+
+ (defcustom cabinet:display-cabinet-on-active nil
+ "Display cabinet on active monitor."
+ :group (focus cabinet)
+ :type boolean)
-(define-structure sawfish.wm.ext.cabinet
+ (defcustom cabinet:cycle-as-start nil
+ "Cycle overhead when start cabinet-switch, like x-cycle."
+ :group (focus cabinet)
+ :type boolean)
- (export cabinet-switch
- ;;
- cabinet-keymap
- cabinet-item-text
- ;; you'll need following procedures only when
- ;; you want to extend cabinet-keymap
- with-update-on-workspace
- with-selected
- with-marked-wl
- with-exit-and-clear-mark
- with-update-on-input
- with-new-wlist
- with-draw)
+ (defcustom cabinet:manipulation-on-selected 'Raise
+ "Action if browse across cabinet."
+ :group (focus cabinet)
+ :type (choice Raise Focus None))
+
+ (defcustom cabinet:raise-window-timeout 200
+ "Delay in milliseconds until a window gets raised if browse across cabinet. \\bottom"
+ :group (focus cabinet)
+ :type (range (1 . 1000)))
- (open rep
- rep.data
- rep.system
- rep.regexp
- rep.lang.math
- sawfish.wm.state.shading
- sawfish.wm.state.iconify
- sawfish.wm.stacking
- sawfish.wm.viewport
- sawfish.wm.state.maximize
- sawfish.wm.util.display-window
- sawfish.wm.custom
- sawfish.wm.commands
- sawfish.wm.colors
- sawfish.wm.events
- sawfish.wm.fonts
- sawfish.wm.images
- sawfish.wm.misc
- sawfish.wm.util.x
- sawfish.wm.windows
- sawfish.wm.workspace
- sawfish.wm.util.events)
+ (defcustom cabinet:command-repeat-timeout 100
+ "Delay in milliseconds until a window keybinding gets repeats. \\bottom"
+ :group (focus cabinet)
+ :type (range (100 . 1000)))
- ;; (mapc require '( rep
- ;; rep.system
- ;; rep.regexp
- ;; sawfish.wm.state.iconify
- ;; sawfish.wm.stacking
- ;; sawfish.wm.viewport
- ;; sawfish.wm.state.maximize
- ;; sawfish.wm.custom
- ;; sawfish.wm.commands
- ;; sawfish.wm.colors
- ;; sawfish.wm.events
- ;; sawfish.wm.fonts
- ;; sawfish.wm.images
- ;; sawfish.wm.misc
- ;; sawfish.wm.util.x
- ;; sawfish.wm.windows
- ;; sawfish.wm.workspace))
+ (defcustom cabinet:default-item-forground (get-color "#FFFFFF")
+ "Font color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:background (get-color "#000000")
+ "Background color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:forground-input (get-color "#FFFF00")
+ "Input text color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:split-line-forground (get-color "#B22222")
+ "Split line color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:maximized-item-forground (get-color "#FFA500")
+ "Maximized windows color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:iconified-item-forground (get-color "#6D6D6D")
+ "Iconified windows color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:shaded-item-forground (get-color "#0000FF")
+ "Shaded windows color."
+ :group (focus cabinet)
+ :type color)
+
+ (defcustom cabinet:filter-out-for-manipulation (list "^Conky$" "^Gkrellm$")
+ nil
+ :group (focus cabinet filter)
+ :widget-flags (expand-horizontally expand-vertically)
+ :type* `(list string ,(_ "Windows displayed below the split line.")))
+
+ (defcustom cabinet:filter-out-from-display (list "^Gdesklets-daemon$" "^Xfce4-panel$" "^Mate-panel$"
+ "^Xfdesktop$" "^x-caja-desktop$" "^plasma-desktop$")
+ nil
+ :group (focus cabinet filter)
+ :widget-flags (expand-horizontally expand-vertically)
+ :type* `(list string ,(_ "Windows removed from cabinet.")))
+
+ (defcustom cabinet:cycle "Super-TAB"
+ "Cycle through windows."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; variables welcome to change ;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defgroup cabinet "Cabinet"
- :group focus
- :require cabinet)
+ (defcustom cabinet:reversely-cycle "C-TAB"
+ "Reversely cycle through windows."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defcustom cabinet-x-margin 10
- "The horizontal margin of cabinet"
- :type number
- :group (focus cabinet))
- (defcustom cabinet-y-margin 10
- "The vertically margin of cabinet"
- :group (focus cabinet)
- :type number)
- (defcustom cabinet-item-margin 6
- " The margin between item and item."
- :group (focus cabinet)
- :type number)
- (defcustom cycle-as-start
- t
- "whether cycle overhead,when start cabinet-switch.
-Just like x-cycle"
- :group (focus cabinet)
- :type boolean)
+ (defcustom cabinet:restore-order "ESC"
+ "Exit with restore stack order."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defcustom workspace-mode-on-initial
- t
- "whether to show windows in current workspace.
-nil, means to show windows of all workspaces."
- :group (focus cabinet)
- :type boolean)
-
- (defcustom cabinet-input-line-margin
- 25
- "The margin between input line and the first item"
- :group (focus cabinet)
- :type number)
+ (defcustom cabinet:toggle-workspace-mode "Super-a"
+ "Toggle windows from current or all workspaces."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defvar cabinet-icon-size '(32 . 32)
- "Each icon size of window shown on cabinet"
- )
- (defvar cabinet-input-forground (get-color "yellow")
- "Forground color of your input" )
+ (defcustom cabinet:exchange-manipulation "Super-q"
+ "Toggle windows for display and for manipulation."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defvar cabinet-split-line-forground (get-color "firebrick"))
+ (defcustom cabinet:cycle-workspaces "Super-x"
+ "Cycle through workspaces."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defvar iconified-item-forground (get-color "gray"))
+ (defcustom cabinet:cycle-reversely-workspaces "Super-y"
+ "Reversely cycle through workspaces."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :group (focus cabinet bindings))
- (defvar default-item-forground (get-color "white"))
+ (defcustom cabinet:advance-user-keybindings nil
+ "Advance user keymap."
+ :group (focus cabinet bindings)
+ :after-set (lambda () (search-bad-key))
+ :type boolean)
- (defvar maximized-item-forground (get-color "orange"))
+ (defcustom cabinet:mark-selected "Super-SPC"
+ "Marked window as selected."
+ :type event
+ :after-set (lambda () (search-bad-key))
+ :depends cabinet:advance-user-keybindings
+ :group (focus cabinet bindings))
- (defvar shaded-item-forground (get-color "blue"))
+ (defcustom cabinet:advance-keybindings '(("Super-d" delete-window t none)
+ ("Super-i" toggle-window-iconified t none)
+ ("Super-m" maximize-window-toggle t none)
+ ("Super-s" toggle-window-shaded t none)
+ ("Super-f" maximize-window-fullscreen-toggle t none)
+ ("Super-t" tab-add-maked-windows t none)
+ ("C-d" delete-window t close)
+ ("C-i" toggle-window-iconified t close)
+ ("C-m" maximize-window-toggle t close)
+ ("C-s" toggle-window-shaded t close)
+ ("C-f" maximize-window-fullscreen-toggle t close)
+ ("C-t" tab-add-maked-windows t close)
+ ("M-d" delete-window t go-to-next)
+ ("M-i" toggle-window-iconified t go-to-next)
+ ("M-m" maximize-window-toggle t go-to-next)
+ ("M-s" toggle-window-shaded t go-to-next)
+ ("M-f" maximize-window-fullscreen-toggle t go-to-next)
+ ("M-t" tab-add-maked-windows t go-to-next))
+ nil
+ :type* `(alist (event ,(_ "Key:"))
+ ((h-and (symbol
+ delete-window maximize-window-toggle toggle-window-iconified toggle-window-shaded toggle-window-sticky
+ maximize-window-fullscreen-toggle maximize-window-horizontally-toggle maximize-window-vertically-toggle
+ maximize-window-fullxinerama-toggle maximize-full-vertical-left-toggle maximize-full-vertical-right-toggle
+ tab-add-maked-windows tab-release-window tab-move-to-end tab-move-to-beginning tab-move-to-right tab-move-to-left
+ move-window-to-center move-window-to-top-left move-window-to-next-workspace move-window-to-previous-workspace
+ toggle-fixed-postion toggle-window-never-focus toggle-window-ignored toggle-task-list-skip toggle-window-cycle-skip
+ toggle-window-list-skip toggle-desktop send-to-next-head send-to-previous-head
+ raise-window lower-window raise-window-depth lower-window-depth raise-lower-window
+ raise-window-and-transients raise-lower-window-and-transients delete-window-safely destroy-window
+ window-history-save-position window-history-save-dimensions window-history-save-attributes window-history-forget
+ iconify-window uniconify-window shade-window unshade-window make-window-sticky make-window-unsticky
+ make-window-ignored make-window-not-ignored
+ maximize-fill-window maximize-fill-window-horizontally maximize-fill-window-vertically
+ ;; tab/titelbar-toggle tab/titelbar-to-top tab/titelbar-to-bottom tab/titelbar-to-right tab/titelbar-to-left
+ ;; move-window-center move-window-up move-window-down
+ ;; move-window-right move-window-left move-window-next move-window-previous
+ ;; shrink-window-up shrink-window-down shrink-window-left shrink-window-right
+ ;; yank-window-up yank-window-down yank-window-left yank-window-right
+ ;; size-window-add-column size-window-subtract-column size-window-add-row size-window-subtract-row
+ ;; grow-window-up grow-window-down grow-window-left grow-window-right
+ ;; pack-window-up pack-window-down pack-window-right pack-window-left
+ ;; double-window-size halve-window-size
+ ;; send-to-next-workspace send-to-previous-workspace send-to-workspace-left
+ ;; send-to-workspace-right send-to-workspace-up send-to-workspace-down
+ ;; maximize-window-fullscreen maximize-window-fullxinerama
+ )
+ (label "After executed cabinet:")
+ (choice none close go-to-next)) ,(_ "Event")))
+ :widget-flags (expand-vertically)
+ :after-set (lambda () (search-bad-key))
+ :depends cabinet:advance-user-keybindings
+ :group (focus cabinet bindings))
- (defvar cabinet-background (get-color "black"))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; end defcustom
-
+ (define (do-when-tabbed w do)
+ "Action when W is tabbed."
+ (when (window-tabbed-p w)
+ (tab-refresh-group w do)
+ (window-opacity w)))
- (defvar cabinet-filter-out-for-manipulation-list
- '(
- "^Conky$"
- )
- "The matching windows are only for display.
-You can see their items below split line.")
+ (define (window-tabbed-foreground-p w)
+ "Returns t if W is a foreground tab"
+ (if (window-tabbed-p w)
+ (eq w (nth 0 (tab-group-windows-stacking-order w)))))
- (defvar cabinet-filter-out-for-display-list
- '(
- "^\.gnome-desktop$"
- "Gnome-panel"
- "^gmc$"
- "^panel$")
-
- "The matching windows are filtered out,they
-will not be shown on cabinet.")
+ (define (tabbgroup-is-shaded-p w)
+ "Returns t if tabbgroup from W is shaded"
+ (let ((shaded 't))
+ (when (window-tabbed-p w)
+ (mapcar (lambda (w)
+ (if (not (window-get w 'shaded)) (setq shaded nil))) (tab-group-windows w))
+ shaded)))
- (defvar manipulation-on-selected
- raise-window
- "what to do on selected window, each time draw/refresh
- Cabinet.
-It must be set to a procedure with one argument. ")
-
- (define (cabinet-item-text w)
- "The text part shown on cabinet item"
- (concat (when (window-get w 'cabinet-marked)
- " **")
+ (define (cabinet-item-text w)
+ "The text part shown on cabinet item"
+ ;; if we remove a window we temporary need this if
+ (if (not (numberp (window-id w)))
+ "Window is gone"
+ (concat (when (window-get w 'marked)
+ " »»")
+ (when (window-tabbed-p w)
+ (if (window-tabbed-foreground-p w)
+ (if (eq cabinet:manipulation-on-selected 'None)
+ (format nil " [%s%s]" (tab-window-group-index w) 'â??)
+ (format nil " [%s]" (tab-window-group-index w)))
+ (format nil " [%s]" (tab-window-group-index w))))
" "
(window-name w)
- " <"
+ " ["
(window-class-name w 1)
- ">"
- (format nil
- " %s"
- (window-viewport w)
- )
- (format nil
- " %s"
- (window-get w 'workspaces))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; End @ usr variables ;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
- (define input-line-height (font-height default-font))
- (define cabinet-font-height input-line-height)
-
- (define wlist-for-manipulation
- nil)
-
- (define wlist-for-display
- nil)
-
- (define wlist-for-cabinet
- nil)
-
- (define cabinet-window nil)
-
- (define cabinet-orin-wlist)
- (define cabinet-orin-focus)
- (define cabinet-input "")
- (define cabinet-orin-workspace)
- (define workspace-mode)
- (define cabinet-filter-for-display-func)
- (define cabinet-filter-for-manipulation-func)
+ "] "
+ (when (or (> (car (window-viewport w)) 0)
+ (> (cdr (window-viewport w)) 0))
+ (format nil " %s" (window-viewport w)))
+ (when (window-get w 'workspaces)
+ (format nil " %s" (window-get w 'workspaces)))
+ ;;(when (window-sticky-p w)
+ ;; (format nil " â??"))
+ (if (and (window-maximized-vertically-p w)
+ (not (window-maximized-horizontally-p w)))
+ (format nil " â??"))
+ (if (and (window-maximized-horizontally-p w)
+ (not (window-maximized-vertically-p w)))
+ (format nil " â??"))
+ (when (window-maximized-p w)
+ (if (or (tabbgroup-is-shaded-p w)
+ (and (not (window-tabbed-p w))
+ (window-shaded-p w)))
+ (format nil " â?¾")))
+ (when (window-get w 'marked)
+ " ««"))))
- ;; item-format package
- (define (cabinet-item-format w)
- (define (cabinet-item-text-format w)
- (cons (cabinet-item-text w)
- (cond
- ((window-iconified-p w) iconified-item-forground)
- ((window-maximized-p w) maximized-item-forground)
- ((window-shaded-p w) shaded-item-forground )
- (t default-item-forground)))
- )
+ (define input-line-height (font-height default-font))
+ (define cabinet-font-height input-line-height)
+ (define wlist-for-manipulation nil)
+ (define wlist-for-display nil)
+ (define wlist-for-cabinet nil)
+ (define cabinet-window nil)
+ (define cabinet-orin-wlist)
+ (define cabinet-orin-focus)
+ (define cabinet-input "")
+ (define cabinet-orin-workspace)
+ (define workspace-mode)
+ (define cabinet-filter-for-display-func)
+ (define cabinet-filter-for-manipulation-func)
+ (define cabinet-raise-timer nil)
+ (define command-timer nil)
+ (define bad-key nil)
+ (define focus-by-tab nil)
- (let (
- (item (cons (window-icon-image w)
- (cabinet-item-text-format w))))
-
- (lambda (tag)
- (cond
- ((eq tag 'icon) (car item))
- ((eq tag 'text) (cadr item))
- ((eq tag 'forground) (cdr (cdr item)))))))
+ ;; item-format package
+ (define (cabinet-item-text-format w)
+ (cons (cabinet-item-text w)
+ (cond
+ ((window-iconified-p w) cabinet:iconified-item-forground)
+ ((window-maximized-p w) cabinet:maximized-item-forground)
+ ((if (or (tabbgroup-is-shaded-p w)
+ (and (not (window-tabbed-p w))
+ (window-shaded-p w)))
+ cabinet:shaded-item-forground))
+ (t cabinet:default-item-forground))))
- (define (make-item icon text forground)
+ (define (cabinet-item-format w)
+ (let ((item (cons (if (window-icon-image w)
+ (window-icon-image w)
+ (require 'rep.io.files)
+ (if (file-exists-p (concat (car (cdr image-load-path)) "/" "cabinet-missing.png"))
+ (make-image (concat (cdr image-load-path) "cabinet-missing.png"))))
+ (cabinet-item-text-format w))))
(lambda (tag)
- (cond
- ((eq tag 'icon) icon)
- ((eq tag 'text) text)
- ((eq tag 'forground) forground))))
- (define (get-item-icon item) (item 'icon))
- (define (get-item-text item) (item 'text))
- (define (get-item-forground item) (item 'forground))
- ;; end @ item format package
-
- (define (cabinet-filter filter-list)
- (lambda (window)
- (let loop ((fow-nrl filter-list))
- (cond
- ((null fow-nrl) t)
- ((or (string-match (car fow-nrl)
- (window-name window)
- 0 nil)
- (string-match (car fow-nrl)
- (window-class-name window 1)
- 0 nil))
- nil)
- (t (loop (cdr fow-nrl)))))))
-
- (define (cabinet-split-line)
- (make-item nil
- (format nil
- "===================%s========================="
- (if workspace-mode
- (format nil
- " %s/%s "
- current-workspace
- (cdr (workspace-limits)))
- "ALL"))
- cabinet-split-line-forground))
-
- (define (draw-items wl input-line)
- (when (x-window-p cabinet-window)
- (x-destroy-window cabinet-window)
- (setq cabinet-window nil))
-
- (let* (
- (wl-size (length wl))
+ (cond
+ ((eq tag 'icon) (car item))
+ ((eq tag 'text) (cadr item))
+ ((eq tag 'forground) (cdr (cdr item)))))))
- (cabinet-items wl)
+ (define (make-item icon text forground)
+ (lambda (tag)
+ (cond
+ ((eq tag 'icon) icon)
+ ((eq tag 'text) text)
+ ((eq tag 'forground) forground))))
+ (define (get-item-icon item) (item 'icon))
+ (define (get-item-text item) (item 'text))
+ (define (get-item-forground item) (item 'forground))
+ ;; end @ item format package
- (item-height (max (cdr cabinet-icon-size)
- cabinet-font-height))
- (wx (+ (* 2 cabinet-x-margin)
- (car cabinet-icon-size)
- (apply max
- (mapcar text-width
- (cons input-line
- (mapcar get-item-text
- cabinet-items))))))
+ (define (cabinet-filter filter-list)
+ (lambda (window)
+ (let loop ((fow-nrl filter-list))
+ (cond
+ ((null fow-nrl) t)
+ ((or (string-match (car fow-nrl)
+ (window-name window)
+ 0 nil)
+ (string-match (car fow-nrl)
+ (window-class-name window 1)
+ 0 nil))
+ nil)
+ (t (loop (cdr fow-nrl)))))))
+
+ (define (cabinet-split-line)
+ (make-item nil
+ (format nil "===================%s========================="
+ (if workspace-mode
+ (format nil " %s/%s "
+ current-workspace
+ (cdr (workspace-limits)))
+ "ALL"))
+ cabinet:split-line-forground))
- (wy (+ (* 2 cabinet-y-margin)
- (* wl-size item-height)
- (* (- wl-size 1) cabinet-item-margin)
- cabinet-input-line-margin
- input-line-height))
- (win-size (cons wx wy)))
- (define (event-handler type xw)
- (define (cabinet-draw-text str pos foreground)
- (let ((gc (x-create-gc xw
- `((foreground . ,foreground)))))
- (x-draw-string xw gc pos str)
- ;; (x-destroy-gc gc)
- ))
- (x-clear-window wx)
- ;; draw input line
- (cabinet-draw-text input-line
- (cons cabinet-x-margin (+ cabinet-y-margin
+ (define (draw-items wl input-line)
+ (when (x-window-p cabinet-window)
+ (x-destroy-window cabinet-window)
+ (setq cabinet-window nil))
+ (let* ((wl-size (length wl))
+ (cabinet-items wl)
+ (item-height (max cabinet:icon-size
+ cabinet-font-height))
+ (wx (+ (* 2 (car cabinet:margin))
+ cabinet:icon-size
+ (apply max
+ (mapcar text-width
+ (cons input-line
+ (mapcar get-item-text
+ cabinet-items))))))
+ (wy (+ (* 2 (cdr cabinet:margin))
+ (* wl-size item-height)
+ (* (- wl-size 1) cabinet:item-margin)
+ cabinet:input-line-margin
+ input-line-height))
+ (win-size (cons wx wy)))
+ (define (event-handler type xw)
+ (define (cabinet-draw-text str pos foreground)
+ (let ((gc (x-create-gc xw
+ `((foreground . ,foreground)))))
+ (x-draw-string xw gc pos str)
+ ;; (x-destroy-gc gc)
+ ))
+ (x-clear-window wx type)
+ ;; draw input line
+ (cabinet-draw-text input-line
+ (cons (car cabinet:margin) (+ (cdr cabinet:margin)
cabinet-font-height))
- cabinet-input-forground)
-
- ;; draw item text
- (let ((item-count 0)
- (item-height-with-margin (+ item-height
- cabinet-item-margin))
- (input-height-with-margin (+ input-line-height
- cabinet-input-line-margin)))
- (mapc (lambda (item)
-
- (let* (
- (icon (get-item-icon item))
- (text (get-item-text item))
- (item-forground (get-item-forground item))
- (icon-x (+ cabinet-x-margin))
- (icon-y (+ cabinet-y-margin
- input-height-with-margin
- (* item-count
- item-height-with-margin)))
- (text-x (+ icon-x
- (car cabinet-icon-size)))
- (text-y (+ icon-y
- (quotient cabinet-font-height 2)
- (quotient (cdr cabinet-icon-size)
- 3))))
- (when icon
- (x-draw-image icon xw
- (cons icon-x icon-y)
- cabinet-icon-size))
- (cabinet-draw-text text
- (cons text-x text-y)
- item-forground
- ))
- (setq item-count (+ 1 item-count)))
- cabinet-items))) ;; end of event-handler
+ cabinet:forground-input)
+ ;; draw item text
+ (let ((item-count 0)
+ (item-height-with-margin (+ item-height
+ cabinet:item-margin))
+ (input-height-with-margin (+ input-line-height
+ cabinet:input-line-margin)))
+ (mapc (lambda (item)
+ (let* ((icon (get-item-icon item))
+ (text (get-item-text item))
+ (item-forground (get-item-forground item))
+ (icon-x (+ (car cabinet:margin)))
+ (icon-y (+ (cdr cabinet:margin)
+ input-height-with-margin
+ (* item-count
+ item-height-with-margin)))
+ (text-x (+ icon-x
+ cabinet:icon-size))
+ (text-y (+ icon-y
+ (quotient cabinet-font-height 2)
+ (quotient cabinet:icon-size
+ 3))))
+ (when icon
+ (x-draw-image icon xw
+ (cons icon-x icon-y)
+ (cons cabinet:icon-size cabinet:icon-size)))
+ (cabinet-draw-text text
+ (cons text-x text-y)
+ item-forground))
+ (setq item-count (+ 1 item-count)))
+ cabinet-items))) ;; end of event-handler
+ (setq cabinet-window
+ (let ((head (if cabinet:display-cabinet-on-active (current-head) '0)))
+ (x-create-window `(,(+ (car (head-offset head))
+ (- (quotient (car (head-dimensions head)) 2)
+ (quotient wx 2)))
+ .
+ ,(+ (cdr (head-offset head))
+ (- (quotient (cdr (head-dimensions head)) 2)
+ (quotient wy 2))))
+ win-size
+ 1
+ `((background . ,cabinet:background))
+ event-handler)))
+ (x-map-window cabinet-window)
+ cabinet-window))
- (setq cabinet-window
- (x-create-window `(,(- (quotient (screen-width) 2)
- (quotient wx 2))
- .
- ,(- (quotient (screen-height) 2)
- (quotient wy 2)))
- win-size
- 1
- `(
- (background . ,cabinet-background)
- )
- event-handler
- ))
- (x-map-window cabinet-window)
- cabinet-window))
+ (define (display-bad-key)
+ (display-message (concat "Cabinet:" "\n" "\n" bad-key "\n" "\nIs duplicate." "\nDisable cabinet.")
+ `((background . ,(get-color "Red")))))
- ;; keymap package
- (define (cabinet-switch-to-next)
- (when (not (null wlist-for-manipulation))
- (setq wlist-for-manipulation
- (append (cdr wlist-for-manipulation)
- (list (car wlist-for-manipulation))))))
+ (define (search-bad-key)
+ (setq bad-key nil)
+ (let ((key-list (list cabinet:cycle cabinet:reversely-cycle cabinet:restore-order cabinet:toggle-workspace-mode
+ cabinet:exchange-manipulation cabinet:cycle-workspaces cabinet:cycle-reversely-workspaces)) key rest-list)
+ (when cabinet:advance-user-keybindings
+ (setq key-list (append key-list (list cabinet:mark-selected)))
+ (setq key-list (append key-list
+ (mapcar (lambda (w)
+ (car w))
+ cabinet:advance-keybindings))))
+ (mapcar (lambda ()
+ (setq rest-list (cdr key-list))
+ (setq key (car key-list))
+ (when (not (x-keysym-name (car (lookup-event key))))
+ (setq bad-key key)
+ (display-message (concat "Cabinet:" "\n" "\n" bad-key "\n" "\nIs not a valid x-keysym-name." "\nDisable cabinets.")
+ `((background . ,(get-color "Red")))))
+ (when (member key rest-list)
+ (setq bad-key key)
+ (display-bad-key))
+ (setq key-list (cdr key-list)))
+ key-list)))
+
+ ;; keymap package
+ (define (command-delay-timer)
+ (setq command-timer
+ (make-timer (lambda ()
+ (setq command-timer nil))
+ (quotient cabinet:command-repeat-timeout 1000) (mod cabinet:command-repeat-timeout 1000))))
- (define (cabinet-switch-to-previous)
- (when (not (null wlist-for-manipulation))
- (setq wlist-for-manipulation
- (let ((rl (reverse wlist-for-manipulation)))
- (list* (car rl) (reverse (cdr rl)))))))
+ (define (update-cabinet-interface-add)
+ (when (x-window-p cabinet-window)
+ (setq wlist-for-manipulation
+ (filter cabinet-filter-for-manipulation-func
+ (filter cabinet-filter-for-display-func
+ (stacking-order))))
+ (setq wlist-for-display (filter (lambda (win)
+ (not (cabinet-filter-for-manipulation-func win)))
+ (stacking-order)))
+ (if workspace-mode
+ (update-on-workspace))
+ (draw-cabinet)))
- (define (toggle-iconify)
- (let ((w (car wlist-for-manipulation)))
- (if (window-get w 'iconified)
- (uniconify-window w)
- (iconify-window w))))
+ (define (update-cabinet-interface-remove)
+ (when (x-window-p cabinet-window)
+ (let ((old-manipulation wlist-for-manipulation)
+ (old-display wlist-for-display)
+ new-manipulation new-display)
+ (setq new-manipulation
+ (filter cabinet-filter-for-manipulation-func
+ (filter cabinet-filter-for-display-func
+ (stacking-order))))
+ (setq new-display (filter (lambda (win)
+ (not (cabinet-filter-for-manipulation-func win)))
+ (stacking-order)))
+ (mapcar (lambda (w)
+ (if (not (member w new-manipulation))
+ (setq wlist-for-manipulation (remove w old-manipulation))))
+ old-manipulation)
+ (mapcar (lambda (w)
+ (if (not (member w new-display))
+ (setq wlist-for-manipulation (remove w old-display))))
+ old-display)
+ (if workspace-mode
+ (update-on-workspace))
+ (draw-cabinet))))
- (define (erase-input)
- (setq cabinet-input ""))
+ (define (update-cabinet-interface #!optional next)
+ (when (x-window-p cabinet-window)
+ (when (not (null wlist-for-manipulation))
+ (if (member next wlist-for-manipulation)
+ (cabinet-switch-to-next)))
+ (if workspace-mode
+ (update-on-workspace))
+ (draw-cabinet)))
- (define (with-draw cmd)
- "If your cmd will change Cabinet's
+ (define (cabinet-switch-to-next)
+ (when cabinet-raise-timer
+ (delete-timer cabinet-raise-timer)
+ (setq cabinet-raise-timer nil))
+ (when (not (null wlist-for-manipulation))
+ (setq wlist-for-manipulation
+ (append (cdr wlist-for-manipulation)
+ (list (car wlist-for-manipulation))))))
+
+ (define (cabinet-switch-to-previous)
+ (when cabinet-raise-timer
+ (delete-timer cabinet-raise-timer)
+ (setq cabinet-raise-timer nil))
+ (when (not (null wlist-for-manipulation))
+ (setq wlist-for-manipulation
+ (let ((rl (reverse wlist-for-manipulation)))
+ (list* (car rl) (reverse (cdr rl)))))))
+
+ (define (erase-input)
+ (setq cabinet-input ""))
+
+ (define (with-draw cmd)
+ "If your cmd will change Cabinet's
apperances,then add it."
- (lambda ()
- (cmd)
- (draw-cabinet)))
-
- (define (with-new-wlist cmd)
- " If your cmd makes the number of items
+ (lambda ()
+ (cmd)
+ (draw-cabinet)))
+
+ (define (with-new-wlist cmd)
+ "If your cmd the number of items
grow, then add it"
- (lambda ()
- (cmd)
- (setq wlist-for-manipulation
- (filter cabinet-filter-for-manipulation-func
- (filter cabinet-filter-for-display-func
- (stacking-order))))
- (setq wlist-for-display
- (filter (lambda (win)
- (not (cabinet-filter-for-manipulation-func win)))
- (filter cabinet-filter-for-display-func
- (stacking-order))))))
-
- (define (with-update-on-input cmd)
- " It will filter items on input after
+ (lambda ()
+ (cmd)
+ (setq wlist-for-manipulation
+ (filter cabinet-filter-for-manipulation-func
+ (filter cabinet-filter-for-display-func
+ (stacking-order))))
+ (setq wlist-for-display (filter (lambda (win)
+ (not (cabinet-filter-for-manipulation-func win)))
+ (stacking-order)))))
+
+ (define (with-update-on-input cmd)
+ " It will filter items on input after
execution of cmd, add it when you feel proper."
- (lambda ()
- (cmd)
- (cabinet-update-on-input)))
-
- (define (cabinet-update-on-input)
- "Same with `with-update-on-input',except that it's
+ (lambda ()
+ (cmd)
+ (cabinet-update-on-input)))
+
+ (define (cabinet-update-on-input)
+ "Same with `with-update-on-input',except that it's
a procedure with no argument."
- (setq wlist-for-manipulation
- (if (not (null wlist-for-manipulation))
- (filter (lambda (w)
- (string-match cabinet-input
- (concat
- (window-name w)
- (window-class-name w ))
- 0 t))
- wlist-for-manipulation))))
-
- (define (with-exit-and-clear-mark cmd)
- " Use it, when you decide to quit Cabinet after
+ (setq wlist-for-manipulation
+ (if (not (null wlist-for-manipulation))
+ (filter (lambda (w)
+ (string-match cabinet-input
+ (concat
+ (window-name w)
+ (window-class-name w))
+ 0 t))
+ wlist-for-manipulation))))
+
+ (define (with-exit-and-clear-mark cmd)
+ " Use it, when you decide to quit Cabinet after
your cmd's execution."
- (lambda ()
- (cmd)
- (mapc (lambda (w)
- (window-remprop w 'cabinet-marked))
- cabinet-orin-wlist)
- (event-exit-wait)))
+ (lambda ()
+ (cmd)
+ (mapc (lambda (w)
+ (when (window-get w 'marked)
+ (window-remprop w 'marked)
+ (call-marked w)))
+ cabinet-orin-wlist)
+ (event-exit-wait)))
- (define (with-marked-wl cmd)
- "The marked window will be passed to cmd as a list."
- (lambda ()
- (cmd (filter-windows (lambda (w)
- (window-get w
- 'cabinet-marked))))))
- (define (with-selected cmd)
- "The selected window will be passed to cmd as an argument."
- (lambda ()
- (cmd (car wlist-for-manipulation))))
+ (define (with-marked-wl cmd)
+ "The marked windows will be passed to cmd as a list."
+ (lambda ()
+ (cmd (filter-windows (lambda (w)
+ (window-get w
+ 'marked))))))
+
+ (define (with-selected cmd)
+ "The selected window will be passed to cmd as an argument."
+ (lambda ()
+ (cmd (car wlist-for-manipulation))))
+
+ (define (workspace-prev)
+ (cycle-workspace -1))
+
+ (define (workspace-next)
+ (cycle-workspace 1))
+
+ (define (cycle-workspace count)
+ (with-draw
+ (lambda ()
+ ((with-update-on-input (with-new-wlist (lambda () t))))
+ (if workspace-mode
+ (next-workspace count)
+ (setq workspace-mode t)
+ (next-workspace count))
+ (update-on-workspace))))
+
+ (define (toggle-workspace-mode)
+ (with-draw
+ (lambda ()
+ ((with-update-on-input (with-new-wlist (lambda () t))))
+ (if workspace-mode
+ (setq workspace-mode (not workspace-mode))
+ (setq workspace-mode t)
+ (update-on-workspace)))))
+
+ (define (with-update-on-workspace cmd)
+ "It filters items for current workspace windows.
+add it, when your command changed workspace"
+ (lambda ()
+ (cmd)
+ (update-on-workspace)))
+
+ (define (update-on-workspace)
+ " Same with `with-update-on-workspace',except that
+this is a procedure with no argument."
+ (setq wlist-for-manipulation
+ (filter (lambda (w)
+ (let ((ww (window-get w 'workspaces)))
+ (or (memq current-workspace ww)
+ (eq ww nil))))
+ wlist-for-manipulation)))
+
+ (define (call-marked cmd)
+ "Call marked hook if window marked"
+ (call-window-hook 'window-state-change-hook cmd (list '(marked))))
- (define (cycle-workspace count)
- (with-draw
- (lambda ()
- ((with-update-on-input (with-new-wlist (lambda () t))))
- (if workspace-mode
- (next-workspace count)
- (setq workspace-mode t))
- (update-on-workspace))))
+ (defvar move-window-to-next-workspace
+ (lambda (w)
+ (let ((nw (+ (car (window-get w 'workspaces)) 1)))
+ (send-to-next-workspace w nw))))
- (define (with-update-on-workspace cmd)
- "It filters items for
-current workspace windows.
-add it, when your command changed workspace"
- (lambda ()
- (cmd)
- (update-on-workspace)))
+ (defvar move-window-to-previous-workspace
+ (lambda (w)
+ (let ((nw (- (car (window-get w 'workspaces)) 1)))
+ (send-to-next-workspace w nw))))
- (define (update-on-workspace)
- " Same with `with-update-on-workspace',except that
-this is a procedure with no argument."
- (when (eq workspace-mode t)
- (setq wlist-for-manipulation
- (filter (lambda (w)
- (let (
- (ww (window-get w 'workspaces)))
- (or (memq current-workspace ww)
- (eq ww nil))))
- wlist-for-manipulation))))
+ (defvar move-window-to-top-left
+ (lambda (w)
+ (let ((dims (window-frame-dimensions w))
+ (h-off (cons 0 0))
+ (screen (calculate-workarea #:window w #:head '0)))
+ (move-window-to w
+ (clamp* (car h-off)
+ (car dims) (nth 0 screen) (nth 2 screen))
+ (clamp* (cdr h-off)
+ (cdr dims) (nth 1 screen) (nth 3 screen)))
+ (call-window-hook 'after-move-hook w))))
- (define cabinet-keymap
- (bind-keys (make-keymap)
- "C-u" (with-draw
- (with-update-on-input
- (with-update-on-workspace
- (with-new-wlist erase-input))))
+ (defvar move-window-to-center
+ (lambda (w)
+ (let ((dims (window-frame-dimensions w))
+ (h-dims (current-head-dimensions w))
+ (h-off (current-head-offset w))
+ (screen (calculate-workarea #:window w #:head (current-head w))))
+ (move-window-to w
+ (clamp* (+ (car h-off)
+ (quotient (- (car h-dims) (car dims)) 2))
+ (car dims) (nth 0 screen) (nth 2 screen))
+ (clamp* (+ (cdr h-off)
+ (quotient (- (cdr h-dims) (cdr dims)) 2))
+ (cdr dims) (nth 1 screen) (nth 3 screen)))
+ (call-window-hook 'after-move-hook w))))
+
+ (defvar tab-add-maked-windows
+ (lambda ()
+ (let* ((win (car wlist-for-manipulation))
+ (tabs (remove win (filter-windows (lambda (w) (window-get w 'marked))))))
+ (when (car tabs)
+ (require 'sawfish.wm.tabs.tab)
+ (window-remprop win 'marked)
+ (mapcar (lambda (w)
+ (window-remprop w 'marked)
+ (tab-window-add-to-tabgroup w)
+ (tab-window-add-to-tabgroup win))
+ tabs)
+ (set-input-focus nil)))))
- "SPC" (with-draw
- (with-update-on-input
- (lambda ()
- (setq cabinet-input
- (concat cabinet-input " ")))))
- "BS" (with-draw
- (with-update-on-input
- (with-update-on-workspace
- (with-new-wlist
- (lambda ()
- (when (> (length cabinet-input) 0)
- (setq cabinet-input
- (substring cabinet-input
- 0
- (1- (length cabinet-input))))
- ))))))
-
- "Super-s" (with-draw cabinet-switch-to-next)
- "C-s" (with-draw cabinet-switch-to-next)
- "Super-r" (with-draw cabinet-switch-to-previous)
- "C-r" (with-draw cabinet-switch-to-previous)
- "Super-w" (with-selected
- (lambda (w)
- (delete-window w)
- (setq wlist-for-manipulation (cdr wlist-for-manipulation))
- (draw-cabinet)))
- "Super-z" (with-draw toggle-iconify)
- "Super-C-z" (with-draw (lambda ()
- (toggle-iconify)
- (cabinet-switch-to-next)))
- "RET" (with-exit-and-clear-mark
- (with-selected
- (lambda (w)
- (display-window w))))
- "Super-g" (with-exit-and-clear-mark (lambda ()
- (select-workspace cabinet-orin-workspace)
- (restack-windows cabinet-orin-wlist)
- (set-input-focus cabinet-orin-focus)))
- "Super-x" (with-draw
- (with-update-on-input
- (lambda ()
- (let (
- (tmp wlist-for-manipulation))
- (setq wlist-for-manipulation wlist-for-display
- wlist-for-display tmp)))))
- "Super-SPC" (with-draw
- (with-selected
- (lambda (w)
- (window-put w
- 'cabinet-marked
- (not
- (window-get w 'cabinet-marked))))))
- "Super-S" (cycle-workspace 1)
- "Super-R" (cycle-workspace -1)
- "Super-v" (with-draw
- (lambda ()
- ((with-update-on-input
- (with-new-wlist
- (lambda () t))))
- (setq workspace-mode (not workspace-mode))))
- ;; "Right" (with-draw
- ;; (with-selected
- ;; (lambda (w)
- ;; (send-to-next-workspace w 1))))
- ;; "Left" (with-draw
- ;; (with-selected
- ;; (lambda (w)
- ;; (send-to-next-workspace w -1))))
- ))
+ (define (run-cmd-and-do cmd do)
+ (when (not command-timer)
+ (command-delay-timer)
+ (let ((win (car wlist-for-manipulation))
+ (next (car (cdr wlist-for-manipulation))))
+ (if (eq cmd 'tab-add-maked-windows)
+ (tab-add-maked-windows)
+ (if (and (filter-windows (lambda (w) (window-get w 'marked)))
+ cabinet:advance-user-keybindings)
+ (mapcar (lambda (x)
+ (cmd x))
+ (filter-windows (lambda (w) (window-get w 'marked))))
+ (cmd win)))
+ (when (string= do "close")
+ (mapc (lambda (w)
+ (when (window-get w 'marked)
+ (window-remprop w 'marked)
+ (call-marked w)))
+ cabinet-orin-wlist)
+ (event-exit-wait)
+ (x-destroy-window cabinet-window)
+ (display-window win))
+
+ (when (string= do "none")
+ (mapc (lambda (w)
+ (when (window-get w 'marked)
+ (window-remprop w 'marked)
+ (call-marked w)))
+ cabinet-orin-wlist)
+ (update-cabinet-interface))
+
+ (when (string= do "go-to-next")
+ (mapc (lambda (w)
+ (when (window-get w 'marked)
+ (window-remprop w 'marked)
+ (call-marked w)))
+ cabinet-orin-wlist)
+ (update-cabinet-interface next)))))
- ;; end @ keymap package
+ (define (cabinet-keymap-complete)
+ (let ((keymap-complete))
+ (if bad-key
+ (bind-keys (make-keymap) nil)
+ (if (and cabinet:advance-user-keybindings
+ (car cabinet:advance-keybindings))
+ (setq keymap-complete (append (cabinet-keymap-base) (cabinet-keymap-advance)))
+ (setq keymap-complete (cabinet-keymap-base)))
+ keymap-complete)))
- (define (draw-cabinet)
- (let (
- (selected-w (car wlist-for-manipulation)))
- (when (not (null wlist-for-manipulation))
- (manipulation-on-selected selected-w))
+ (define (cabinet-keymap-advance)
+ (let ((keybind-list cabinet:advance-keybindings)
+ keymap-list tmp)
+ (mapcar (lambda (w)
+ (setq tmp (list (car w) (list run-cmd-and-do (nth 1 w) (prin1-to-string (nth 3 w)))))
+ (setq keymap-list (append keymap-list (cdr (bind-keys (make-keymap) (nth 0 tmp) (nth 1 tmp))))))
+ keybind-list)
+ keymap-list))
- (draw-items (append (mapcar cabinet-item-format wlist-for-manipulation)
- (list (cabinet-split-line))
- (mapcar cabinet-item-format wlist-for-display))
- (concat cabinet-input "_"))
- ))
-
- (defvar cabinet-handler
- `(
- (,(lambda (key) (= 1 (length key)))
- .
- ,(lambda (key)
- (setq cabinet-input (concat cabinet-input key))
- (cabinet-update-on-input)
- (draw-cabinet)))))
+ (define (cabinet-keymap-base)
+ (bind-keys (make-keymap)
+ "RET" (with-exit-and-clear-mark
+ (with-selected
+ (lambda (w)
+ (display-window w))))
+ "KP_Enter" (with-exit-and-clear-mark
+ (with-selected
+ (lambda (w)
+ (display-window w))))
+ "SPC" (with-draw
+ (with-update-on-input
+ (lambda ()
+ (setq cabinet-input
+ (concat cabinet-input " ")))))
+ "BS" (with-draw
+ (with-update-on-input
+ (with-update-on-workspace
+ (with-new-wlist
+ (lambda ()
+ (when (> (length cabinet-input) 0)
+ (setq cabinet-input
+ (substring cabinet-input
+ 0
+ (1- (length cabinet-input))))))))))
+ cabinet:cycle (with-draw cabinet-switch-to-next)
+ cabinet:reversely-cycle (with-draw cabinet-switch-to-previous)
+ cabinet:restore-order (with-exit-and-clear-mark
+ (lambda ()
+ (select-workspace cabinet-orin-workspace)
+ (restack-windows cabinet-orin-wlist)
+ (set-input-focus cabinet-orin-focus)
+ (when (and focus-by-tab
+ (numberp (window-id focus-by-tab)))
+ (do-when-tabbed focus-by-tab 'focus)
+ (setq focus-by-tab nil))))
+ cabinet:exchange-manipulation (with-draw
+ (with-update-on-input
+ (lambda ()
+ (let ((tmp wlist-for-manipulation))
+ (setq wlist-for-manipulation wlist-for-display
+ wlist-for-display tmp)))))
+ cabinet:toggle-workspace-mode (toggle-workspace-mode)
+ cabinet:cycle-workspaces (workspace-next)
+ cabinet:cycle-reversely-workspaces (workspace-prev)
+ cabinet:mark-selected (when cabinet:advance-user-keybindings
+ (with-draw
+ (with-selected
+ (lambda (w)
+ (window-put w 'marked
+ (not (window-get w 'marked)))
+ (call-marked w)))))))
+ ;; end @ keymap package
+ (define (draw-cabinet)
+ (let ((w (car wlist-for-manipulation)))
+ (when (not (null wlist-for-manipulation))
+ (when (eq cabinet:manipulation-on-selected 'Raise)
+ (setq cabinet-raise-timer
+ (make-timer (lambda ()
+ (raise-window w)
+ (do-when-tabbed w 'raise))
+ (quotient cabinet:raise-window-timeout 1000) (mod cabinet:raise-window-timeout 1000))))
+ (when (eq cabinet:manipulation-on-selected 'Focus)
+ (setq cabinet-raise-timer
+ (make-timer (lambda ()
+ (raise-window w)
+ (set-input-focus w))
+ (quotient cabinet:raise-window-timeout 1000) (mod cabinet:raise-window-timeout 1000))))
+ (when (eq cabinet:manipulation-on-selected 'None)
+ (set-input-focus nil)))
+ (draw-items (append (mapcar cabinet-item-format wlist-for-manipulation)
+ (list (cabinet-split-line))
+ (mapcar cabinet-item-format wlist-for-display))
+ (concat cabinet-input "_"))))
+
+ (defvar cabinet-handler
+ `((,(lambda (key) (= 1 (length key)))
+ .
+ ,(lambda (key)
+ (setq cabinet-input (concat cabinet-input key))
+ (cabinet-update-on-input)
+ (draw-cabinet)))))
- (define (cabinet-switch)
- "The Main function."
+ (define (unbound-check)
+ (if bad-key
+ (progn (display-bad-key)
+ nil)
+ (display-message nil)
+ 't))
+ (define (cabinet-switch)
+ "Start cabinet switch."
+ (if bad-key
+ (display-bad-key)
+ (when (and (input-focus)
+ (window-tabbed-p (input-focus))
+ (eq cabinet:manipulation-on-selected 'Raise))
+ (set-input-focus nil)
+ (setq focus-by-tab (input-focus)))
(setq cabinet-orin-wlist (stacking-order)
cabinet-orin-focus (input-focus)
-
cabinet-input ""
cabinet-orin-workspace current-workspace
- workspace-mode workspace-mode-on-initial
+ workspace-mode cabinet:workspace-mode-on-initial
cabinet-filter-for-display-func
- (cabinet-filter cabinet-filter-out-for-display-list)
+ (cabinet-filter cabinet:filter-out-from-display)
cabinet-filter-for-manipulation-func
- (cabinet-filter cabinet-filter-out-for-manipulation-list)
+ (cabinet-filter cabinet:filter-out-for-manipulation)
wlist-for-cabinet (filter cabinet-filter-for-display-func
(stacking-order))
-
wlist-for-manipulation (filter cabinet-filter-for-manipulation-func
wlist-for-cabinet)
wlist-for-display (filter (lambda (win)
- (not (cabinet-filter-for-manipulation-func win)))
- wlist-for-cabinet)
- )
-
-
+ (not (cabinet-filter-for-manipulation-func win)))
+ wlist-for-cabinet))
(when workspace-mode
- (update-on-workspace))
-
- (when cycle-as-start
- (cabinet-switch-to-next))
-
+ (update-on-workspace))
+ (when cabinet:cycle-as-start
+ (cabinet-switch-to-next))
(draw-cabinet)
+ (event-wait-for #:keymap (cabinet-keymap-complete)
+ #:handler cabinet-handler
+ #:loop-on-unbound (unbound-check))
+ (x-destroy-window cabinet-window)))
- (event-wait-for #:keymap cabinet-keymap
- #:handler cabinet-handler
- #:loop-on-unbound t)
- (x-destroy-window cabinet-window))
- (define-command 'cabinet-switch cabinet-switch)
- )
+ (search-bad-key)
+
+ (unless batch-mode
+ (add-hook 'tab-group-windows-hook update-cabinet-interface)
+ (add-hook 'before-add-window-hook update-cabinet-interface-add)
+ (add-hook 'destroy-notify-hook update-cabinet-interface-remove))
+
+ (define-command 'cabinet-switch cabinet-switch))
diff -urNad sawfish.orgi/lisp/sawfish/wm/keymaps.jl sawfish/lisp/sawfish/wm/keymaps.jl
--- sawfish.orgi/lisp/sawfish/wm/keymaps.jl
+++ sawfish/lisp/sawfish/wm/keymaps.jl
@@ -87,7 +87,9 @@
(defcustom global-keymap (bind-keys (make-keymap)
"W-Left" 'previous-workspace
"W-Right" 'next-workspace
- "W-Tab" 'cycle-windows)
+ "W-Tab" 'cycle-windows
+ "Super-Tab" 'cabinet-switch
+ "C-Tab" 'cabinet-switch)
"Keymap active anywhere."
:group bindings
:type keymap
diff -urNad sawfish.orgi/lisp/sawfish/wm/tabs/tab.jl sawfish/lisp/sawfish/wm/tabs/tab.jl
--- sawfish.orgi/lisp/sawfish/wm/tabs/tab.jl
+++ sawfish/lisp/sawfish/wm/tabs/tab.jl
@@ -26,6 +26,7 @@
tabbar-left-margin-transient
tabbar-right-margin
tabbar-right-margin-transient
+ tab-window-add-to-tabgroup
set-tab-adjustments)
(open rep
diff -urNad sawfish.orgi/lisp/sawfish/wm/tabs/tabgroup.jl sawfish/lisp/sawfish/wm/tabs/tabgroup.jl
--- sawfish.orgi/lisp/sawfish/wm/tabs/tabgroup.jl
+++ sawfish/lisp/sawfish/wm/tabs/tabgroup.jl
@@ -28,6 +28,11 @@
tab-release-window
tab-raise-left-window
tab-raise-right-window
+ tab-move-to-beginning
+ tab-move-to-end
+ tab-move-to-right
+ tab-move-to-left
+ tab-window-group-index
tab-find-window
tab-rank
tab-group-window-list
@@ -102,7 +107,7 @@
(equal (aref (nth 2 (get-x-property w '_NET_WM_WINDOW_TYPE)) 0) '_NET_WM_WINDOW_TYPE_NORMAL))))
(define (window-tabbed-p w)
- (window-get w 'tabbed))
+ (window-get w 'tabbed))
(define-record-type :tab-group
(tab-build-group p d wl)
@@ -577,13 +582,13 @@
(window-put w 'never-iconify t))
(window-put w 'tabbed t)) wins)
(call-hook 'tab-group-windows-hook (list (tab-group-windows win)))
- (raise-window win)
+ ;;(raise-window win)
(setq all-wins nil))
(setq tab-refresh-lock t)
(when (window-tabbed-p win)
(tab-refresh-group win 'move)
(tab-refresh-group win 'frame)
- (set-input-focus (nth 0 (tab-group-windows-stacking-order win)))
+ ;;(set-input-focus (nth 0 (tab-group-windows-stacking-order win)))
(when clicked-frame
(move-cursor-in-tabbar (input-focus))
(setq clicked-frame nil)))
@@ -600,7 +605,7 @@
tabbar-left-margin)))
(if (not (eq (window-get win 'current-frame-style) (nth 0 (frame-style-tabbars-support win))))
(warp-cursor (+ (car (window-position win)) start-right (nth 4 tab-pos-list) (quotient (nth 6 tab-pos-list) 2))
- (+ (quotient (- (cdr (window-frame-dimensions win)) (cdr (window-dimensions win)) 2) 2) (cdr (window-position win))))
+ (+ (quotient (- (cdr (window-frame-dimensions win)) (cdr (window-dimensions win)) 4) 2) (cdr (window-position win))))
(let ((current-pos
(if (window-get win 'title-position)
(window-get win 'title-position)
diff -urNad sawfish.orgi/lisp/sawfish/wm/util/events.jl sawfish/lisp/sawfish/wm/util/events.jl
--- sawfish.orgi/lisp/sawfish/wm/util/events.jl
+++ sawfish/lisp/sawfish/wm/util/events.jl
@@ -1,87 +1,89 @@
-;; hqw-util.jl 1.0 -- A bunch of util functions for sawfish
+;; events.jl
-;; Time-stamp: <2011-12-15 10:23:36 hqwrong>
;; Copyright (C) 2011, hqwrong <hq.wrong@xxxxxxxxx>
-;; Permission is granted to copy, distribute and/or modify this
-;; document under the terms of the GNU Free Documentation License,
-;; Version 1.3 or any later version published by the Free Software
-;; Foundation.
+;; This file is part of sawfish.
+
+;; This program is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or (at
+;; your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see `http://www.gnu.org/licenses/'.
+
-;;
-;;; Commentary:
(define-structure sawfish.wm.util.events
- (export event-wait-for
- event-exit-wait)
+ (export event-wait-for
+ event-exit-wait)
- (open rep
- rep.data
- rep.system
- rep.regexp
- rep.lang.math
- sawfish.wm.state.shading
- sawfish.wm.state.iconify
- sawfish.wm.stacking
- sawfish.wm.viewport
- sawfish.wm.state.maximize
- sawfish.wm.custom
- sawfish.wm.commands
- sawfish.wm.colors
- sawfish.wm.events
- sawfish.wm.fonts
- sawfish.wm.images
- sawfish.wm.misc
- sawfish.wm.util.x
- sawfish.wm.windows
- sawfish.wm.workspace)
+ (open rep
+ rep.data
+ rep.system
+ rep.regexp
+ sawfish.wm.misc
+ sawfish.wm.events
+ sawfish.wm.commands)
-(define (event-wait-for #!key
- (keymap '(keymap))
- loop-on-unbound
- handler
- exit-hook)
- "wait-for an event.
- `keymap' is used as the override keymap during `recursive-edit'
+ (define (event-wait-for #!key
+ (keymap '(keymap))
+ loop-on-unbound
+ handler
+ exit-hook)
+ "wait-for an event.
+`keymap' is used as the override keymap during `recursive-edit'
- `handler' is a list of cons cell,as (predict
+`handler' is a list of cons cell,as (predict
. procedure), when the key event has no bound in keymap, then the
key name is passed to each predict by order.Once eval to t ,then
the associated procedure is called with key as argument,then
re-enter in `recursive-edit'.Otherwise,if loop-on-unbound is nil,
exit loop.
- `exit-hook' ,if setted,will be called with key's name as argument,
+`exit-hook' ,if setted,will be called with key's name as argument,
after exit from loop."
- (call-with-keyboard-grabbed
- (lambda ()
+ (call-with-keyboard-grabbed
+ (lambda ()
(let ((override-keymap keymap)
(re-exit (lambda ()
- (throw 're-exit
- (event-name (current-event)))))
+ (throw 're-exit
+ (event-name (current-event)))))
(key nil))
- (add-hook 'unbound-key-hook re-exit)
- (while (catch 'event-exit
- (setq key
- (catch 're-exit
- (recursive-edit)))
- (when handler
- (do ((l handler (cdr handler)))
- ((null l) t)
- (let* ((cell (car l))
- (pred (car cell))
- (proc (cdr cell)))
- (when (pred key)
- (proc key)
- (throw 'event-exit t)))))
- (when (not loop-on-unbound)
- (throw 'event-exit nil))
- t)
- t)
- (when exit-hook
- (exit-hook key))))))
+ ;; XXX No idea what this hook do, here i only got
+ ;; XXX a error messages if i click on an frame part:
+ ;; XXX
+ ;; XXX Sawfish error:
+ ;; XXX No catcher for throw: re-exit
+ ;; XXX
+ ;; XXX Disable this hook untill someone fix this.
+ ;;(add-hook 'unbound-key-hook re-exit)
+ (while (catch 'event-exit
+ (setq key
+ (catch 're-exit
+ (recursive-edit)))
+ (when handler
+ (do ((l handler (cdr handler)))
+ ((null l) t)
+ (let* ((cell (car l))
+ (pred (car cell))
+ (proc (cdr cell)))
+ (when (pred key)
+ (proc key)
+ (throw 'event-exit t)))))
+ (when (not loop-on-unbound)
+ (throw 'event-exit nil))
+ t)
+ t)
+ (when exit-hook
+ (exit-hook key))))))
-(define (event-exit-wait)
- "You'll find it useful,when you're using `event-wait-for'"
- (throw 'event-exit)))
+ (define (event-exit-wait)
+ "You'll find it useful,when you're using `event-wait-for'"
+ (throw 'event-exit)))
diff -urNad sawfish.orgi/po/de.po sawfish/po/de.po --- sawfish.orgi/po/de.po +++ sawfish/po/de.po @@ -14,13 +14,13 @@ # Christopher Roy Bratusek <nano@xxxxxxxxxxxxx>, 2011. # Christian Kirbach <Christian.Kirbach@xxxxxxxxxxxxxx>, 2009, 2010, 2011. # Hendrik Richter <hendrikr@xxxxxxxxx>, 2005. -# fuchur <flohtransporter@xxxxxxxxx>, 2013. +# fuchur <flohtransporter@xxxxxxxxx>, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: Sawfish WM\n" "Report-Msgid-Bugs-To: http://sawfish.tuxfamily.org/flyspray/\n" "POT-Creation-Date: 2011-06-23 11:00+0200\n" -"PO-Revision-Date: 2013-10-09 18:01+0200\n" +"PO-Revision-Date: 2014-05-02 19:21+0200\n" "Last-Translator: fuchur <flohtransporter@xxxxxxxxx>\n" "Language-Team: German <me@home>\n" "MIME-Version: 1.0\n" @@ -6055,42 +6055,585 @@ msgstr "Cabinet" #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "The horizontal margin of cabinet" -msgstr "Abstand des Menüs zum seitlichen Rand von Cabinet" +msgid "Keybindings" +msgstr "Tastenkombinationen" #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "The vertically margin of cabinet" -msgstr "Abstand des Menüs zum oberen Rand von Cabinet" +msgid "Margin to the border of cabinet." +msgstr "Abstand des Menüs zum Rand von Cabinet." #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid " The margin between item and item." -msgstr "Abstand zwischen den Menüeinträgen von Cabinet" +msgid "Margin between items." +msgstr "Abstand zwischen den Menüeinträgen von Cabinet." #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "" -"whether cycle overhead,when start cabinet-switch.\n" -"Just like x-cycle" -msgstr "Das verhalten von Cabinet wird dem von x-cycle nachempfunden." +msgid "Margin between input line and the first item." +msgstr "" +"Abstand zwischen der Eingabeaufforderung und dem ersten Menüeintrag von " +"Cabinet." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Icon size." +msgstr "Icon Grö�e." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Display only windows from current workspace." +msgstr "Nur Fenster der aktuellen Arbeitsfläche anzeigen." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Display cabinet on active monitor." +msgstr "Cabinet auf dem aktiven Monitor anzeigen." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Cycle overhead when start cabinet-switch, like x-cycle." +msgstr "" +"Beim aufrufen von Cabinet zum nächsten Menüeintrag springen, wie beim x-cycle." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Action if browse across cabinet." +msgstr "Verhalten der Fenstern beim blättern in Cabinet." #. ../lisp/sawfish/wm/ext/cabinet.jl msgid "" -"whether to show windows in current workspace.\n" -"nil, means to show windows of all workspaces." -msgstr "Cabinet nur auf Fenster der aktuellen Arbeitsfläche anzeigen." +"Delay in milliseconds until a window gets raised if browse across cabinet.. " +"\\bottom" +msgstr "Verzögerung bis ein Fenster beim blättern angehoben wird.. \\bottom" #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "The margin between input line and the first item" +msgid "Delay in milliseconds until a window keybinding gets repeats. \\bottom" msgstr "" -"Abstand zwischen der Eingabeaufforderung und dem ersten Menüeintrag von " -"Cabinet" +"Verzögerung der Tastatureingabe bis ein Fensterereignisse wiederholt wird. \\bottom" #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "Cabinet switch" -msgstr "Cabinet Fensterleiste" +msgid "Font color." +msgstr "Farbe der Schrift." #. ../lisp/sawfish/wm/ext/cabinet.jl -msgid "The Main function." -msgstr "Die Hauptfunktion von Cabinet." +msgid "Background color." +msgstr "Farbe des Hintergrunds." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Input text color." +msgstr "Farbe der Eingabeaufforderung." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Split line color." +msgstr "Farbe der Trennlinie." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Maximized windows color." +msgstr "Farbe bei maximierten Fenstern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Iconified windows color." +msgstr "Farbe bei minimierten Fenstern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Shaded windows color." +msgstr "Farbe bei eingerollten Fenstern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Windows displayed below the split line." +msgstr "Fenster die unterhalb der Trennlinie angezeigt werden." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Windows removed from cabinet." +msgstr "Fenster die nicht in Cabinet angezeigt werden." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Cycle through windows." +msgstr "Durch die Fenster blättern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Reversely cycle through windows." +msgstr "Rückwärts durch die Fenster blättern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Exit with restore stack order." +msgstr "Beenden und Reihenfolge der Fenster wiederherstellen." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Toggle windows from current or all workspaces." +msgstr "" +"Umschalten zwischen Fenstern von der aktuellen und allen Arbeitsflächen." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Toggle windows for display and for manipulation." +msgstr "" +"Umschalten zwischen Fenstern die ausgewählt werden können und jenen die nur " +"angezeigt werden." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Cycle through workspaces." +msgstr "Durch die Arbeitsflächen blättern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Reversely cycle through workspaces." +msgstr "Rückwärts durch die Arbeitsflächen blättern." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Advance user keymap." +msgstr "Tastenkombinationen für Fortgeschrittene Benutzer." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Marked window as selected." +msgstr "Fenster als ausgewählt markieren." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "After executed cabinet:" +msgstr "Nachdem ausgeführt Cabinet:" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Cabinet:" +msgstr "Cabinet:" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "\nIs duplicate." +msgstr "\nIst doppelt." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "\nDisable cabinet." +msgstr "\nCabinet ausgeschaltet." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "\nIs not a valid x-keysym-name." +msgstr "\nIst kein zulässiger »x-keysym-name«." + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "Raise" +msgstr "Anheben" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "go-to-next" +msgstr "Zu nächste gehen" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "delete-window" +msgstr "Fenster »Löschen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-iconified" +msgstr "Fenster »Minimieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-toggle" +msgstr "Fenster »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-shaded" +msgstr "Fenster »Einrollen« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-sticky" +msgstr "Fenster »Anheften« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-full-toggle" +msgstr "Fenster auf Xinerama Vollbild »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-full-vertical-left-toggle" +msgstr "Fenster auf der Linken halben Bildschirmgrö�e »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-full-vertical-right-toggle" +msgstr "Fenster auf der Rechten halben Bildschirmgrö�e »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window-toggle" +msgstr "Fenster füllend »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window-horizontally-toggle" +msgstr "Fenster horizontal »Füllend Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window-vertically-toggle" +msgstr "Fenster vertikal »Füllend Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-fullscreen-toggle" +msgstr "Fenster auf Vollbild »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-horizontally-toggle" +msgstr "Fenster Horizontal »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-vertically-toggle" +msgstr "Fenster Vertikal »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-fullxinerama-toggle" +msgstr "Fenster auf Xinerama Vollbild »Maximieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-fixed-postion" +msgstr "Fenster »Feste Position« an/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-never-focus" +msgstr "Fenster »Nie fokussieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-ignored" +msgstr "Fenster »Ignorieren« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-task-list-skip" +msgstr "Fenster »In Taskliste überspringen« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-cycle-skip" +msgstr "Fenster »Beim durchlaufen überspringen« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-list-skip" +msgstr "Fenster »In der Fensterliste überspringen« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-window-sticky-viewport" +msgstr "Fenster auf Sichtfeld »Anheften« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "toggle-desktop" +msgstr "Desktop »Anzeigen« ein/aus" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-next-head" +msgstr "Fenster zum nächsten Monitor »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-previous-head" +msgstr "Fenster zum vorherigen Monitor »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-to-center" +msgstr "Fenster in die Mitte des Bildschirms »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-to-top-left" +msgstr "Fenster nach oben links auf der Arbeitsfläche »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-down" +msgstr "Fenster aufs Sichtfeld nach unten »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-right" +msgstr "Fenster aufs rechte Sichtfeld »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-left" +msgstr "Fenster aufs linke Sichtfeld »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-next" +msgstr "Fenster ins nächstes Sichtfeld »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-previous" +msgstr "Fenster ins vorherige Sichtfeld »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-add-maked-windows" +msgstr "Markierte Fenster als Reiter »Hinzufügen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-release-window" +msgstr "Reiter aus Reiterleiste »Lösen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-move-to-end" +msgstr "Reiter ans Ende der Reiterleiste »Schieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-move-to-beginning" +msgstr "Reiter an den Anfang der Reiterleiste »Schieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-move-to-right" +msgstr "Reiter nach Rechts in der Reiterleiste »Schieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab-move-to-left" +msgstr "Reiter nach Links in der Reiterleiste »Schieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab/titelbar-toggle" +msgstr "Titelleiste zum gegenüber liegendem Fensterrand »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab/titelbar-to-top" +msgstr "Titelleiste zum Oberen Fensterrand »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab/titelbar-to-bottom" +msgstr "Titelleiste zum Unterem Fensterrand »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab/titelbar-to-right" +msgstr "Titelleiste zum Rechten Fensterrand »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "tab/titelbar-to-left" +msgstr "Titelleiste zum Linken Fensterrand »Verschieben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-window" +msgstr "Fenster »Anheben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "lower-window" +msgstr "Fenster »Absenken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-single-window" +msgstr "Einzelnes Fenster »Anheben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-lower-single-window" +msgstr "Einzelnes Fenster »Absenken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-window-depth" +msgstr "Fenster Tiefe »Anheben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-lower-window" +msgstr "Fenster »Anheben/Absenken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "lower-window-depth" +msgstr "Fenster Tiefe »Absenken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-window-and-transients" +msgstr "Fenster und Dialoge »Anheben«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "raise-lower-window-and-transients" +msgstr "Fenster und Dialoge »Anheben/Absenken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "shrink-window-up" +msgstr "Fenster nach oben »Schrumpfen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "shrink-window-down" +msgstr "Fenster nach unten »Schrumpfen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "shrink-window-left" +msgstr "Fenster nach links »Schrumpfen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "shrink-window-right" +msgstr "Fenster nach rechts »Schrumpfen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "yank-window-up" +msgstr "Fenster nach oben »Zerren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "yank-window-down" +msgstr "Fenster nach unten »Zerren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "yank-window-left" +msgstr "Fenster nach links »Zerren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "yank-window-right" +msgstr "Fenster nach rechts »Zerren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "size-window-add-column" +msgstr "Fenster um eine Spalte »Vergrö�ern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "size-window-subtract-column" +msgstr "Fenster um eine Spalte »Verkleinern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "size-window-add-row" +msgstr "Fenster um eine Zeile »Vergrö�ern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "size-window-subtract-row" +msgstr "Fenster um eine Zeile »Verkleinern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "grow-window-up" +msgstr "Fenster nach oben »Ausweiten«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "grow-window-down" +msgstr "Fenster nach unten »Ausweiten«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "grow-window-left" +msgstr "Fenster nach links »Ausweiten«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "grow-window-right" +msgstr "Fenster nach rechts »Ausweiten«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "pack-window-up" +msgstr "Fenster nach oben »Packen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "pack-window-down" +msgstr "Fenster nach unten »Packen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "pack-window-right" +msgstr "Fenster nach rechts »Packen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "pack-window-left" +msgstr "Fenster nach links »Packen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "double-window-size" +msgstr "Fenstergrö�e »Verdoppeln«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "halve-window-size" +msgstr "Fenstergrö�e »Halbieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "delete-window-safely" +msgstr "Fenster »Sicher löschen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "destroy-window" +msgstr "Fenster »Zerstören«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "window-history-save-position" +msgstr "Fensterchronik Position »Speichern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "window-history-save-dimensions" +msgstr "Fensterchronik Ma�e »Speichern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "window-history-save-attributes" +msgstr "Fensterchronik Attribute »Speichern«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "window-history-forget" +msgstr "Fensterchronik »Vergessen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "iconify-window" +msgstr "Fenster »Minimieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "uniconify-window" +msgstr "Fenster »Wiederherstellen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "shade-window" +msgstr "Fenster »Einrollen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "unshade-window" +msgstr "Fenster »Ausrollen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "make-window-ignored" +msgstr "Fenster »Ignorieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "make-window-not-ignored" +msgstr "Fenster »Nicht ignorieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "make-window-sticky" +msgstr "Fenster »Anheften«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "make-window-unsticky" +msgstr "Fenster »Anheften« ausschalten" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-to-next-workspace" +msgstr "Fenster auf nächste Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "move-window-to-previous-workspace" +msgstr "Fenster auf vorherige Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-workspace-left" +msgstr "Fenster auf linke Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-workspace-right" +msgstr "Fenster auf rechte Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-workspace-up" +msgstr "Fenster auf obere Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "send-to-workspace-down" +msgstr "Fenster auf untere Arbeitsfläche »Schicken«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-discard" +msgstr "Fenster »Maximiert« verwerfen" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window" +msgstr "Fenster »Füllend Maximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window-horizontally" +msgstr "Fenster horizontal »Füllend Maximiere«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-fill-window-vertically" +msgstr "Fenster vertikal »Füllend Maximiere«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "unmaximize-window" +msgstr "Fenster »Unmaximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-fullscreen" +msgstr "Fenster auf Vollbild »Maximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-fullxinerama" +msgstr "Fenster auf Xinerama Vollbild »Maximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-horizontally" +msgstr "Fenster horizontal »Maximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "maximize-window-vertically" +msgstr "Fenster vertikal »Maximieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "copy-to-next-workspace" +msgstr "Fenster auf nächste Arbeitsfläche »Kopieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "copy-to-previous-workspace" +msgstr "Fenster auf vorherige Arbeitsfläche »Kopieren«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "focus-desktop" +msgstr "Arbeitsfläche »Anzeigen«" + +#. ../lisp/sawfish/wm/ext/cabinet.jl +msgid "hide-desktop" +msgstr "Arbeitsfläche »Verbergen«" #. ../lisp/sawfish/wm/ext/auto-raise.jl msgid "Auto-Raise"
Attachment:
cabinet-missing.png
Description: image/apple-ios-png
Attachment:
Bildschirmfoto - 04.05.2014 - 14:24:05.png
Description: image/apple-ios-png
Attachment:
Bildschirmfoto - 04.05.2014 - 14:24:20.png
Description: image/apple-ios-png
Attachment:
Bildschirmfoto - 04.05.2014 - 14:24:34.png
Description: image/apple-ios-png
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |