Settings

Theme

PS1 generator

xta.github.io

168 points by jerogarcia 13 years ago · 29 comments · 1 min read

Reader

Not really mine but i liked it

josh_blum 13 years ago

Pretty awesome, just a couple of suggestions:

1. Items shouldn't disappear from the selection (I can only add one (space) for some reason).

2. Allow grouping of items. For example, if you want to have [time] you should be able to drag the "[", "time", and "]" as a group instead of individually.

qrohlf 13 years ago

Very cool!

Feature suggestion: It would be great to be able to change the colors of the individual components a la https://github.com/twolfson/sexy-bash-prompt

JoshTriplett 13 years ago

Nice!

I'd love to see support for the terminal window title here, too. Add an additional container for the titlebar contents, and prefix \[\e]0;$titlebar_contents\a\] to the prompt when TERM is xterm, rxvt, or screen*.

Also, colors should be draggable into the prompt, since they can change between different parts of the prompt.

"Last command error when not successful" is nice as well; just add this to your prompt (includes color and whitespace):

    $(e="$?";[ "$e" -ne 0 ] && echo -n "\[\e[01;31m\]($e) ")
On my system, I also have some extra logic to only show the username and hostname if either $SSH_CONNECTION is set or the username is not my usual username (usually because it's either root, some user I've sudoed to, or an unusual username because I'm on a system with mandated username conventions). Thus, on my personal system, my initial prompt is "~$ ", taking up very little room. Unfortunately "not my usual username" isn't portable to different users (though you could check for the presence of SUDO_USER), but checking SSH_CONNECTION is.
  • stormbrew 13 years ago

    I have this bit of magic in mine to map return codes to some semblance of a string version of them:

        LED=$(perl -le "\$!+=${LE};print \$!" 2>/dev/null || echo "unknown error")
    
    It's not perfect but I haven't found a more reliable way to map exit status' to something like the right meaning.
ender7 13 years ago

Please add "cursor: default;" or "cursor: move;" to the draggable items. Draggable things should not use the text selection cursor. :)

egwynn 13 years ago

It should probably emit the example PS1 with single quotes instead of double quotes.

This:

  export PS1="\h:\W\$(parse_git_branch) \u$ "
will execute parse_git_branch only once (at the time PS1 is set) but this:

  export PS1='\h:\W\$(parse_git_branch) \u$ '
will execute it every time the prompt every time.
  • egwynn 13 years ago

    Also, I'd like to offer some words of caution to those who want lots of "external" (i.e. not bash-native) data in their PS1 string. Running outside programs can be expensive. For personal workstation use, things like the above are great. However, if you administer a remote (perhaps resource-constrained) server and you find yourself trying to rescue it from swap-death (or a partially busted HDD), you may not want to be 1) forking subprocesses, 2) allocating file descriptors, and 3) doing disk IO every time you hit the enter key. Build responsible prompt strings everyone.

    • icebraining 13 years ago

      If you're actually trying to rescue a server, you can just do "export PS1='#'" once to disable it for the current session.

hadem 13 years ago

You might also be interested in this PS1 generator. Seems to have a few more options.

http://omar.io/ps1gen/

pclark 13 years ago

I kept dragging the elements into the terminal window thinking that was how I construct it.

  • asciimo 13 years ago

    Me, too. When I figured it out I felt silly. Maybe emphasize the construction area and deemphasize the preview? Could the preview be static, and to the right of the construction area and palettes?

xxtjaxx 13 years ago

1. Better know what you are doing when you fiddle with your shellprompt. Nothing is more agitating than having an unresponsive prompt because you entered a larger git repository. (cough linux kernel cough)

2. Here is a color map which escape will make your prompt look which way. https://github.com/andreas-marschke/misc-tools/blob/master/s...

3. You can find my prompt setup here: https://github.com/andreas-marschke/dotfiles

It's split up across profile,bashrc,bash_alias,bash_export

4. As was requested in the comments here you can use $TERM variable to determine your terminal name. Since most popular terminal emulators try to be what they are supposed to be "dumb vt100s" you'll get xterm or (if you use a multiplexer like tmux,screen) "screen" as $TERM. IMHO its not of much use therefore.

5.https://github.com/Lokaltog/powerline << Mean to test this out. Its more for vim users.

D9u 13 years ago

https://news.ycombinator.com/item?id=6155556

http://blog.twistedcode.org/2008/03/customizing-your-bash-pr...

http://www.bbs-software.com/blog/2013/08/03/%EF%A3%BF-in-you...

sethammons 13 years ago

This is pretty neat. One issue: I put a lot of info in my ps1, so I need more than two space tokens. They should regenerate as you pull them up. Also, I want different colors on different tokens. I also like my git branch to be a different color between master, staging, integration (or other feature branches). I use the ps1_set from RVM, but take out the ruby version.

robinson-wall 13 years ago

This just uses a literal dollar sign to mark the end of the prompt by default. That means if, like me, you don't put the username in your PS1 - instead relying on $ changing to a # when you run `sudo -s' nothing will happen.

I would suggest adding a "$/#" bubble which adds "\$" to the PS1 string.

prezjordan 13 years ago

If you're not opposed to using JS in your prompt (it runs fast, promise!) check out impromptu [0]. I've been using it for a few months now and it's amazing.

[0]: https://github.com/impromptu/impromptu

  • rodw 13 years ago

    You're probably not the maintainer, but Impromptu's README really should do a better job of explaining what it does and why I'd want to use it.

    It sounds interesting, or at least I can imagine something interesting based on that description, but the only concrete information readily available seems to be that Impromptu requires Node.js and Redis. Those are fairly onerous requirements for a shell prompt, so some description of the actual features is probably warranted.

keeperofdakeys 13 years ago

If anyone wanted a full list of available options, you can look at the man page for your shell, under PROMPTING (you can type /PROMPTING to search for it). Any other bash variable, or user defined variable will also work.

RandallBrown 13 years ago

There's a bug where if you drag everything out of your configuration, you can't drag anything back in again.

Neat though.

I'm on Firefox v22.

petarb 13 years ago

Wow this is great, props for making the first drag-n-drop $PS1 generator

snake_plissken 13 years ago

just confusing enough to thwart those pesky North Korean hackers:

export PS1="\[\e[30;0m\]\w^$ \v\h\u\W\u:\[\e[0m\]"

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection