Running Multiple Alias Configs + Optional Keypirinha Integration

If you use the same Alias configuration on several computers, you may have encountered the frustration of aliases breaking due to slightly different paths to a given file on each of the computers. To resolve this, I created the following code, which was inspired by code shared by @lxp Using Backup/Restore Configuration to share configuration with own PC or others? - #3 by r47926. Note that LXP's solution is also viable. My version allows you to run two completely separate Alias config's.


BACKUP YOUR ALIAS CONFIG BEFORE ATTEMPTING THIS!!!

This can be found in DOpusConfig\ConfigFiles\folderaliases.oxc

The solution consists of two BAT files which I run from the Favourites Bar.

  1. Imports an alias file, based on the name of the computer that you are currently on. To learn the name of your pc, open terminal or command prompt and type hostname. Adjust this code accordingly. The name must be CAPITALISED in the code. Then create a folder somewhere (I save mine in the DOPUS config folder.

DOpusConfig
└───Alias_chooser
├───Personal_Desktop
│ └───folderaliases.oxc
│
└───Personal_Laptop
└───folderaliases.oxc

The code below sets the config based on your PC name. It must be saved as a .bat file (e.g. set_alias_config.bat).

@echo off
setlocal
set "opusCfg=%APPDATA%\GPSoftware\Directory Opus\ConfigFiles"
set "machine=%COMPUTERNAME%"
cd /d "%opusCfg%"

echo Detected PC: %machine%

if exist folderaliases.oxc (
    del folderaliases.oxc
)

if /I "%machine%"=="PCNAME" (
    copy /Y "C:\Users\X\OneDrive\DOpusConfig\Alias_chooser\Personal_Laptop\folderaliases.oxc" folderaliases.oxc
    echo Copied Personal_Laptop aliases.
) else if /I "%machine%"=="PCNAME" (
    copy /Y "E:\OneDrive\DOpusConfig\Alias_chooser\Personal_Desktop\folderaliases.oxc" folderaliases.oxc
    echo Copied Personal_Desktop aliases.
) else (
    echo Unknown machine: %machine%
)

pause

  1. If you make changes based on the current session (e.g. add or remove aliases). The following code updates the source config, so that the next time that you import it on the current PC, the changes are reflected. It must also be saved as a .bat file.
@echo off
setlocal
set "opusCfg=%APPDATA%\GPSoftware\Directory Opus\ConfigFiles"
set "machine=%COMPUTERNAME%"

echo Detected PC: %machine%

if /I "%machine%"=="PCNAME2" (
    copy /Y "%opusCfg%\folderaliases.oxc" "C:\Users\X\OneDrive\DOpusConfig\Alias_chooser\Personal_Laptop\folderaliases.oxc"
    echo Saved current aliases to Personal_Laptop folder.
) else if /I "%machine%"=="PCNAME2" (
    copy /Y "%opusCfg%\folderaliases.oxc" "E:\OneDrive\DOpusConfig\Alias_chooser\Personal_Desktop\folderaliases.oxc"
    echo Saved current aliases to Personal_Desktop folder.
) else (
    echo Unknown machine: %machine%
)

pause

You will again need to adjust PC name and paths etc.

Keypirinha Version

When loading your alias configs, calls a python script which automatically ports your aliases into the Keypirinha launcher, so you can open an aliased directory from anywhere (opens dopus at target location).

You will need to check the path for everything, including the location of your keypirinha install.

Keypirinha version of Load Alias.bat

@echo off
setlocal

set "opusCfg=%APPDATA%\GPSoftware\Directory Opus\ConfigFiles"
set "machine=%COMPUTERNAME%"
set "generator=C:\Utilities\Keypirinha\Keypirinah_Alias_Generator.py"
set "liveAliases=%opusCfg%\folderaliases.oxc"

cd /d "%opusCfg%"

echo Detected PC: %machine%
echo DOpus config folder: %opusCfg%
echo.

if exist folderaliases.oxc (
    del folderaliases.oxc
)

if /I "%machine%"=="PC1" (
    copy /Y "C:\Users\xxx\OneDrive\DOpusConfig\Alias_chooser\Personal_Laptop\folderaliases.oxc" folderaliases.oxc
    echo Copied Personal_Laptop aliases.
) else if /I "%machine%"=="PC2" (
    copy /Y "E:\OneDrive\DOpusConfig\Alias_chooser\Personal_Desktop\folderaliases.oxc" folderaliases.oxc
    echo Copied Personal_Desktop aliases.
) else if /I "%machine%"=="PC3" (
    copy /Y "C:\Users\Work_Desktop\OneDrive\DOpusConfig\Alias_chooser\Work_Desktop\folderaliases.oxc" folderaliases.oxc
    echo Copied Work_Desktop aliases.
) else (
    echo Unknown machine: %machine%
    echo No alias file copied.
    echo.
    pause
    exit /b 1
)

echo.
echo Updating Keypirinha Apps config from:
echo "%liveAliases%"
echo.

if not exist "%generator%" (
    echo ERROR: Keypirinha generator not found:
    echo "%generator%"
    echo.
    pause
    exit /b 1
)

if not exist "%liveAliases%" (
    echo ERROR: Live DOpus aliases file not found:
    echo "%liveAliases%"
    echo.
    pause
    exit /b 1
)

py "%generator%" "%liveAliases%"

if errorlevel 1 (
    echo.
    echo ERROR: Keypirinha apps.ini generation failed.
    echo.
    pause
    exit /b 1
)

echo.
echo Done.
echo Updated:
echo C:\Utilities\Keypirinha\portable\Profile\User\apps.ini
echo.
echo Reload Keypirinha configuration if it is already running.
echo.

pause

Keypirinha version of SaveAlias.bat

@echo off
setlocal

set "opusCfg=%APPDATA%\GPSoftware\Directory Opus\ConfigFiles"
set "machine=%COMPUTERNAME%"
set "liveAliases=%opusCfg%\folderaliases.oxc"
set "generator=C:\Utilities\Keypirinha\Keypirinah_Alias_Generator.py"
set "keypirinhaApps=C:\Utilities\Keypirinha\portable\Profile\User\apps.ini"

echo Detected PC: %machine%
echo DOpus config folder: %opusCfg%
echo Live aliases: %liveAliases%
echo.

if not exist "%liveAliases%" (
    echo ERROR: Live DOpus aliases file not found:
    echo "%liveAliases%"
    echo.
    pause
    exit /b 1
)

if /I "%machine%"=="PC1" (
    copy /Y "%liveAliases%" "C:\Users\xxx\OneDrive\DOpusConfig\Alias_chooser\Personal_Laptop\folderaliases.oxc"
    echo Saved current aliases to Personal_Laptop folder.
) else if /I "%machine%"=="HomeDesktop" (
    copy /Y "%liveAliases%" "E:\OneDrive\DOpusConfig\Alias_chooser\Personal_Desktop\folderaliases.oxc"
    echo Saved current aliases to Personal_Desktop folder.
) else if /I "%machine%"=="WORKDESKTOP" (
    copy /Y "%liveAliases%" "C:\Users\Work_Desktop\OneDrive\DOpusConfig\Alias_chooser\Work_Desktop\folderaliases.oxc"
    echo Saved current aliases to Work_Desktop folder.
) else (
    echo Unknown machine: %machine%
    echo No alias file saved.
    echo.
    pause
    exit /b 1
)

if errorlevel 1 (
    echo.
    echo ERROR: Failed to save aliases to machine-specific OneDrive folder.
    echo.
    pause
    exit /b 1
)

echo.
echo Pushing aliases to Keypirinha.
echo Generator:
echo "%generator%"
echo.
echo Output:
echo "%keypirinhaApps%"
echo.

if not exist "%generator%" (
    echo ERROR: Keypirinha alias generator not found:
    echo "%generator%"
    echo.
    pause
    exit /b 1
)

py "%generator%" "%liveAliases%"

if errorlevel 1 (
    echo.
    echo ERROR: Keypirinha apps.ini generation failed.
    echo.
    pause
    exit /b 1
)

if not exist "%keypirinhaApps%" (
    echo.
    echo ERROR: Expected Keypirinha apps.ini was not created:
    echo "%keypirinhaApps%"
    echo.
    pause
    exit /b 1
)

echo.
echo Done.
echo Saved DOpus aliases to backup/sync location.
echo Updated Keypirinha Apps config:
echo "%keypirinhaApps%"
echo.
echo In Keypirinha, run:
echo Keypirinha: Reload Configuration
echo.
echo Then type / to see DOpus alias launchers.
echo.

pause

Python Helper: Keypirinah_Alias_Generator.py

from __future__ import annotations

import re
import sys
import xml.etree.ElementTree as ET
from pathlib import Path


DEFAULT_ALIAS_FILE = Path(
    r"C:\Users\Work_Desktop\AppData\Roaming\GPSoftware\Directory Opus\ConfigFiles\folderaliases.oxc"
)

KEYPIRINHA_APPS_OUT = Path(
    r"C:\Utilities\Keypirinha\portable\Profile\User\apps.ini"
)

DOPUSRT_EXE = Path(
    r"C:\Program Files\GPSoftware\Directory Opus\dopusrt.exe"
)


def sanitize_cmd_name(label: str) -> str:
    cleaned = label.strip()
    cleaned = re.sub(r"[\r\n\t]+", " ", cleaned)
    cleaned = cleaned.replace("[", "(").replace("]", ")")
    cleaned = cleaned.replace("/", "_").replace("\\", "_")
    cleaned = re.sub(r"\s+", " ", cleaned)
    return cleaned or "Unnamed Alias"


def quote_cmd_arg(value: str) -> str:
    escaped = value.replace('"', r'\"')
    return f'"{escaped}"'


def parse_aliases(alias_file: Path) -> list[tuple[str, str]]:
    if not alias_file.exists():
        raise FileNotFoundError(f"Alias file not found: {alias_file}")

    tree = ET.parse(alias_file)
    root = tree.getroot()

    aliases: list[tuple[str, str]] = []

    for path_node in root.findall("path"):
        label = (path_node.get("label") or "").strip()

        pathstring_node = path_node.find("./dir/pathstring")
        if pathstring_node is None or pathstring_node.text is None:
            continue

        target = pathstring_node.text.strip()

        if not label or not target:
            continue

        aliases.append((label, target))

    seen: set[tuple[str, str]] = set()
    unique_aliases: list[tuple[str, str]] = []

    for label, target in aliases:
        key = (label.casefold(), target.casefold())
        if key in seen:
            continue
        seen.add(key)
        unique_aliases.append((label, target))

    return unique_aliases


def make_apps_config(aliases: list[tuple[str, str]]) -> str:
    lines: list[str] = []

    lines.extend(
        [
            "#",
            "# Keypirinha Apps Package - User Config",
            "# Generated from Directory Opus folderaliases.oxc",
            "# Output:",
            f"# {KEYPIRINHA_APPS_OUT}",
            "#",
            "",
            "[main]",
            "scan_start_menu = yes",
            "scan_desktop = yes",
            "scan_env_path = yes",
            "",
            "",
            "[custom_commands]",
            "# Type / in Keypirinha to bring DOpus alias launchers to the top.",
            "item_label = /{cmd_name}",
            "history_keep = cmd",
            "auto_terminal = no",
            "",
        ]
    )

    used_names: set[str] = set()

    for label, target in aliases:
        cmd_name = sanitize_cmd_name(label)

        base_cmd_name = cmd_name
        counter = 2

        while cmd_name.casefold() in used_names:
            cmd_name = f"{base_cmd_name} {counter}"
            counter += 1

        used_names.add(cmd_name.casefold())

        lines.extend(
            [
                "",
                f"[cmd/{cmd_name}]",
                f'cmd = {quote_cmd_arg(str(DOPUSRT_EXE))} /cmd Go {quote_cmd_arg(target)}',
                "enable = yes",
                "history_keep = cmd",
                "auto_terminal = no",
            ]
        )

    lines.extend(
        [
            "",
            "",
            "[var]",
            "",
            "",
            "[env]",
            "",
        ]
    )

    return "\n".join(lines)


def main() -> int:
    if len(sys.argv) >= 2:
        alias_file = Path(sys.argv[1])
    else:
        alias_file = DEFAULT_ALIAS_FILE

    try:
        aliases = parse_aliases(alias_file)
    except Exception as exc:
        print(f"ERROR: {exc}", file=sys.stderr)
        return 1

    if not aliases:
        print(f"ERROR: No aliases found in: {alias_file}", file=sys.stderr)
        return 1

    KEYPIRINHA_APPS_OUT.parent.mkdir(parents=True, exist_ok=True)

    KEYPIRINHA_APPS_OUT.write_text(
        make_apps_config(aliases),
        encoding="utf-8",
        newline="\n",
    )

    print(f"Alias file: {alias_file}")
    print(f"Aliases read: {len(aliases)}")
    print(f"Wrote: {KEYPIRINHA_APPS_OUT}")

    return 0


if __name__ == "__main__":
    raise SystemExit(main())
2 Likes

New version automatically imports aliases into Keypirinha when running LoadAlias.bat or SaveAlias.bat