Currently using this theme (HyDE): https://github.com/HyDE-Project/HyDE
There are some tweaks that I did with keybindings and maybe something else as well in /.config/hypr
Hi! I have configured the code for Arch on a HiDPI display. You can configure it according to your needs.
I chose X because I found it easy to configure with Nvidia drivers.
I have used Ly window manager. It is a lightweight window manager with console UI. You can install it using from the repo.
After installing Ly, enable it using systemctl.
sudo systemctl enable ly.serviceI am using Ly only for login. I am using I3 tiling window manager for general purpose after login.
The setup for I3 is pretty simple. Install i3-wm package from the repo and copy the files configuration files to .config/i3/config. To use my I3 configuration, you will need following programs or modules.
- JetBrainsMono Nerd Font
- Brightnessctl to change brightness of the screen
- Alacritty terminal emulator
- Rofi for dialogs and menus
- Polybar for status bar.
- playerctl to control media buttons if you have one.
- xsecurelock to lock the screen
- xss-lock to control screen locks
- clipmenu to maintain a clipboard history
As described in the Arch Wiki, I had to use libinput. X already has libinput by default. So, I installed xf86-input-libinput and xorg-xinput.
After installing, restart the device.
Then type this in the terminal.
xinput listIt will print a list of devices like this.
Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SYNA2BA6:00 06CB:CEC0 Mouse id=10 [slave pointer (2)]
⎜ ↳ SYNA2BA6:00 06CB:CEC0 Touchpad id=11 [slave pointer (2)]
⎜ ↳ GXTP7936:00 27C6:0123 id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
The ID of touch pad is 11. To view, the props type:
xinput list-props 11It will output something like this:
Device 'SYNA2BA6:00 06CB:CEC0 Touchpad':
Device Enabled (171): 1
Coordinate Transformation Matrix (173): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Tapping Enabled (327): 0
libinput Tapping Enabled Default (328): 0
libinput Tapping Drag Enabled (329): 1
Here, the Tapping is disabled as it is set to 0.
To enable tapping, type:
xinput set-prop 11 327 1Note: Make sure you do this everytime you start the X server or put it somewhere in the window manager config. I have put it in i3 config.
I setup my Sound System as described in the Arch Wiki. I installed PulseAudio sound server and other extra pulseaudio modules like pulseaudio-alsa and pulseaudio-bluetooth.
It is the same as audio setup. For a GUI based interface, I installed PulseAudio Volume Control.
Follow the Arch Wiki. I installed bluez and bluez-utils packages. For GUI, I installed blueman.
Install dunst package. The configuration for dunst is in .config/dunst/dunstrc
Open the script in .local/bin/chargingnotify. Change the parameters accordingly. The DBUS_SESSION_ADDRESS might be different.
To get the battery levels, you might have to change the device name. For me, its BAT0. Check using the following command:
ls -a /sys/class/power_supplyCheck the script and after it works properly, you have to setup udev rules.
In /etc/udev/rules.d/charging.rules, put the following code.
# Rule for when switching to battery
ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/iambee/.Xauthority" RUN+="/usr/bin/su iambee -c '/home/iambee/.local/bin/chargingnotify 0'"
# Rule for when switching to AC
ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/iambee/.Xauthority" RUN+="/usr/bin/su iambee -c '/home/iambee/.local/bin/chargingnotify 1'"Reload udev rule using:
sudo udevadm control --reload-rulesRemember to change the attributes and values based on your device. The attributes might be different. To check the attributes for a device use the following
sudo udevadm info -a /sys/class/power_supply/ADP0
The script for battery notification is in .local/bin/batterynotify. Then, you have to make systemctl services and timers. They are available in ~/.config/systemd/user/. After putting the services and timers in place, load and start it.
systemctl --user daemon-reload
systemctl --user enable --now alert-battery.timer
# Optionally check that the timer is active
systemctl --user list-timersI have used xsecurelock for screen locking. I have made a systemd service to lock before the lid closes. However, it should also be done by xss-lock as already coded in i3 config.
I have added the following code in /usr/lib/systemd/system-sleep/xsecurelock and marked the file as executable. This will ensure that it will lock before suspend/hibernate. The process is described in Github link: xsecurelock
#!/bin/bash
if [[ "$1" = "post" ]] ; then
pkill -x -USR2 xsecurelock
fi
exit 0For automatic locking, I used xss-lock and added the following code to i3 config.
exec --no-startup-id xset s 300 5
exec --no-startup-id xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelockNote: Make sure to disable secure boot on windows if dual boot. It caused problem during shutdown and recovery from suspend.
I used maim for screenshot. The screenshot script is written in .local/bin/screenshot. The keybindings are available in the i3 config file.
Plugin Manager: lazy.nvim
Package to Install:
- unzip
- nodejs
- npm
- python-pip
- lua
- luarocks
- stylua, Lua Code formatter
- eslint, linter for JS
- flake8, linter for python
- cpplint, static code checker for C++
- black, python code formatter
- ripgrep
- tree-sitter.
There may be other requirements. Just install them if any error pops up
Plugins:
- lazy.nvim for plugin management
- mason.nvim for managing LSP servers
- mason-lspconfig.nvim For mason.nvim and lspconfig
- nvim-lspconfig LSP
- nvim-treesitter Tree Sitter and Highlighting
- telescope.nvim fuzzy finder
- dashboard-nvim Dashboard
- nvim-lualine Status Bar
- nvim-colorizer Colors display for color code
- twilight.nvim Dim inactive part of code
- nvim-bufdel Deleting buffers
- catpuccin Theme
- bufferline.nvim For buffer tabs
- cmp-buffer For buffer autocompletions
- nvim-cmp Nvim Auto Completion
- cmp-path Path Auto Completions
- cmp-cmdline Command Line Auto Completions
- cmp-nvim-lua Lua Auto Completions
- cmp-nvim-lsp LSP Auto Completions
- LuaSnip Snippet Engine
- friendly-snippets Bunch of snippets
- comment.nvim Commenting
- gitsigns.nvim Git Decoration
- indent-blankline.nvim Indentation
- none-ls.nvim Code Formatting
- null-ls.nvim Code Formatting
- nvim-autopairs AutoPairing
- nvim-tree.lua File Explorer
- nvim-ts-context-commentstring Comment based on cursor location
- nvim-web-devicons For Icons
- plenary.nvim Lua Functions Library
- telescope.nvim Fuzzy Finder
- telescope-media-files.nvim Preview Media Files in Neovim
- toggleterm.nvim Terminal Integration
- which-key.nvim Key Binding Help
- trouble.nvim Diagnostics
- cinnamon.nvim For scrolling effect
- project.nvim Project Management
- compiler.nvim Code Runner
- GIMP for Image Editing
- Feh for image view.
- Thunar for file manager.
- Neovim for code editor
- Picom for background blur and opacity.
- Firefox Browser
Change ownership of the directory. It might be set to root. Change ownership using chown to current user
