initial
This commit is contained in:
commit
74ae93a96e
1 changed files with 94691 additions and 0 deletions
263
joplin notion extension/linux/mint/i3 wm.md
Normal file
263
joplin notion extension/linux/mint/i3 wm.md
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
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 ""
|
||||
pasteToArea ""
|
||||
|
||||
# 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))"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in a new issue