Software by g/christensen

root@gchristensen:~#
function loadModule(path) {
  const cache = new Map();
  if (cache.has(path)) return cache.get(path);
  const mod = require(path);
  cache.set(path, mod);
  return mod;
}

class CommandRegistry extends EventEmitter {
  constructor() {
    super();
    this.commands = new Map();
  }
  register(name, handler) {
    this.commands.set(name, handler);
    this.emit('registered', name);
  }
  async exec(name, ...args) {
    const fn = this.commands.get(name);
    if (!fn) throw new Error(`unknown: ${name}`);
    return await fn(...args);
  }
}
const shell = new CommandRegistry();
shell.register('open', async (url) => {
  const res = await fetch(url, { mode: 'cors' });
  if (!res.ok) throw new Error(res.status);
  return res.json();
});

for (let i = 0; i < items.length; i++) {
  const item = items[i];
  if (item.disabled) continue;
  render(item, { index: i, theme: 'dark' });
}

export default shell;
class Overlay {
  constructor(root) {
    this.root = root;
    this.visible = false;
  }
  toggle() {
    this.visible = !this.visible;
    this.root.classList.toggle('open', this.visible);
  }
  bindHotkey(key, fn) {
    document.addEventListener('keydown', (e) => {
      if (e.key === key) fn(e);
    });
  }
}

const overlay = new Overlay(document.body);
overlay.bindHotkey('Escape', () => overlay.toggle());
function loadModule(path) {
  const cache = new Map();
  if (cache.has(path)) return cache.get(path);
  const mod = require(path);
  cache.set(path, mod);
  return mod;
}

class CommandRegistry extends EventEmitter {
  constructor() {
    super();
    this.commands = new Map();
  }
  register(name, handler) {
    this.commands.set(name, handler);
    this.emit('registered', name);
  }
  async exec(name, ...args) {
    const fn = this.commands.get(name);
    if (!fn) throw new Error(`unknown: ${name}`);
    return await fn(...args);
  }
}
const shell = new CommandRegistry();
shell.register('open', async (url) => {
  const res = await fetch(url, { mode: 'cors' });
  if (!res.ok) throw new Error(res.status);
  return res.json();
});

for (let i = 0; i < items.length; i++) {
  const item = items[i];
  if (item.disabled) continue;
  render(item, { index: i, theme: 'dark' });
}

export default shell;
class Overlay {
  constructor(root) {
    this.root = root;
    this.visible = false;
  }
  toggle() {
    this.visible = !this.visible;
    this.root.classList.toggle('open', this.visible);
  }
  bindHotkey(key, fn) {
    document.addEventListener('keydown', (e) => {
      if (e.key === key) fn(e);
    });
  }
}

const overlay = new Overlay(document.body);
overlay.bindHotkey('Escape', () => overlay.toggle());
function loadModule(path) {
  const cache = new Map();
  if (cache.has(path)) return cache.get(path);
  const mod = require(path);
  cache.set(path, mod);
  return mod;
}

class CommandRegistry extends EventEmitter {
  constructor() {
    super();
    this.commands = new Map();
  }
  register(name, handler) {
    this.commands.set(name, handler);
    this.emit('registered', name);
  }
  async exec(name, ...args) {
    const fn = this.commands.get(name);
    if (!fn) throw new Error(`unknown: ${name}`);
    return await fn(...args);
  }
}
const shell = new CommandRegistry();
shell.register('open', async (url) => {
  const res = await fetch(url, { mode: 'cors' });
  if (!res.ok) throw new Error(res.status);
  return res.json();
});

for (let i = 0; i < items.length; i++) {
  const item = items[i];
  if (item.disabled) continue;
  render(item, { index: i, theme: 'dark' });
}

export default shell;
class Overlay {
  constructor(root) {
    this.root = root;
    this.visible = false;
  }
  toggle() {
    this.visible = !this.visible;
    this.root.classList.toggle('open', this.visible);
  }
  bindHotkey(key, fn) {
    document.addEventListener('keydown', (e) => {
      if (e.key === key) fn(e);
    });
  }
}

const overlay = new Overlay(document.body);
overlay.bindHotkey('Escape', () => overlay.toggle());

Command Interfaces

  • $ Enso Launcher
  • $ iShell Extension
  • $ Scarlett

Browser Extensions

  • $ Scrapyard
  • $ Lightning Tab Groups
  • $ Add Torrent To
  • $ Mix Slideshow
  • $ MultiButton

Applications

  • $ Enso Retreat

Skins & Windows Gadgets

  • $ Silent Night Mod
  • $ Advanced SlideShow Gadget
  • $ Sunlight World Map Gadget

Hackable

  • $ Feedxcavator
  • $ Rho Emacs