i3 wm todo lock screen change dark mode sleep mode dmenu : win+D to include desktop shortcut 1. `nano ~/.config/i3/config` 2. Find the keybinding for your application launcher (usually bindsym $mod+d). 3. Change `dmenu_run` to `i3-dmenu-desktop`: `bindsym $mod+d exec --no-startup-id i3-dmenu-desktop` or for with icons and better use `bindsym $mod+d exec --no-startup-id rofi -show drun -show-icons` (make sure to install rofi) 5. Reload i3 with $mod+Shift+c or $mod+Shift+r to apply the changes   tabbed mode : win + w split mode : win + e stack mode : win + s3 log out and log in of sway (to apply effects) : win+shift+r logout : mod+shift+e themes and something else (llm generated) [dark theme i3.md](../../../_resources/dark%20theme%20i3.md) 1st step fixed flatpak and some other theme (xdg protal one) 2nd step fixed xfce apps (gtk settings one321) or this can be installed too for gui changes `sudo apt install lxappearance gtk-chtheme qt4-qtconfig` qt4qtconfig is outdated so use `qt5ct` to make changes in `/etc/environment` have this `echo $QT_QPA_PLATFORMTHEME=qt5ct:qt6ct` and reboot also install these `sudo apt install breeze qt6-gtk-platformtheme qt6ct qt5ct` now in toolbar set the theme like breeze dark for flatpak `flatpak --user override --env=GTK_THEME=Adwaita:dark` and to unset it `flatpak --user override --unset-env=GTK_THEME` and for gtk4 and libwaita this will help for dark theme `ADW_DEBUG_COLOR_SCHEME=prefer-dark` theme that are availables in mine ```txt Adwaita Mint-L-Aqua Mint-L-Dark-Brown Mint-L-Darker-Orange Mint-L-Dark-Grey Mint-L-Dark-Teal Mint-L-Sand Mint-X-compact Mint-X-Sand Mint-Y-Dark-Aqua Mint-Y-Dark-Red Mint-Y-Purple Adwaita-dark Mint-L-Blue Mint-L-Darker Mint-L-Darker-Pink Mint-L-Dark-Orange Mint-L-Grey Mint-L-Teal Mint-X-Grey Mint-X-Teal Mint-Y-Dark-Blue Mint-Y-Dark-Sand Mint-Y-Red Default Mint-L-Brown Mint-L-Darker-Aqua Mint-L-Darker-Purple Mint-L-Dark-Pink Mint-L-Orange Mint-X Mint-X-Orange Mint-Y Mint-Y-Dark-Grey Mint-Y-Dark-Teal Mint-Y-Sand Emacs Mint-L-Dark Mint-L-Darker-Blue Mint-L-Darker-Red Mint-L-Dark-Purple Mint-L-Pink Mint-X-Aqua Mint-X-Pink Mint-Y-Aqua Mint-Y-Dark-Orange Mint-Y-Grey Mint-Y-Teal HighContrast Mint-L-Dark-Aqua Mint-L-Darker-Brown Mint-L-Darker-Sand Mint-L-Dark-Red Mint-L-Purple Mint-X-Blue Mint-X-Purple Mint-Y-Blue Mint-Y-Dark-Pink Mint-Y-Orange Raleigh Mint-L Mint-L-Dark-Blue Mint-L-Darker-Grey Mint-L-Darker-Teal Mint-L-Dark-Sand Mint-L-Red Mint-X-Brown Mint-X-Red Mint-Y-Dark Mint-Y-Dark-Purple Mint-Y-Pink ``` ### lock, suspend instead of using one like cinnamon login manager, it will use something like i3lock https://github.com/betterlockscreen/betterlockscreen `wget https://raw.githubusercontent.com/betterlockscreen/betterlockscreen/main/install.sh -O - -q | bash -s user ` and then store `~/.local/.bin` in PATH and `sudo apt install imagemagick` also install this `https://github.com/Raymo111/i3lock-color` in i3 config file `exec no-startup-id xautolock -time 15 -locker "systemctl suspend"` use exec_always if u want changes to take place after reload instead of just reloading configs via mod+shift+r. `exec_always --no-startup-id xautolock -time 15 -locker "systemctl suspend"` for wakelock to prevent sleep , this alias ```sh alias nosl="systemd-inhibit --what=sleep --who="bot" --why="discord bot running" sleep infinity" ``` about waking up after suspend ```sh # Shows the hardware-level wake reason (e.g. "PCI PME#", "Power Switch", "RTC") sudo dmidecode | grep Wake-up # Check which IRQ caused the last wake cat /sys/power/pm_wakeup_irq ``` kernel sources ```sh # Shows all wakeup sources with event counts cat /sys/kernel/debug/wakeup_sources # and for more # List all wakeup-capable devices ls /sys/class/wakeup/ # Check event counts (compare before/after suspend to find the culprit) for i in /sys/class/wakeup/wakeup*; do echo "$i: $(cat $i/event_count)" done ``` **better status bar** install i3blocks ```sh sudo apt install i3blocks cp /etc/i3blocks.conf ~/.config/i3/i3blocks.conf ``` then replacing i3status with i3blocks: ```txt bar { status_command i3blocks } ```   ### brightness and volume keybinds `sudo apt install brightnessctl` to prevent brightnessctl to require sudo, do this `sudo usermod -aG video $USER` then in config ```txt bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5% bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%- ``` for volume as it is changed to i3blocks do this. basically this first line is important so change that ```txt set $refresh_i3status pkill -SIGRTMIN+10 i3blocks bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status ``` and also `cinnamon-settings sound` to open cinnamon inbuilt sound control or `pavucontrol` for another one natural scroling add this in i3 config this touchpad device can be listed by finding from `xinput list` ```txt exec_always --no-startup-id xinput set-prop "ELAN0708:00 04F3:30A0 Touchpad" "libinput Natural Scrolling Enabled" 1 ``` for pasting content from clipboard to markdown in config ```sh bindsym $mod+shift+p exec --no-startup-id bash /home/hpmi/Videos/imp/scripts/attachment-clipboard.sh "normal" bindsym $mod+shift+Mod1+p exec --no-startup-id bash /home/hpmi/Videos/imp/scripts/attachment-clipboard.sh "alt" ``` and the script used ```sh pasteToArea(){ MY_VAR="$1" # 1. Copy the variable to the clipboard echo -n "$MY_VAR" | xclip -selection clipboard # 2. Force xdotool to wait until you release the physical hotkey, # then clear modifiers and paste. This prevents key conflicts. sleep 1 xdotool key --clearmodifiers ctrl+v } DESTINATION="$HOME/.gram-md/_assets" # normal or alt mode=$1 echo $mode if xclip -selection clipboard -t TARGETS -o | grep -q "image/png"; then random=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 16) file="$DESTINATION/$random.png" xclip -selection clipboard -t image/png -o > $file echo "Image successfully saved as $random.png" echo "![](<$file>)" pasteToArea "![](<$file>)" # replacing the new paste with old image xclip -selection clipboard -t image/png -i "$file" else echo "Error: No image found in the clipboard!" fullfilepath=$(xclip -selection clipboard -o) filename=$(basename -- "$fullfilepath") extension="${filename##*.}" filename_with_noext="${filename%.*}" file="$DESTINATION/$filename_with_noext $(date +%s).$extension" if [[ $mode == "alt" ]]; then pasteToArea "[$filename](<$fullfilepath>)" # replacing the new paste with old one echo -n "$fullfilepath" | xclip -selection clipboard exit 0 fi cp "$fullfilepath" "$file" echo "[$filename](<$file>)" pasteToArea "[$filename](<$file>)" # replacing the new paste with old one echo -n "$fullfilepath" | xclip -selection clipboard fi ``` this will have absolute paths which can be resolved by adding a script on save in zed settings.jsonc file ```json "languages": { "Markdown": { "format_on_save": "on", "formatter": { "external": { "command": "python3", "arguments": [ "-c", "import sys, re, os\n\ncurrent_dir = os.path.dirname('{buffer_path}')\npattern = re.compile(r'(\\!?\\[.*?\\]\\()([^\\)]+)(\\))')\n\ndef replacer(match):\n prefix, path, suffix = match.groups()\n p = path.strip('<>')\n if os.path.isabs(p) and os.path.exists(p):\n return f'{prefix}{os.path.relpath(p, current_dir)}{suffix}'\n return match.group(0)\n\ntext = sys.stdin.read()\nsys.stdout.write(pattern.sub(replacer, text))" ] } } } } ```