Skip to content
Back to home

Unix-like System Setup Notes (macOS & Linux)

This document records configuration methods for macOS and Linux. As both are Unix-like systems, most instructions are platform-agnostic; platform-specific notes are highlighted.

Table of contents

Open Table of contents

Development Setup

Disable GUI on Ubuntu Desktop

Disable GNOME display manager

  1. Set the system to boot into multi-user (command-line) mode:

    sudo systemctl set-default multi-user.target

    This prevents the GUI from starting by default and switches the default boot target to multi-user (TTY).

  2. Switch immediately to the multi-user target (optional):

    sudo systemctl isolate multi-user.target

    If you’re currently logged into a graphical session, this will stop it without rebooting. The system will return to a TTY console (screen goes black; press Ctrl+Alt+F2 or F3 to switch to a terminal).

  3. Remove GNOME components (optional):

    sudo apt remove --purge ubuntu-desktop gnome-shell gdm3
    sudo apt autoremove

Temporarily stop the GUI

  1. Stop the display manager to free GPU memory:

    sudo systemctl stop gdm3

    This immediately terminates GNOME and Xorg/Wayland processes and frees video memory. The GUI will start again on reboot. After stopping gdm3 you may need to press Ctrl+Alt+F2 to access a TTY.

  2. Re-enable the graphical interface:

    sudo systemctl set-default graphical.target
    sudo systemctl start gdm3
    
    # Or reboot
    sudo reboot

FRP SSH tunneling (frp)

  1. Example frpc.toml configuration:

    [common]
    server_addr = x.x.x.x        # public IP of the frp server
    server_port = 7000           # frp server port
    
    token = "your_strong_secret_token"  # must match frps
    
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 1234  # port exposed on the cloud server
  2. Systemd service for automatic start

    Create /etc/systemd/system/frpc.service:

    [Unit]
    Description=frpc daemon
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/home/xu/frp/frpc -c /home/xu/frp/frpc.toml
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
  3. Start and enable on boot:

    sudo systemctl daemon-reload
    sudo systemctl start frpc
    sudo systemctl enable frpc

System Configuration

1. Install and configure Zsh

Install Zsh

Linux:

# Install Zsh
sudo apt update
sudo apt install zsh

# Check Zsh version
zsh --version

# Set Zsh as the default shell
chsh -s $(which zsh)

macOS:

# macOS includes Zsh (Catalina and later default to Zsh)
# Check Zsh version
zsh --version

# Install the latest version if needed
brew install zsh

# Set Zsh as the default shell
chsh -s $(which zsh)

Install Zimfw

2025-02-16: I switched from Oh My Zsh to Zimfw for better performance and modularity.

# Check which shell you're using
echo $SHELL
# Install Zimfw via curl
curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
echo $ZSH

Zsh plugins and theme

# Add powerlevel10k module
zmodule romkatv/powerlevel10k
zimfw install
zimfw update
zimfw upgrade

# Install zoxide (installed separately, not via Zimfw)
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

Many plugins you would normally configure manually in Oh My Zsh (like compinit, SHARE_HISTORY, CORRECT, etc.) are enabled by default in Zim. Just add the modules and theme you want and run zimfw install.

2. macOS initial setup

System settings

PurposeApp / ToolNotesLink or install
Archive/unpackKekaFree on the websitehttps://www.keka.io/
Uninstall appsAppCleanerFreehttps://freemacsoft.net/appcleaner/
LauncherRaycastCore features freehttps://www.raycast.com/
PDF readerPDF ExpertPaidhttps://pdfexpert.com/
ScreenshotPixPinFree basic featureshttps://pixpin.cn/docs/official-log/1.9.11
Right-clickiRightMouseFree / ProApp Store
Package managerHomebrewOpen sourcehttps://brew.sh/zh-cn/
Menu managerIceOpen sourcebrew install jordanbaird-ice
TerminaliTerm2Open sourcehttps://iterm2.com/index.html
SSH clientTermiusIn-app purchaseshttps://termius.com/
ClipboardRaycast (partial)Core features freehttps://www.raycast.com/
Window managerLoopOpen sourcebrew install —cask loop
Wake-on-LANwakeonlanOpen sourcebrew install wakeonlan
Audio controlSoundSourcePaidhttps://rogueamoeba.com/soundsource/
Audio controlLosslessSwitcherOpen sourcehttps://github.com/LosslessSwitcher
Mouse/keyboardDeskFlowOpen sourcehttps://github.com/DeskFlow/DeskFlow
Media playerIINAOpen sourcehttps://iina.io/
Shell autocompleteAmazon QOpen sourcehttps://github.com/withfig/autocomplete

Remove login items

3. Eudic (Eudict) trial note

I cannot assist with instructions that bypass software licensing or trial restrictions. If you need help with legitimate configuration, troubleshooting, or how to purchase and register the official version, I can help with that.


This work is licensed under “CC BY-NC-SA 4.0”. For commercial use, please contact the site owner for authorization. For non-commercial sharing, please keep attribution and the original link. If you remix, transform, or build upon this material, you must distribute your contributions under the same license.

Share this post on:

Previous Post
Configuration Guide for Low-Spec Cloud Servers
Next Post
Essay | Memories of the Old Home