Allow custom editor, like we do custom terminal

This commit is contained in:
David Heinemeier Hansson
2025-09-16 15:13:09 +02:00
parent 7e1c88b932
commit f883aa1331
8 changed files with 58 additions and 34 deletions

13
bin/omarchy-launch-editor Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
case "$EDITOR" in
nvim | vim | nano | micro | hx)
exec setsid uwsm app -- "$TERMINAL" -e "$EDITOR" "$@"
;;
code | codium | subl | gedit | kate | zeditor)
exec setsid uwsm app -- "$EDITOR" "$@"
;;
*)
exec setsid uwsm app -- "$TERMINAL" -e nvim "$@"
;;
esac

View File

@@ -44,9 +44,9 @@ present_terminal() {
omarchy-launch-floating-terminal-with-presentation $1 omarchy-launch-floating-terminal-with-presentation $1
} }
edit_in_nvim() { open_in_editor() {
notify-send "Editing config file" "$1" notify-send "Editing config file" "$1"
$TERMINAL -e nvim "$1" omarchy-launch-editor "$1"
} }
install() { install() {
@@ -142,9 +142,9 @@ show_style_menu() {
*Theme*) show_theme_menu ;; *Theme*) show_theme_menu ;;
*Font*) show_font_menu ;; *Font*) show_font_menu ;;
*Background*) omarchy-theme-bg-next ;; *Background*) omarchy-theme-bg-next ;;
*Hyprland*) edit_in_nvim ~/.config/hypr/looknfeel.conf ;; *Hyprland*) open_in_editor ~/.config/hypr/looknfeel.conf ;;
*Screensaver*) edit_in_nvim ~/.config/omarchy/branding/screensaver.txt ;; *Screensaver*) open_in_editor ~/.config/omarchy/branding/screensaver.txt ;;
*About*) edit_in_nvim ~/.config/omarchy/branding/about.txt ;; *About*) open_in_editor ~/.config/omarchy/branding/about.txt ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
@@ -171,7 +171,7 @@ show_setup_menu() {
local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors" local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n󰍹 Monitors"
[ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings" [ -f ~/.config/hypr/bindings.conf ] && options="$options\n Keybindings"
[ -f ~/.config/hypr/input.conf ] && options="$options\n Input" [ -f ~/.config/hypr/input.conf ] && options="$options\n Input"
options="$options\n󰱔 DNS\n Config\n󰈷 Fingerprint\n Fido2" options="$options\n Defaults\n󰱔 DNS\n Security\n Config"
case $(menu "Setup" "$options") in case $(menu "Setup" "$options") in
*Audio*) $TERMINAL --class=Wiremix -e wiremix ;; *Audio*) $TERMINAL --class=Wiremix -e wiremix ;;
@@ -184,13 +184,13 @@ show_setup_menu() {
blueberry blueberry
;; ;;
*Power*) show_setup_power_menu ;; *Power*) show_setup_power_menu ;;
*Monitors*) edit_in_nvim ~/.config/hypr/monitors.conf ;; *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;;
*Keybindings*) edit_in_nvim ~/.config/hypr/bindings.conf ;; *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;;
*Input*) edit_in_nvim ~/.config/hypr/input.conf ;; *Input*) open_in_editor ~/.config/hypr/input.conf ;;
*Defaults*) open_in_editor ~/.config/uwsm/default ;;
*DNS*) present_terminal omarchy-setup-dns ;; *DNS*) present_terminal omarchy-setup-dns ;;
*Security*) show_setup_security_menu ;;
*Config*) show_setup_config_menu ;; *Config*) show_setup_config_menu ;;
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
@@ -207,18 +207,26 @@ show_setup_power_menu() {
show_setup_config_menu() { show_setup_config_menu() {
case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in case $(menu "Setup" " Hyprland\n Hypridle\n Hyprlock\n Hyprsunset\n Swayosd\n󰌧 Walker\n󰍜 Waybar\n󰞅 XCompose") in
*Hyprland*) edit_in_nvim ~/.config/hypr/hyprland.conf ;; *Hyprland*) open_in_editor ~/.config/hypr/hyprland.conf ;;
*Hypridle*) edit_in_nvim ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;; *Hypridle*) open_in_editor ~/.config/hypr/hypridle.conf && omarchy-restart-hypridle ;;
*Hyprlock*) edit_in_nvim ~/.config/hypr/hyprlock.conf ;; *Hyprlock*) open_in_editor ~/.config/hypr/hyprlock.conf ;;
*Hyprsunset*) edit_in_nvim ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;; *Hyprsunset*) open_in_editor ~/.config/hypr/hyprsunset.conf && omarchy-restart-hyprsunset ;;
*Swayosd*) edit_in_nvim ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;; *Swayosd*) open_in_editor ~/.config/swayosd/config.toml && omarchy-restart-swayosd ;;
*Walker*) edit_in_nvim ~/.config/walker/config.toml && omarchy-restart-walker ;; *Walker*) open_in_editor ~/.config/walker/config.toml && omarchy-restart-walker ;;
*Waybar*) edit_in_nvim ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;; *Waybar*) open_in_editor ~/.config/waybar/config.jsonc && omarchy-restart-waybar ;;
*XCompose*) edit_in_nvim ~/.XCompose && omarchy-restart-xcompose ;; *XCompose*) open_in_editor ~/.XCompose && omarchy-restart-xcompose ;;
*) show_main_menu ;; *) show_main_menu ;;
esac esac
} }
show_setup_security_menu() {
case $(menu "Setup" "󰈷 Fingerprint\n Fido2") in
*Fingerprint*) present_terminal omarchy-setup-fingerprint ;;
*Fido2*) present_terminal omarchy-setup-fido2 ;;
*) show_setup_menu ;;
esac
}
show_install_menu() { show_install_menu() {
case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in case $(menu "Install" "󰣇 Package\n󰣇 AUR\n Web App\n TUI\n Service\n Style\n󰵮 Development\n Editor\n󱚤 AI\n Gaming") in
*Package*) terminal omarchy-pkg-install ;; *Package*) terminal omarchy-pkg-install ;;

