aboutsummaryrefslogtreecommitdiff
path: root/segments/pwd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'segments/pwd.sh')
-rwxr-xr-xsegments/pwd.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/segments/pwd.sh b/segments/pwd.sh
new file mode 100755
index 0000000..2499762
--- /dev/null
+++ b/segments/pwd.sh
@@ -0,0 +1,39 @@
+# Print the current working directory (trimmed to max length).
+# NOTE The trimming code's stolen from the web. Courtesy to who ever wrote it.
+
+# Source lib to get the function get_tmux_pwd
+source "${TMUX_POWERLINE_DIR_LIB}/tmux_adapter.sh"
+
+TMUX_POWERLINE_SEG_PWD_MAX_LEN_DEFAULT="40"
+
+generate_segmentrc() {
+ read -d '' rccontents << EORC
+# Maximum length of output.
+export TMUX_POWERLINE_SEG_PWD_MAX_LEN="${TMUX_POWERLINE_SEG_PWD_MAX_LEN_DEFAULT}"
+EORC
+ echo "$rccontents"
+}
+
+__process_settings() {
+ if [ -z "$TMUX_POWERLINE_SEG_PWD_MAX_LEN" ]; then
+ export TMUX_POWERLINE_SEG_PWD_MAX_LEN="${TMUX_POWERLINE_SEG_PWD_MAX_LEN_DEFAULT}"
+ fi
+}
+
+run_segment() {
+ __process_settings
+ # Truncate from the left.
+ tcwd=$(get_tmux_cwd)
+ trunc_symbol="ยทยทยท"
+ dir=${tcwd##*/}
+ local max_len="$TMUX_POWERLINE_SEG_PWD_MAX_LEN"
+ max_len=$(( ( max_len < ${#dir} ) ? ${#dir} : max_len ))
+ ttcwd=${tcwd/#$HOME/\~}
+ pwdoffset=$(( ${#ttcwd} - max_len ))
+ if [ ${pwdoffset} -gt "0" ]; then
+ ttcwd=${ttcwd:$pwdoffset:$max_len}
+ ttcwd=${trunc_symbol}/${ttcwd#*/}
+ fi
+ echo "$ttcwd"
+ return 0
+}