|
| 1 | +# shellcheck shell=bash |
| 2 | + |
| 3 | +# https://www.nerdfonts.com/cheat-sheet?q=nf-fa-dropbox |
| 4 | +TMUX_POWERLINE_SEG_DROPBOX_GLYPH_DEFAULT=$'\uf16b' |
| 5 | +# https://www.nerdfonts.com/cheat-sheet?q=nf-fa-upload |
| 6 | +TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH_DEFAULT=$'\uf093' |
| 7 | +# https://www.nerdfonts.com/cheat-sheet?q=nf-fa-download |
| 8 | +TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH_DEFAULT=$'\uf019' |
| 9 | +# https://www.nerdfonts.com/cheat-sheet?q=nf-fa-bookmark |
| 10 | +TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH_DEFAULT=$'\uf02e' |
| 11 | +# https://www.nerdfonts.com/cheat-sheet?q=nf-oct-sync |
| 12 | +TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH_DEFAULT=$'\uf46a' |
| 13 | + |
| 14 | +IFS= read -r -d '' TMUX_POWERLINE_SEG_DROPBOX_SED_SCRIPT <<EOSED |
| 15 | +s/\(^.*\)\.\.\./\1/g |
| 16 | +s/Syncing \([0-9]\+\) \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH} \1/g |
| 17 | +s/Indexing \([0-9]\+\) \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH} \1/g |
| 18 | +s/Uploading \([0-9]\+\) \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH} \1/g |
| 19 | +s/Downloading \([0-9]\+\) \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH} \1/g |
| 20 | +s/Syncing \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH} 1/g |
| 21 | +s/Indexing \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH} 1/g |
| 22 | +s/Uploading \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH} 1/g |
| 23 | +s/Downloading \(.*\)$/\${TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH} 1/g |
| 24 | +EOSED |
| 25 | + |
| 26 | +generate_segmentrc() { |
| 27 | + read -r -d '' rccontents <<EORC |
| 28 | +# The Dropbox glyph to use |
| 29 | +export TMUX_POWERLINE_SEG_DROPBOX_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_GLYPH_DEFAULT}" |
| 30 | +# Replace 'Uploading' in the status |
| 31 | +export TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH_DEFAULT}" |
| 32 | +# Replace 'Downloading' in the status |
| 33 | +export TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH_DEFAULT}" |
| 34 | +# Replace 'Indexing' in the status |
| 35 | +export TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH_DEFAULT}" |
| 36 | +# Replace 'Syncing' in the status |
| 37 | +export TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH_DEFAULT}" |
| 38 | +EORC |
| 39 | + echo "$rccontents" |
| 40 | +} |
| 41 | + |
| 42 | +run_segment() { |
| 43 | + __process_settings |
| 44 | + if ! command -v dropbox-cli &>/dev/null; then |
| 45 | + printf "#[bg=colour124] %s ${TMUX_POWERLINE_SEG_DROPBOX_GLYPH} " "dropbox-cli not found" |
| 46 | + return 1 |
| 47 | + fi |
| 48 | + status_text=$(dropbox-cli status \ |
| 49 | + | sed "$TMUX_POWERLINE_SEG_DROPBOX_SED_SCRIPT" \ |
| 50 | + | sed -z 's/\n/ /g;s/\(.*\) /\1/g' \ |
| 51 | + | envsubst |
| 52 | + ) |
| 53 | + if [ "${status_text}" = "Up to date" ]; then return 0; fi |
| 54 | + if [ "${status_text}" = "Dropbox isn't running!" ]; then |
| 55 | + printf "#[bg=colour124] %s ${TMUX_POWERLINE_SEG_DROPBOX_GLYPH} " "${status_text}" |
| 56 | + else |
| 57 | + printf "%s ${TMUX_POWERLINE_SEG_DROPBOX_GLYPH} " "${status_text}" |
| 58 | + fi |
| 59 | + return 0 |
| 60 | +} |
| 61 | + |
| 62 | +__process_settings() { |
| 63 | + if [ -z "$TMUX_POWERLINE_SEG_DROPBOX_GLYPH" ]; then |
| 64 | + export TMUX_POWERLINE_SEG_DROPBOX_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_GLYPH_DEFAULT}" |
| 65 | + fi |
| 66 | + if [ -z "$TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH" ]; then |
| 67 | + export TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_UPLOAD_GLYPH_DEFAULT}" |
| 68 | + fi |
| 69 | + if [ -z "$TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH" ]; then |
| 70 | + export TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_DOWNLOAD_GLYPH_DEFAULT}" |
| 71 | + fi |
| 72 | + if [ -z "$TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH" ]; then |
| 73 | + export TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_INDEX_GLYPH_DEFAULT}" |
| 74 | + fi |
| 75 | + if [ -z "$TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH" ]; then |
| 76 | + export TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH="${TMUX_POWERLINE_SEG_DROPBOX_SYNC_GLYPH_DEFAULT}" |
| 77 | + fi |
| 78 | +} |
0 commit comments