From f4b71c30544773d5e9dae0b6ae78ba3cf234a699 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Fri, 25 Jul 2025 10:40:09 -0500 Subject: [PATCH] Implement fhackeditor, which opens or connects to an existing neovim instance --- config.toml | 69 +++++++++++-------- home/.config/jesseduffield/lazygit/config.yml | 2 + home/.config/neovide/config.toml | 1 + home/.config/zsh/02-env.zsh | 6 +- home/.config/zsh/04-aliases.zsh | 4 ++ home/.scripts/fhackeditor | 27 ++++++++ .../.scripts}/hibernate-lowbattery.sh | 0 {scripts => home/.scripts}/reboot-moria | 0 scripts/fhackeditor | 9 --- 9 files changed, 76 insertions(+), 42 deletions(-) create mode 100644 home/.config/jesseduffield/lazygit/config.yml create mode 100644 home/.config/neovide/config.toml create mode 100755 home/.scripts/fhackeditor rename {scripts => home/.scripts}/hibernate-lowbattery.sh (100%) rename {scripts => home/.scripts}/reboot-moria (100%) delete mode 100755 scripts/fhackeditor diff --git a/config.toml b/config.toml index 895ea0fd..44a40c5b 100644 --- a/config.toml +++ b/config.toml @@ -1,8 +1,7 @@ -#:schema ../../dotdrop-config-schema.json - [actions] -dconf-load = "dconf load / < ~/.config/dconf.ini" -kanagawa-compile = "vim +KanagawaCompile +qa" +dconf_load = "dconf load / < ~/.config/dconf.ini" +kanagawa_compile = "vim +KanagawaCompile +qa" +scripts_chmod = "chmod +x ~/.scripts/*" [config] backup = true @@ -17,6 +16,11 @@ longkey = false showdiff = false workdir = "~/.config/dotdrop" +[dotfiles.d_scripts] +dst = "~/.scripts" +src = ".scripts" +actions = ["scripts_chmod"] + [dotfiles.d_systemd] dst = "~/.config/systemd/user" src = ".config/systemd/user" @@ -28,7 +32,7 @@ src = ".config/mpv" [dotfiles.d_nvim] dst = "~/.config/nvim" src = ".config/nvim" -actions = ["kanagawa-compile"] +actions = ["kanagawa_compile"] instignore = ["*-lock.json"] [dotfiles."f_abcde.conf"] @@ -147,7 +151,7 @@ dst = "~/.pam_environment" [dotfiles."f_dconf.ini"] src = ".config/dconf.ini" dst = "~/.config/dconf.ini" -actions = ["dconf-load"] +actions = ["dconf_load"] [dotfiles."f_docker-config.json"] src = ".docker/config.json" @@ -167,11 +171,22 @@ dst = "~/.config/zellij/config.kdl" src = ".config/tmux/tmux.conf" dst = "~/.config/tmux/tmux.conf" +[dotfiles.f_neovide_config] +src = ".config/neovide/config.toml" +dst = "~/.config/neovide/config.toml" + +[dotfiles."f_lazygit_config"] +src = ".config/jesseduffield/lazygit/config.yml" +dst = "~/.config/jesseduffield/lazygit/config.yml" + [profiles.pacman] dotfiles = ["f_makepkg.conf", "f_paru.conf"] [profiles.terminal] dotfiles = [ + "d_scripts", + "f_lazygit_config", + "f_neovide_config", "d_nvim", "d_ssh", "d_zsh", @@ -216,23 +231,14 @@ dotfiles = [ "f_foot.ini", ] -[profiles.Mirkwood.variables] -wayland = true - [profiles.VentoyArch] include = ["pacman", "terminal", "media", "gpg"] dotfiles = ["f_dconf.ini", "f_fonts.conf"] -[profiles.VentoyArch.variables] -wayland = true - [profiles.Shire] include = ["pacman", "terminal", "media", "gpg"] dotfiles = ["f_dconf.ini", "f_fonts.conf"] -[profiles.Shire.variables] -wayland = true - [profiles.Moria] include = ["pacman", "terminal", "media", "gpg"] dotfiles = [ @@ -243,9 +249,6 @@ dotfiles = [ "d_systemd", ] -[profiles.Moria.variables] -wayland = true - [profiles.Tirion] include = ["terminal", "gpg"] @@ -256,24 +259,12 @@ include = ["pacman", "terminal"] include = ["terminal", "gpg"] dotfiles = ["f_librewolf_overrides", "f_dconf.ini", "d_systemd"] -[profiles.mko-laptop.variables] -wayland = true - [profiles.Isengard] include = ["terminal"] -[profiles.Isengard.variables] -distro_id = "termux" - [profiles.Edoras] include = ["terminal"] -[profiles.TakamakiPC] -include = ["terminal"] - -[profiles.TakamakiPC.variables] -wayland = false - [profiles.localhost] include = ["terminal"] @@ -282,3 +273,21 @@ include = ["terminal"] [profiles.Evendim] include = ["terminal", "pacman"] + +[profiles.Mirkwood.variables] +wayland = true + +[profiles.VentoyArch.variables] +wayland = true + +[profiles.Shire.variables] +wayland = true + +[profiles.Moria.variables] +wayland = true + +[profiles.mko-laptop.variables] +wayland = true + +[profiles.Isengard.variables] +distro_id = "termux" diff --git a/home/.config/jesseduffield/lazygit/config.yml b/home/.config/jesseduffield/lazygit/config.yml new file mode 100644 index 00000000..917725b4 --- /dev/null +++ b/home/.config/jesseduffield/lazygit/config.yml @@ -0,0 +1,2 @@ +os: + editCommand: 'fhackeditor' diff --git a/home/.config/neovide/config.toml b/home/.config/neovide/config.toml new file mode 100644 index 00000000..005f7e9a --- /dev/null +++ b/home/.config/neovide/config.toml @@ -0,0 +1 @@ +neovim-bin = "{{@@ env['HOME'] @@}}/.scripts/fhackeditor" diff --git a/home/.config/zsh/02-env.zsh b/home/.config/zsh/02-env.zsh index 35e31adf..0401eda6 100644 --- a/home/.config/zsh/02-env.zsh +++ b/home/.config/zsh/02-env.zsh @@ -43,8 +43,8 @@ export PATH="$HOME/.local/share/nvim/mason/bin:$PATH" # go path export GOPATH=~/.go -# Add dotfile scripts dir to path -export PATH="$PATH:$DOTREPO/scripts" +# Add scripts dir to path +export PATH="$PATH:$HOME/.scripts" # fzf settings export FD_COMMAND='fd -HLt' @@ -73,7 +73,7 @@ _fzf_complete_pass() { } # nvim ftw! -export EDITOR=nvim +export EDITOR='nvim' export PAGER="$EDITOR -R +\"lua require 'pager'\"" export GIT_PAGER="$EDITOR -c 'set ft=git' -R +\"lua require 'pager'\"" export PARU_PAGER="$PAGER -c 'set ft=PKGBUILD'" diff --git a/home/.config/zsh/04-aliases.zsh b/home/.config/zsh/04-aliases.zsh index 7c9f0621..bfda24f3 100644 --- a/home/.config/zsh/04-aliases.zsh +++ b/home/.config/zsh/04-aliases.zsh @@ -18,6 +18,10 @@ alias o='xdg-open' # and handling merges alias dv='nvim +DiffviewOpen' +alias nvim="fhackeditor" +alias vim='nvim' +alias vi='nvim' + # Rename grc alias from forgit since it # collides with the grc colorizer forgit_revert_commit=fgrc diff --git a/home/.scripts/fhackeditor b/home/.scripts/fhackeditor new file mode 100755 index 00000000..44e35b5b --- /dev/null +++ b/home/.scripts/fhackeditor @@ -0,0 +1,27 @@ +#!/bin/sh +# Script to launch a new NeoVim instance or reuse an existing one + +# Exit on error +set -e + +# Settings +SOCKET="/tmp/nvim.{{@@ env['USER'] @@}}/server.pipe" + +# Convert each argument to absolute path +abs_args="" +for arg in "$@"; do + case "$arg" in + /*) abs="$arg" ;; # already absolute + *) abs="$(pwd)/$arg" ;; + esac + abs_args="$abs_args \"$abs\"" +done + +if [ -S "$SOCKET" ]; then + # Pipe exists and is a socket — reuse it + echo "Sending file to existing NeoVim instance" + eval exec nvim --server "$SOCKET" --remote $abs_args +else + # Socket doesn't exist — start new instance + exec nvim --listen "$SOCKET" "$@" +fi diff --git a/scripts/hibernate-lowbattery.sh b/home/.scripts/hibernate-lowbattery.sh similarity index 100% rename from scripts/hibernate-lowbattery.sh rename to home/.scripts/hibernate-lowbattery.sh diff --git a/scripts/reboot-moria b/home/.scripts/reboot-moria similarity index 100% rename from scripts/reboot-moria rename to home/.scripts/reboot-moria diff --git a/scripts/fhackeditor b/scripts/fhackeditor deleted file mode 100755 index 7a1d4934..00000000 --- a/scripts/fhackeditor +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# Script to launch a graphical editor if in graphical mode, -# terminal editor otherwise - -if [ -n "$DISPLAY" ] || [ -n "$WAYLAND_DISPLAY" ]; then - echo "Running in graphical mode" -else - echo "Running in TTY mode" -fi