hyper-autoprofile v1.0.4
hyper-autoprofile
Extension for Hyper.app to configure terminal appearance according to current shell prompt.

Install
Using hpm
hpm install hyper-autoprofileManually
To install, edit ~/.hyper.js and add "hyper-autoprofile" to plugins:
plugins: [
"hyper-autoprofile",
],Configuration
Add autoProfile in your ~/.hyper.js config.
The configuration below shows the two differents sections prompts and profiles:
module.exports = {
config: {
// other configs...
autoProfile: {
prompts: [
{
// 'MyHost:Documents me$ ' default MacOS bash prompt
pattern: "^(\\S+):(.*) ([a-z_][a-z0-9_\\-\\.]*[\\$]?)[\\$#]\\s*$",
hostname: 1,
path: 2,
username: 3
},
{
// 'me@MyHost:~$ ' default Linux bash prompt
pattern:
"^([a-z_][a-z0-9_\\-\\.]*[\\$]?)@(\\S+):([\\/~].*)[\\$#]\\s*$",
username: 1,
hostname: 2,
path: 3
},
{
// 'me@MyHost ~> ' default fish prompt
pattern: "^([a-z_][a-z0-9_\\-\\.]*[\\$]?)@(\\S+) ([\\/~].*)[>#]\\s*",
username: 1,
hostname: 2,
path: 3
},
{
// 'MyHost% ' default zsh prompt
pattern: "^(\\S+)% ",
hostname: 1
},
{
// '➜ ~' default oh-my-zsh prompt (robbyrussell theme)
pattern: "^➜ ([\\/~].*) ",
path: 1
},
{
// 'me@MyHost MINGW64 ~ (master) ' default git-bash prompt on Windows
pattern: "^([a-z_][a-z0-9_\\-\\.]*[\\$]?)@(\\S+) MINGW64 ([\\/~].*)(\s|$)",
username: 1,
hostname: 2,
path: 3
}
],
profiles: [
{
triggers: ["root@"],
backgroundColor: "#400"
},
{
triggers: ["@scotchbox"],
backgroundColor: "#040"
},
{
triggers: ["/project"],
backgroundColor: "#004"
}
],
stripAnsiSequences: true, //default
debug: false //default
}
}
//...
};autoProfile.prompts
This section defines different patterns for parsing prompt components: username, host, path.
Note that pattern is a string literal passed to the RegExp()
constructor, so remember to escape backslashes in your regexp. For
example, if you used a site like regex101.com
to verify that your regexp /\[(\w+):\s*(\w+)\](\s*\$)/ is correct,
you would double each backslash and write the pattern as:
pattern: '\\[(\\w+):\\s*(\\w+)\\](\\s*\\$)',The values for hostname, username, and pattern are indexes into the match array returned by RegExp#exec.
For example, define a pattern for MacOS bash default prompt:
{
// 'MyHost:~ me$ '
pattern: '^(\\S+):([/~].*) ([a-z_][a-z0-9_\\-\\.]*[\\$]?)[\\$#]\\s*$',
hostname: 1,
path: 2,
username: 3
}autoProfile.profiles
This section is an ordered array of potential Profile. A Profile is composed by a list of trigger and style properties.
trigger formats :
'user@'to specifyuser'@host'to specifyhost'/path/to/directory'or'/directory'to specifypath'user@host'to specifyuserandhost'user@:/path'to specifyuserandpath'@host:/path'to specifyhostandpath'user@host:/path'to specifyuserandhostandpath
user and host components are strictly compared, path matches if it is included in prompt path: '/tmp' path will match '/tmp' and '/path/to/tmp/subpath'.
All other properties of this section will be applied to Term if a trigger is matched. It could be any property of the main config section like backgroundColor, cursorColor, fontSize...
autoProfile.stripAnsiSequences (Default: true)
If enabled, ANSI escape sequences are stripped from input before trying to match triggers. See here for more details.
autoProfile.debug (Default: false)
If enabled, debug information is written to the DevTools console
Caveat
Because of some tricky parsing, this plugin could not detect a shell change immediately. To force its detection, clearing terminal (Ctrl+L) could help.