1
0
Fork
You've already forked meskot
0
emacs window mgmt global minor mode
  • Emacs Lisp 100%
2025年11月25日 06:10:09 +03:00
meskot.el chore: better comments 2025年11月24日 13:10:21 +03:00
README.org fix readme 2025年11月25日 06:10:09 +03:00

meskot.el

A global minor mode to make working with emacs windows a bit more intuitive for people used to tiling window managers

Usage

Here's how I configured it

 (use-package meskot
 :load-path "~/dev/emacs/meskot/"
 :config((lambda ()
 	 (defvar meskot-resize-delta 1 "unit to resize window by")
 	 (add-hook 'meskot-enter-full-frame-hook
 		 (lambda ()
 			(setq olivetti-body-width 95)
 			(set-fringe-style 0)
 			(olivetti-mode 1)
 			(keycast-mode-line-mode 0)
 			(tab-bar-mode -1)))
 	 (add-hook 'meskot-exit-full-frame-hook
 		 (lambda ()
 			(olivetti-mode 0)
 			(tab-bar-mode 1)
 			(set-fringe-style nil)
 			(keycast-mode-line-mode 1)))
 	 (meskot-mode 1)))
 :bind (("<f10>" . meskot-toggle-full-frame)
 	 ;; resize
 	 ("C-<up>". (lambda () (interactive) (meskot-intuitive-resize 'up meskot-resize-delta)))
 	 ("C-<down>" . (lambda () (interactive) (meskot-intuitive-resize 'down meskot-resize-delta)))
 	 ("C-<left>". (lambda () (interactive) (meskot-intuitive-resize 'left meskot-resize-delta)))
 	 ("C-<right>". (lambda () (interactive) (meskot-intuitive-resize 'right meskot-resize-delta)))
 	 ;; meskot new buffer mappings
 	 ("S-<return>". (lambda () (interactive) (meskot-new-sensible-buffer nil '(eshell)))) ; eshell
 	 ("C-S-<return>". (lambda () (interactive) (meskot-new-sensible-buffer nil '(ansi-term "/run/current-system/sw/bin/fish")))) ; ansi-term
 	 ("<f6>". (lambda () (interactive) (meskot-new-sensible-buffer "*scratch*"))) ; scratch
 	 ("<f7>". meskot-consult-buffer-new-window)
 	 ;; tabs
 	 ("C-M-<tab>". (lambda () (interactive) (meskot-move-window-to-new-tab)))
 	 ;; related non-meskot bindings
 	 ("C-<tab>". tab-next)
 	 ("C-x t 5". tab-bar-mode)
 	 ("<f3>". shell-command)))

Features

Intuitive resize
resize windows in a more intuitive manner based on where in the frame they reside. For example, up in a top corner window means shrink vertically and in a bottom corner window would mean enlarge vertically
Full-frame
toggle full-frame for the selected window, you can use the hook to turn on modes like olivetti to make it look nicer.
New sensible windows
just split selected window in the most spacious direction when opening a new buffer, not reusing other windows
Tabs
move out windows to another tab