emacs updates + monitor management

This commit is contained in:
Valentin Boettcher 2022-04-02 16:18:19 +02:00
parent 1f279ba5f2
commit b97281bca6
6 changed files with 138 additions and 65 deletions

View file

@ -7,11 +7,12 @@ zMAIN_FONT="Source Code Pro 8"
SCREEN_LAYOUT="xrandr --output eDP-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --off --output DP-2-1 --off --output DP-2-2 --off --output DP-2-3 --off"
SCREEN_LAYOUT_DOCKED="xrandr --output eDP-1 --off --output DP-1 --off --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --off --output DP-2-1 --primary --mode 2560x1440 --pos 1920x0 --rotate normal --output DP-2-2 --mode 1920x1200 --pos 4480x0 --rotate normal --output DP-2-3 --mode 1920x1080 --pos 0x0 --rotate normal"
#SCREEN_LAYOUT_DOCKED="xrandr --output eDP-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output HDMI-1 --off --output DP-2 --off --output HDMI-2 --mode 1920x1080 --pos 1920x0 --rotate normal"
MONITORS=(DP-2-1 DP-2-3 DP-2-2)
#MONITORS=(DP-2-1 DP-2-3 DP-2-2)
#MONITORS=(eDP-1 HDMI-2)
MAIN_MONITOR=DP-2-1
#MAIN_MONITOR=eDP-1
#MAIN_MONITOR=DP-2-1
MAIN_MONITOR=eDP-1
SIDE_MONITORS=($(xrandr | rg -i "\sconnected" | rg -v eDP | cut -d" " -f1 | grep -v $MAIN_MONITOR))
BAR_POS="top"
LAPTOP=1
TERM_FONT_SIZE=6
TERM_FONT_SIZE=10
DPI=157.35

View file

