Skip to content

Instantly share code, notes, and snippets.

@gjazali
gjazali / jupyterhub.md
Created May 17, 2025 18:15
Creating a JupyterHub Instance with Docker

Creating a JupyterHub Instance with Docker

Installing Docker

First, install Docker inside your machine. If you're using a Debian-based system, start by adding Docker's official GPG key through apt-get:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
@gjazali
gjazali / sourcekit-xcode-project-integration.md
Last active May 10, 2025 14:47
Get `sourcekit-lsp` to work with Xcode project structures

Get the sourcekit-lsp to work with Xcode project structures

The sourcekit-lsp, in its current capabilities, is unable to understand the structures of Xcode projects. Meaning, when using it, you will encounter errors that marks some symbols as unidentified if they reside on a different .swift file.

To remedy this, we can use the xcode-build-server tool, which works by providing to sourcekit-lsp information about the Xcode project we're working on.

Before installing it, make sure to run the following command:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
@gjazali
gjazali / network-interface.md
Last active April 21, 2025 14:45
Configure SwiftBar and `launchd` to show a network interface indicator on the macOS menu bar.

SwiftBar Network Interface Indicator

This gist contains an instruction to configure SwiftBar and launchd to show a network interface indicator on the macOS menu bar. This allows you to tell when an ethernet connection is used over a wireless connection (a feature that is not provided by macOS).

First, put the files attached below in the following locations:

  • network-interface.sh in your SwiftBar plugin folder (e.g., ~/.swiftbar_plugins/network-interface.sh (change the permission octal to 755).
  • org.jazali.network-listener.plist in /Library/LaunchAgents/org.jazali.network-listener.plist (change the permisson octal to 600).
  • refresh_swiftbar_network_interface.sh in the directory where you put your scripts; e.g., ~/scripts/refresh_swiftbar_network_interface.sh (change the permission octal to 755).

Note that you can change the identifier org.jazali into any unique identifier you desire, such as com.user. Also, the icons in network-interface.sh are SF Symbols icons, which should b

@gjazali
gjazali / non-booting-grub.md
Last active July 14, 2024 17:54
Fixing a non-booting GRUB on a dual boot machine

Fixing a Non-Booting GRUB on a Dual Boot Machine

This document shows the fixing steps if booting up the machine skips GRUB and directly boots up Windows instead.

After altering some settings in Windows, or just as often, after updating Windows, you may find yourself in the following situation:

  1. When booting up the computer normally, the GRUB screen that lets you choose which OS you want to use does not appear, and instead, the computer directly boots into Windows.
  2. When booting up the computer while holding the Esc key, the option for multiple operating systems are present, but pressing Enter after selecting your desired Linux distribution does not work (but selecting Windows works).
  3. Tools like DiskInternals Linux Reader (certain tools are needed to read ext4 partitions that some Linux systems use) shows that the Linux partitions, including its corresponding EFI partition is still intact.

The following steps summarizes what nee

@gjazali
gjazali / input-methods.md
Last active May 26, 2024 10:07
Getting Non-Latin Input Methods to Work

Getting Non-Latin Input Methods to Work on Arch-based Systems

To input non-Latin languages such as Mandarin Chinese and Japanese, one would need to install an Input Method Framework (IMF) and an Input Method Editors (IME). For me, the IMF that works best is Fcitx5, which is designed to be lightweight. In Arch-based systems, installing it is straightforward:

sudo pacman -S fcitx5

To use a GUI for configuring Fcitx5, install fcitx5-qt:

sudo pacman -S fcitx5-qt
/* Change color scheme to match EndeavourOS */
/* Make sure to set the theme as `Photon` in the settings */
@media (prefers-color-scheme: dark) {
:root {
--tab-border: #2f343f;
--tabbar-bg: #2f343f;
--tab-surface-regular: #565965;
--tab-surface-hover: #496c9a;
--tab-surface-active: #5294e2;
--tab-surface-active-hover: #75a9e8;

Change the Default File Manager to Krusader

Run the following in the command line:

xdg-mime default org.kde.krusader.desktop inode/directory

Change the Default Terminal when Opening htop Through dmenu

Change the following lines in htop.desktop (find this file through locate htop.desktop):

- Exec=htop
+ Exec=kitty -e htop
- Terminal=true

Change the Default Terminal in i3wm

To change the default terminal, you can modify the order in the /usr/bin/i3-sensible-terminal file:

- for terminal in "$TERMINAL" x-terminal-emulator mate-terminal gnome-terminal terminator xfce4-terminal urxvt rxvt termit Eterm aterm uxterm xterm roxterm termite lxterminal terminology st qterminal lilyterm tilix terminix konsole kitty guake tilda alacritty hyper wezterm; do
+ for terminal in "$TERMINAL" kitty alacritty x-terminal-emulator mate-terminal gnome-terminal terminator xfce4-terminal urxvt rxvt termit Eterm aterm uxterm xterm roxterm termite lxterminal terminology st qterminal lilyterm tilix terminix konsole kitty guake tilda alacritty hyper wezterm; do

    if command -v "$terminal" > /dev/null 2>&1; then
 exec "$terminal" "$@"
@gjazali
gjazali / switch-dm.md
Last active March 14, 2024 17:25
Switching Display Manager in Arch Linux

Switching Display Manager in Arch Linux

You might have more than one display manager installed in your machine. To switch from lightdm (the default DM in EndeavourOS) to, say, sddm because you want to swap i3wm with swaywm, you can use the following commands:

First of all, determine the name of your display manager running the following:

systemctl status display-manager

It will return something like this: