diff --git a/.gitignore b/.gitignore index 4489fb8..9411bb9 100644 --- a/.gitignore +++ b/.gitignore @@ -33,8 +33,5 @@ common/fzfrc gitconfig -spacemacs/ lazy-lock.json -tools/doom/custom.el -tools/doom/custom.el diff --git a/bootstrap/set_symlink_unix.sh b/bootstrap/set_symlink_unix.sh index 90d9ad0..f7269be 100644 --- a/bootstrap/set_symlink_unix.sh +++ b/bootstrap/set_symlink_unix.sh @@ -36,39 +36,50 @@ linkDots=( ["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf" ["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc" ["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl" - ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d" + # ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d" + ["$DOTFILES/tools/doom"]="$HOME/.config/doom" ["$DOTFILES/tools/fish"]="$HOME/.config/fish" ["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython" ["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim" - ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" ["$DOTFILES/tools/yazi"]="$HOME/.config/yazi" - ["$DOTFILES/tools/zed"]="$HOME/.config/zed" ["$DOTFILES/tools/zsh/common.zshrc"]="$ZDOTDIR/.zshrc" - ["$DOTFILES/tools/zsh/.zshenv"]="$ZDOTDIR/.zshenv" + ["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv" + ["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1" ) if [ $(uname) = "Darwin" ]; then + echo "[INFO] Running on macOS" linkDots+=( ["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner" ["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc" ["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc" ["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc" + ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" + ["$DOTFILES/tools/zed"]="$HOME/.config/zed" + ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" ) else + echo "[INFO] Running on Linux" linkDots+=( ["$DOTFILES/common/inputrc"]="$HOME/.inputrc" ) - if [ -n "$WSL_DISTRO_NAME" ]; then + if [ "$(uname -r)" = *Microsoft* ]; then + echo "[INFO] Running on WSL1" + : # NOP else + echo "[INFO] Running on Native Linux" linkDots+=( ["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome" ["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr" ["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar" ["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout" ["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config" + ["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm" + ["$DOTFILES/tools/zed"]="$HOME/.config/zed" + ["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek" ) for kde in "$DOTFILES/platforms/linux/kde/"*; do - linkDots=["$kde"]="$HOME/.config/kde/$(basename $kde)" + linkDots+=["$kde"]="$HOME/.config/kde/$(basename $kde)" # echo "Linking $kde to $HOME/.config/kde/$(basename $kde)" done echo "[INFO] Setting up system environment variables" @@ -79,14 +90,15 @@ fi echo "[INFO] Setting up symbolic links" for src in "${!linkDots[@]}"; do + echo "Linking $src to ${linkDots[$src]}" dest="${linkDots[$src]}" if [ -d "$src" ]; then - mv $dest $dest.bak + test -d $dest && mv $dest $dest.bak mkdir -p $dest ln -sf $src $dest elif [ -f "$src" ]; then dest_parent=$(dirname $dest) - mkdir -p $dest_parent + test -d $dest_parent || mkdir -p $dest_parent ln -sf $src $dest else echo "[ERROR] $src does not exist" @@ -94,12 +106,36 @@ for src in "${!linkDots[@]}"; do done echo "[INFO] Installing zsh plugins" -git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git $ZDOTDIR/plugins/zsh-autosuggestions -git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git $ZDOTDIR/plugins/zsh-syntax-highlighting -git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git $ZDOTDIR/plugins/zsh-history-substring-search +test -d $ZDOTDIR/plugins/zsh-autosuggestions || git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git $ZDOTDIR/plugins/zsh-autosuggestions +test -d $ZDOTDIR/plugins/zsh-syntax-highlighting || git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git $ZDOTDIR/plugins/zsh-syntax-highlighting +test -d $ZDOTDIR/plugins/zsh-history-substring-search || git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git $ZDOTDIR/plugins/zsh-history-substring-search +test -d $ZDOTDIR/plugins/zsh-completions || git clone --depth 1 https://github.com/zsh-users/zsh-completions.git $ZDOTDIR/plugins/zsh-completions + +echo "[INFO] Setting up some local directories" +test -d $XDG_CACHE_HOME || mkdir -p $XDG_CACHE_HOME +test -d $XDG_DATA_HOME || mkdir -p $XDG_DATA_HOME +test -d $XDG_STATE_HOME || mkdir -p $XDG_STATE_HOME +test -d ~/.local/state/zsh || mkdir -p ~/.local/state/zsh + + echo "[INFO] Copying example files" +test -d $XDG_CONFIG_HOME/git || mkdir -p $XDG_CONFIG_HOME/git cp $DOTFILES/common/gitconfig.example $XDG_CONFIG_HOME/git/config +echo "[INFO] Don't forget to update your gitconfig!" + +echo "[INFO] Installing DOOM Emacs" +echo "[ACTION] Request Human Takeover" +test -d ~/.config/emacs && mv ~/.config/emacs ~/.config/emacs.bak +git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs +~/.config/emacs/bin/doom install +~/.config/emacs/bin/doom sync + +echo "[INFO] Installing Emacs-Rime" +git clnh https://github.com/js0ny/Rime.git ~/.config/emacs/.local/cache/rime + + +echo "[INFO] Done!" export ZDOTDIR export DOTFILES diff --git a/platforms/win/glzr/glazewm/config.yaml b/platforms/win/glzr/glazewm/config.yaml index ee52269..0dcac99 100644 --- a/platforms/win/glzr/glazewm/config.yaml +++ b/platforms/win/glzr/glazewm/config.yaml @@ -256,10 +256,10 @@ keybindings: bindings: ["lwin+r"] # Focus the next/previous active workspace defined in `workspaces` config. - - commands: ["focus --next-active-workspace"] - bindings: ["alt+s"] - - commands: ["focus --prev-active-workspace"] - bindings: ["alt+a"] + # - commands: ["focus --next-active-workspace"] + # bindings: ["alt+s"] + # - commands: ["focus --prev-active-workspace"] + # bindings: ["alt+a"] # Focus the workspace that last had focus. - commands: ["focus --recent-workspace"] diff --git a/platforms/win/wslgconfig b/platforms/win/wslgconfig new file mode 100644 index 0000000..c83bfc5 --- /dev/null +++ b/platforms/win/wslgconfig @@ -0,0 +1,2 @@ +[system-distro-env] +WESTON_RDP_DEBUG_DESKTOP_SCALING_FACTOR=200 diff --git a/tools/doom/config.el b/tools/doom/config.el index ffd59fa..4bc8d82 100644 --- a/tools/doom/config.el +++ b/tools/doom/config.el @@ -21,8 +21,24 @@ ;; See 'C-h v doom-font' for documentation and more examples of what they ;; accept. For example: ;; -(setq doom-font (font-spec :family "Iosevka Nerd Font Propo" :size 14 :weight 'semi-light) - doom-variable-pitch-font (font-spec :family "JetBrainsMono Nerd Font" :size 13)) +;; https://emacs-china.org/t/doom-emacs/23513/13 +(setq doom-font (font-spec :family "Iosevka Nerd Font Propo" :size 14) + doom-serif-font doom-font + doom-symbol-font (font-spec :family "LXGW WenKai Mono") + doom-variable-pitch-font (font-spec :family "LXGW WenKai Mono" :weight 'extra-bold)) + +;; 如果不把这玩意设置为 nil, 会默认去用 fontset-default 来展示, 配置无效 +(setq use-default-font-for-symbols nil) + +;; Doom 的字体加载顺序问题, 如果不设定这个 hook, 配置会被覆盖失效 +(add-hook! 'after-setting-font-hook + (set-fontset-font t 'latin (font-spec :family "Iosevka Nerd Font Propo")) + (set-fontset-font t 'symbol (font-spec :family "Symbola")) + (set-fontset-font t 'mathematical (font-spec :family "Symbola")) + (set-fontset-font t 'emoji (font-spec :family "Symbola"))) + +;; (dolist (charset '(kana han cjk-misc bopomofo)) +;; (set-fontset-font t charset (font-spec :family "LXGW WenKai Mono" :size 16))) ;; ;; If you or Emacs can't find your font, use 'M-x describe-font' to look them ;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to @@ -94,5 +110,12 @@ (load! "org.el") (after! evil-matchit - (global-evil-matchit-mode 1) - ) + (global-evil-matchit-mode 1) + ) + + +(use-package! rime + :config + (setq default-input-method "rime") + (add-hook! (org-mode markdown-mode) (activate-input-method default-input-method)) + ) diff --git a/tools/doom/evil.el b/tools/doom/evil.el index cadf9e2..2132bc8 100644 --- a/tools/doom/evil.el +++ b/tools/doom/evil.el @@ -12,4 +12,7 @@ :nv "I" 'evil-next-buffer :nvom "N" '(lambda () (interactive) (evil-next-line 5)) ; 5n :nvom "E" '(lambda () (interactive) (evil-previous-line 5)) ; 5e + :nvom "C-w n" 'evil-window-down + :nvom "C-w e" 'evil-window-up + :nvom "C-w i" 'evil-window-right ) diff --git a/tools/doom/init.el b/tools/doom/init.el index 339df31..d00b2e2 100644 --- a/tools/doom/init.el +++ b/tools/doom/init.el @@ -16,7 +16,8 @@ (doom! :input ;;bidi ; (tfel ot) thgir etirw uoy gnipleh - chinese + ;;; 关闭 chinese 以启用 best Chinese IME + ;; chinese ;;japanese ;;layout ; auie,ctsrnm is the superior home row @@ -75,7 +76,7 @@ vc ; version-control and Emacs, sitting in a tree :term - ;;eshell ; the elisp shell that works everywhere + eshell ; the elisp shell that works everywhere ;;shell ; simple shell REPL for Emacs ;;term ; basic terminal emulator for Emacs ;;vterm ; the best terminal emulation in Emacs diff --git a/tools/doom/packages.el b/tools/doom/packages.el index 155328e..82fc249 100644 --- a/tools/doom/packages.el +++ b/tools/doom/packages.el @@ -52,3 +52,4 @@ (package! copilot :recipe (:host github :repo "copilot-emacs/copilot.el" :files ("*.el"))) (package! evil-matchit) +(package! rime) diff --git a/tools/emacs.d/lisp/init-file.el b/tools/emacs.d/lisp/init-file.el index ff53a14..222f9f4 100644 --- a/tools/emacs.d/lisp/init-file.el +++ b/tools/emacs.d/lisp/init-file.el @@ -31,12 +31,15 @@ (:map global-map ("M-0" . treemacs-select-window) ("C-x t 1" . treemacs-delete-other-windows) - ("C-x t t" . treemacs) + ;; ("C-x t t" . treemacs) ("C-x t d" . treemacs-select-directory) ("C-x t B" . treemacs-bookmark) ("C-x t C-t" . treemacs-find-file) ("C-x t M-t" . treemacs-find-tag) ) + :config + (evil-leader/set-key + "ft" 'treemacs) ) (use-package treemacs-evil diff --git a/tools/wezterm/.gitignore b/tools/wezterm/.gitignore index 604ed6b..07b7c93 100644 --- a/tools/wezterm/.gitignore +++ b/tools/wezterm/.gitignore @@ -8,5 +8,8 @@ # ln -sf $DOTFILES/tools/wezterm $XDG_CONFIG_HOME/wezterm # New-Item -ItemType SymbolicLink -Target $DOTFILES\tools\wezterm -Path $Env:XDG_CONFIG_HOME\wezterm +# In windows, many cache & logs are stored in %APPDATA%\wezterm + *.json check_update +plugins \ No newline at end of file diff --git a/tools/wezterm/appearance.lua b/tools/wezterm/appearance.lua index ab90d01..318f1bc 100644 --- a/tools/wezterm/appearance.lua +++ b/tools/wezterm/appearance.lua @@ -23,10 +23,12 @@ return function(config) } -- Cursor config.animation_fps = 120 - config.cursor_blink_ease_in = "EaseOut" - config.cursor_blink_ease_out = "EaseOut" - config.default_cursor_style = "BlinkingBlock" - config.cursor_blink_rate = 650 + if not os_type.is_win then -- This is sooooooo slow on Windows + config.cursor_blink_ease_in = "EaseOut" + config.cursor_blink_ease_out = "EaseOut" + config.default_cursor_style = "BlinkingBlock" + config.cursor_blink_rate = 650 + end -- Visual Bell config.visual_bell = { fade_in_function = "EaseIn",