{"id":13566634,"url":"https://github.com/oh-my-fish/theme-budspencer","last_synced_at":"2025-04-08T11:31:48.192Z","repository":{"id":32982974,"uuid":"36608554","full_name":"oh-my-fish/theme-budspencer","owner":"oh-my-fish","description":"A theme for nerds, makes fish even more powerful. It's equipped with a hell of a lot of nice functions and key bindings to speed up your workflow.","archived":false,"fork":false,"pushed_at":"2022-09-21T02:01:06.000Z","size":162,"stargazers_count":106,"open_issues_count":8,"forks_count":42,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-11-04T21:37:03.200Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oh-my-fish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-31T15:11:53.000Z","updated_at":"2024-09-20T11:37:43.000Z","dependencies_parsed_at":"2023-01-14T22:55:43.191Z","dependency_job_id":null,"html_url":"https://github.com/oh-my-fish/theme-budspencer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oh-my-fish%2Ftheme-budspencer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oh-my-fish%2Ftheme-budspencer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oh-my-fish%2Ftheme-budspencer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oh-my-fish%2Ftheme-budspencer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oh-my-fish","download_url":"https://codeload.github.com/oh-my-fish/theme-budspencer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223317873,"owners_count":17125605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:02:13.642Z","updated_at":"2024-11-06T10:13:51.603Z","avatar_url":"https://github.com/oh-my-fish.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# Budspencer theme\r\n\r\nA theme for nerds, makes fish even more powerful. It's equipped with a hell of a\r\nlot of nice functions and key bindings to speed up your workflow.\r\n\r\nThe philosophy behind budspencer theme:\r\n\r\n* Delimit the prompt lines clearly to the output.\r\n* Produce output only if it contains relevant information.\r\n* Show useful notifications within the prompt.\r\n* Equip the prompt with toggle commands in order to change its style\r\n  interactively.\r\n* Store sessions in order to make frequently used commands quickly accessible.\r\n* Make navigation within the directory tree as easy as possible using\r\n  bookmarks and a directory history without duplicates.\r\n* Make histories quickly accessible with menus.\r\n* Don't stress your eyes. Use different colors in dark and bright environments.\r\n\r\n## Demonstration video\r\n\r\n[![video][screenshot]](http://vimeo.com/105546618)\r\n\r\n## Requirements\r\n\r\nYou need an up-to-date fish shell version from [github][fish-git] or a\r\n[nightly build][fish-nightly].\r\n\r\nNon standard tools:\r\n\r\n* xsel\r\n* wmctrl\r\n* git\r\n* svn\r\n* [taskwarrior][taskwarrior] (optional)\r\n* [remind][remind] (optional)\r\n\r\n### Note for OS X users\r\n\r\nThe theme uses advanced `sed` and `expr` features. The OS X tools have\r\nrestricted functionality.\r\n\r\nTry `expr` from `coreutils` package if you see `expr: syntax error` in\r\nbudspencer prompt.\r\n\r\nInstall advanced `sed` and `expr` versions:\r\n\r\n```\r\n$ brew install coreutils gnu-sed\r\n```\r\n\r\nAdd this to your `~/.config/fish/config.fish`:\r\n\r\n```\r\nif test (uname -s) = \"Darwin\"\r\n  set -gx PATH /usr/local/opt/coreutils/libexec/gnubin $PATH\r\n  set -gx PATH /usr/local/opt/gnu-sed/libexec/gnubin $PATH\r\nend\r\n```\r\n\r\n## Configuration\r\n\r\n### General configuration\r\n\r\nThe theme behaves similar to vim's airline/powerline plugins. Thus, it needs a\r\n[powerline font][font].\r\nIt's also crucial to have vi mode enabled. Thus, execute\r\n```\r\nset -U fish_key_bindings fish_vi_key_bindings\r\n```\r\nbefore enabling the theme.\r\n\r\n### Colors\r\n\r\nRedefine `$budspencer_colors` with the `set` command in order to change the\r\ncolors of the prompt.\r\n\r\nExample:\r\n```\r\nset budspencer_colors 000000 333333 666666 ffffff ffff00 ff6600 ff0000 ff0033 3300ff 0000ff 00ffff\r\n00ff00\r\n```\r\nwill result in a prompt like this:\r\n![color replace example][colors]\r\n\r\nTwo color schemes for bright and dark environments are predefined. You can\r\nenable them with `day` and `night`, respectively.\r\n\r\n### Command history\r\nCommands that shouldn't appear in the command history are defined by a universal\r\nlist `$budspencer_nocmdhist`. Default:\r\n```\r\nset -U budspencer_nocmdhist c d ll ls m s\r\n```\r\n\r\n### Disable/reenable greeting\r\n\r\nDisable:\r\n```\r\nset -U budspencer_nogreeting\r\n```\r\n\r\nReenable:\r\n```\r\nset -e budspencer_nogreeting\r\n```\r\n\r\n### Show Node version\r\n\r\nTo show your current node version, do following in your Fish configs\r\n```\r\nset -g budspencer_alt_environment \"node -v\"\r\n```\r\n\r\n## Ring the bell in order to set the urgency hint flag\r\n\r\nIf you have configured your terminal application to use the visual bell, your\r\nwindow manager will tell you when a job running in your shell has finished. You\r\ndon't need to check manually whether it's done.\r\n\r\n### Disable the acoustic bell\r\n\r\nIf you have still activated the acoustic bell, you probably hate that feature.\r\nSwitch it off in that case:\r\n```\r\nset -U budspencer_nobell\r\n```\r\n\r\n## Outer prompt segments\r\n\r\n- Vi mode is indicated by color of outer segments, cursor color also changes\r\n  if terminal supports it:\r\n    * blue: NORMAL mode\r\n    * yellow: INSERT mode\r\n    * magenta: VISUAL mode\r\n\r\n## Left prompt segments\r\n\r\n- Prompt line number\r\n- Repository information\r\n- Status symbols\r\n    * ✻: keep track of this shell session, can be toggled with `#` to show the number of\r\n       the session within the sessions list\r\n    * ⌘: present working directory is in bookmark list, can be toggled with `#` to\r\n        show the number of the bookmark\r\n    * V: vi is parent process\r\n    * R: [ranger][ranger] is parent process\r\n    * ⚙: there are background jobs, can be toggled with `#` to show the amount of\r\n        background jobs\r\n    * : no write permissions in present working directory\r\n    * ⚔: there are tasks scheduled for this week, can be toggled with `#` to\r\n        show the amount of weekly tasks\r\n    * ⚑: there are appointments for today, can be toggled with `#` to\r\n        show the amount of appointments\r\n    * ✔: last command succeeded, can be toggled with `#` to show the status value\r\n    * ✘: last command failed, can be toggled with `#` to show the status value\r\n    * ⚡: superuser indicator\r\n- Present working directory\r\n- Active Python [virtual environment](https://virtualenv.pypa.io/en/latest/). Requires [Virtual Fish](https://github.com/adambrenecki/virtualfish/)\r\n\r\n## Right prompt segments\r\n\r\n- Last command's duration time\r\n- Repo status symbols:\r\n    * ↑: git repository is ahead origin\r\n    * ↓: git repository is behind origin\r\n    * +: changes have been added to git index\r\n    * –: files have been deleted in work tree\r\n    * ✱: files have been modified in work tree\r\n    * →: files have been renamed in git index\r\n    * ═: there are unmerged commits\r\n    * ●: there are untracked (new) files\r\n    * ✭: there are stashed commits\r\n\r\n## Toggle prompt segments\r\n\r\nThe following shortcuts need vi-mode:\r\n- Style of \"present working directory\"-segment can be toggled in NORMAL and in\r\n  VISUAL mode with space bar\r\n    * styles implemented:\r\n        - `short` (shows username, short hostname and truncated path; recommended in\r\n          most cases)\r\n        - `long` (shows username, full hostname and full path; useful for copy-paste\r\n          in ssh connections)\r\n        - `none` (shows nothing except small delimiter; useful for small terminals)\r\n        - If prompt is toggled with `#`, the IP address is shown instead of the\r\n          hostname.\r\n    * configurable by universal list `$budspencer_pwdstyle` (if not set, defaults to\r\n      `short long none`); note that changes to `$budspencer_pwdstyle` keep persistant as it's\r\n      a universal variable.\r\n\r\n![pwd style][pwdstyle]\r\n\r\n- Style of symbols can be toggled in NORMAL and in VISUAL mode with `#`\r\n    * styles implemented:\r\n        - `symbols` (shows status symbols)\r\n        - `numbers` (shows numbers instead of symbols in left prompt as well as amount of changes in\r\n          right repo prompt)\r\n\r\nNote, the format is _username@hostname:pathname_. Thus, you can cut\r\nthe whole string with your mouse and paste it into `ssh` commands.\r\n\r\n## Quickly navigate in history of working directories\r\n\r\nThe function `d` drops down a menu showing the history as enumerated list. Unlike\r\nfish's builtin `dirh`, `d` does not show any duplicates. Enter a number to jump\r\nto a directory within the list.\r\n\r\n![dir menu][dirmenu]\r\n\r\nThe following shortcuts need vi-mode:\r\n- Press `H` in NORMAL mode to change present working directory to previous\r\n  working directory in history.\r\n- Press `L` in NORMAL mode to change present working directory to next working\r\n  directory in history.\r\n\r\n## Quickly navigate in command history\r\n\r\nThe function `c` drops down a menu showing the command history as enumerated list similarly to\r\nthe `d` function. Selections are also pasted into the X clipboard. It's possible\r\nto load a command of a former prompt by giving the prompt line number as\r\nargument.\r\n\r\n## Bookmarks\r\n\r\nA bookmark can be created with `mark`. It can be removed with `unmark`. \r\n\r\n`unmark` can take an argument to remove a specific bookmark in the bookmark list. \r\nSimply add the number of the bookmark you would like to remove as the argument.\r\n\r\nBookmarks are universal and thus persistant.\r\nA new shell automatically changes working directory on startup to newest bookmark.\r\n`m` is a function that drops down a menu showing the bookmarks as enumerated list\r\nequivalently to `d`.\r\n\r\nThe following shortcuts need vi mode:\r\n- Create a bookmark for present working directory with `m` in NORMAL mode.\r\n- Remove a bookmark for present working directory with `M` in NORMAL mode.\r\n\r\nBy default the shell will change to the directory of the latest bookmark on a new session. \r\nThis can be disabled by adding the following line:\r\n\r\n```\r\nset -U budspencer_no_cd_bookmark\r\n```\r\n\r\n## Edit commandline with your favorite editor\r\n\r\nThe function `edit-commandline` let you edit the commandline with your editor.\r\nIt makes the commandline as powerful as your editor. If `$EDITOR` is not set,\r\nvi is used.\r\n\r\nThe following shortcut needs vi mode:\r\n- Type `.` in NORMAL mode to edit commandline in editor.\r\n\r\n## Sessions\r\n\r\nShell session can be stored with `s \u003csession name\u003e`. If a session with `session\r\nname` already exists, the session with this name will be attached. If a session with\r\n`session name` is already active within another terminal, this terminal will be\r\nfocussed.\r\n\r\nA list of available sessions can be shown with `s`.\r\n\r\nA session can be erased with `s -e \u003csession name\u003e`.\r\n\r\nType `s -d` to detach current session.\r\n\r\n## Set window title\r\n\r\nJust type `wt \u003ctitle\u003e`.\r\n\r\n## TODO\r\n\r\n- vi REPLACE mode, as soon as REPLACE mode is implemented within fish\r\n\r\n## Feedback\r\n\r\nGive me feedback if you ...\r\n* ... have ideas how I could improve budspencer.\r\n* ... have problems with budspencer.\r\n* ... have questions concerning budspencer.\r\n\r\n[font]: https://github.com/Lokaltog/powerline-fonts\r\n[ranger]: http://ranger.nongnu.org/\r\n[taskwarrior]: http://taskwarrior.org/\r\n[remind]: http://www.roaringpenguin.com/products/remind\r\n[fish-git]: https://github.com/fish-shell/fish-shell.git\r\n[fish-nightly]: https://github.com/fish-shell/fish-shell/wiki/Nightly-builds\r\n[screenshot]: https://raw.githubusercontent.com/tannhuber/media/master/budspencer.jpg\r\n[colors]: https://raw.githubusercontent.com/tannhuber/media/master/budspencer_replace_colors.jpg\r\n[dirmenu]: https://raw.githubusercontent.com/tannhuber/media/master/budspencer_dir_menu.jpg\r\n[pwdstyle]: https://raw.githubusercontent.com/tannhuber/media/master/budspencer_pwd_style.jpg\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foh-my-fish%2Ftheme-budspencer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foh-my-fish%2Ftheme-budspencer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foh-my-fish%2Ftheme-budspencer/lists"}