From 70043cec98aebe89020432dd1cd8557fcbeb5918 Mon Sep 17 00:00:00 2001 From: Marat Date: Sat, 15 Feb 2025 20:38:47 +0600 Subject: [PATCH] update --- inventory | 2 +- roles/dots/files/config/kitty/kitty.conf | 8 +- .../dots/files/config/nsxiv/exec/key-handler | 37 +++ .../files/config/nvim/lua/some/common.lua | 2 +- .../config/nvim/lua/some/packer_setting.lua | 9 +- .../files/config/nvim/lua/some/scripts.lua | 2 +- roles/dots/files/home/.bashrc | 7 +- roles/dots/files/home/.emacs.d/config.org | 235 +++++++++++--- .../.emacs.d/lib/doom-tomorrow-night-theme.el | 126 ++++++++ roles/dots/files/home/.emacs.d/lib/ex.el | 160 +++++++++- .../files/home/.emacs.d/lib/text-processor.el | 45 +++ roles/dots/files/home/.tmux.conf | 2 - roles/dots/files/home/.xinitrc | 8 +- roles/dots/files/home/bin/firefox_profiles.sh | 6 +- roles/dots/files/home/bin/http | Bin 8974720 -> 8982032 bytes roles/dots/files/home/bin/pywall.py | 6 +- roles/dots/files/home/bin/rofi | 9 +- roles/dots/files/home/bin/wifi_passwords.db | Bin 0 -> 12288 bytes roles/dots/files/system/pacman.conf | 2 +- roles/dots/tasks/common_files.yml | 1 + roles/packages/tasks/apps.yml | 5 +- roles/packages/tasks/aur.yml | 4 +- roles/packages/tasks/main.yml | 18 +- roles/window_managers/files/sway/config | 37 +-- roles/window_managers/files/sway/outputs | 18 +- .../files/waybar/backup/config | 212 +++++++++++++ .../files/waybar/backup/style.css | 266 ++++++++++++++++ roles/window_managers/files/waybar/config | 275 ++++++---------- roles/window_managers/files/waybar/style.css | 293 ++++-------------- save_new_config.sh | 2 + 30 files changed, 1278 insertions(+), 519 deletions(-) create mode 100755 roles/dots/files/config/nsxiv/exec/key-handler create mode 100644 roles/dots/files/home/.emacs.d/lib/doom-tomorrow-night-theme.el create mode 100644 roles/dots/files/home/.emacs.d/lib/text-processor.el create mode 100644 roles/dots/files/home/bin/wifi_passwords.db create mode 100644 roles/window_managers/files/waybar/backup/config create mode 100644 roles/window_managers/files/waybar/backup/style.css diff --git a/inventory b/inventory index 53418ad..e6c2be1 100644 --- a/inventory +++ b/inventory @@ -2,4 +2,4 @@ localhost [local:vars] -display_server=wayland +display_server=xorg diff --git a/roles/dots/files/config/kitty/kitty.conf b/roles/dots/files/config/kitty/kitty.conf index 9c243c7..ec2479b 100644 --- a/roles/dots/files/config/kitty/kitty.conf +++ b/roles/dots/files/config/kitty/kitty.conf @@ -12,7 +12,7 @@ allow_remote_control yes enable_audio_bell no url_style single tab_bar_style powerline -hide_window_decorations yes +# hide_window_decorations yes map ctrl+o copy_to_clipboard map ctrl+m paste_from_clipboard @@ -22,7 +22,7 @@ map ctrl+m paste_from_clipboard # BEGIN_KITTY_THEME # Doom One # include current-theme.conf -include gruvbox.conf +# include gruvbox.conf # include space_grey.conf # include doom-one.conf # include nord.conf @@ -32,4 +32,8 @@ include gruvbox.conf # include tokyo_night.conf # include black-metal.conf # include henna.conf +# include solarized_dark.conf +# include everforset-theme.conf +# include solarized_light.conf +# include gruvbox_light.conf # END_KITTY_THEME diff --git a/roles/dots/files/config/nsxiv/exec/key-handler b/roles/dots/files/config/nsxiv/exec/key-handler new file mode 100755 index 0000000..4a9b6cc --- /dev/null +++ b/roles/dots/files/config/nsxiv/exec/key-handler @@ -0,0 +1,37 @@ +#!/bin/sh + +# Example for $XDG_CONFIG_HOME/sxiv/exec/key-handler +# Called by sxiv(1) after the external prefix key (C-x by default) is pressed. +# The next key combo is passed as its first argument. Passed via stdin are the +# images to act upon, one path per line: all marked images, if in thumbnail +# mode and at least one image has been marked, otherwise the current image. +# sxiv(1) blocks until this script terminates. It then checks which images +# have been modified and reloads them. + +# The key combo argument has the following form: "[C-][M-][S-]KEY", +# where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X +# keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix. + +rotate() { + degree="$1" + tr '\n' '\0' | xargs -0 realpath | sort | uniq | while read file; do + case "$(file -b -i "$file")" in + image/jpeg*) jpegtran -rotate "$degree" -copy all -outfile "$file" "$file" ;; + *) mogrify -rotate "$degree" "$file" ;; + esac + done +} + +case "$1" in +"C-x") xclip -in -filter | tr '\n' ' ' | xclip -in -selection clipboard ;; +"C-c") while read file; do xclip -selection clipboard -target image/png "$file"; done ;; +"C-e") while read file; do urxvt -bg "#444" -fg "#eee" -sl 0 -title "$file" -e sh -c "exiv2 pr -q -pa '$file' | less" & done ;; +"C-g") tr '\n' '\0' | xargs -0 gimp & ;; +"C-r") while read file; do rawtherapee "$file" & done ;; +"m") while read file; do echo "$file" >> /tmp/curr & done ;; +"w") while read file; do feh --bg-fill "$file" & done ;; +"b") while read file; do feh --bg-max "$file" & done ;; +"C-comma") rotate 270 ;; +"C-period") rotate 90 ;; +"C-slash") rotate 180 ;; +esac diff --git a/roles/dots/files/config/nvim/lua/some/common.lua b/roles/dots/files/config/nvim/lua/some/common.lua index c908750..761be13 100755 --- a/roles/dots/files/config/nvim/lua/some/common.lua +++ b/roles/dots/files/config/nvim/lua/some/common.lua @@ -14,7 +14,7 @@ set.clipboard = 'unnamed,unnamedplus' set.list = true -set.lcs='space:·' +-- set.lcs='space:·' g.mapleader='\\' vim.o.termguicolors = true diff --git a/roles/dots/files/config/nvim/lua/some/packer_setting.lua b/roles/dots/files/config/nvim/lua/some/packer_setting.lua index 1052a33..1d75abd 100755 --- a/roles/dots/files/config/nvim/lua/some/packer_setting.lua +++ b/roles/dots/files/config/nvim/lua/some/packer_setting.lua @@ -1,17 +1,17 @@ +-- vim.o.background = 'dark' -- 'dark' or 'light' vim.o.background = 'dark' -- 'dark' or 'light' -vim.g.everforest_background = 'hard' +-- vim.g.everforest_background = 'hard' -- vim.cmd('colorscheme everforest') -- vim.cmd('colorscheme nord') -- vim.cmd('colorscheme base16-black-metal') --- vim.cmd('colorscheme doom-one') -- vim.cmd('colorscheme dracula') -- vim.cmd('colorscheme onedark') -- vim.cmd('colorscheme nightfox') -- vim.cmd('colorscheme Tomorrow-Night-Bright') --- vim.cmd('colorscheme doom-one') +vim.cmd('colorscheme doom-one') -- vim.cmd('colorscheme dracula-soft') -- vim.cmd('colorscheme solarized') -vim.cmd('colorscheme gruvbox') +-- vim.cmd('colorscheme gruvbox') -- vim.cmd('colorscheme iceberg') -- vim.cmd('colorscheme lake') -- vim.cmd('colorscheme tokyonight') @@ -21,6 +21,7 @@ vim.api.nvim_set_hl(0, 'CursorLine', { underline = true }) -- цвет номеров строк vim.cmd('hi linenr guifg=white') +-- vim.cmd('hi linenr guifg=white') -- vim.cmd('hi linenr guifg=#D3C6AA') -- telescope local builtin = require('telescope.builtin') diff --git a/roles/dots/files/config/nvim/lua/some/scripts.lua b/roles/dots/files/config/nvim/lua/some/scripts.lua index 88440ed..f67f8c0 100755 --- a/roles/dots/files/config/nvim/lua/some/scripts.lua +++ b/roles/dots/files/config/nvim/lua/some/scripts.lua @@ -35,7 +35,7 @@ function rest() local absolute_current_file = vim.api.nvim_buf_get_name(0) local neovim_open_path = vim.fn.getcwd() - local pyhttp = 'python ~/bin/easy_http.py ' .. absolute_current_file .. ' ' .. neovim_open_path + local pyhttp = '~/bin/http ' .. absolute_current_file .. ' ' .. neovim_open_path pyhttp_exec = io.popen(pyhttp) close_window_with_response() diff --git a/roles/dots/files/home/.bashrc b/roles/dots/files/home/.bashrc index b98ab5c..fa67fce 100644 --- a/roles/dots/files/home/.bashrc +++ b/roles/dots/files/home/.bashrc @@ -11,10 +11,9 @@ export PATH="$HOME/.local/bin:$PATH" alias ls='ls --color=auto' alias grep='grep --color=auto' -echo "" # PS1="[\w] ($(git branch 2>/dev/null | grep '^*' | colrm 1 2)) \n-> " -# PS1='[\w]$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") \n-> ' -PS1='\w$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") $ ' +PS1='[\w]$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") \n-> ' +# PS1='\w$(git rev-parse --is-inside-work-tree &>/dev/null && echo " ($(git branch 2>/dev/null | grep '\''^\*'\'' | colrm 1 2))") $ ' export VISUAL=nvim export MANPAGER='nvim +Man!' @@ -109,6 +108,8 @@ alias bg='feh --bg-fil' alias em='emacsclient -t' alias wifi='/home/fs/bin/wifi.py' alias bgg='/home/fs/bin/gifwall.sh' +alias dff='echo -e "Filesystem\tSize\tUsed\tAvail\tUse%\tMounted on" && df -h | grep nvme' +alias sd='exa -al --color=always --group-directories-first -d */' # git alias gdel='f() { git branch -D $(git branch | grep "$1"); }; f' diff --git a/roles/dots/files/home/.emacs.d/config.org b/roles/dots/files/home/.emacs.d/config.org index aacc025..6b31d38 100644 --- a/roles/dots/files/home/.emacs.d/config.org +++ b/roles/dots/files/home/.emacs.d/config.org @@ -9,6 +9,7 @@ - [[#ui][UI]] - [[#main-packages][main packages]] - [[#general-keybindings][General keybindings]] + - [[#window-move][Window move]] - [[#evil-mode][Evil Mode]] - [[#ivy][Ivy]] - [[#counsel][Counsel]] @@ -33,10 +34,12 @@ - [[#org-babel-execute][org babel execute]] - [[#org-agenda][org agenda]] - [[#org-image][Org Image]] + - [[#org-level-size][org level size]] - [[#programming][PROGRAMMING]] - [[#snipets][snipets]] - [[#python][python]] - [[#go][go]] + - [[#emacs-lisp][Emacs-lisp]] - [[#decorations][decorations]] - [[#colorthemes][colorthemes]] - [[#diff][diff]] @@ -51,14 +54,15 @@ - [[#programs][Programs]] - [[#emms][emms]] - [[#latex-pdf][Latex (pdf)]] + - [[#terminal][Terminal]] - [[#exwm][EXWM]] - [[#setup-windows-hotkey][setup windows hotkey]] - [[#setup-wm][setup wm]] +- [[#text-processor][Text Processor]] - [[#scripts][scripts]] - [[#add-projectile-project][add projectile project]] - [[#rest][REST]] - [[#insert-some-text][insert some text]] - - [[#open-terminal][open terminal]] * auto install packages #+begin_src emacs-lisp @@ -211,6 +215,16 @@ https://github.com/noctuid/general.el ) #+end_src +** Window move +#+begin_src emacs-lisp +(global-unset-key (kbd "C-j")) + +(global-set-key (kbd "C-h") 'windmove-left) ;; Alt-h для перехода влево +(global-set-key (kbd "C-l") 'windmove-right) ;; Alt-l для перехода вправо +(global-set-key (kbd "C-k") 'windmove-up) ;; Alt-k для перехода вверх +(global-set-key (kbd "C-j") 'windmove-down) ;; Alt-j для перехода вниз +#+end_src + ** Evil Mode https://github.com/emacs-evil/evil *** Setup @@ -354,6 +368,7 @@ https://github.com/emacs-evil/evil (advice-remove 'process-exit-status #'filter-func)))))) #+end_src + ** dired *** setup (setq dired-listing-switches "-alXGh --group-directories-first": @@ -428,10 +443,7 @@ https://github.com/emacs-evil/evil "Open the current directory in Dired with PCManFM." (interactive) (let ((current-dir (dired-current-directory))) - (start-process "nautilus" nil "nautilus" current-dir))) - -(define-key dired-mode-map (kbd "C-c o") 'dired-open-pcmanfm) - + (start-process "pcmanfm" nil "pcmanfm" current-dir))) #+end_src *** функция для копирования текущего пути @@ -489,8 +501,8 @@ https://github.com/emacs-evil/evil "atril" '(file)) ;; (list (openwith-make-extension-regexp '("flac" "mp3" "wav")) ;; "vlc" '(file)) - (list (openwith-make-extension-regexp '("bmp" "jpeg" "jpg" "png")) - "vimiv" '(file)) + (list (openwith-make-extension-regexp '("bmp" "jpeg" "jpg" "png" "webp")) + "sxiv -t ." '(file)) (list (openwith-make-extension-regexp '("mpv" "mkv" "mp4")) "mpv" '(file)) (list (openwith-make-extension-regexp '("doc" "docx" "odt")) @@ -647,6 +659,7 @@ https://github.com/emacs-evil/evil #+end_src ** file (copy file, open file in dired) +*** Dired function #+begin_src emacs-lisp (defun open-current-directory-in-dired () "Open the current directory of the current file in Dired. @@ -656,13 +669,27 @@ If a Dired buffer is already opened, navigate to that buffer." (if (get-buffer-window (dired-noselect dir)) (switch-to-buffer-other-window (dired-noselect dir)) (dired-jump nil dir)))) +#+end_src + +*** transpose-frame +#+begin_src emacs-lisp +(use-package transpose-frame + :ensure t + :bind ( + ("C-t" . transpose-frame) +)) +#+end_src + +#+begin_src emacs-lisp (spc-leader - "f" '(:ignore t :wk "file") + "f" '(:ignore t :wk "file/frame") + "f t" '(transpose-frame :wk "transpose-frame") "f c" '(copy-file :wk "copy file") "f o" '(open-current-directory-in-dired :wk "open in dired")) #+end_src + ** bm-marks / org tangle #+begin_src emacs-lisp (spc-leader @@ -713,6 +740,15 @@ add and switch project #+end_src + +*** Search M-x commands with fzf +#+begin_src emacs-lisp +(use-package fzf + :ensure t + :init (setenv "FZF_DEFAULT_COMMAND" "fd --type f") +) +#+end_src + hot keys #+begin_src emacs-lisp (spc-leader @@ -819,7 +855,7 @@ hot keys "g l g" '(magit-log-current :wk "log") "g l l" '(magit-log-buffer-file :wk "log buffer") - "g c" '(magit-commit t :wk "commit") + "g c" '(magit-commit-create t :wk "commit") "g b" '(:ignore t :wk "branch") "g b b" '(magit-branch-checkout t :wk "checkout") @@ -834,6 +870,8 @@ hot keys "g d d" '(magit-diff-buffer-file :wk "log buffer") "g d g" '(magit-diff-unstaged :wk "diff unstaged buffer") "g d s" '(magit-diff-staged :wk "diff staged buffer") + + "g f" '(magit-fetch :wk "fetch") ) #+end_src @@ -927,6 +965,16 @@ hot keys (setq org-image-actual-width '(500)) #+end_src +** org level size +#+begin_src emacs-lisp +;; Установка стилей для заголовков +(custom-set-faces + '(org-level-1 ((t (:height 1.5 :weight bold)))) + '(org-level-2 ((t (:height 1.3 :weight bold)))) + '(org-level-3 ((t (:height 1.2)))) + '(org-level-4 ((t (:height 1.1))))) +#+end_src + * PROGRAMMING ** snipets @@ -959,26 +1007,35 @@ hot keys (add-hook 'go-mode-hook 'load-go-config) #+end_src +** Emacs-lisp +#+begin_src emacs-lisp +(use-package highlight-function-calls + :ensure t + :config + (add-hook 'emacs-lisp-mode-hook 'highlight-function-calls-mode)) +#+end_src + * decorations ** colorthemes #+begin_src emacs-lisp (custom-set-faces '(line-number ((t (:foreground "white")))) ; Цвет отображения номера строки '(line-number-current-line ((t (:foreground "white"))))) ; Цвет текущей строки -;; '(line-number ((t (:foreground "black")))) ; Цвет отображения номера строки -;; '(line-number-current-line ((t (:foreground "black"))))) ; Цвет текущей строки +'(org-block-background ((t (:background "#1b1b1b")))) +; '(line-number ((t (:foreground "black")))) ; Цвет отображения номера строки +; '(line-number-current-line ((t (:foreground "black"))))) ; Цвет текущей строки ;; (load-theme 'doom-1337 t) ;; (load-theme 'doom-nord t) ;; (load-theme 'doom-nord-aurora t) ;; (load-theme 'doom-nord-light t) ;; (load-theme 'doom-one-light t) ;; (load-theme 'doom-gruvbox-light t) -(load-theme 'doom-gruvbox t) +;; (load-theme 'doom-gruvbox t) ;; (load-theme 'doom-ayu-dark t) ;; (load-theme 'doom-dracula t) ;; (load-theme 'doom-tomorrow-night t) ;; (load-theme 'doom-henna t) -;; (load-theme 'doom-one t) +(load-theme 'doom-one t) ;; (load-theme 'doom-opera t) ;; (load-theme 'doom-monokai-pro t) ;; (load-theme 'doom-spacegrey t) @@ -986,6 +1043,8 @@ hot keys ;; (load-theme 'doom-xcode t) ;; (load-theme 'doom-solarized-light t) ;; (load-theme 'doom-solarized-dark t) +;; (load-theme 'solarized-gruvbox-light t) +;; (load-theme 'solarized-gruvbox-dark t) ;; (add-to-list 'custom-theme-load-path "~/.emacs.d/everforest-theme") ;; (load-theme 'everforest-hard-dark t) @@ -1000,7 +1059,7 @@ hot keys ;; (set-frame-parameter nil 'alpha-background 100) ;; (set-frame-parameter nil 'alpha-background 92) -(let ((al 92)) ;; Прозрачность % +(let ((al 90)) ;; Прозрачность % (set-frame-parameter (selected-frame) 'alpha `(,al . ,al)) ;; Прозрачность для текущего фрейма (add-to-list 'default-frame-alist `(alpha . (,al . ,al)))) ;; Прозрачность для всех новых фреймов @@ -1042,7 +1101,7 @@ hot keys (defun set-big-font () (interactive) (set-face-attribute 'default nil - :font "JetBrainsMonoNL Nerd Font" + :font "Firacode Nerd Font" :height 140 :weight 'medium)) @@ -1240,6 +1299,24 @@ names, e.g. #0000ff is displayed in white with a blue background. #+end_src ** Latex (pdf) +*** Warning +#+begin_quote +PLEASE READ THIS WARNING *********************************** + +The following (inessential) packages failed to install properly: + + yb-book + +You can fix this by running this command: + tlmgr update --all --reinstall-forcibly-removed +to complete the installation. + +However, if the problem was a failure to download (by far the +most common cause), check that you can connect to the chosen mirror +in a browser; you may need to specify a mirror explicitly. +****************************************************************** +#+end_quote + *** Install чтобы экспорт работал кректно надо установить pygments =pip install pygments= но для arch linux =sudo pacman -S python-pygments= @@ -1298,6 +1375,97 @@ https://tug.org/texlive/quickinstall.html a4paper — формат бумаги (можно поменять на letterpaper или другой, если требуется). left=2cm, right=2cm, top=2.5cm, bottom=2.5cm — отступы от левой, правой, верхней и нижней границы страницы, соответственно. можно изменить эти значения на нужные размеры в сантиметрах (или дюймах, используя in). +** Terminal +*** Open terminal with random buffer name +#+begin_src emacs-lisp +(defun run-buffer-random (command) + "Open a shell and rename its buffer to shell-." + (let ((random-name (format "shell-%s" (make-temp-name ""))) ; Генерируем случайное имя + (shell-buffer (funcall command))) ; Запускаем shell + (with-current-buffer shell-buffer + (rename-buffer random-name t)))) ; Переименовываем буфер + +(defun open-eshell-on-right () + "Open a terminal in a new right split window with a randomly named buffer." + (interactive) + (let ((term-buffer (generate-new-buffer (format "eshell-%s" (make-temp-name ""))))) + (set-window-buffer (split-window-right) term-buffer) + (select-window (get-buffer-window term-buffer)) + (eshell term-buffer))) + +(defun rand-eshell () + (interactive) + (run-buffer-random #'eshell)) ; Передаем функцию как объект + +(defun rand-shell () + (interactive) + (run-buffer-random #'vterm)) ; Передаем функцию как объект + +(defun default-terminal () + (interactive) + (run-buffer-random #'eshell)) +#+end_src + +*** scripts +**** fuzzy cd by main dirs +#+begin_src emacs-lisp +(defun counsel-find-dirs () + "Search directories with `find` and display results in Ivy." + (interactive) + (let* ((paths '("/home/fs/Desktop/pet" + "/home/fs/Desktop/tmp" + "/home/fs/Desktop/work")) + (find-command (concat "find " + (mapconcat #'shell-quote-argument paths " ") + " -maxdepth 2 -type d ! -readable -prune -o -print")) + (results (split-string (shell-command-to-string find-command) "\n" t))) + (ivy-read "Select directory: " results + :action (lambda (dir) + (when (file-directory-p dir) + (dired dir)))))) +#+end_src + +**** цвета +#+begin_src emacs-lisp +(add-hook 'eshell-preoutput-filter-functions + 'ansi-color-apply) + +(setenv "TERM" "xterm-256color") +#+end_src + +*** open terminal +#+begin_src emacs-lisp +(spc-leader + "t" '(:ignore t :wk "terminal") + "t e" '(rand-eshell :wk "run emacs shell") + "t s" '(rand-shell :wk "run standart shell") + "t t" '(open-eshell-on-right :wk "eshell on right") +) +#+end_src + +*** Vterm +#+begin_src emacs-lisp +(use-package eshell-vterm + :load-path "site-lisp/eshell-vterm" + :demand t + :after eshell + :config + (eshell-vterm-mode)) +#+end_src + +**** Vterm paste +#+begin_src emacs-lisp +(with-eval-after-load 'evil + (add-hook 'vterm-mode-hook + (lambda () + ;; Назначение hjkl как стрелок в normal state + (evil-define-key 'normal vterm-mode-map + "p" 'vterm-yank + "h" (lambda () (interactive) (vterm-send-key "")) + "j" (lambda () (interactive) (vterm-send-key "")) + "k" (lambda () (interactive) (vterm-send-key "")) + "l" (lambda () (interactive) (vterm-send-key "")))))) +#+end_src * EXWM ** setup windows hotkey @@ -1306,20 +1474,15 @@ left=2cm, right=2cm, top=2.5cm, bottom=2.5cm — отступы от левой, (use-package ace-window :ensure t :bind ( - ("M-o" . ace-window) ("M-s" . ace-swap-window)) :config (setq aw-swap-other-window t)) #+end_src -*** transpose-frame -#+begin_src emacs-lisp -(use-package transpose-frame - :ensure t - :bind ( - ("M-t" . transpose-frame) -)) -#+end_src +#+RESULTS: +: ace-swap-window + + ** setup wm #+begin_src emacs-lisp @@ -1327,9 +1490,15 @@ left=2cm, right=2cm, top=2.5cm, bottom=2.5cm — отступы от левой, ;; (expand-file-name ;; "lib/ex.org" ;; user-emacs-directory)) - #+end_src +* Text Processor +#+begin_src emacs-lisp +(org-babel-load-file + (expand-file-name + "lib/text-processor.el" + user-emacs-directory)) +#+end_src * scripts ** add projectile project @@ -1411,19 +1580,3 @@ left=2cm, right=2cm, top=2.5cm, bottom=2.5cm — отступы от левой, "i l " '(insert-latex-header :wk "latex header") ) #+end_src - -** open terminal -#+begin_src emacs-lisp -(defun open-term () - "Open a terminal in a new right split window." - (interactive) - (let ((term-buffer (generate-new-buffer "*term*"))) - (set-window-buffer (split-window-right) term-buffer) - (select-window (get-buffer-window term-buffer)) - (vterm))) - -(spc-leader - "t" '(:ignore t :wk "terminal") - "t t" '(open-term :wk "terminal") -) -#+end_src diff --git a/roles/dots/files/home/.emacs.d/lib/doom-tomorrow-night-theme.el b/roles/dots/files/home/.emacs.d/lib/doom-tomorrow-night-theme.el new file mode 100644 index 0000000..d4ac4e0 --- /dev/null +++ b/roles/dots/files/home/.emacs.d/lib/doom-tomorrow-night-theme.el @@ -0,0 +1,126 @@ +;;; doom-tomorrow-night-theme.el --- One of the dark variants of Tomorrow -*- lexical-binding: t; no-byte-compile: t; -*- +;; +;; Added: May 14, 2017 (4c981f2cccf3) +;; Author: Henrik Lissner +;; Maintainer: +;; Source: https://github.com/ChrisKempson/Tomorrow-Theme +;; +;;; Commentary: +;;; Code: + +(require 'doom-themes) + + +;; +;;; Variables + +(defgroup doom-tomorrow-night-theme nil + "Options for the `doom-tomorrow-night' theme." + :group 'doom-themes) + +(defcustom doom-tomorrow-night-padded-modeline doom-themes-padded-modeline + "If non-nil, adds a 4px padding to the mode-line. Can be an integer to +determine the exact padding." + :group 'doom-tomorrow-night-theme + :type '(choice integer boolean)) + + +;; +;;; Theme definition + + + +(def-doom-theme doom-tomorrow-night + "A theme based off of Chris Kempson's Tomorrow Dark." + + ;; name gui 256 16 + ((bg '("#000000" nil nil )) + (bg-alt '("#000000" nil nil )) + (base0 '("#0d0d0d" "black" "black" )) + (base1 '("#1b1b1b" "#1b1b1b" )) + (base2 '("#212122" "#1e1e1e" )) + (base3 '("#0d0d0d" "#292929" "brightblack")) ;; bg org mode + (base4 '("#3f4040" "#3f3f3f" "brightblack")) + (base5 '("#5c5e5e" "#525252" "brightblack")) + (base6 '("#757878" "#6b6b6b" "brightblack")) + (base7 '("#969896" "#979797" "brightblack")) + (base8 '("#ffffff" "#ffffff" "white" )) + (fg '("#c5c8c6" "#c5c5c5" "white")) + (fg-alt (doom-darken fg 0.4)) + + (grey '("#5a5b5a" "#5a5a5a" "brightblack")) + (red '("#cc6666" "#cc6666" "red")) + (orange '("#de935f" "#dd9955" "brightred")) + (yellow '("#f0c674" "#f0c674" "yellow")) + (green '("#b5bd68" "#b5bd68" "green")) + (blue '("#81a2be" "#88aabb" "brightblue")) + (dark-blue '("#41728e" "#41728e" "blue")) + (teal blue) ; FIXME replace with real teal + (magenta '("#c9b4cf" "#c9b4cf" "magenta")) + (violet '("#b294bb" "#b294bb" "brightmagenta")) + (cyan '("#8abeb7" "#8abeb7" "cyan")) + (dark-cyan (doom-darken cyan 0.4)) + + ;; face categories + (highlight blue) + (vertical-bar base0) + (selection `(,(car (doom-lighten bg 0.1)) ,@(cdr base4))) + (builtin blue) + (comments grey) + (doc-comments (doom-lighten grey 0.14)) + (constants orange) + (functions blue) + (keywords violet) + (methods blue) + (operators fg) + (type yellow) + (strings green) + (variables red) + (numbers orange) + (region selection) + (error red) + (warning yellow) + (success green) + (vc-modified fg-alt) + (vc-added green) + (vc-deleted red) + + ;; custom categories + (modeline-bg `(,(doom-darken (car bg-alt) 0.3) ,@(cdr base3))) + (modeline-bg-alt `(,(car bg) ,@(cdr base1))) + (modeline-fg base8) + (modeline-fg-alt comments) + (-modeline-pad + (when doom-tomorrow-night-padded-modeline + (if (integerp doom-tomorrow-night-padded-modeline) + doom-tomorrow-night-padded-modeline + 4)))) + + + ;; --- faces ------------------------------ + (((line-number &override) :foreground base4) + ((line-number-current-line &override) :foreground blue :bold bold) + (mode-line + :background modeline-bg :foreground modeline-fg + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg))) + (mode-line-inactive + :background modeline-bg-alt :foreground modeline-fg-alt + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt))) + + ;;;; rainbow-delimiters + (rainbow-delimiters-depth-1-face :foreground violet) + (rainbow-delimiters-depth-2-face :foreground blue) + (rainbow-delimiters-depth-3-face :foreground orange) + (rainbow-delimiters-depth-4-face :foreground green) + (rainbow-delimiters-depth-5-face :foreground magenta) + (rainbow-delimiters-depth-6-face :foreground yellow) + (rainbow-delimiters-depth-7-face :foreground teal) + ;;;; doom-modeline + (doom-modeline-buffer-path :foreground violet :bold bold) + (doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path)) + + ;; --- variables -------------------------- + ;; () + ) + +;;; doom-tomorrow-night-theme.el ends here diff --git a/roles/dots/files/home/.emacs.d/lib/ex.el b/roles/dots/files/home/.emacs.d/lib/ex.el index ae3f9b2..2ab7188 100644 --- a/roles/dots/files/home/.emacs.d/lib/ex.el +++ b/roles/dots/files/home/.emacs.d/lib/ex.el @@ -1,5 +1,161 @@ +(defun volume-up () + "Increase the volume by 5%." + (interactive) + (start-process-shell-command "volume-up" nil "pactl set-sink-volume 0 +5%")) + +(defun volume-down () + "Decrease the volume by 5%." + (interactive) + (start-process-shell-command "volume-down" nil "pactl set-sink-volume 0 -5%")) + +(defun volume-mute-toggle () + "Toggle mute." + (interactive) + (start-process-shell-command "volume-mute" nil "pactl set-sink-mute 0 toggle")) + +(defun change-lan () + "change language" + (interactive) + (start-process-shell-command "change-local" nil "bash /home/fs/bin/change_layout.sh")) + +(defun make-screenshot () + "change language" + (interactive) + (start-process-shell-command "make-screenshot" nil "flameshot gui")) + +(defun my-hide-current-buffer () + "Скрыть текущий буфер." + (interactive) + (scratch-buffer) + (delete-window)) + +(defun efs/exwm-update-class () + (exwm-workspace-rename-buffer exwm-class-name)) + +(defun efs/exwm-init () + (exwm-workspace-switch-create 1) +) + (use-package exwm :config - (setq exwm-workspace-number 9) + ;; Set the default number of workspaces + (setq exwm-workspace-number 10) + + ;; When window "class" updates, use it to set the buffer name + (add-hook 'exwm-update-class-hook #'efs/exwm-update-class) + + (add-hook 'exwm-init-hook #'efs/exwm-init) + + ;; These keys should always pass through to Emacs + (setq exwm-input-prefix-keys + '(?\C-x + ?\C-u + ;; ?\C-h + ?\M-x + ?\M-` + ?\M-& + ?\M-: + ?\M-r + ?\M-j ; move + ?\M-k ; move + ?\M-h ; move + ?\M-l ; move + ?\M-J ; move swap + ?\M-K ; move swap + ?\M-H ; move swap + ?\M-L ; move swap + ?\M-n ; buffers + ?\M-p ; buffers + ?\M-\ ; + ?\M-- ; + ?\M-m ; hide buffer + ?\M-1 ; workspace + ?\M-2 ; workspace + ?\M-3 ; workspace + ?\M-4 ; workspace + ?\M-5 ; workspace + ?\M-6 ; workspace + ?\M-7 ; workspace + ?\M-8 ; workspace + ?\M-9 ; workspace + ?\s-\ ; + ?\C-\M-j ;; Buffer list + ?\C-\ )) ;; Ctrl+Space + + ;; Ctrl+Q will enable the next key to be sent directly + (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) + + ;; Set up global key bindings. These always work, no matter the input state! + ;; Keep in mind that changing this list after EXWM initializes has no effect. + (global-set-key (kbd "s-SPC") 'change-lan) + (global-set-key (kbd "M-.") 'change-lan) + (global-set-key (kbd "M-ю") 'change-lan) + (global-set-key (kbd "M--") 'change-lan) + (global-set-key (kbd "M-r") 'counsel-linux-app) + (global-set-key (kbd "M-m") 'my-hide-current-buffer) + + (global-set-key (kbd "M-n") 'next-buffer) + (global-set-key (kbd "M-p") 'previous-buffer) + + (global-set-key (kbd "M-1") (lambda () (interactive) (exwm-workspace-switch-create 1))) + (global-set-key (kbd "M-2") (lambda () (interactive) (exwm-workspace-switch-create 2))) + (global-set-key (kbd "M-3") (lambda () (interactive) (exwm-workspace-switch-create 3))) + (global-set-key (kbd "M-4") (lambda () (interactive) (exwm-workspace-switch-create 4))) + (global-set-key (kbd "M-5") (lambda () (interactive) (exwm-workspace-switch-create 5))) + (global-set-key (kbd "M-6") (lambda () (interactive) (exwm-workspace-switch-create 6))) + (global-set-key (kbd "M-7") (lambda () (interactive) (exwm-workspace-switch-create 7))) + (global-set-key (kbd "M-8") (lambda () (interactive) (exwm-workspace-switch-create 8))) + (global-set-key (kbd "M-9") (lambda () (interactive) (exwm-workspace-switch-create 9))) + + (global-set-key (kbd "M-h") (lambda () (interactive) (windmove-left))) + (global-set-key (kbd "M-l") (lambda () (interactive) (windmove-right))) + (global-set-key (kbd "M-j") (lambda () (interactive) (windmove-down))) + (global-set-key (kbd "M-k") (lambda () (interactive) (windmove-up))) + + (global-set-key (kbd "M-H") (lambda () (interactive) (windmove-swap-states-left))) + (global-set-key (kbd "M-L") (lambda () (interactive) (windmove-swap-states-right))) + (global-set-key (kbd "M-J") (lambda () (interactive) (windmove-swap-states-down))) + (global-set-key (kbd "M-K") (lambda () (interactive) (windmove-swap-states-up))) + + (global-set-key (kbd "C-c p") (lambda () (interactive) (make-screenshot))) + + (setq exwm-input-global-keys + `( + ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) + ([?\s-r] . exwm-reset) + + (,(kbd "s-h") . windmove-left) ;; Super + h: окно влево + (,(kbd "s-l") . windmove-right) ;; Super + l: окно вправо + (,(kbd "s-k") . windmove-up) ;; Super + k: окно вверх + (,(kbd "s-j") . windmove-down) + + (,(kbd "") . volume-up) + (,(kbd "") . volume-down) + (,(kbd "") . volume-mute-toggle) + + ;; Launch applications via shell command + ([?\s-&] . (lambda (command) + (interactive (list (read-shell-command "$ "))) + (start-process-shell-command command nil command))) + + ;; Switch workspace + ([?\s-w] . exwm-workspace-switch) + )) + + ;; Show battery status in the mode line + (display-battery-mode 1) + + ;; Show the time and date in modeline + (setq display-time-day-and-date t) + (display-time-mode 1) + (exwm-enable)) -(message "----- hi") + +(require 'exwm-randr) +(exwm-randr-enable) + +(start-process-shell-command "xrandr" nil "xrandr --output HDMI1 --mode 3840x2160 --panning 3840x2160 --rate 60 --output eDP1 --off") + +(global-set-key (kbd "") 'volume-up) +(global-set-key (kbd "") 'volume-down) +(global-set-key (kbd "") 'volume-mute-toggle) diff --git a/roles/dots/files/home/.emacs.d/lib/text-processor.el b/roles/dots/files/home/.emacs.d/lib/text-processor.el new file mode 100644 index 0000000..734220a --- /dev/null +++ b/roles/dots/files/home/.emacs.d/lib/text-processor.el @@ -0,0 +1,45 @@ +(require 'json) +(require 'url-util) + + +(defun tx/add-to-end (start end user-input) + "" + (interactive "r\nsEnter: ") + (let ((selected-text (buffer-substring start end))) + (message "Selected text: %s, User input: %s" selected-text user-input) + (delete-region start end) + (dolist (line (split-string selected-text "\n")) + (insert (concat line user-input "\n"))))) + + +(defun tx/remove-line-separator (start end) + (interactive "r") + (let ((selected-text (buffer-substring start end))) + (delete-region start end) + (dolist (line (split-string selected-text "\n")) + (insert (string-replace " " "" (concat line " ")))) + )) + + +(defun tx/add-separator-by-symbol (start end user-input) + (interactive "r\nsEnter symbol: ") + (let ((selected-text (buffer-substring start end))) + (delete-region start end) + (dolist (line (split-string selected-text user-input)) + (insert (concat line user-input "\n"))))) + + +(defun tx/url-param-to-json (start end) + "Convert URL query parameters from the region (START END) into JSON format." + (interactive "r") + (let* ((url-string (buffer-substring-no-properties start end)) + (query-part (if (string-match "\\?.*" url-string) + (substring url-string (+ (match-beginning 0) 1)) + url-string)) + (params (url-parse-query-string query-part)) + (json-object (mapcar (lambda (pair) + (cons (car pair) (cadr pair))) + params))) + (kill-new (json-encode json-object)) + (message "Converted URL parameters to JSON and copied to clipboard: %s" + (json-encode json-object)))) diff --git a/roles/dots/files/home/.tmux.conf b/roles/dots/files/home/.tmux.conf index 2170852..0393968 100644 --- a/roles/dots/files/home/.tmux.conf +++ b/roles/dots/files/home/.tmux.conf @@ -42,7 +42,6 @@ set -g status-left-length 60 # set-option -g status-left "#[bg=colour241,fg=colour248] #S #[bg=black,fg=colour241,nobold,noitalics,nounderscore]" # set-option -g status-right "#[bg=black,fg=colour239 nobold, nounderscore, noitalics]#[bg=colour239,fg=colour246] %Y-%m-%d  %H:%M #[bg=colour239,fg=colour248,nobold,noitalics,nounderscore]#[bg=colour248,fg=colour237] #h " -# # set-window-option -g window-status-current-format "#[bg=green,fg=black,nobold,noitalics,nounderscore]#[bg=green,fg=black] #I #[bg=green,fg=black,bold] #W#{?window_zoomed_flag,*Z,} #[bg=black,fg=green,nobold,noitalics,nounderscore]" # set-window-option -g window-status-format "#[bg=white,fg=black,noitalics]#[bg=white,fg=black] #I #[bg=white,fg=black,bold] #W #[bg=black,fg=white,noitalics]" @@ -50,4 +49,3 @@ set -g status-left-length 60 set -g base-index 1 setw -g pane-base-index 1 bind-key s choose-tree -ZsK '#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}' - diff --git a/roles/dots/files/home/.xinitrc b/roles/dots/files/home/.xinitrc index 1116ac3..19d135b 100644 --- a/roles/dots/files/home/.xinitrc +++ b/roles/dots/files/home/.xinitrc @@ -3,12 +3,10 @@ xrandr --auto xrandr -r 60.00 xrdb ~/.Xresources slstatus & -# picom & +picom & flameshot & -emacs --bg-daemon=main & -emacs --bg-daemon=fm & -emacs --bg-daemon=music & -emacs --bg-daemon=other & dunst & exec ~/bin/startdwm # exec dwm +# exec dbus-launch --exit-with-session emacs +# while read -r line; do export "$line"; done < /home/fs/scale_vars && exec emacs diff --git a/roles/dots/files/home/bin/firefox_profiles.sh b/roles/dots/files/home/bin/firefox_profiles.sh index 122fee9..e1c4ff3 100755 --- a/roles/dots/files/home/bin/firefox_profiles.sh +++ b/roles/dots/files/home/bin/firefox_profiles.sh @@ -3,7 +3,9 @@ # Путь к файлу profiles.ini PROFILES_INI="$HOME/.mozilla/firefox/profiles.ini" + if [ "$XDG_SESSION_TYPE" == "wayland" ]; then +while read -r line; do export "$line"; done < /home/fs/scale_vars profiles_ini="$HOME/.mozilla/firefox/profiles.ini" profiles=$(grep '\[Profile' -A 2 "$profiles_ini" | grep 'Name=' | cut -d '=' -f 2) selected_profile=$(echo "$profiles" | wofi --dmenu --prompt "Choose Firefox Profile:") @@ -11,10 +13,10 @@ if [ "$XDG_SESSION_TYPE" == "wayland" ]; then firefox -P "$selected_profile"; fi else - # Получение списка профилей while read -r line; do export "$line"; done < /home/fs/scale_vars dpi="125" - profile=$(grep '\[Profile' -A 2 "$PROFILES_INI" | grep "Name=" | sed 's/Name=//' | rofi -dmenu -dpi $dpi) + # profile=$(grep '\[Profile' -A 2 "$PROFILES_INI" | grep "Name=" | sed 's/Name=//' | rofi -dmenu -dpi $dpi) + profile=$(grep '\[Profile' -A 2 "$PROFILES_INI" | grep "Name=" | sed 's/Name=//' | dmenu -l 15) if [ ! "$profile" = "" ]; then firefox -P "$profile"; fi diff --git a/roles/dots/files/home/bin/http b/roles/dots/files/home/bin/http index d477daca10a32c45fc9a8488ec71998789a8ee43..66a7f0466e0dfe937afd928b92645921f4399c45 100755 GIT binary patch delta 21155 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 O*~)xB03AKZ_WuFbSKf92 delta 13793 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 1: diff --git a/roles/dots/files/home/bin/rofi b/roles/dots/files/home/bin/rofi index 4b3a5bc..dafc17e 100755 --- a/roles/dots/files/home/bin/rofi +++ b/roles/dots/files/home/bin/rofi @@ -1,5 +1,10 @@ #!/bin/sh while read -r line; do export "$line"; done < /home/fs/scale_vars dpi="125" -rofi -modi drun -show drun Papirus -dpi $dpi -sorting-method fzf -sort -matching fuzzy -show-icons -icon-theme Papirus -# rofi -modi drun -show drun -show-icons -icon-theme Papirus -dpi $dpi -sorting-method fzf -sort -matching fuzzy + +if [ "$XDG_SESSION_TYPE" == "wayland" ]; then + wofi --show run +else + # rofi -modi drun -show drun Papirus -dpi $dpi -sorting-method fzf -sort -matching fuzzy -show-icons -icon-theme Papirus + dmenu_run -l 15 +fi diff --git a/roles/dots/files/home/bin/wifi_passwords.db b/roles/dots/files/home/bin/wifi_passwords.db new file mode 100644 index 0000000000000000000000000000000000000000..70032f8825b6f4ff736b4b9c370f3cbc11143730 GIT binary patch literal 12288 zcmeI%ze~eF6bJBki9~H_&w!BimVyBhOsR{DsRR)#YLdZD;Yt$-^oMOC6}SFf{vrMk zF0Q(H2?PuXT~)ph-X-r|!jaE*m*8%Y=CMfT%c;yom-dJ;IunA3xJq4R6-?c1RfW11 z^`_u-^t@>C57M|p+~F^qUO*oL5P$##AOHafKmY;|fB*y_@H+(72HUo5o2@T$Ihw?) zG)bcenPsc_a-7vG?cDd=&=aBCA9$kPYlt7?pnPg3r?CjV`%v8am)EX86j$ExP*ls5 zE&Eh6tQ(tAIvdAN*