aboutsummaryrefslogtreecommitdiff
path: root/find-file
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-08-06 16:02:32 -0500
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-08-06 16:02:32 -0500
commitaf97a24be201f8fffe8ea73a1f1aab1e234fa1ce (patch)
treecbeb392eba832d89ab48732dfffb518bc904fa5b /find-file
parentda59e4b84427f1add813a73472bee2d5b32c210d (diff)
find-file
Diffstat (limited to 'find-file')
-rw-r--r--find-file/README.md18
-rw-r--r--find-file/file.toml16
-rwxr-xr-xfind-file/launch-find-file.sh4
-rwxr-xr-xfind-file/split.sh11
4 files changed, 49 insertions, 0 deletions
diff --git a/find-file/README.md b/find-file/README.md
new file mode 100644
index 0000000..cfee229
--- /dev/null
+++ b/find-file/README.md
@@ -0,0 +1,18 @@
+# `find-file.sh`
+`find-file` Launches a broot menu for opening files.
+- `C-s` opens the file in a new split. It will automatically choose hsplit or vsplit based on pane size
+- `C-w` opens the file in a new window
+
+## Setup
+If you haven't already, clone the repo to a know location, such as `~/.config/tmux/m`.
+```sh
+cd ~/.config/tmux
+git clone https://github.com/bluedragon1221/tmux-minibuffer m
+```
+
+In `file.toml`, replace the parts that refer to `split.sh` with the correct path to split.sh.
+
+Now you can add a keybinding to launch `find-file`:
+```sh
+bind-key -n C-f run-shell "~/.config/tmux/m/minibuffer.sh '~/.config/tmux/m/find-file/launch-find-file.sh'"
+```
diff --git a/find-file/file.toml b/find-file/file.toml
new file mode 100644
index 0000000..46540a6
--- /dev/null
+++ b/find-file/file.toml
@@ -0,0 +1,16 @@
+imports = ["~/.config/broot/conf.toml"]
+quit_on_last_cancel = true
+
+[[verbs]]
+apply_to = "file"
+external = ["bash", "-c", "~/.config/tmux/scripts/split.sh -c \"#{?@default-path,#{@default-path},#{pane_current_path}}\" \"hx '{file}'\""]
+invocation = "tmux-split"
+key = "ctrl-s"
+leave_broot = true
+
+[[verbs]]
+apply_to = "file"
+external = ["tmux", "new-window", "-c", "#{?@default-path,#{@default-path},#{pane_current_path}}", "hx '{file}'"]
+invocation = "tmux-window"
+key = "ctrl-w"
+leave_broot = true
diff --git a/find-file/launch-find-file.sh b/find-file/launch-find-file.sh
new file mode 100755
index 0000000..3e33032
--- /dev/null
+++ b/find-file/launch-find-file.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
+
+broot --conf $SCRIPT_DIR/file.toml
diff --git a/find-file/split.sh b/find-file/split.sh
new file mode 100755
index 0000000..77a6670
--- /dev/null
+++ b/find-file/split.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+width=$(tmux display -p "#{pane_width}")
+height=$(tmux display -p "#{pane_height}")
+
+if (( $(echo "$width / $height > 2.5" | bc -l) )); then
+ tmux split-window -h "$@"
+else
+ tmux split-window -v "$@"
+fi
+