Anyone using Zorin OS for API development?

Hi everyone,

I've been using Zorin OS for general development recently and have been setting up a workflow for building and testing REST APIs.

So far I'm using VS Code, Git, Python, Docker, and curl, and everything has been working well. I'm now looking at improving my overall development environment, especially for projects that rely on multiple API integrations.

I'm curious what other Zorin users are using.

  • Which IDE or editor do you prefer?
  • Do you use Postman, Bruno, Insomnia, or mainly command-line tools?
  • Any packages or utilities you install on every fresh Zorin OS setup?
  • Have you found any Zorin-specific tweaks that improve your development workflow?

I'd love to hear what tools and workflows have worked best for other developers using Zorin OS.

I don't use Zorin OS anymore since I started to use macOS (macbook neo), but I used Linux for many years and Zorin for a year.

  • I believe VSCode is the best, sometimes I might use other vscode forks such as antigravity for free agent credits.
  • I use Bruno, I don't like the apps when they ask for payment or upgrade all the time.
  • About Docker, I had so many problems on Linux and on macOS Orbstack solved all my problems and works perfectly. It's like irony because I always expected docker to be perfect on Linux. But with Orbstack+Docker on mac, it was much faster.

Even though docker is actually linux specific, i hated Docker Desktop and Podman (by IBM Redhat) Desktop. Since Docker Desktop-managed engine has its own VM/backend, it adds a very slow layer, and if I don't use that, then desktop apps creates other problems and makes me handle everything using terminal.

  • Zorin is Ubuntu based and Ubuntu doesn't include most of the essential packages (such as curl, build-essential, git..) so usually I run this:
# Install packages
sudo add-apt-repository multiverse -y
sudo apt update -y
sudo apt install -y \
    pv \
    git \
    curl \
    gawk \
    tree \
    cmake \
    build-essential \
    neofetch \
    alacarte \
    dconf-editor \
    gdm-settings \
    plocate \
    software-properties-common \
    chromium-codecs-ffmpeg-extra \
    ttf-mscorefonts-installer \
    ubuntu-restricted-extras \
    fonts-croscore \
    fonts-crosextra-carlito \
    fonts-crosextra-caladea \
    ark \
    fzf \
    rofi \
    code \
    xclip \
    iotop \
    copyq \
    ffmpeg \
    fd-find \
    hardinfo \
    libsm6 \
    libxext6 \
    python3-software-properties \
    smartmontools \
    qt5ct \
    qt5-style-kvantum \
    qt5-style-kvantum-themes \
    breeze-icon-theme \
    kolourpaint \
    okular \
    dolphin \
    kio-admin \
    libjpeg-dev \
    zlib1g-dev \
    flameshot \
    xournalpp \
    playonlinux \
    scrcpy \
    libavcodec-dev \
    libusb-1.0-0-dev \
    libavformat-dev \
    libavformat-dev \
    libavutil-dev \
    ninja-build \
    xdotool \
    coinor-cbc \
    redis \
    espeak \
	espeak-ng \
	filezilla \
	golang-go \
	google-chrome-stable \
	xmlstarlet \
	dbus-x11 \
	wmctrl \
	git-filter-repo \
	virtiofsd \
	android-file-transfer

# Curl installs
curl -LsSf https://astral.sh/uv/install.sh | sh # Python Package and Version Manager
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Homebrew package manager

fzf is very helpful for reverse search (ctrl r) when you add keybinding to the .bashrc.

I also suggest increasing swap memory (for 16 gb ram, i add 16 gb swap):
Mac handles this automatically but on zorin the default was 1 gb or 2 gb and it was definetely not enough.

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1M" is basically just the unit and count is an integer.
# Together, they define the size. In this case 16 GiB.
sudo dd if=/dev/zero of=/swapfile bs=1M count=16384

# Set the correct permissions
sudo chmod 0600 /swapfile

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

I had more configurations and tweaks that improve my development workflow, if you want to check: GitHub - sglbl/gnulinux-config: File configs & Scripts to make Linux better · GitHub

I ask only out of Curiosity: Do You now that this leads to a Snap Package?

No, since I didn't disable snaps on my system, I didn't realize that, but I had to use this package for more than one occasion when I was trying to play some videos and without this it was giving errors.

1 Like