Skip to content

Instantly share code, notes, and snippets.

@cloudhan
Last active August 27, 2021 02:52
Show Gist options
  • Save cloudhan/feaefab402945b136a65f5938c8e6fa1 to your computer and use it in GitHub Desktop.
Save cloudhan/feaefab402945b136a65f5938c8e6fa1 to your computer and use it in GitHub Desktop.

Revisions

  1. cloudhan revised this gist Aug 27, 2021. 1 changed file with 12 additions and 3 deletions.
    15 changes: 12 additions & 3 deletions workspacer.config.csx
    Original file line number Diff line number Diff line change
    @@ -37,12 +37,20 @@ Action<IConfigContext> doConfig = (context) =>
    var container = context.WorkspaceContainer;
    var router = context.WindowRouter;

    // router.AddFilter((window) => !window.Title.Contains("Everything"));
    // ignored
    router.AddFilter((window) => !window.ProcessFileName.Equals("Everything.exe"));

    // router.AddRoute((window) => window.Title.Contains("Visual Studio") ? container["Code"] : null);
    router.AddFilter((window) => !window.ProcessFileName.Equals("ScreenToGif.exe"));
    router.AddFilter((window) => !window.Title.Contains("Snipaste"));

    router.AddRoute((window) => window.ProcessFileName.Equals("Code.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("WindowsTerminal.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("cmd.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("pwsh.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("powershell.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.Title.Contains("Visual Studio") ? container["Code"] : null);

    router.AddRoute((window) => window.Title.Contains("Google Chrome") ? container["Web"] : null);
    router.AddRoute((window) => window.Title.Contains("Mozilla Firefox") ? container["Web"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("msedge.exe") ? container["Web"] : null);

    KeyModifiers mod = KeyModifiers.Alt;
    @@ -53,6 +61,7 @@ Action<IConfigContext> doConfig = (context) =>
    context.Keybinds.Subscribe(mod, Keys.Oemcomma, () => context.Workspaces.FocusedWorkspace.DecrementNumberOfPrimaryWindows(), "decrement # primary windows");
    context.Keybinds.Subscribe(mod, Keys.OemPeriod, () => context.Workspaces.FocusedWorkspace.IncrementNumberOfPrimaryWindows(), "increment # primary windows");
    // not used
    context.Keybinds.Unsubscribe(mod, Keys.O); // conflict with VSCode's switch header source
    context.Keybinds.Unsubscribe(mod | KeyModifiers.LShift, Keys.O);
    // conflict
    context.Keybinds.Unsubscribe(mod, Keys.Space);
  2. cloudhan created this gist Jul 25, 2021.
    63 changes: 63 additions & 0 deletions workspacer.config.csx
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,63 @@
    #r "C:\Program Files\workspacer\workspacer.Shared.dll"
    #r "C:\Program Files\workspacer\plugins\workspacer.Bar\workspacer.Bar.dll"
    #r "C:\Program Files\workspacer\plugins\workspacer.ActionMenu\workspacer.ActionMenu.dll"
    #r "C:\Program Files\workspacer\plugins\workspacer.FocusIndicator\workspacer.FocusIndicator.dll"

    using System;
    using workspacer;
    using workspacer.Bar;
    using workspacer.ActionMenu;
    using workspacer.FocusIndicator;


    /* How to config
    * =============
    * https://github.com/workspacer/workspacer/blob/a89d3449fc969053a65e849d0f9ce5d7f2ec0a8b/docs/content/config.md
    * https://github.com/workspacer/workspacer/wiki/Customization
    *
    * How to bind keys
    * ================
    * https://github.com/workspacer/workspacer/blob/a89d3449fc969053a65e849d0f9ce5d7f2ec0a8b/src/workspacer/Keybinds/KeybindManager.cs
    */
    Action<IConfigContext> doConfig = (context) =>
    {
    // Uncomment to switch update branch (or to disable updates)
    //context.Branch = Branch.None;

    context.AddBar(new BarPluginConfig(){
    FontName = "Sarasa Term SC",
    FontSize = 12,
    });
    context.AddFocusIndicator();
    var actionMenu = context.AddActionMenu();

    context.WorkspaceContainer.CreateWorkspaces("Web", "Code", "Other");
    context.CanMinimizeWindows = true; // false by default

    var container = context.WorkspaceContainer;
    var router = context.WindowRouter;

    // router.AddFilter((window) => !window.Title.Contains("Everything"));
    router.AddFilter((window) => !window.ProcessFileName.Equals("Everything.exe"));

    // router.AddRoute((window) => window.Title.Contains("Visual Studio") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("Code.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("WindowsTerminal.exe") ? container["Code"] : null);
    router.AddRoute((window) => window.ProcessFileName.Equals("msedge.exe") ? container["Web"] : null);

    KeyModifiers mod = KeyModifiers.Alt;

    // swap these two keys
    context.Keybinds.Unsubscribe(mod, Keys.Oemcomma);
    context.Keybinds.Unsubscribe(mod, Keys.OemPeriod);
    context.Keybinds.Subscribe(mod, Keys.Oemcomma, () => context.Workspaces.FocusedWorkspace.DecrementNumberOfPrimaryWindows(), "decrement # primary windows");
    context.Keybinds.Subscribe(mod, Keys.OemPeriod, () => context.Workspaces.FocusedWorkspace.IncrementNumberOfPrimaryWindows(), "increment # primary windows");
    // not used
    context.Keybinds.Unsubscribe(mod | KeyModifiers.LShift, Keys.O);
    // conflict
    context.Keybinds.Unsubscribe(mod, Keys.Space);
    context.Keybinds.Unsubscribe(mod, Keys.Left);
    context.Keybinds.Unsubscribe(mod, Keys.Right);

    };
    return doConfig;