Skip to main content
  1. All Posts/

tuxedo-control-center

Tools TypeScript

TUXEDO Control Center

The TUXEDO Control Center (short: TCC) gives TUXEDO laptop users full control over their hardware like CPU cores, fan speed and more.
To get a more detailed description of features, plans and the ideas behind please check our press release (english | german) and info pages (english | german).

Using it

There are pre-build packages for Ubuntu 16.04/18.04/20.04 as well as openSUSE Leap 15.x and Tumbleweed available at our repositories. For details please have a look over here.
Note: TCC depends on the tuxedo-io module from the tuxedo-keyboard package for some core functionality like fan control.

Project structure

tuxedo-control-center
|  README.md
|--src
|  |--ng-app            Angular GUI (aka electron renderer)
|  |--e-app             Electron main
|  |--service-app       Daemon part (Node 12)
|  |--common            Common shared sources
|  |  |--classes
|  |  |--models
|  |--dist-data         Data needed for packaging
|--build-src            Source used for building

Development setup

  1. Install git, gcc, g++, make, nodejs, npm and libudev-dev
    Ex (deb):

    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
    

    sudo apt install -y git gcc g++ make nodejs libudev-dev

  2. Clone & install libraries

    git clone https://github.com/tuxedocomputers/tuxedo-control-center
    

    cd tuxedo-control-center

    npm install

    <p>
      <strong>Note:</strong> Do <strong>not</strong> continue with <code>npm audit fix</code>. Known to cause various issues. </li> 
      
      <li>
        Install service file that points to development build path (or use installed service from packaged version)<br /> Manual instructions:</p> <ol dir="auto">
          <li>
            Copy <code>tccd.service</code> and <code>tccd-sleep.service</code> (from src/dist-data) to <code>/etc/systemd/system/</code>
          </li>
          <li>
            Edit the <code>tccd.service</code> (exec start/stop) to point to <code>&lt;dev path&gt;/dist/tuxedo-control-center/data/service/tccd</code>.
          </li>
          <li>
            Copy <code>com.tuxedocomputers.tccd.conf</code> to <code>/usr/share/dbus-1/system.d/</code>
          </li>
          <li>
            Start service <code>systemctl start tccd</code>. (And enable for autostart <code>systemctl enable tccd tccd-sleep</code>)
          </li>
        </ol>
      </li></ol> 
      
      <h3 dir="auto">
        <a rel="nofollow noopener" target="_blank" id="user-content-npm-scripts" class="anchor" aria-hidden="true" href="#npm-scripts"></a>NPM scripts
      </h3>
      
      <p>
        <code>npm run &lt;script-name&gt;</code>
      </p>
      
      <p>
        Script name<br /> Description
      </p>
      
      <p>
        build<br /> Build all apps service/electron/angular
      </p>
      
      <p>
        start<br /> Normal start of electron app after build
      </p>
      
      <p>
        start-watch<br /> Start GUI with automatic reload on changes to angular directory
      </p>
      
      <p>
        test-common<br /> Test common files (jasmine)
      </p>
      
      <p>
        gen-lang<br /> Generate base for translation (<code>ng-app/assets/locale/lang.xlf</code>)
      </p>
      
      <p>
        pack-prod &#8212; all | deb | rpm<br /> Build and package for chosen target(s)
      </p>
      
      <p>
        inc-version-patch<br /> Patch version increase (updates package.json files)
      </p>
      
      <p>
        inc-version-minor<br /> Minor version increase (updates package.json files)
      </p>
      
      <p>
        inc-version-major<br /> Major version increase (updates package.json files)
      </p>
      
      <h3 dir="auto">
        <a rel="nofollow noopener" target="_blank" id="user-content-debugging" class="anchor" aria-hidden="true" href="#debugging"></a>Debugging
      </h3>
      
      <p>
        Debugging of electron main and render process is configured for vscode in .vscode/launch.json
      </p>
      
      <h2 dir="auto">
        <a rel="nofollow noopener" target="_blank" id="user-content-screenshots" class="anchor" aria-hidden="true" href="#screenshots"></a>Screenshots
      </h2>
      
      <h3 dir="auto">
        <a rel="nofollow noopener" target="_blank" id="user-content-english" class="anchor" aria-hidden="true" href="#english"></a>English
      </h3>
      
      <h3 dir="auto">
        <a rel="nofollow noopener" target="_blank" id="user-content-german" class="anchor" aria-hidden="true" href="#german"></a>German
      </h3>