First commit.

This commit is contained in:
2022-01-09 21:19:46 +01:00
commit df36844dcc
107 changed files with 6565 additions and 0 deletions

108
lisp/ux/frames.el Normal file
View File

@@ -0,0 +1,108 @@
;;; frames.el --- Configure behavior of Emacs frames -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(defun user--window-configuration-change-hook ()
;; "Window configuration change hook."
;; (setq
;; ;; Only split frame if it occupies at least 2/3 of the current screen width.
;; split-width-threshold (* (/ (window-total-width (frame-root-window)) 3) 2)))
)
(defun user/iconify-or-deiconify-frame ()
"Iconify the selected frame, or deiconify if it's currently an icon."
(interactive)
(if (display-graphic-p)
(iconify-or-deiconify-frame)
(suspend-frame)))
(defun user/close-and-kill-current-window ()
"If multiple windows are open, close the current one and kill the buffer."
(interactive)
(kill-this-buffer)
(if (not (one-window-p))
(delete-window)))
(defun user/close-and-kill-other-window ()
"If multiple windows are open, close the next one and kill its buffer."
(interactive)
(other-window 1)
(kill-this-buffer)
(if (not (one-window-p))
(delete-window)))
(progn
(validate-setq
;; Inhibit GUI features
use-file-dialog nil
;; Don't split frames horizontally.
split-height-threshold nil)
;; Remove all the mouse-assisted frames
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
;;; (Hooks) ;;;
(add-to-list 'window-configuration-change-hook
'user--window-configuration-change-hook)
;;; (Bindings) ;;;
(when (display-graphic-p)
(user/bind-key-global :emacs :fullscreen 'toggle-frame-fullscreen))
(user/bind-key-global :emacs :grow-vertical 'enlarge-window)
(user/bind-key-global :emacs :shrink-vertical 'shrink-window)
(user/bind-key-global :emacs :grow-horizontal 'enlarge-window-horizontally)
(user/bind-key-global :emacs :shrink-horizontal 'shrink-window-horizontally)
;;; (Packages) ;;;
;; https://github.com/tomterl/fullframe
;; Advice commands to execute fullscreen, restoring the window setup when exiting
(use-package fullframe)
;; https://github.com/emacsorphanage/transpose-frame/blob/master/transpose-frame.el
;; Transpose windows arrangement in a frame
(use-package transpose-frame
:defer
:init
(user/bind-key-global :emacs :flip-frame 'flip-frame)
(user/bind-key-global :emacs :flop-frame 'flop-frame)
(user/bind-key-global :emacs :rotate-frame-forward 'rotate-frame-clockwise)
(user/bind-key-global :emacs :rotate-frame-backward
'rotate-frame-anticlockwise))
;; https://github.com/cyrus-and/zoom
;; Fixed and automatic balanced window layout for Emacs
(use-package zoom
:diminish zoom-mode
:config
(validate-setq
;; Ignored buffers.
zoom-ignored-buffer-name-regexps
'("^*calc")
;; Ignore predicate definitions.
zoom-ignore-predicates
'((lambda () (> (count-lines (point-min) (point-max)) 20))))
(zoom-mode t))
(use-package frame
:ensure nil
:config
;; Enable blinking cursor
(blink-cursor-mode))
;;
;;
(use-package framemove
:quelpa (framemove
:fetcher github
:repo "emacsmirror/framemove")
:init
(windmove-default-keybindings)
(setq framemove-hook-into-windmove t)))
(provide 'ux/frames)
;;; frames.el ends here