GithubHelp home page GithubHelp logo

takaxp / moom Goto Github PK

View Code? Open in Web Editor NEW
75.0 2.0 4.0 594 KB

A Moom port to Emacs - Make your dominant hand FREE from your mouse

License: GNU General Public License v3.0

Emacs Lisp 100.00%
emacs moom

moom's Introduction

Moom - A Moom port to GNU Emacs

https://melpa.org/packages/moom-badge.svg

Make your dominant hand FREE from your mouse :)

Setup

After installing moom.el and moom-font.el (optional), activate moom by (moom-mode 1) in your init.el. This module requires GNU Emacs 25.1 or later.

(with-eval-after-load "moom"
  ;; add settings here ...
  ;; (setq moom-use-font-module nil)
  (moom-mode 1))

or

(when (require 'moom nil t)
  ;; add settings here ...
  ;; (setq moom-use-font-module nil)
  (moom-mode 1))

If you don’t want to change font size when resizing frame size, please configure moom-use-font-module before activating moom-mode by (moom-mode 1).

A set of commands to control frame position and size by keyboard

https://github.com/takaxp/contents/blob/master/moom/demo1.gif

Note - This module has basically been tested on macOS High Sierra, Catalina, BigSur, and Monterey with combinations of two Full HD (1920x1080) monitors and one 4K monitor. Additionally, tested in Windows 10 and Linux (Ubuntu 20.04 with Emacs 26.3, CentOS 8.2, and openSUSE 15.1) with GTK, but they may still have some issues.

Move

  • moom-move-frame

Horizontal shift

  • moom-move-frame-left
  • moom-move-frame-right

Centering

  • moom-move-frame-to-center
  • moom-move-frame-to-vertical-center
  • moom-move-frame-to-horizontal-center

Fit

edge

  • moom-move-frame-to-edge-top
  • moom-move-frame-to-edge-left
  • moom-move-frame-to-edge-right
  • moom-move-frame-to-edge-bottom

center line

  • moom-move-frame-to-centerline-from-top
  • moom-move-frame-to-centerline-from-left
  • moom-move-frame-to-centerline-from-right
  • moom-move-frame-to-centerline-from-bottom

Expand

These functions will not change font size in a frame.

  • moom-change-frame-width-single
  • moom-change-frame-width-double
  • moom-change-frame-width-half-again
  • moom-change-frame-width
  • moom-change-frame-height
  • moom-cycle-frame-height
  • moom-change-frame-width-max (moom-fill-width)
  • moom-change-frame-height-max (moom-fill-height)

split and delete window

  • moom-split-window
  • moom-delete-windows

Fill screen

These functions normally change font size in a frame. But the behavior can be changed by M-x moom-toggle-font-module.

  • moom-fill-screen
  • moom-fill-band
  • moom-fill-top
  • moom-fill-bottom
  • moom-fill-left
  • moom-fill-right
  • moom-fill-top-left
  • moom-fill-top-right
  • moom-fill-bottom-left
  • moom-fill-bottom-right

Note - If you find any problems around font settings when resizing the Emacs frame, you can easily disable the feature in moom-font.el. Just change moom-use-font-module to nil in your init.el. M-x moom-toggle-font-module can also control if the font module is utilized or not.

(with-eval-after-load "moom"
  (setq moom-use-font-module nil))

Other functions

  • moom-reset
  • moom-undo
  • moom-update-height-steps
  • moom-check-user-margin
  • moom-update-user-margin
  • moom-identify-current-monitor
  • moom-print-monitors
  • moom-jump-to-monitor
  • moom-cycle-monitors
  • moom-restore-last-status
  • moom-toggle-font-module
  • moom-toggle-frame-maximized
  • moom-cycle-line-spacing
  • moom-reset-line-spacing
  • moom-generate-font-table
  • moom-print-status
  • moom-version

(obsoleted)

  • moom-screen-margin (was replaced with moom-check-user-margin)

How to setup screen margins

For macOS users, the default margin is (23 0 0 0). And for other system types, it is also automatically configured using combination of frame-monitor-geometry and frame-monitor-workarea when moom-mode is activated. But the actual work area is probably depends on user environment. Therefore, moom.el provides a capability that you can control the actual active region on your screen by setting moom-user-margin in init.el.

(setq moom-user-margin '(50 50 50 50)) ;; {top, bottom, left, right}
(moom-mode 1)

Each value means a margin from the top, bottom, left, and right edge of your screen. If you want to test some combinations of the margins, then M-x moom-check-user-margin could be helpful since it provides an interactive way to check the actual region on a screen and save the tested value for the Emacs session.

It is also useful to use moom-update-user-margin directly by putting new margin or interactively. Note that moom-check-user-margin internally calls moom-update-user-margin.

(moom-update-user-margin '(50 50 50 50)) ;; {top, bottom, left, right}

The moom-check-user-margin and moom-update-user-margin will change moom-user-margin in an Emacs session, however, the updated margins will NOT be saved as a permanent value, so please configure the margins in your init.el explicitly for the next session.

Extension to integrate font resizing

No need to load moom-font.el explicitly. If the package is installed in your system, then it will be activated automatically. The package is basically provided for the users who rely on Japanese fonts. And if you will never user the font module without deleting moom-font.el, please configure moom-use-font-module to nil before activating moom-mode by (moom-mode 1).

https://github.com/takaxp/contents/blob/master/moom/demo2.gif

Setting

Font names for ASCII and Japanese font are now automatically identified without user action when moom-mode is activated. But moom-font-ascii-scale and moom-font-ja-scale should be configured still manually according to your environment. If you don’t satisfy the automatically configured setting for ASCII and Japanese font, then please set these parameters manually by functions of moom-font-ascii or moom-font-ja.

The default values for moom-font-ascii-scale and moom-font-ja-scale are 1.0 and 1.2 respectably. The scaling factors for each font are integrated into face-font-rescale-alist properly.

If you don’t know which fonts are used in Emacs frame, you can easily check them by M-x moom-font-print-name-at-point or M-x describe-char on a character.

The following text is an example message when you type M-x moom-font-print-name-at-point.

[moom-font] It’s "Menlo". Call ‘moom-font-ja’ or ‘moom-font-ascii’ with "Menlo".

After you identify the font names in a buffer, then please configure them as follows:

(with-eval-after-load "moom-font"
  (setq moom-font-ascii-scale 1.0)
  (setq moom-font-ja-scale 1.2)
  (moom-font-ascii "Menlo") ;; Ricty Diminished, Inconsolata
  (moom-font-ja "Migu 2M")) ;; Hiragino Maru Gothic Pro

Normally, ASCII and Japanese fonts will be updated when resizing fonts. But if you provide an optional argument to moom-font-ascii or moom-font-ja, the given font is immediately applied and reflected in each buffer. See the following example setting.

(with-eval-after-load "moom-font"
  (moom-font-ascii "Menlo" '(:immediate t))
  (moom-font-ja "Migu 2M" '(:immediate t)))

When you find the column exceeds 80 when the frame is maximized, then configure moom-scaling-gradient properly. It depends on ASCII font type. For instance, 1.66 (default) for Menlo, Monaco, 2.0 for Inconsolata, MS Gothic, and TakaoGothic. Please see the following section.

Font table

You can also use M-x moom-generate-font-table to identify appropriate values of moom-scaling-gradient, and additionally moom-font-table. After calling moom-generate-font-table, the current buffer will be changed to the *moom-font* buffer. Please follow the instructions described in that buffer.

Here is an example. Monaco is used for ASCII font and Migu 2M is used for Japanese font in these images. The upper image shows a gap between strings in ASCII and Japanese at the first line, the font table is not defined in this case. On the other hand, the lower image shows no gap since the font table is utilized to identify the correct size of font. You can freely customize the font table in you init.el for your convenience.

https://github.com/takaxp/contents/blob/master/moom/monaco-13pt8px.png

https://github.com/takaxp/contents/blob/master/moom/monaco-14pt8px.png

Resize font

  • moom-font-increase
  • moom-font-decrease
  • moom-font-resize
  • moom-font-size-reset

Font setting

  • moom-font-ja
  • moom-font-ascii

Other functions

  • moom-font-print-name-at-point

User variables

moom.el

defaulttype
moom-move-frame-pixel-offset‘(0 . 0)sexp
moom-min-frame-height16integer
moom-init-line-spacingline-spacingfloat
moom-min-line-spacing0.1float
moom-max-line-spacing0.8float
moom-frame-width-single80integer
moom-frame-width-double163integer
moom-horizontal-shifts‘(200 200)choice
moom-fill-band-options’(:direction vertical :range 50.0)plist
moom-scaling-gradient1.66float
moom-moom-display-line-numbers-width6integer
moom-command-with-centering‘(split delete)list
moom-user-margin‘(0 0 0 0)list
moom-use-font-moduletboolean
moom-command-history-length100integer
moom-verbosenilboolean
moom-lighterMoomstring

moom-command-with-centering

The following commands will centerize the frame position in display if moom-command-with-centering includes the corresponding values. If you specify nil then no commands will centerize the frame.

ValueCommand
splitmoom-split-window
deletemoom-delete-windows
singlemoom-change-frame-width-single
doublemoom-change-frame-width-double
half-againmoom-change-frame-width-half-again

moom-font.el

defaulttype
moom-font-ja-scale1.2float
moom-font-ascii-scale1.0float
moom-font-tablenil(repeat (list integer integer))
moom-font-verbosenilboolean

Note - (breaking changes at v1.2.1) moom-font-init-size was hidden. The size is now automatically detected. If you want to use customized variable, please use moom-font-ascii with :size option like (moom-font-ascii "Inconsolata" :size 14).

Note - (breaking changes at v1.2.0) Variables of moom-font-ascii and moom-font-ja were hidden so that font settings could be controlled conveniently by utility functions. Please utilize each function of the same name to setup fonts.

moom-transient.el

defaulttype
moom-transient-dispatch-stickytboolean

Example keybindings

Overview

In general, Cmd-<TAB> is used to switch windows, which is not limited to Emacs.app. So it is natural to concentrate all keybindings associated to control frame position and size into the left side of your keyboard with pressing Cmd. The following example keybindings are basically designed in that manner.

https://github.com/takaxp/contents/blob/master/moom/layout.png

You can use moom-recommended-keybindings to set keybindings for each API in a bundle. The function require a list argument or all. The list can contain multiple API types. When the argument is (move fit expand fill font reset undo) , it is identical to all.

(with-eval-after-load "moom"
  (moom-recommended-keybindings '(move fit expand fill font reset undo))) ;; 'all

Note: If you don’t want to rely on using function key to execute a moom command, then add a wof option for moom-recommended-keybindings as follows:

(with-eval-after-load "moom"
  (moom-recommended-keybindings '(all wof))) ;; wof: WithOut Function key
commandwithout wofwith wof
moom-move-frame-to-edge-leftM-<f1>C-c e l
moom-move-frame-to-edge-rightM-<f3>C-c e r
moom-move-frame-to-edge-top<f1>C-c e t
moom-move-frame-to-edge-bottomS-<f1>C-c e b
moom-cycle-frame-height<f2>C-2
moom-toggle-frame-maximizedM-<f2>C-c f f x

Move

https://github.com/takaxp/contents/blob/master/moom/shifts.gif https://github.com/takaxp/contents/blob/master/moom/move-right.gif https://github.com/takaxp/contents/blob/master/moom/center.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "M-0") 'moom-move-frame) ;; to top left corner
  (define-key moom-mode-map (kbd "M-1") 'moom-move-frame-left)
  (define-key moom-mode-map (kbd "M-2") 'moom-move-frame-to-center)
  (define-key moom-mode-map (kbd "M-3") 'moom-move-frame-right))

Fit

https://github.com/takaxp/contents/blob/master/moom/edges.gif https://github.com/takaxp/contents/blob/master/moom/corners.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "M-<f1>") 'moom-move-frame-to-edge-left)
  (define-key moom-mode-map (kbd "M-<f3>") 'moom-move-frame-to-edge-right)
  (define-key moom-mode-map (kbd "<f1>") 'moom-move-frame-to-edge-top)
  (define-key moom-mode-map (kbd "S-<f1>") 'moom-move-frame-to-edge-bottom))

Additionally, move onto the center line.

https://github.com/takaxp/contents/blob/master/moom/centerline.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "C-c f c l") 'moom-move-frame-to-centerline-from-left)
  (define-key moom-mode-map (kbd "C-c f c r") 'moom-move-frame-to-centerline-from-right)
  (define-key moom-mode-map (kbd "C-c f c t") 'moom-move-frame-to-centerline-from-top)
  (define-key moom-mode-map (kbd "C-c f c b") 'moom-move-frame-to-centerline-from-bottom))

Expand

https://github.com/takaxp/contents/blob/master/moom/cycle-height.gif https://github.com/takaxp/contents/blob/master/moom/expand.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "<f2>") 'moom-cycle-frame-height)
  (define-key moom-mode-map (kbd "C-c f s") 'moom-change-frame-width-single)
  (define-key moom-mode-map (kbd "C-c f d") 'moom-change-frame-width-double)
  (define-key moom-mode-map (kbd "C-c f a") 'moom-change-frame-width-half-again)
  (define-key moom-mode-map (kbd "C-c f S") 'moom-split-window)
  (define-key moom-mode-map (kbd "C-c f D") 'moom-delete-windows)
  (define-key moom-mode-map (kbd "C-c f w") 'moom-change-frame-width-max)
  (define-key moom-mode-map (kbd "C-c f h") 'moom-change-frame-height-max))

Fill

https://github.com/takaxp/contents/blob/master/moom/fill.gif https://github.com/takaxp/contents/blob/master/moom/quarters.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "C-c f f t") 'moom-fill-top)
  (define-key moom-mode-map (kbd "C-c f f b") 'moom-fill-bottom)
  (define-key moom-mode-map (kbd "C-c f f l") 'moom-fill-left)
  (define-key moom-mode-map (kbd "C-c f f r") 'moom-fill-right)
  (define-key moom-mode-map (kbd "C-c f f 1") 'moom-fill-top-left)
  (define-key moom-mode-map (kbd "C-c f f 2") 'moom-fill-top-right)
  (define-key moom-mode-map (kbd "C-c f f 3") 'moom-fill-bottom-left)
  (define-key moom-mode-map (kbd "C-c f f 4") 'moom-fill-bottom-right)
  (define-key moom-mode-map (kbd "C-c f f m") 'moom-fill-band)
  ;; (define-key moom-mode-map (kbd "C-c f f w") 'moom-fill-width)
  ;; (define-key moom-mode-map (kbd "C-c f f h") 'moom-fill-height)
)

Fill (screen by toggle)

https://github.com/takaxp/contents/blob/master/moom/fill-screen.gif

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "M-<f2>") 'moom-toggle-frame-maximized))

Note: When maximizing a frame, moom-fill-screen is called internally.

Reset, resize, and undo

Reset Frame size, position, and font size

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "C-c C-0") 'moom-reset))

Undo command history

moom stores command history. The maximum numbers of the history is limited by moom-command-history-length. The default value is 1000.

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "C-c C-/") 'moom-undo))

Font size (require moom-font.el)

(with-eval-after-load "moom"
  (define-key moom-mode-map (kbd "C--") 'moom-font-decrease)
  (define-key moom-mode-map (kbd "C-=") 'moom-font-increase)
  (define-key moom-mode-map (kbd "C-0") 'moom-font-size-reset)
  (define-key moom-mode-map (kbd "C-_") 'text-scale-decrease) ;; built-in for ascii
  (define-key moom-mode-map (kbd "C-+") 'text-scale-increase) ;; built-in for ascii

  ;; Recommended for stable presentation during font size increasing
  (add-hook 'moom-font-after-resize-hook #'moom-move-frame-to-edge-top))

transient.el support

moom-transient.el provides a dispatcher to select a moom command listed in a popup menu. To use moom-transient.el, please put the following code to your init.el. The keybind (C-c o) should be changed for your environment. The module depends on transient.el, so please install it first.

https://github.com/takaxp/contents/blob/master/moom/transient.png

(with-eval-after-load "moom"
  (when (require 'moom-transient nil t)
    (moom-transient-hide-cursor) ;; if needed
    (define-key moom-mode-map (kbd "C-c o") #'moom-transient-dispatch)))

The dispatcher (moom-transient-dispatch) keeps the menu window after a command is executed as default. If you like to hide the dispatcher each time, then please configure moom-transient-dispatch-sticky.

Collaboration with other packages

Org mode (org-agenda)

Expand the frame width temporarily during org-agenda is active.

https://github.com/takaxp/contents/blob/master/moom/org-agenda.gif

(with-eval-after-load "moom"
  (with-eval-after-load "org"
    (add-hook 'org-agenda-mode-hook #'moom-change-frame-width-half-again)
    (defun advice:org-agenda--quit (&optional _bury)
      (moom-change-frame-width))
    (advice-add 'org-agenda--quit :after #'advice:org-agenda--quit)))

Org mode (org-tree-slide)

Entering quickly to the frame maximized presentation with org-tree-slide.el. No additional settings are required except activating moom-mode by (moom-mode 1). Just M-x moom-toggle-frame-maximized. The font is automatically scaled to be maintained the frame width at 80 even if you use Japanese font.

https://github.com/takaxp/contents/blob/master/moom/org-tree-slide.gif

Org mode

Note - Under consideration, but you can try.

Run org-redisplay-inline-images after font resizing to synchronize the image width and font size automatically.

(with-eval-after-load "moom"
  (with-eval-after-load "org"
    (add-hook 'moom-font-after-resize-hook #'org-redisplay-inline-images)))

Hooks

  • moom-before-fill-screen-hook
  • moom-after-fill-screen-hook
  • moom-resize-frame-height-hook
  • moom-split-window-hook
  • moom-delete-window-hook
  • moom-before-setup-hook
  • moom-after-select-monitor-hook
  • moom-font-before-resize-hook (in moom-font.el)
  • moom-font-after-resize-hook (in moom-font.el)

Acknowledgment

This package is highly inspired from “Moom” released by Many Tricks. Moom stands for “Mo”ve and zo”om”. Cool!

If you like and need the capabilities of changing window position and size by keyboard at the OS level, buy Moom now!

Keycastr

For writing README, keycastr was utilized to capture keystrokes of each command. Thanks! but Shift+F1 was recorded as ?. Haha… :p

Related packages

  1. frame-cmds.el
    • This package provides many fundamental APIs to control frame and window. If you want to control them more specifically and precisely, you may want to try this nice package. But the license is not open and not distributed through MELPA.
  2. presentation.el
    • It is highly recommended to try this vital package to scale and restore text size easily for nice viewing when you present your source code rendered in the Emacs buffers. Find more details at the above repository.

moom's People

Contributors

takaxp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

moom's Issues

Support X window for Linux

  • shift to right & left functions do not work properly.
  • Need a option to handle screen margin (partially supported).
  • moom-fill-band needs refine for linux 🐛
  • frame height by moom-fill-top and moom-fill-top-right are different 🐛
  • Check horizontal components to fit right edge precisely in Linux
  • moom-move-frame-to-center really center when internal-border-width is not 0?

Support w32

  • The origin is calculated as (-8, (+ -8)). Identify the reason and fix this.

Undo feature

moom.el has supported status saving and restoring for some APIs but Undo feature is not supported.

(setq moom-fill-left t) don't work

I'm trying to get it to start with the option moom-fill-left t but it doesn't work, it doesn't give an error or do anything. However if I use the command with M-x it does work.
My code

(when (require 'moom nil t)
  (setq moom-fill-left t)
  (moom-mode 1))

window fill shifts off screen; toggle needs an option; missing moom-fill-height

Thanks for distributing moom -- it's a much needed replacement for the now deprecated frame-cmds package.

Here are some thing I've discovered about it:

  1. M-x moom-fill-height is missing. It's in the documentation, though. This is very the function I was looking for.
  2. M-x moom-move-frame-to-edge-left moves the frame slightly off the screen. The screenshot is of the left edge of the screen after running this command.
  3. M-x moom-fill-screen does expand the frame but doesn't position it so that it fills the screen
  4. Commands that change the frame size change fonts unpredicatable, so you don't know ahead of time if you should run M-x moom-toggle-font-module. A customization that always turned font scaling off would solve this problem.

This is with emacs 27.1 on Windows 10

image

moom--pos-x returns unexpected value

In some cases on w32, moom--pos-x returns unexpected value. Following cases are affected by the error.

  • Move frame to the origin (0, 0) by moom-move-frame after fill-width, fill-bottom.
    • maximized
    • fill-screen
  • moom-fill-top
  • moom-fill-bottom
  • Move frame to top edge by moom-move-to-edge-* after fill-width, fill-bottom.

Default frame size and position

Is there a moom-friendly way to set the initial/default frame size and position?

Right now I'm running this right before initializing moom-mode in my init:

    (set-frame-width (selected-frame) 150)
    (set-frame-height (selected-frame) 48)

But when (moom-mode 1) runs after that it changes the frame size.

In addition, when I try to run (moom-move-frame-to-center) in my config after loading moom it doesn't seem to do anything, nor is there an error.

Thanks for any assistance! (love this package!)

Wrong font selection after rescale

When resizing the font, unicode letters like æ, ø, and å is changed into the moom-font--ja font instead of moom-font--ascii. This means that unicode characters in most European languages will be displayed in the wrong font and size after scaling.

This can be repeated when using org-tree-slide with moom, and after moom-toggle-frame-maximized, the font and size of these letters are wrong, as can be seen with M-x moom-font-print-name-at-point

Emacs has built-in code that would eliminate need to set margins

I just tried out v1.4.12 on a couple different computers and monitors. As I guessed, it would be necessary to adjust the margins differently for different monitor resolutions (#17 ).

However, I discovered that emacs internal functions make it possible to avoid the need to set margins at all. Below are two hacked versions of toggle-frame-fullscreen for toggling frame height and width. They're not perfect -- they get mildly confused when mixing fullscreen, height and width toggling -- but they do always position and size the frame correctly, regardless of monitor.

(defun sdo/toggle-frame-fullheight (&optional frame)
  "Toggle height part of fullscreen state of FRAME.
Make selected frame full height or restore its previous size
if it is already fullscreen.

This is a hacked version of built-in toggle-frame-fullscreen

See also `toggle-frame-maximized'."
  (interactive)
  (let ((fullscreen (frame-parameter frame 'fullscreen)))
    (if (memq fullscreen '(fullscreen fullheight))
	(let ((fullscreen-restore (frame-parameter frame 'fullscreen-restore)))
	  (if (memq fullscreen-restore '(maximized fullheight fullwidth))
	      (set-frame-parameter frame 'fullscreen fullscreen-restore)
	    (set-frame-parameter frame 'fullscreen nil)))
      (modify-frame-parameters
       frame `((fullscreen . fullheight) (fullscreen-restore . ,fullscreen))))
    ;; Manipulating a frame without waiting for the fullscreen
    ;; animation to complete can cause a crash, or other unexpected
    ;; behavior, on macOS (bug#28496).
    (when (featurep 'cocoa) (sleep-for 0.5))))

And...

(defun sdo/toggle-frame-fullwidth (&optional frame)
  "Toggle width part of fullscreen state of FRAME.
Make selected frame full width or restore its previous size
if it is already fullscreen.

This is a hacked version of built-in toggle-frame-fullscreen

See also `toggle-frame-maximized'."
  (interactive)
  (let ((fullscreen (frame-parameter frame 'fullscreen)))
    (if (memq fullscreen '(fullscreen fullwidth))
	(let ((fullscreen-restore (frame-parameter frame 'fullscreen-restore)))
	  (if (memq fullscreen-restore '(maximized fullwidth fullwidth))
	      (set-frame-parameter frame 'fullscreen fullscreen-restore)
	    (set-frame-parameter frame 'fullscreen nil)))
      (modify-frame-parameters
       frame `((fullscreen . fullwidth) (fullscreen-restore . ,fullscreen))))
    ;; Manipulating a frame without waiting for the fullscreen
    ;; animation to complete can cause a crash, or other unexpected
    ;; behavior, on macOS (bug#28496).
    (when (featurep 'cocoa) (sleep-for 0.5))))

moom-font-init-size does not work

Currently, the following code means nothing.

(when (require 'moom nil t)
  (setq moom-font-init-size 16))

If you really want to change the initial font size, please set moom-font-init-size before requiring moom. Will be fixed.

(setq moom-font-init-size 16)
(when (require 'moom nil t)
  ;; add some settings here
)

Cycle monitors

A function can cycle displaying position on multiple monitors. When user call the function, the frame jump to the next monitor.

  • moom-print-monitors (Version 1.3.29)
  • moom-jump-to-monitor (Version 1.3.29)
  • moom-cycle-monitors

Probably...

  • Provide an ivy interface to select available monitor (as ivy-moom.el)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.