mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Add foot terminal as an option
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Foot Server
|
||||||
|
NoDisplay=true
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
TryExec=foot
|
||||||
|
Exec=foot
|
||||||
|
Icon=foot
|
||||||
|
Terminal=false
|
||||||
|
Categories=System;TerminalEmulator;
|
||||||
|
Name=Foot
|
||||||
|
GenericName=Terminal
|
||||||
|
Comment=A fast, lightweight and minimalistic Wayland terminal emulator
|
||||||
|
StartupNotify=true
|
||||||
|
StartupWMClass=foot
|
||||||
|
Actions=New;
|
||||||
|
X-TerminalArgExec=-e
|
||||||
|
X-TerminalArgAppId=--app-id=
|
||||||
|
X-TerminalArgTitle=--title=
|
||||||
|
X-TerminalArgDir=--working-directory=
|
||||||
|
|
||||||
|
[Desktop Action New]
|
||||||
|
Name=New Terminal
|
||||||
|
Exec=foot
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Foot Client
|
||||||
|
NoDisplay=true
|
||||||
@@ -22,6 +22,10 @@ if [[ -n $font_name ]]; then
|
|||||||
pkill -SIGUSR2 ghostty
|
pkill -SIGUSR2 ghostty
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/foot/foot.ini ]]; then
|
||||||
|
sed -i "s/^font=.*/font=$font_name:size=9/g" ~/.config/foot/foot.ini
|
||||||
|
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/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/waybar/style.css
|
||||||
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
sed -i "s/font-family: .*/font-family: '$font_name';/g" ~/.config/swayosd/style.css
|
||||||
@@ -37,6 +41,10 @@ if [[ -n $font_name ]]; then
|
|||||||
notify-send -u low " You must restart Ghostty to see font change"
|
notify-send -u low " You must restart Ghostty to see font change"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if pgrep -x foot; then
|
||||||
|
notify-send -u low " You must restart Foot to see font change"
|
||||||
|
fi
|
||||||
|
|
||||||
omarchy-hook font-set "$font_name"
|
omarchy-hook font-set "$font_name"
|
||||||
else
|
else
|
||||||
echo "Font '$font_name' not found."
|
echo "Font '$font_name' not found."
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
|
# omarchy:summary=Install one of the approved terminals and set it as the default for Omarchy (Super + Return etc).
|
||||||
# omarchy:args=<alacritty|ghostty|kitty>
|
# omarchy:args=<alacritty|foot|ghostty|kitty>
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
if (($# == 0)); then
|
if (($# == 0)); then
|
||||||
echo "Usage: omarchy-install-terminal [alacritty|ghostty|kitty]"
|
echo "Usage: omarchy-install-terminal [alacritty|foot|ghostty|kitty]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@ package="$1"
|
|||||||
# Map package name to desktop entry ID
|
# Map package name to desktop entry ID
|
||||||
case "$package" in
|
case "$package" in
|
||||||
alacritty) desktop_id="Alacritty.desktop" ;;
|
alacritty) desktop_id="Alacritty.desktop" ;;
|
||||||
|
foot) desktop_id="foot.desktop" ;;
|
||||||
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
|
ghostty) desktop_id="com.mitchellh.ghostty.desktop" ;;
|
||||||
kitty) desktop_id="kitty.desktop" ;;
|
kitty) desktop_id="kitty.desktop" ;;
|
||||||
*)
|
*)
|
||||||
@@ -26,10 +27,15 @@ echo "Installing $package..."
|
|||||||
|
|
||||||
# Install package
|
# Install package
|
||||||
if omarchy-pkg-add $package; then
|
if omarchy-pkg-add $package; then
|
||||||
# Copy custom desktop entry for alacritty with X-TerminalArg* keys
|
# Copy custom desktop entries with X-TerminalArg* keys
|
||||||
if [[ $package == "alacritty" ]]; then
|
if [[ $package == "alacritty" || $package == "foot" ]]; then
|
||||||
mkdir -p ~/.local/share/applications
|
mkdir -p ~/.local/share/applications
|
||||||
cp $OMARCHY_PATH/applications/Alacritty.desktop ~/.local/share/applications/
|
cp "$OMARCHY_PATH/applications/$desktop_id" ~/.local/share/applications/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy default config for optional terminals when missing
|
||||||
|
if [[ ! -e ~/.config/$package ]]; then
|
||||||
|
cp -Rpf "$OMARCHY_PATH/config/$package" ~/.config/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Update xdg-terminals.list to prioritize the proper terminal
|
# Update xdg-terminals.list to prioritize the proper terminal
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
--font-size=18 \
|
--font-size=18 \
|
||||||
-e omarchy-screensaver
|
-e omarchy-screensaver
|
||||||
;;
|
;;
|
||||||
|
*foot*)
|
||||||
|
hyprctl dispatch exec -- \
|
||||||
|
foot --app-id=org.omarchy.screensaver \
|
||||||
|
--config="$OMARCHY_PATH/default/foot/screensaver.ini" \
|
||||||
|
-e omarchy-screensaver
|
||||||
|
;;
|
||||||
*kitty*)
|
*kitty*)
|
||||||
hyprctl dispatch exec -- \
|
hyprctl dispatch exec -- \
|
||||||
kitty --class=org.omarchy.screensaver \
|
kitty --class=org.omarchy.screensaver \
|
||||||
@@ -45,7 +51,7 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do
|
|||||||
-e omarchy-screensaver
|
-e omarchy-screensaver
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty"
|
notify-send -u low "✋ Screensaver only runs in Alacritty, Foot, Ghostty, or Kitty"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
+2
-1
@@ -394,8 +394,9 @@ show_install_editor_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
show_install_terminal_menu() {
|
show_install_terminal_menu() {
|
||||||
case $(menu "Install" " Alacritty\n Ghostty\n Kitty") in
|
case $(menu "Install" " Alacritty\n Foot\n Ghostty\n Kitty") in
|
||||||
*Alacritty*) install_terminal "alacritty" ;;
|
*Alacritty*) install_terminal "alacritty" ;;
|
||||||
|
*Foot*) install_terminal "foot" ;;
|
||||||
*Ghostty*) install_terminal "ghostty" ;;
|
*Ghostty*) install_terminal "ghostty" ;;
|
||||||
*Kitty*) install_terminal "kitty" ;;
|
*Kitty*) install_terminal "kitty" ;;
|
||||||
*) show_install_menu ;;
|
*) show_install_menu ;;
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ omarchy-restart-mako
|
|||||||
omarchy-restart-helix
|
omarchy-restart-helix
|
||||||
|
|
||||||
# Change app-specific themes
|
# Change app-specific themes
|
||||||
|
omarchy-theme-set-foot
|
||||||
omarchy-theme-set-gnome
|
omarchy-theme-set-gnome
|
||||||
omarchy-theme-set-browser
|
omarchy-theme-set-browser
|
||||||
omarchy-theme-set-vscode
|
omarchy-theme-set-vscode
|
||||||
|
|||||||
Executable
+27
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# omarchy:summary=Apply current Omarchy theme colors to running Foot terminals
|
||||||
|
|
||||||
|
foot_theme=~/.config/omarchy/current/theme/foot.ini
|
||||||
|
|
||||||
|
if [[ ! -f $foot_theme ]] || ! pgrep -x foot >/dev/null; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
foot_osc=$(awk -F= '
|
||||||
|
function color(value) { return "#" value }
|
||||||
|
/^foreground=/ { printf "\033]10;%s\007", color($2) }
|
||||||
|
/^background=/ { printf "\033]11;%s\007", color($2) }
|
||||||
|
/^cursor=/ { split($2, parts, " "); printf "\033]12;%s\007", color(parts[2]) }
|
||||||
|
/^selection-background=/ { printf "\033]17;%s\007", color($2) }
|
||||||
|
/^selection-foreground=/ { printf "\033]19;%s\007", color($2) }
|
||||||
|
/^regular[0-7]=/ { split($1, parts, "regular"); printf "\033]4;%d;%s\007", parts[2], color($2) }
|
||||||
|
/^bright[0-7]=/ { split($1, parts, "bright"); printf "\033]4;%d;%s\007", parts[2] + 8, color($2) }
|
||||||
|
' "$foot_theme")
|
||||||
|
|
||||||
|
for foot_pid in $(pgrep -x foot); do
|
||||||
|
for child_pid in $(pgrep -P "$foot_pid"); do
|
||||||
|
tty=$(readlink "/proc/$child_pid/fd/1" 2>/dev/null)
|
||||||
|
[[ $tty == /dev/pts/* ]] && printf '%b' "$foot_osc" >"$tty"
|
||||||
|
done
|
||||||
|
done
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
[main]
|
||||||
|
include=~/.config/omarchy/current/theme/foot.ini
|
||||||
|
term=xterm-256color
|
||||||
|
font=JetBrainsMono Nerd Font:size=9
|
||||||
|
pad=14x14
|
||||||
|
initial-window-mode=windowed
|
||||||
|
workers=0
|
||||||
|
|
||||||
|
[scrollback]
|
||||||
|
lines=10000
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
style=block
|
||||||
|
blink=no
|
||||||
|
|
||||||
|
[key-bindings]
|
||||||
|
clipboard-copy=Control+Insert
|
||||||
|
primary-paste=none
|
||||||
|
clipboard-paste=Shift+Insert
|
||||||
@@ -41,7 +41,7 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Scroll nicely in the terminal
|
# Scroll nicely in the terminal
|
||||||
windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5
|
windowrule = match:class (Alacritty|kitty|foot), scroll_touchpad 1.5
|
||||||
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
|
||||||
|
|
||||||
# Enable touchpad gestures for changing workspaces
|
# Enable touchpad gestures for changing workspaces
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[main]
|
||||||
|
font=JetBrainsMono Nerd Font:size=18
|
||||||
|
pad=0x0
|
||||||
|
|
||||||
|
[colors-dark]
|
||||||
|
background=000000
|
||||||
|
foreground=ffffff
|
||||||
@@ -3,7 +3,7 @@ windowrule = float on, match:tag floating-window
|
|||||||
windowrule = center on, match:tag floating-window
|
windowrule = center on, match:tag floating-window
|
||||||
windowrule = size 875 600, match:tag floating-window
|
windowrule = size 875 600, match:tag floating-window
|
||||||
|
|
||||||
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.codeberg.dnkl.foot|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
||||||
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
||||||
windowrule = float on, match:class org.gnome.Calculator
|
windowrule = float on, match:class org.gnome.Calculator
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Define terminal tag to style them uniformly
|
# Define terminal tag to style them uniformly
|
||||||
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty)
|
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty|foot)
|
||||||
windowrule = tag -default-opacity, match:tag terminal
|
windowrule = tag -default-opacity, match:tag terminal
|
||||||
windowrule = opacity 0.97 0.9, match:tag terminal
|
windowrule = opacity 0.97 0.9, match:tag terminal
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name: omarchy
|
|||||||
description: >
|
description: >
|
||||||
REQUIRED for end-user customization of Linux desktop, window manager, or system config.
|
REQUIRED for end-user customization of Linux desktop, window manager, or system config.
|
||||||
Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/,
|
Use when editing ~/.config/hypr/, ~/.config/waybar/, ~/.config/walker/,
|
||||||
~/.config/alacritty/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/,
|
~/.config/alacritty/, ~/.config/foot/, ~/.config/kitty/, ~/.config/ghostty/, ~/.config/mako/,
|
||||||
or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings,
|
or ~/.config/omarchy/. Triggers: Hyprland, window rules, animations, keybindings,
|
||||||
monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes,
|
monitors, gaps, borders, blur, opacity, waybar, walker, terminal config, themes,
|
||||||
wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace
|
wallpaper, night light, idle, lock screen, screenshots, layer rules, workspace
|
||||||
@@ -24,7 +24,7 @@ It is not for contributing to Omarchy source code.
|
|||||||
|
|
||||||
- Editing ANY file in `~/.config/hypr/` (window rules, animations, keybindings, monitors, etc.)
|
- Editing ANY file in `~/.config/hypr/` (window rules, animations, keybindings, monitors, etc.)
|
||||||
- Editing ANY file in `~/.config/waybar/`, `~/.config/walker/`, `~/.config/mako/`
|
- Editing ANY file in `~/.config/waybar/`, `~/.config/walker/`, `~/.config/mako/`
|
||||||
- Editing terminal configs (alacritty, kitty, ghostty)
|
- Editing terminal configs (alacritty, foot, kitty, ghostty)
|
||||||
- Editing ANY file in `~/.config/omarchy/`
|
- Editing ANY file in `~/.config/omarchy/`
|
||||||
- Window behavior, animations, opacity, blur, gaps, borders
|
- Window behavior, animations, opacity, blur, gaps, borders
|
||||||
- Layer rules, workspace settings, display/monitor configuration
|
- Layer rules, workspace settings, display/monitor configuration
|
||||||
@@ -78,7 +78,7 @@ Omarchy is built on:
|
|||||||
| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` |
|
| **Hyprland** | Wayland compositor/WM | `~/.config/hypr/` |
|
||||||
| **Waybar** | Status bar | `~/.config/waybar/` |
|
| **Waybar** | Status bar | `~/.config/waybar/` |
|
||||||
| **Walker** | App launcher | `~/.config/walker/` |
|
| **Walker** | App launcher | `~/.config/walker/` |
|
||||||
| **Alacritty/Kitty/Ghostty** | Terminals | `~/.config/<terminal>/` |
|
| **Alacritty/Foot/Kitty/Ghostty** | Terminals | `~/.config/<terminal>/` |
|
||||||
| **Mako** | Notifications | `~/.config/mako/` |
|
| **Mako** | Notifications | `~/.config/mako/` |
|
||||||
| **SwayOSD** | On-screen display | `~/.config/swayosd/` |
|
| **SwayOSD** | On-screen display | `~/.config/swayosd/` |
|
||||||
|
|
||||||
@@ -163,6 +163,7 @@ Run `omarchy --help` for the full list. The most common groups:
|
|||||||
|
|
||||||
```
|
```
|
||||||
~/.config/alacritty/alacritty.toml
|
~/.config/alacritty/alacritty.toml
|
||||||
|
~/.config/foot/foot.ini
|
||||||
~/.config/kitty/kitty.conf
|
~/.config/kitty/kitty.conf
|
||||||
~/.config/ghostty/config
|
~/.config/ghostty/config
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
[colors-dark]
|
||||||
|
foreground={{ foreground_strip }}
|
||||||
|
background={{ background_strip }}
|
||||||
|
selection-foreground={{ selection_foreground_strip }}
|
||||||
|
selection-background={{ selection_background_strip }}
|
||||||
|
|
||||||
|
cursor={{ background_strip }} {{ cursor_strip }}
|
||||||
|
|
||||||
|
regular0={{ color0_strip }}
|
||||||
|
regular1={{ color1_strip }}
|
||||||
|
regular2={{ color2_strip }}
|
||||||
|
regular3={{ color3_strip }}
|
||||||
|
regular4={{ color4_strip }}
|
||||||
|
regular5={{ color5_strip }}
|
||||||
|
regular6={{ color6_strip }}
|
||||||
|
regular7={{ color7_strip }}
|
||||||
|
|
||||||
|
bright0={{ color8_strip }}
|
||||||
|
bright1={{ color9_strip }}
|
||||||
|
bright2={{ color10_strip }}
|
||||||
|
bright3={{ color11_strip }}
|
||||||
|
bright4={{ color12_strip }}
|
||||||
|
bright5={{ color13_strip }}
|
||||||
|
bright6={{ color14_strip }}
|
||||||
|
bright7={{ color15_strip }}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
echo "Add Foot terminal config and theme support"
|
||||||
|
|
||||||
|
if [[ ! -f ~/.config/foot/foot.ini ]]; then
|
||||||
|
mkdir -p ~/.config/foot
|
||||||
|
cp -Rpf "$OMARCHY_PATH/config/foot/foot.ini" ~/.config/foot/foot.ini
|
||||||
|
elif ! grep -q "^primary-paste=none" ~/.config/foot/foot.ini; then
|
||||||
|
sed -i '/^clipboard-copy=Control+Insert/a primary-paste=none' ~/.config/foot/foot.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/omarchy/current/theme/foot.ini ]]; then
|
||||||
|
sed -i 's/^\[colors\]$/[colors-dark]/' ~/.config/omarchy/current/theme/foot.ini
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f ~/.config/omarchy/current/theme/foot.ini && -f ~/.config/omarchy/current/theme/colors.toml ]]; then
|
||||||
|
sed_script=$(mktemp)
|
||||||
|
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
key="${key//[\"\' ]/}"
|
||||||
|
[[ $key && $key != \#* ]] || continue
|
||||||
|
value="${value#*[\"\']}"
|
||||||
|
value="${value%%[\"\']*}"
|
||||||
|
|
||||||
|
printf 's|{{ %s }}|%s|g\n' "$key" "$value"
|
||||||
|
printf 's|{{ %s_strip }}|%s|g\n' "$key" "${value#\#}"
|
||||||
|
done <~/.config/omarchy/current/theme/colors.toml >"$sed_script"
|
||||||
|
|
||||||
|
sed -f "$sed_script" "$OMARCHY_PATH/default/themed/foot.ini.tpl" >~/.config/omarchy/current/theme/foot.ini
|
||||||
|
rm "$sed_script"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if omarchy-cmd-present foot; then
|
||||||
|
mkdir -p ~/.local/share/applications
|
||||||
|
rm -f ~/.local/share/applications/org.codeberg.dnkl.foot.desktop
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/foot.desktop" ~/.local/share/applications/
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/footclient.desktop" ~/.local/share/applications/
|
||||||
|
cp -Rpf "$OMARCHY_PATH/applications/foot-server.desktop" ~/.local/share/applications/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/hypr/input.conf ]]; then
|
||||||
|
sed -Ei 's/match:class \(Alacritty\|kitty\)/match:class (Alacritty|kitty|foot)/' ~/.config/hypr/input.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f ~/.config/hypr/apps/terminals.conf ]]; then
|
||||||
|
sed -Ei 's/match:class \(Alacritty\|kitty\|com\.mitchellh\.ghostty\)/match:class (Alacritty|kitty|com.mitchellh.ghostty|foot)/' ~/.config/hypr/apps/terminals.conf
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user