View File

@@ -7,7 +7,7 @@ bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private bindd = SUPER SHIFT, B, Browser (private), exec, $browser --private
bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify bindd = SUPER, M, Music, exec, omarchy-launch-or-focus spotify
bindd = SUPER, N, Neovim, exec, $terminal -e nvim bindd = SUPER, N, Editor, exec, omarchy-launch-editor
bindd = SUPER, T, Activity, exec, $terminal -e btop bindd = SUPER, T, Activity, exec, $terminal -e btop
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker bindd = SUPER, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop" bindd = SUPER, G, Signal, exec, omarchy-launch-or-focus signal "uwsm app -- signal-desktop"

4
config/uwsm/default Normal file
View File

@@ -0,0 +1,4 @@
# Changes require a relaunch of Hyprland to take effect.
export TERMINAL=alacritty
export EDITOR=nvim

View File

@@ -4,8 +4,8 @@
export OMARCHY_PATH=$HOME/.local/share/omarchy export OMARCHY_PATH=$HOME/.local/share/omarchy
export PATH=$OMARCHY_PATH/bin/:$PATH export PATH=$OMARCHY_PATH/bin/:$PATH
# Set terminal used by all default commands # Set default terminal and editor
export TERMINAL=alacritty source ~/.config/uwsm/default
# Activate mise if present on the system # Activate mise if present on the system
omarchy-cmd-present mise && eval "$(mise activate bash)" omarchy-cmd-present mise && eval "$(mise activate bash)"

View File

@@ -1,4 +1,3 @@
# Editor used by CLI # Editor used by CLI
export EDITOR="nvim"
export SUDO_EDITOR="$EDITOR" export SUDO_EDITOR="$EDITOR"
export BAT_THEME=ansi export BAT_THEME=ansi

View File

@@ -6,9 +6,3 @@ source ~/.local/share/omarchy/default/bash/rc
# #
# Make an alias for invoking commands you use constantly # Make an alias for invoking commands you use constantly
# alias p='python' # alias p='python'
#
# Use VSCode instead of neovim as your default editor
# export EDITOR="code"
#
# Set a custom prompt with the directory revealed (alternatively use https://starship.rs)
# PS1="\W \[\e]0;\w\a\]$PS1"

View File

@@ -1,10 +1,16 @@
echo "Ensure $TERMINAL is set in uwsm env so entire system can rely on it" echo "Set \$TERMINAL and \$EDITOR in ~/.config/uwsm/default so entire system can rely on it"
if ! grep -q "export TERMINAL" ~/.config/uwsm/env; then # Set terminal and editor default in uwsm
omarchy-refresh-config uwsm/default
omarchy-refresh-config uwsm/env omarchy-refresh-config uwsm/env
omarchy-state set relaunch-required omarchy-state set relaunch-required
fi
# Ensure scrolltouchpad setting applies to all terminals
if grep -q "scrolltouchpad 1.5, class:Alacritty" ~/.config/hypr/input.conf; then if grep -q "scrolltouchpad 1.5, class:Alacritty" ~/.config/hypr/input.conf; then
sed -i 's/windowrule = scrolltouchpad 1\.5, class:Alacritty/windowrule = scrolltouchpad 1.5, tag:terminal/' ~/.config/hypr/input.conf sed -i 's/windowrule = scrolltouchpad 1\.5, class:Alacritty/windowrule = scrolltouchpad 1.5, tag:terminal/' ~/.config/hypr/input.conf
fi fi
# Use default editor for keybinding
if grep -q "bindd = SUPER, N, Neovim" ~/.config/hypr/bindings.conf; then
sed -i '/SUPER, N, Neovim, exec/ c\bindd = SUPER, N, Editor, exec, omarchy-launch-editor' ~/.config/hypr/bindings.conf
fi