@ -35,20 +35,4 @@ bspc config remove_unplugged_monitors true
# Scripts #
###############################################################################
{{ #SCREENLAYOUT }}
sh {{ SCREENLAYOUT }}
{{ /SCREENLAYOUT }}
{{ #laptop }}
bash ~/.config/bspwm/monitor_laptop.sh &
{{ /laptop }}
{{ #LAPTOP }}
bash ~/.config/bspwm/monitor_laptop.sh &
{{ /LAPTOP }}
{{ ^LAPTOP }}
bash ~/.config/bspwm/monitor_desktop.sh &
{{ /LAPTOP }}
bash ~/.config/polybar/launch.sh &
python ~/.config/bspwm/montitor_laptop.py &

View file

@ -0,0 +1,83 @@
import os
all_workspaces = set(range(1, 11))
# generically on main
on_main = {1, 5, 6}
rest = all_workspaces - on_main
workspace_distribution = {
1: [all_workspaces],
2: [on_main, rest],
3: [on_main, {2, 4, 9}, rest - {2, 4, 9}],
}
os.system("autorandr --change")
main_monitor = os.popen("bspc query -M -m primary").read().strip()
monitors = os.popen("bspc query -M").readlines()
monitors = map(lambda mon: mon.strip(), monitors)
monitors = filter(lambda mon: mon != main_monitor, monitors)
monitors = [main_monitor] + list(monitors)
monitor_names = {
id: os.popen(f"bspc query -M -m {id} --names").read().strip() for id in monitors
}
active_mons = [
l.strip()
for l in os.popen(
"xrandr | awk '/ connected/ && /[[:digit:]]x[[:digit:]].*+/{print $1}' "
)
.read()
.splitlines()
]
monitors = list(filter(lambda mon: monitor_names[mon] in active_mons, monitors))
num_mon = len(monitors)
os.system(f"bspc monitor -d {' '.join(str(ws) for ws in all_workspaces)}")
workspace_mapping = []
if num_mon in workspace_distribution:
workspace_mapping = workspace_distribution[num_mon]
else:
workspace_mapping = [on_main] + list(map(lambda _: set(), monitors[1:]))
for i, ws in enumerate(rest):
workspace_mapping[i % (num_mon - 1) + 1].add(ws)
def ws_to_monitor(ws, monitor):
os.system(f"bspc desktop {ws} -m {monitor}")
for monitor, ws_set in zip(monitors, workspace_mapping):
for ws in ws_set:
ws_to_monitor(ws, monitor)
for ws in os.popen("bspc query -D").readlines():
name = os.popen(f"bspc query -D -d {ws.strip()} --names").read().strip()
if not name.isnumeric():
print(f"Removing weird desktop {name}.")
children = os.popen(f"bspc query -N -d {ws.strip()}").readlines()
for child in children:
os.system(f"bspc node {child} -d 1")
os.system(f"bspc desktop {ws.strip()} -r")
os.system("bspc wm -o")
os.system("~/.scripts/wallp")
# os.system("sleep 1 && ~/.config/polybar/launch.sh")
current_config = os.popen("autorandr --detect").read().strip()
if current_config == "docked":
os.system("setxkbmap us")
if current_config == "mobile":
os.system("setxkbmap us -v workman")
os.system("xmodmap ~/.xmodmaprc")

View file

@ -455,23 +455,23 @@ Swiper and rg alternative.
("C-c b" . consult-bookmark)
("C-c k" . consult-kmacro)
;; C-x bindings (ctl-x-map)
("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("C-x M-:" . consult-complex-command) ;; orig. repeat-complex-command
("C-x b" . consult-buffer) ;; orig. switch-to-buffer
("C-x 4 b" . consult-buffer-other-window) ;; orig. switch-to-buffer-other-window
("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
("C-x 5 b" . consult-buffer-other-frame) ;; orig. switch-to-buffer-other-frame
;; Custom M-# bindings for fast register access
("M-#" . consult-register-load)
("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
("M-'" . consult-register-store) ;; orig. abbrev-prefix-mark (unrelated)
("C-M-#" . consult-register)
;; Other custom bindings
("M-y" . consult-yank-pop) ;; orig. yank-pop
("<help> a" . consult-apropos) ;; orig. apropos-command
("M-y" . consult-yank-pop) ;; orig. yank-pop
("<help> a" . consult-apropos) ;; orig. apropos-command
;; M-g bindings (goto-map)
("M-g e" . consult-compile-error)
("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g o" . consult-outline) ;; Alternative: consult-org-heading
("M-g f" . consult-flymake) ;; Alternative: consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-g" . consult-goto-line) ;; orig. goto-line
("M-g o" . consult-outline) ;; Alternative: consult-org-heading
("M-g m" . consult-mark)
("M-g k" . consult-global-mark)
("M-g i" . consult-imenu)
@ -493,10 +493,10 @@ Swiper and rg alternative.
:map boon-command-map
("w" . consult-line)
:map isearch-mode-map
("M-e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s l" . consult-line) ;; needed by consult-line to detect isearch
("M-s L" . consult-line-multi)) ;; needed by consult-line to detect isearch
("M-e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s e" . consult-isearch-history) ;; orig. isearch-edit-string
("M-s l" . consult-line) ;; needed by consult-line to detect isearch
("M-s L" . consult-line-multi)) ;; needed by consult-line to detect isearch
;; Enable automatic preview at point in the *Completions* buffer.
;; This is relevant when you use the default completion UI,
@ -539,7 +539,6 @@ Swiper and rg alternative.
:preview-key '(:debounce 0.2 any)
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-file consult--source-project-file consult--source-bookmark
:preview-key (kbd "M-."))
;; Optionally configure the narrowing key.
@ -552,17 +551,17 @@ Swiper and rg alternative.
;; Optionally configure a function which returns the project root directory.
;; There are multiple reasonable alternatives to chose from.
;;;; 1. project.el (project-roots)
;;;; 1. project.el (project-roots)
;; (setq consult-project-root-function
;; (lambda ()
;; (when-let (project (project-current))
;; (car (project-roots project)))))
;;;; 2. projectile.el (projectile-project-root)
;;;; 2. projectile.el (projectile-project-root)
(autoload 'projectile-project-root "projectile")
(setq consult-project-root-function #'projectile-project-root)
;;;; 3. vc.el (vc-root-dir)
;;;; 3. vc.el (vc-root-dir)
;; (setq consult-project-root-function #'vc-root-dir)
;;;; 4. locate-dominating-file
;;;; 4. locate-dominating-file
;; (setq consult-project-root-function (lambda () (locate-dominating-file "." ".git")))
)
#+end_src
@ -1071,22 +1070,22 @@ Multiple major modes in one buffer.
**** Bars
Add pretty bars to the org indent.
#+begin_src emacs-lisp :tangle yes
(use-package org-bars
:straight (:host github :repo "tonyaldon/org-bars")
:hook (org-mode . org-bars-mode)
:config
(setq org-bars-color-options '(:desaturate-level-faces 30 :darken-level-faces 15)))
;; (use-package org-bars
;; :straight (:host github :repo "tonyaldon/org-bars")
;; :hook (org-mode . org-bars-mode)
;; :config
;; (setq org-bars-color-options '(:desaturate-level-faces 30 :darken-level-faces 15)))
#+end_src
And disable the ellipsis.
#+begin_src emacs-lisp :tangle yes
(defun org-no-ellipsis-in-headlines ()
"Remove use of ellipsis in headlines.
See `buffer-invisibility-spec'."
(remove-from-invisibility-spec '(outline . t))
(add-to-invisibility-spec 'outline))
;; (defun org-no-ellipsis-in-headlines ()
;; "Remove use of ellipsis in headlines.
;; See `buffer-invisibility-spec'."
;; (remove-from-invisibility-spec '(outline . t))
;; (add-to-invisibility-spec 'outline))
(add-hook 'org-mode-hook 'org-no-ellipsis-in-headlines)
;; (add-hook 'org-mode-hook 'org-no-ellipsis-in-headlines)
#+end_src
**** Refile
@ -2205,17 +2204,22 @@ Support for sphinx style docstrings.
:ID: db24f115-910d-4f9f-ba13-4dd9855c0b7d
:END:
#+begin_src emacs-lisp :tangle yes
(use-package ansi-color)
(use-package ansi-color
:config
(defun jupyter-ansi-color-apply-on-region (begin end)
(ansi-color-apply-on-region begin end t)))
(use-package popup)
(use-package jupyter
:config
(require 'jupyter-python)
(require 'jupyter-julia)
;(require 'jupyter-wolfram-language)
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(jupyter . t)))
(setq jupyter-eval-short-result-display-function 'popup-tip))
:config
(require 'jupyter-python)
(require 'jupyter-julia)
;(require 'jupyter-wolfram-language)
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(jupyter . t)))
(setq jupyter-eval-use-overlays t)
(setq jupyter-eval-short-result-display-function #'popup-tip))
#+end_src

View file

@ -11,5 +11,6 @@
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
(straight-use-package 'org)
(straight-use-package '(org :host github :repo "yantar92/org" :branch "feature/org-fold-universal-core"
:files (:defaults "contrib/lisp/*.el")))
(org-babel-load-file "~/.emacs.d/emacs.org")

View file

@ -11,11 +11,11 @@ initial_zoom=269.67
# maximize the window at startup (true/false)
window_maximize=false
# start in full screen mode (true/false)
window_fullscreen=true
window_fullscreen=false
# the window width in pixels (when not maximized)
window_width=1920
window_width=2560
# the window height in pixels
window_height=2160
window_height=1440
# scrollbar step increment (in pixels)
scrollbar_speed=30
# the step increment in the zoom dialog box