From fe829e19c51f31e59d61bee54395fb569dd49b33 Mon Sep 17 00:00:00 2001
From: Daniel Lundin <dln@arity.se>
Date: Thu, 21 Nov 2024 13:50:07 +0100
Subject: [PATCH] fish: Remove right prompt. Put vcs info on terminal bottom
 line.

---
 home/common/fish.nix | 81 ++++++++++++++++----------------------------
 1 file changed, 30 insertions(+), 51 deletions(-)

diff --git a/home/common/fish.nix b/home/common/fish.nix
index 44678fa..d0384e1 100644
--- a/home/common/fish.nix
+++ b/home/common/fish.nix
@@ -94,66 +94,45 @@
           return 1
         end
 
-        # Generate prompt
-        jj log --ignore-working-copy --no-graph --color never -r @ -T '
-          surround(
-            " \e[2;3m",
-            "\e[0m",
-            separate(
-              " ",
-              surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
-              surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
-              surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
-              if(conflict,  "󰂭"),
-              if(empty,     ""),
-              if(divergent, ""),
-              if(hidden,    "󰘓"),
-            )
-          )
-        '
-      '';
-
-      fish_jj_desc.body = ''
-        if not command -sq jj || not jj root --quiet &>/dev/null
-          return 1
-        end
-
-        jj log --ignore-working-copy --no-graph --color never -r @ -T '
-          surround(
-            " \e[0;2;3m",
-            "\e[0m",
-            coalesce(
-              surround(
-                "\e[1;2;3m❝",
-                "❞\e[0m",
-                if(
-                  description.first_line().substr(0, 80).starts_with(description.first_line()),
-                  description.first_line().substr(0, 80),
-                  description.first_line().substr(0, 79) ++ "…"
-                )
+      jj log --ignore-working-copy --no-graph --color never -r @ -T '
+        surround(
+          " \e[2;3m",
+          "\e[0m",
+          separate(
+            " ",
+            surround(
+              "\e[0;2;3m",
+              "\e[0m",
+              coalesce(
+                surround(
+                  "\e[1;2;3m❝",
+                  "❞\e[0m",
+                  if(
+                    description.first_line().substr(0, 80).starts_with(description.first_line()),
+                    description.first_line().substr(0, 80),
+                    description.first_line().substr(0, 79) ++ "…"
+                  )
+                ),
+                "…"
               ),
-              "…"
             ),
+            surround("\e[0;1;95m ", "\e[0;2;3m", change_id.shortest()),
+            surround("\e[0;35m󰸕 ", "\e[0m", bookmarks.join("╱")),
+            surround("\e[0;34m ",   "\e[0;2;3m", commit_id.shortest()),
+            if(conflict,  "󰂭"),
+            if(empty,     ""),
+            if(divergent, ""),
+            if(hidden,    "󰘓"),
           )
-        '
+        )
+      '
       '';
 
       fish_prompt.body = ''
-        echo -e "\033[1;2;38;5;236m"
-        string pad -c '┄' -w $COLUMNS (fish_jj_desc)
-        echo -ne "\033[0;3m"
+        echo -e "\033[s\033[$LINES;1H\033[1;2;38;5;238m$(string pad -c '┄' -w $COLUMNS (fish_jj_prompt || fish_vcs_prompt))\033[0m\033[u"
         string join "" -- (set_color --italics) (prompt_hostname) ':' (prompt_pwd --full-length-dirs=4) (set_color yellow) ' ❯ ' (set_color normal)
       '';
 
-      fish_right_prompt.body = ''
-        if test $CMD_DURATION -gt 3000
-          # Show duration of the last command in seconds
-          set duration (echo "$CMD_DURATION 1000" | awk '{printf "%.1fs", $1 / $2}')
-          echo -n "⏳$duration "
-        end
-        fish_jj_prompt || fish_vcs_prompt
-      '';
-
       transient_prompt_func.body = ''
         echo
         string join "" -- (set_color yellow) '❯ ' (set_color normal)