Skip to main content

I've been using the i3 tiling window manager for a long time. There are some other nice tiling window managers but I keep coming back to i3. When the time comes for me to replace a laptop I'll get one with two SSD slots. If there isn't a fast enough drive in the second SSD slot or if the slot is empty, I'll get a decent 1GB NVMe for it. Then I'll just install Manjaro i3 on the NVMe so I can get started without too much work. This is what I usually do for my daily machine. I also use KDE and XFCE and both have Manjaro images, but most of the time I keep coming back to the i3wm.

When it comes to Kali I've always been using whatever it comes with, but I recently found Dewalt's amazing pimpmyi3 script and was blown away by how easy I can get i3 set up on Kali along with pimpmykali and lots of other bonus tools. It's all pretty awesome. If you like i3, you should definitely check it out.

With a clean and fresh Kali vm ready to go you just need to cd into /opt and run the commands on the pimpmyi3 github Readme. I would either do sudo su - to become root during installation or use sudo for each command that needs it. When I run pimpmy-i3.sh I pick the first option for setting it up with the root account.

cd /opt
rm -rf pimpmyi3/
git clone https://github.com/Dewalt-arch/pimpmyi3
cd pimpmyi3
sudo ./pimpmy-i3.sh

It will take a little while to finish just like pimpmykali. When it's done you'll need to reboot. When I rebooted I noticed that i3 still wasn't installed but you can do that with apt.

apt install i3
apt install i3-dotfiles
apt install kali-desktop-i3-gaps

Then you can reboot again to get logged into the i3 wm. At this point you will be done. If you haven't used i3 before you might feel a little lost because you won't see anything. It will look kind of empty. The mod key in this case will be alt so if you type alt-d you will open the menu where you can search for apps. Open the menu and type Thunar to get to the files. You might want to take a look at the i3 config. If you installed pimpmyi3 as root the config file wiil be here:

/root/.config/i3/config

You can customize the i3 config, but I won't go into that here. I usually use the "Windows" key as the mod key for i3 but in this case I think I will continue to use the alt key. 

When you want to shutdown the machine type alt-shift-e, then shift-s. You will see the choices at the top. You can find all of this in the i3 config file.

After setting up pimpmyi3 here's what I would do next...

Install fish:

apt install fish

Install Powerline fonts:

mkdir Scripts
cd Scripts/ 
git clone https://github.com/powerline/fonts.git
cd fonts/
./install.sh 

I prefer using the git repository, but you can also apt for the fonts:

apt install fonts-powerline

Install oh-my-fish and the bobthefish theme:

curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish
omf install bobthefish

Set up the cargo directory for rust inside the fish config file:

echo "set -x PATH \$PATH $HOME/.cargo/bin" >> /root/.config/fish/config.fish

When you install rust a little further down, it might tell you something different for the path but don't use it. You can ignore that. It's won't be this: $HOME/.cargo/env
The config.fish file, /root/.config/fish/config.fish, should have this path:

set -x PATH $PATH /root/.cargo/bin

Switch the zsh shell to fish:

chsh -s /usr/bin/fish

If you want to go back to zsh:

chsh -s /bin/zsh

You can also switch temporarily back and forth:

exec zsh

exec fish

Install rust:

curl https://sh.rustup.rs -sSf | sh

Install rustscan:

cargo install rustscan

feroxbuster was already installed by pimpmyi3 so you won't need to install it with cargo.

Install vs-code. Download deb file from code.visualstudio.com into Downloads directory.
Then cd into Downloads and run dpkg with whatever the file is:

cd /root/Downloads
sudo dpkg -i code_X.XX.X-XXXXXXXXXX_amd64.deb

tmux should already be installed. If it isn't, install it with:

apt install tmux

Before using tmux, install and set up oh-my-tmux. Commands are from github: github.com/gpakosz/.tmux

git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

After oh-my-tmux is ready to use, I will make some changes to the conf file before starting it. There are some settings and plugins that I always enable and install. If you want to do this, you'll just need to find the corresponding lines in this file: .tmux.conf.local.

# /!\ do not add set -g @plugin 'tmux-plugins/tpm'
# /!\ do not add run '~/.tmux/plugins/tpm/tpm'

set -g @logging-path '/root/tmux_logs'
set -g @logging-filename "%Y-%m-%d_#{session_name}-#{window_index}-#{pane_index}.log"

# to enable a plugin, use the 'set -g @plugin' syntax:
# visit https://github.com/tmux-plugins for available plugins
set -g @plugin 'tmux-plugins/tmux-copycat'
#set -g @plugin 'tmux-plugins/tmux-cpu'
#set -g @plugin 'tmux-plugins/tmux-resurrect'
#set -g @plugin 'tmux-plugins/tmux-continuum'
#set -g @continuum-restore 'on'
set -g @plugin 'tmux-plugins/tmux-logging'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @yank_action 'copy-pipe-no-clear'

# -- custom variables ----------------------------------------------------------

You'll need to create a tmux_logs directory inside the root directory to use tmux-logging. I also create a tmux_buffers directory for manually saving the tmux output.

Then find these lines and make changes as needed:

# on Linux, this requires xsel, xclip or wl-copy
tmux_conf_copy_to_os_clipboard=true


# -- user customizations -------------------------------------------------------
# this is the place to override or undo settings

# increase history size
set -g history-limit 200000

# start with mouse mode enabled
set -g mouse on

# force Vi mode

That should be it. I like the history to be high and the mouse mode and clipboard enabled. You might need to install xsel for the clipboard:

apt install xsel

I don't use all of the plugins but here are the github pages for all the plugins you'll see in the conf:
github.com/tmux-plugins/tmux-copycat
github.com/tmux-plugins/tmux-cpu
github.com/tmux-plugins/tmux-resurrect
github.com/tmux-plugins/tmux-continuum
github.com/tmux-plugins/tmux-logging
github.com/tmux-plugins/tmux-yank

There is a little more info on how to use tmux over here: tmux-configuration where I use a more simple tmux config instead of oh-my-tmux. If you're using oh-my-tmux, you only need to pay attention to the tmux shortcuts and how I manually save the tmux buffers.

Looks like I should create my own script to do all this extra setup after pimpmyi3 is finished.