diff --git a/bin/omarchy-font-set b/bin/omarchy-font-set index d8f1974285..0a9cdbb98c 100755 --- a/bin/omarchy-font-set +++ b/bin/omarchy-font-set @@ -18,6 +18,10 @@ if [[ -n "$font_name" && "$font_name" != "CNCLD" ]]; then pkill -SIGUSR2 ghostty fi + if [[ -f ~/.config/wezterm/wezterm.lua ]]; then + sed -i "s/wezterm.font(\".*\")/wezterm.font(\"$font_name\")/g" ~/.config/wezterm/wezterm.lua + fi + sed -i "s/font_family = .*/font_family = $font_name/g" ~/.config/hypr/hyprlock.conf sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/waybar/style.css sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css diff --git a/bin/omarchy-install-terminal b/bin/omarchy-install-terminal index e962f3f3be..0cff6182c7 100755 --- a/bin/omarchy-install-terminal +++ b/bin/omarchy-install-terminal @@ -1,7 +1,7 @@ #!/bin/bash if (($# == 0)); then - echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]" + echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty|wezterm]" exit 1 fi @@ -12,6 +12,7 @@ case "$package" in alacritty) desktop_id="Alacritty.desktop" ;; ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;; kitty) desktop_id="kitty.desktop" ;; +wezterm) desktop_id="org.wezfurlong.wezterm.desktop" ;; *) echo "Unknown terminal: $package" exit 1 diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 44b38f0e58..821ee522f4 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -43,8 +43,14 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do --override window_padding_width=0 \ -e omarchy-cmd-screensaver ;; + *wezterm*) + hyprctl dispatch exec -- \ + wezterm --config-file ~/.local/share/omarchy/default/wezterm/screensaver.lua \ + start --class org.omarchy.screensaver \ + -- omarchy-cmd-screensaver + ;; *) - notify-send "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty" + notify-send "✋ Screensaver only runs in Alacritty, Ghostty, Kitty, or WezTerm" ;; esac done diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 5ddf81f3ea..7668480dcb 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -261,10 +261,11 @@ show_install_editor_menu() { } show_install_terminal_menu() { - case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in + case $(menu "Install" " Alacritty\n Ghostty\n Kitty\n WezTerm") in *Alacritty*) install_terminal "alacritty" ;; *Ghostty*) install_terminal "ghostty" ;; *Kitty*) install_terminal "kitty" ;; + *WezTerm*) aur_install "wezterm-git" ;; *) show_install_menu ;; esac } diff --git a/bin/omarchy-restart-terminal b/bin/omarchy-restart-terminal index 6de616ed8b..e34c5a8201 100755 --- a/bin/omarchy-restart-terminal +++ b/bin/omarchy-restart-terminal @@ -11,3 +11,7 @@ fi if pgrep -x ghostty; then killall -SIGUSR2 ghostty fi + +if pgrep -x wezterm; then + killall -SIGUSR3 wezterm +fi diff --git a/bin/omarchy-theme-set b/bin/omarchy-theme-set index 4040426578..8672e37f70 100755 --- a/bin/omarchy-theme-set +++ b/bin/omarchy-theme-set @@ -39,6 +39,7 @@ omarchy-theme-set-browser omarchy-theme-set-vscode omarchy-theme-set-cursor omarchy-theme-set-obsidian +omarchy-theme-set-wezterm # Call hook on theme set omarchy-hook theme-set "$THEME_NAME" diff --git a/bin/omarchy-theme-set-wezterm b/bin/omarchy-theme-set-wezterm new file mode 100755 index 0000000000..60feaf54d7 --- /dev/null +++ b/bin/omarchy-theme-set-wezterm @@ -0,0 +1,18 @@ +#!/bin/bash + +WEZTERM_THEME=~/.config/omarchy/current/theme/wezterm.lua + +if omarchy-cmd-present wezterm; then + if [[ -f "$WEZTERM_THEME" ]]; then + # Ensure the wezterm config directory exists + mkdir -p ~/.config/wezterm + + # Create or update the symlink from current theme to wezterm config + ln -snf "$WEZTERM_THEME" ~/.config/wezterm/theme.lua + + # Reload wezterm instances if any are running + if pgrep -x wezterm >/dev/null; then + killall -SIGUSR3 wezterm + fi + fi +fi diff --git a/config/wezterm/bindings.lua b/config/wezterm/bindings.lua new file mode 100644 index 0000000000..9f29ce0cd9 --- /dev/null +++ b/config/wezterm/bindings.lua @@ -0,0 +1,40 @@ +local wezterm = require("wezterm") +local act = wezterm.action +local bindings = {} + +function bindings.apply_to_config(config) + config.keys = { + { + key = "T", + mods = "CTRL|SHIFT", + action = act.SpawnTab("DefaultDomain"), + }, + { + key = "L", + mods = "CTRL|SHIFT", + action = act.ActivateTabRelative(1), + }, + { + key = "H", + mods = "CTRL|SHIFT", + action = act.ActivateTabRelative(-1), + }, + { + key = "K", + mods = "CTRL|SHIFT", + action = act.MoveTabRelative(1), + }, + { + key = "J", + mods = "CTRL|SHIFT", + action = act.MoveTabRelative(-1), + }, + { + key = "W", + mods = "CTRL|SHIFT", + action = act.CloseCurrentTab({ confirm = true }), + }, + } +end + +return bindings diff --git a/config/wezterm/wezterm.lua b/config/wezterm/wezterm.lua new file mode 100644 index 0000000000..6ac3ce9bdb --- /dev/null +++ b/config/wezterm/wezterm.lua @@ -0,0 +1,28 @@ +local wezterm = require("wezterm") +local bindings = require("bindings") +local theme = require("theme") +local config = wezterm.config_builder() + +-- Edit keybinds in ~/.config/wezterm/bindings.lua +bindings.apply_to_config(config) + +-- Theme to be updated by theme switcher +theme.apply_to_config(config) + +-- Font +config.font = wezterm.font("JetBrains Mono") +config.font_size = 9 + +-- Window +config.window_close_confirmation = "NeverPrompt" +config.window_decorations = "NONE" +config.window_padding = { + left = 14, + right = 14, + top = 14, + bottom = 14, +} +config.hide_tab_bar_if_only_one_tab = true +config.use_fancy_tab_bar = false + +return config diff --git a/default/wezterm/screensaver.lua b/default/wezterm/screensaver.lua new file mode 100644 index 0000000000..5b5fd4d189 --- /dev/null +++ b/default/wezterm/screensaver.lua @@ -0,0 +1,23 @@ +local wezterm = require("wezterm") +local config = wezterm.config_builder() + +-- Font +config.font_size = 18 + +-- Window +config.window_close_confirmation = "NeverPrompt" +config.window_decorations = "NONE" +config.window_padding = { + left = 0, + right = 0, + top = 0, + bottom = 0, +} +config.colors = { + background = "black", + cursor_bg = "black", +} +config.window_background_opacity = 1.0 +config.enable_tab_bar = false + +return config diff --git a/install/config/theme.sh b/install/config/theme.sh index a4ed8b3ef2..d83aa90145 100644 --- a/install/config/theme.sh +++ b/install/config/theme.sh @@ -20,6 +20,9 @@ ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current mkdir -p ~/.config/mako ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config +mkdir -p ~/.config/wezterm +ln -snf ~/.config/omarchy/current/theme/wezterm.lua ~/.config/wezterm/theme.lua + # Add managed policy directories for Chromium and Brave for theme changes sudo mkdir -p /etc/chromium/policies/managed sudo chmod a+rw /etc/chromium/policies/managed diff --git a/themes/catppuccin-latte/wezterm.lua b/themes/catppuccin-latte/wezterm.lua new file mode 100644 index 0000000000..c442a10f22 --- /dev/null +++ b/themes/catppuccin-latte/wezterm.lua @@ -0,0 +1,8 @@ +-- Catppuccin Latte Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Catppuccin Latte (Gogh)" +end + +return theme diff --git a/themes/catppuccin/wezterm.lua b/themes/catppuccin/wezterm.lua new file mode 100644 index 0000000000..e3ae5284be --- /dev/null +++ b/themes/catppuccin/wezterm.lua @@ -0,0 +1,8 @@ +-- Catppuccin Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Catppuccin Mocha (Gogh)" +end + +return theme diff --git a/themes/ethereal/wezterm.lua b/themes/ethereal/wezterm.lua new file mode 100644 index 0000000000..927ce3476b --- /dev/null +++ b/themes/ethereal/wezterm.lua @@ -0,0 +1,40 @@ +-- Ethereal Theme +local theme = {} + +function theme.apply_to_config(config) + config.colors({ + -- Background & Foreground + foreground = "#ffcead", + background = "#060B1E", + + -- Standard colors + ansi = { + "#060B1E", + "#ED5B5A", + "#92a593", + "#E9BB4F", + "#7d82d9", + "#c89dc1", + "#a3bfd1", + "#F99957", + }, + + -- Bright colors + brights = { + "#6d7db6", + "#faaaa9", + "#c4cfc4", + "#f7dc9c", + "#c2c4f0", + "#ead7e7", + "#dfeaf0", + "#ffcead", + }, + + -- Cursor colors + cursor_bg = "#ffcead", + cursor_fg = "#060B1E", + }) +end + +return theme diff --git a/themes/everforest/wezterm.lua b/themes/everforest/wezterm.lua new file mode 100644 index 0000000000..90d9bd1604 --- /dev/null +++ b/themes/everforest/wezterm.lua @@ -0,0 +1,8 @@ +-- Everforest Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Everforest Dark Hard (Gogh)" +end + +return theme diff --git a/themes/flexoki-light/wezterm.lua b/themes/flexoki-light/wezterm.lua new file mode 100644 index 0000000000..b244ead509 --- /dev/null +++ b/themes/flexoki-light/wezterm.lua @@ -0,0 +1,8 @@ +-- Flexoki-Light Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "flexoki-light" +end + +return theme diff --git a/themes/gruvbox/wezterm.lua b/themes/gruvbox/wezterm.lua new file mode 100644 index 0000000000..dad6c5dd47 --- /dev/null +++ b/themes/gruvbox/wezterm.lua @@ -0,0 +1,8 @@ +-- Gruvbox Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Gruvbox Dark (Gogh)" +end + +return theme diff --git a/themes/hackerman/wezterm.lua b/themes/hackerman/wezterm.lua new file mode 100644 index 0000000000..1c7dbe3052 --- /dev/null +++ b/themes/hackerman/wezterm.lua @@ -0,0 +1,40 @@ +-- Hackerman Theme +local theme = {} + +function theme.apply_to_config(config) + config.colors({ + -- Background & Foreground + foreground = "#ddf7ff", + background = "#0B0C16", + + -- Standard colors + ansi = { + "#0B0C16", + "#50f872", + "#4fe88f", + "#50f7d4", + "#829dd4", + "#86a7df", + "#7cf8f7", + "#85E1FB", + }, + + -- Bright colors + brights = { + "#6a6e95", + "#85ff9d", + "#9cf7c2", + "#a4ffec", + "#c4d2ed", + "#cddbf4", + "#d1fffe", + "#ddf7ff", + }, + + -- Cursor colors + cursor_bg = "#ddf7ff", + cursor_fg = "#0B0C16", + }) +end + +return theme diff --git a/themes/kanagawa/wezterm.lua b/themes/kanagawa/wezterm.lua new file mode 100644 index 0000000000..38dfe6ced5 --- /dev/null +++ b/themes/kanagawa/wezterm.lua @@ -0,0 +1,8 @@ +-- Kanagawa Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "kanagawabones" +end + +return theme diff --git a/themes/matte-black/wezterm.lua b/themes/matte-black/wezterm.lua new file mode 100644 index 0000000000..e4b0e959ef --- /dev/null +++ b/themes/matte-black/wezterm.lua @@ -0,0 +1,44 @@ +-- Matte-Black Theme +local theme = {} + +function theme.apply_to_config(config) + config.colors({ + -- Background & Foreground + foreground = "#bebebe", + background = "#121212", + + -- Standard colors + ansi = { + "#333333", + "#D35F5F", + "#FFC107", + "#b91c1c", + "#e68e0d", + "#D35F5F", + "#bebebe", + "#bebebe", + }, + + -- Bright colors + brights = { + "#8a8a8d", + "#B91C1C", + "#FFC107", + "#b90a0a", + "#f59e0b", + "#B91C1C", + "#eaeaea", + "#ffffff", + }, + + -- Cursor colors + cursor_bg = "#eaeaea", + cursor_fg = "#121212", + + -- Selection colors + selection_fg = "#bebebe", + selection_bg = "#333333", + }) +end + +return theme diff --git a/themes/nord/wezterm.lua b/themes/nord/wezterm.lua new file mode 100644 index 0000000000..b1d44700bc --- /dev/null +++ b/themes/nord/wezterm.lua @@ -0,0 +1,8 @@ +-- Nord Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Nord (Gogh)" +end + +return theme diff --git a/themes/osaka-jade/wezterm.lua b/themes/osaka-jade/wezterm.lua new file mode 100644 index 0000000000..11cee55436 --- /dev/null +++ b/themes/osaka-jade/wezterm.lua @@ -0,0 +1,40 @@ +-- Osaka Jade Theme +local theme = {} + +function theme.apply_to_config(config) + config.colors({ + -- Background & Foreground + foreground = "#111c18", + background = "#C1C497", + + -- Standard colors + ansi = { + "#23372B", + "#FF5345", + "#549e6a", + "#459451", + "#509475", + "#D2689C", + "#2DD5B7", + "#F6F5DD", + }, + + -- Bright colors + brights = { + "#53685B", + "#db9f9c", + "#63b07a", + "#E5C736", + "#ACD4CF", + "#75bbb3", + "#8CD3CB", + "#9eebb3", + }, + + -- Cursor colors + cursor_bg = "#D7C995", + cursor_fg = "#000000", + }) +end + +return theme diff --git a/themes/ristretto/wezterm.lua b/themes/ristretto/wezterm.lua new file mode 100644 index 0000000000..5f60381faa --- /dev/null +++ b/themes/ristretto/wezterm.lua @@ -0,0 +1,8 @@ +-- Ristretto Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Monokai Pro Ristretto (Gogh)" +end + +return theme diff --git a/themes/rose-pine/wezterm.lua b/themes/rose-pine/wezterm.lua new file mode 100644 index 0000000000..48eb4b24c6 --- /dev/null +++ b/themes/rose-pine/wezterm.lua @@ -0,0 +1,8 @@ +-- Rose Pine Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Rosé Pine Dawn (Gogh)" +end + +return theme diff --git a/themes/tokyo-night/wezterm.lua b/themes/tokyo-night/wezterm.lua new file mode 100644 index 0000000000..b3bc12f1df --- /dev/null +++ b/themes/tokyo-night/wezterm.lua @@ -0,0 +1,8 @@ +-- Tokyo Night Theme +local theme = {} + +function theme.apply_to_config(config) + config.color_scheme = "Tokyo Night" +end + +return theme