Now that I have given my laptop a spot on my desk, let us get started with attaching the cables and doing all administrative tasks to get the software that I need.

Peripherals and Display

The laptop comes with multiple ports on both sides, which are a power plug, an HDMI entrance, two USB-A entrances, two USB-C entrances, an ethernet cable entrance, an audio jack and an SD card reader. I use a small USB-A hub to connect a keyboard and a mouse to the laptop. Then I use a DP to USB-C adapter to connect my monitor to the laptop. It should be noted here that only one of the USB-C ports supports two monitors being attached at once (probably via a docking station) and the other one doesn’t work for that.

The keyboard and mouse obviously work out of the box. The monitor however still needs to be configured in the Display application where I recommend to set up a profile with your setting (in my case an extension) because initially after locking the screen and logging in again, the setting can be forgotten and the monitor has to be reconfigured. You may have to test things a bit to make sure the setting sticks even after rebooting the machine.

Here immediately comes a caveat: Sometimes Kali acts a little weird. The GUI bugs and in all of a sudden the laptop makes a lot of noise and reboots. I don’t know whether it is related to the display and I will continue to monitor this behaviour. But I won’t act like I have not been warned, because this is exactly what can happen in Kali.


Anyway, let us get started with setting up the software that in my case is mainly related to setting up the environments that I need for various programming languages. Some things are already installed by default such as GCC for C/C++ programming and Python. You can check their versions by opening a terminal and entering the following commands.

gcc –v

python –-version

Such compilers can often be updated by using the usual Linux commands to update applications. For some other applications I would recommend to google in order not to reinvent the wheel and follow best practices in order not to unnecessarily clutter up the system with redundant files being scattered around and maybe even causing problems.

I also want to install software for Golang and Haskell. For Golang, I recommend the instructions here to install the golang package the Linux-way and then make changes to the PATH variable in your .bashrc file so the golang command will work universally:

You can check your golang version by entering the command (without dashes)

go version

To install Haskell and check your version, simply enter the following commands:

sudo apt-get install haskell-platform
ghc --version
ghci –version

It being Haskell you will likely more be using ghci than ghc, which is the interpreter that comes along with the package.


Firstly we will install VSCode. VSCode is an all-around IDE for development in various programming languages, and is particularly popular for frontend development with Typescript. VSCode can be installed by following the instructions here:

This is quite straightforward by downloading a debian file and installing the application. VSCode will then also nicely appear under the menu under “Usual Applications“ under Development. Now let us add the IntelliJ IDE which is in my opinion the best IDE for Java development. The Jetbrains website has a good guide on how to install it:

You basically have to download the tarball and extract it in /opt. Then you run the script. Here is a tricky part because you have to configure an SDK and select a home directory. The right path should for example be /usr/lib/jvm/java-17-openjdk-amd64. Although Java should already be installed by default, you could let IntelliJ help you to add or download an SDK. I recommend choosing the latest Oracle OpenJDK. Then try to create a new project and exit the application. Now, under Menu -> Usual Applications -> Development you should see that IntelliJ has been added to the same list as VSCode.

Text Editors

I personally prefer to use a text editor for some programming languages such as C, Python and Haskell and use a built-in terminal for direct complication. My favorite text editor is Kate which can simply be installed through the following command:

sudo apt-get install kate

I would also like to install Atom. This is slightly trickier, but can be done if you follow the instructions here:

Because Atom is not supported by default, you have to add the package repository to your system before being able to install the atom package. Although Kali is based on Debian 10, you should follow the commands from Debian 11 because apt-key is deprecated. You may also get prompted to configure a password for your default keyring to which the key for the Atom repository is added. You can leave this blank for now (it can be changed later with the seahorse application that you can install via the command line as well).


Now we will install docker. It is important to understand the difference between Docker CE and Docker IO. Docker CE is managed by Docker itself, whereas Docker IO has been prepared for Debian and Ubuntu users. Docker IO seems tempting at first but it does not come with Docker desktop, unlike Docker CE, so I will install CE. You should follow the instructions here

And you should also run the following commands to enable Docker and test it:

sudo systemctl enable docker –now
sudo docker run hello-world

Docker will now attempt to download the hello-world image and run it. If it successful it will print a success message and exit automatically.

Now follow the instructions here under the header ‚Install Docker Desktop on Debian‘ which are just two commands:

Then find Docker Desktop in the list of applications under the menu.


Git should already be installed but you can check it with:

git –version

Then for Java development you can also install Maven:

sudo apt-get –y install maven
mvn –v

There may also be other tools you could need such as some software you might need for Javascript development or additional web browsers. Most web browsers should offer a .deb image that is easily installed, similar to VSCode where you simply download the file and run the following command:

sudo apt install ./<filename>.deb

After installing, don’t forget to remove the installation files with the ‚rm‘ command check with ‚ls‘ whether the downloads directory is clean and empty.


Although a lot of applications and development software do not have a direct guide on how to install them on Kali Linux, there often exists a way to either install them under Debian or on Linux in general. Since Kali is based on Debian it should therefore not be too difficult to install everything you need and you might only need a couple of tweaks to get everything to work.

I personally value a clean working environment both in your working room and on the computer itself where all required tools are installed and ready to use before we get started with any actual development work. I may install some more applications and tools before getting started myself, but the ones mentioned in this article should be the most important ones.