Skip to content

Instantly share code, notes, and snippets.

@andycarrell
Last active January 18, 2021 22:29
Show Gist options
  • Save andycarrell/cddfd84bd9eb786f75d0823a690a518a to your computer and use it in GitHub Desktop.
Save andycarrell/cddfd84bd9eb786f75d0823a690a518a to your computer and use it in GitHub Desktop.
// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.
module.exports = {
config: {
// choose either `'stable'` for receiving highly polished,
// or `'canary'` for less polished but more frequent updates
updateChannel: "stable",
// default font size in pixels for all tabs
fontSize: 11,
// font family with optional fallbacks
fontFamily:
'"Fira Code", Menlo, "DejaVu Sans Mono", Consolas, "Lucida Console", monospace',
// default font weight: 'normal' or 'bold'
fontWeight: "normal",
// font weight for bold characters: 'normal' or 'bold'
fontWeightBold: "bold",
// line height as a relative unit
lineHeight: 1,
// letter spacing as a relative unit
letterSpacing: 0,
// terminal cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
cursorColor: "rgba(248,28,229,0.8)",
// terminal text color under BLOCK cursor
cursorAccentColor: "#000",
// `'BEAM'` for |, `'UNDERLINE'` for _, `'BLOCK'` for █
cursorShape: "UNDERLINE",
// set to `true` (without backticks and without quotes) for blinking cursor
cursorBlink: false,
// color of the text
foregroundColor: "#fff",
// terminal background color
// opacity is only supported on macOS
backgroundColor: "#000",
// terminal selection color
selectionColor: "rgba(248,28,229,0.3)",
// border color (window, tabs)
borderColor: "#000",
// custom CSS to embed in the main window
css: "",
// custom CSS to embed in the terminal window
termCSS: "",
// if you're using a Linux setup which show native menus, set to false
// default: `true` on Linux, `true` on Windows, ignored on macOS
showHamburgerMenu: "",
// set to `false` (without backticks and without quotes) if you want to hide the minimize, maximize and close buttons
// additionally, set to `'left'` if you want them on the left, like in Ubuntu
// default: `true` (without backticks and without quotes) on Windows and Linux, ignored on macOS
showWindowControls: true,
// custom padding (CSS format, i.e.: `top right bottom left`)
padding: "8px 8px",
// the full list. if you're going to provide the full color palette,
// including the 6 x 6 color cubes and the grayscale map, just provide
// an array here instead of a color map object
colors: {
black: "#000000",
red: "#ff0000",
green: "#33ff00",
yellow: "#ffff00",
blue: "#0066ff",
magenta: "#cc00ff",
cyan: "#00ffff",
white: "#d0d0d0",
lightBlack: "#808080",
lightRed: "#ff0000",
lightGreen: "#33ff00",
lightYellow: "#ffff00",
lightBlue: "#0066ff",
lightMagenta: "#cc00ff",
lightCyan: "#00ffff",
lightWhite: "#ffffff"
},
// the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
// if left empty, your system's login shell will be used by default
//
// Windows
// - Make sure to use a full path if the binary name doesn't work
// - Remove `--login` in shellArgs
//
// Bash on Windows
// - Example: `C:\\Windows\\System32\\bash.exe`
//
// PowerShell on Windows
// - Example: `C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`
shell: "",
// for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
// by default `['--login']` will be used
shellArgs: ["--login"],
// for environment variables
env: {},
// set to `false` for no bell
bell: false,
// if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard
copyOnSelect: true,
// if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH
defaultSSHApp: true,
//windowSize: [1900, 1100],
// if `true` (without backticks and without quotes), on right click selected text will be copied or pasted if no
// selection is present (`true` by default on Windows and disables the context menu feature)
// quickEdit: true,
// URL to custom bell
// bellSoundURL: 'http://example.com/bell.mp3',
// for advanced config flags please refer to https://hyper.is/#cfg
hypercwd: {
initialWorkingDirectory: "~/dev"
}
},
// a list of plugins to fetch and install from npm
// format: [@org/]project[#version]
// examples:
// `hyperpower`
// `@company/project`
// `project#1.0.1`
plugins: [
"hypercwd",
"hyperminimal",
//"hyper-material-theme",
"hyper-snazzy",
"hyper-quit",
"hyper-tabs-enhanced"
],
// in development, you can create a directory under
// `~/.hyper_plugins/local/` and include it here
// to load it and avoid it being `npm install`ed
localPlugins: [],
keymaps: {
// Example
// 'window:devtools': 'cmd+alt+o',
}
};
const pwsPath = 'C:/Windows/System32/WindowsPowershell/v1.0/powershell.exe'
// `ctrl + y` bc it is by t
const isOpeningPowerShell = e => e.keyCode === 89 && e.ctrlKey
exports.decorateTerm = (Term, { React }) => {
return class extends React.Component {
constructor (props, context) {
super(props, context)
this._onTerminal = this._onTerminal.bind(this)
}
_onTerminal (term) {
if (this.props && this.props.onTerminal) this.props.onTerminal(term)
term.uninstallKeyboard()
const testHandler = [
'keydown',
e => {
if (isOpeningPowerShell(e)) {
e.preventDefault();
term.io.sendString(`reset && ${pwsPath} \r`)
}
}
]
term.keyboard.handlers_ = [
testHandler,
...term.keyboard.handlers_
]
term.installKeyboard()
}
render () {
return React.createElement(Term, Object.assign({}, this.props, {
onTerminal: this._onTerminal
}))
}
}
}
const cwd = 'C:/Dev'
const push = cwd => store.dispatch({ type: 'SESSION_SET_CWD', cwd });
exports.middleware = store => next => action => {
const { type } = action;
if (type === 'CONFIG_LOAD' || type === 'CONFIG_RELOAD') {
push(cwd || process.env.HOME);
}
next(action);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment