webmatze / hyperborder

adds a gradient border to the Hyper terminal
247 stars 27 forks source link

Settings from .hyper.js are not getting applied #49

Closed aeimer closed 6 years ago

aeimer commented 6 years ago

Hi there, I use the new hyper 2.0, the default values work. But none of the configured values are applied.

I printed out the config property from your index.js, it seems like the API changed and the config are no longer available under window.config?!

I work on win10.

hyper.js:

$ cat .hyper.js
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: 12,

    // font family with optional fallbacks
    fontFamily: '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',

    // 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: 'BLOCK',

    // 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: '#333',

    // 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: '',

    // custom padding (CSS format, i.e.: `top right bottom left`)
    padding: '12px 14px',

    // 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: '#C51E14',
      green: '#1DC121',
      yellow: '#C7C329',
      blue: '#0A2FC4',
      magenta: '#C839C5',
      cyan: '#20C5C6',
      white: '#C7C7C7',
      lightBlack: '#686868',
      lightRed: '#FD6F6B',
      lightGreen: '#67F86F',
      lightYellow: '#FFFA72',
      lightBlue: '#6A76FB',
      lightMagenta: '#FD7CFC',
      lightCyan: '#68FDFE',
      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: '',
    shell: 'C:\\Program Files\\Git\\git-cmd.exe',

    // for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
    // by default `['--login']` will be used
    //shellArgs: ['--login'],
    shellArgs: ['--command=usr/bin/bash.exe', '-l', '-i'],

    // for environment variables
    //env: {},
    env: { TERM: 'cygwin'},

    // set to `false` for no bell
    bell: 'SOUND',

    // if `true` (without backticks and without quotes), selected text will automatically be copied to the clipboard
    copyOnSelect: false,

    // if `true` (without backticks and without quotes), hyper will be set as the default protocol client for SSH
    defaultSSHApp: true,

    // 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
  },

  // a list of plugins to fetch and install from npm
  // format: [@org/]project[#version]
  // examples:
  //   `hyperpower`
  //   `@company/project`
  //   `project#1.0.1`
  //
  // May add in Future:
  // 'hyperline', // Currently not usable on windows
  // 'hyper-tabs-enhanced',
  plugins: [
    'gitrocket',
    'hyperlinks',
    'hyperterm-safepaste',
    'hyper-solarized-dark',
    'hyper-sync-settings',
    'space-pull',
    'hyperfull',
    'hyperborder'
  ],

  // 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',
   'click:right': 'ctrl+ins',
  },

  // Custom Plugin stuff
  hyperTabs: {
    border: true,
    tabIcons: true,
    tabIconsColored: true,
    activityPulse: true,
  },

  hyperBorder: {
    borderColors: ['#fd5f00', '#2c2c2c'],
    blurredColors: '#333333',
    adminBorderColors: ['#ff0000', '#999999'],
  },

  hyperline: {
    // plugins: [
    //   "hostname",
    //   "ip",
    //   "cpu",
    //   "memory",
    //   "network",
    //   "git-status",
    //   "docker",
    //   "time",
    //   "uptime",
    //   "spotify",
    // ]
  },
};

The Window is still styled in the default colors. grafik

If I alter the index.js => https://github.com/webmatze/hyperborder/blob/master/index.js#L23

...
  const config = window.config.getConfig();
  console.log(config);

  if (config.hyperBorder && config.hyperBorder.animate) {
    unloadAnimator = createAnimator(window, browserWindow);
  }
...

It prints out the following: grafik There is no hyperborder object in the config. I think the new Hyper-Version offers another way to get the config?! This could be an bug from hyper?!

aeimer commented 6 years ago

@webmatze any ideas how to solve this?

webmatze commented 6 years ago

Hey @aeimer, I am sorry. I had no time to look into this issue. I will invest some time this weekend.

Arttse commented 6 years ago

@aeimer, I think that the problem is that the plugin settings are added to the wrong place. Plugin settings must be added to the config object, for example like this:

module.exports = {
  //...
  config: {
    //...
    hyperBorder: {
      borderColors: ['#fd5f00', '#2c2c2c'],
      blurredColors: '#333333',
      adminBorderColors: ['#ff0000', '#999999'],
    },
    //...
  },
  plugins: ['hyperborder'],
  //...
};
aeimer commented 6 years ago

Ahhh, thanks alot. :)