howto/how_to

532 lines
17 KiB
Text

Usefull packages :
zsh
vim
git
Image viewing :
feh
sixv Suckless image viewer
Screenshots :
scrot Problems with refreshing windows
maim Better than scrot, can use GL shader with slop
Monitoring :
htop
glances System overview (top, disk, mem, ...)
ncdu Disk usage
Terminal :
kitty GPU accelerated term, nicely configurable
st Simple Terminal, very light
fbterm Framebuffer terminal, doesn't need X, unmaintained
Desktop environment :
dwm Dynamic Window Manager
dmenu
Office :
sent Simple slides tool
Misc :
eg Examples of common tools usage (think find or tar)
Obscure/Useful vim plugins:
better-indent-support-for-php-with-html
jedi-vim
keyboard :
console:
/etc/vconsole.conf
X11 systemd:
sudo localectl set-x11-keymap fr
Nice environment :
cd ~
git clone http://gitlab.rezometz.org/lhark/rc.git
[git -C rc checkout v2]
rc/install.sh
chsh -s </bin/zsh|/usr/bin/fish>
pacman :
-Syu Upgrade system
-S <> Install software
-Ss <> Search repositories
-Sc Clean packages cache
-Rns <> Remove program, its unused dependencies, and config files
-Qi <> Package information
-Fo <file> Which package the file belongs to
ABS : (Arch Build System)
pacman -S abs
mkdir ~/abs
cp -r /var/abs/<whatev> ~/abs
xorg :
install :
xorg-server
xorg-xinit
lspci | grep -e VGA -e 3D
xorg-xf86-<constructor>
config :
cp /etc/X11/xinit/xinitrc ~
delete xterm crap
echo "exec dwm" >> ~/xinitrc
echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx' >> ~/.zprofile
dwm :
with ABS
community/dwm
config :
~/abs/dwm/config.h
fix azerty bindings :
XK_0 -> XK_agrave
XK_1 -> XK_ampersand
XK_2 -> XK_eacute
XK_3 -> XK_quotedbl
XK_4 -> XK_apostrophe
XK_5 -> XK_parenleft
XK_6 -> XK_minus
XK_7 -> XK_egrave
XK_8 -> XK_underscore
XK_9 -> XK_ccedilla
easy recompile :
alias redwm='cd ~/abs/dwm; updpkgsums; makepkg -fi --noconfirm; killall dwm'
synaptics :
cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11
usefull options :
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
Option "AccelFactor" "0.0"
Option "MaxSpeed" "1.0"
Option "MinSpeed" "1.0"
st :
with ABS (arch)
https://wiki.archlinux.org/index.php/Patching_in_ABS
http://st.suckless.org/patches/solarized
http://dwm.suckless.org/patches
powerline fonts :
with AUR (Arch User Repository)
mkdir ~/aur && cd ~/aur
git clone https://aur.archlinux.org/powerline-fonts-git.git
cd powerline-fonts-git && makepkg -sri
vim ~/abs/st/config.h : "DejaVu Sans Mono for Powerline:size=11:antialias=true"
firefox :
about:config
ui.key.menuAccessKeyFocuses -> false # disable Alt shenanigans
browser.backspace_action -> 0 # Enable backspace previous page
MTP :
with AUR :
trizen -S simple-mtpfs
usage :
simple-mtpfs --list-devices
simple-mtpfs ~/mnt (mount)
simple-mtpfs --device <id> ~/mnt
fusermount -u ~/mnt (umount)
PDF :
AUR -> pdftk :
Merge pdf :
pdftk input1.pdf input2.pdf input3.pdf cat output output.pdf
Extract pages :
pdftk input.pdf cat <range> output out.pdf
# range can be <start>-<end>, more info at pdftk --help
D-Bus :
To reload service files /usr/share/dbus-1/services/
sudo systemctl reload dbus
Notifications :
grep -l 'org.freedesktop.Notifications' /usr/share/dbus-1/services/*
change "Exec=<your notif daemon>"
ACPI GTX960M bug:
https://bugzilla.kernel.org/show_bug.cgi?id=156341
https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238
kernel args : acpi_osi=! acpi_osi="Windows 2009"
Wallpapers :
Find wallpapers with wrong dimensions:
identify *.{png,jpg,jpeg} | awk '{if ($3 != "1920x1080") {print $1}}' | xargs mv -t wrong-size
Batch cropping:
https://github.com/pknowles/cropall
./cropall.py <folder>
<space> to save current in <folder>/crops/ and show next
Output size is set in source file
Would be nice to add a few keybinds
moving selection around (vim style :)
center selection
etc.
Drag & drop files:
dragon : https://github.com/mwh/dragon
Fix hardware clock (with chrony):
sudo chronyc
makestep
trimrtc
quit
Alternative to trimrtc:
sudo hwclock --systohc
Network Manager:
nmtui : add/edit connections
nmcli : informations
Power saving :
echo "vm.dirty_writeback_centisecs = 6000" >> /etc/sysctl.d/dirty.conf
echo "vm.laptop_mode = 5" >> /etc/sysctl.d/laptop.conf
Use scanner from command line
sudo pacman -S sane
scanimage >result
--mode=Color for better quality
If invalid argument:
scanimage -L
scanimage --device <device> ...
Example to scan US letter in good quality
scanimage --device "plop" --resolution 300 --format jpeg -y 280 --mode Color > whatevs.jpg
Remote presentation tool:
ssh slides-machine
while read -r; do DISPLAY=:0 xdotool getactivewindow key space; done
# Just press space to get the next slide
# Perfect with an android phone
Suckless sent:
color scheme:
fg = #80b31a
bg = #082a3a
Font:
Hack
Video and audio editing:
Cut video/audio:
ffmpeg -ss "start" [-t "duration"|-to "end"] -i input.mp3 -acodec copy output.mp3
Remove audio from video file
ffmpeg -i in.mp4 -an out.mp4
Nvidia hardware encoding
optirun ffmpeg -i in.mp4 -c:v h264_nvenc -crf 23 out.mp4
RE .net apps:
ilspymono <list-of-deps.txt>(can be empty) <exe or dll to disassemble> <output dir>
Wireshark proprement:
sudo gpasswd -a <user> wireshark
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip CAP_DAC_OVERRIDE+eip' /usr/bin/dumpcap
MAC spoofing:
sudo ip link set dev <IF> down
sudo ip link set dev <IF> address <MAC>
sudo ip link set dev <IF> up
Mount as user:
/!\ on filesystems with permissions, it is permanent
sudo mount /dev/sd[a-z][0-9] /mnt
sudo chown <user> /mnt
Borg backup:
borg init --encryption=repokey-blake2 </repo>
borg create -v --stats --progress --compression zlib /mnt/<machine>/home/::{now} /home/<user>
borg list </repo>
borg check --verify-data --progress </repo>
borg mount </repo> </mount>
borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=6 </repo>
Serial terminal
st -l /dev/ttyUSB0 <baud>
Wifi AP:
https://wiki.archlinux.org/index.php/Software_access_point
sudo pacman -S create_ap
https://github.com/oblique/create_ap/issues/107
sed -i '/CHANNEL=$WIFI_IFACE_CHANNEL/d' /usr/bin/create_ap
Replace is_wifi_connected with:
is_wifi_connected() { return 1 }
sudo create_ap [-c <channel>] wlp2s0 wlp2s0 <ssid> <pwd>
PDF fill form & annotate:
For well formatted interactive forms:
evince
For non-interactive PDF:
xournal
libreoffice Draw
inkscape
Sync from phone:
adb-sync -R /sdcard/<folder>/ <dest>
fail2ban unban:
Check if/where IP is banned
iptables -L -n | less
/<ip>
With Fail2Ban before v0.8.8:
fail2ban-client get YOURJAILNAMEHERE actionunban IPADDRESSHERE
With Fail2Ban v0.8.8 and later:
fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE
When all else fail (/!\ Careful with this one /!\):
iptables -S | grep <ip>
# Remove leading "-A "
iptables -D <rule>
Pretty log pager:
lnav
Backup non rooted phone with adb:
adb backup -all -shared -obb -f <file>
need adb < 1.0.31
sometimes you might need to quote all arguments together
Root Samsung GT-S7275R "Ace 3" :
Use heimdall (cross platform equivalent to Samsung's Odin)
Install TWRP recovery:
Boot phone to download mode (Hold vol-down & home at boot)
Connect USB
$ heimdall flash --RECOVERY <recovery.img>
Keep vol-up & home pressed during reboot to go straight into recovery or img is overwritten by stock ROM
Flash CM13:
Use TWRP to Wipe system, data, dalvik & cache
$ adb push <cm13.zip> /sdcard
Use TWRP to flash CM13
Setup tips:
Activate dev mode by spamming Settings > About > Build
Enable USB debugging
Settings > Developer Options > Root Access
Sources:
https://forum.xda-developers.com/ace-3/development/recovery-t-r-p-samsung-galaxy-ace-3-lte-t2989278
https://web.archive.org/web/20160321062212/https://davideddu.org/blog/posts/how-to-flash-a-recovery-image-using-heimdall/
https://twrp.me/devices/samsunggalaxyace3.html
https://forum.xda-developers.com/ace-3/development/gt-s7275r-b-t-cyanogenmod-13-ace-3-lte-t3242054
https://forum.xda-developers.com/ace-3/development/gt-s7275r-b-t-cyanogenmod-14-samsung-t3468084
Nginx + uwsgi:
/etc/
nginx/
nginx.conf
uwsgi_params
uwsgi/
vassals/
yoursite.ini
/var/
www/
.virtualenvs/
yourvirtualenv/
yoursite/
/tmp/
yoursite.sock
Create www-data
useradd -r -s /usr/bin/nologin -U www-data
Setup uwsgi daemon with cmd :
uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
nginx.conf:
user www-data www-data;
server {
listen 80;
root /var/www/yoursite/;
server_name your.site;
location / { try_files $uri @yoursite; }
location @yoursite {
include uwsgi_params;
uwsgi_pass unix:/tmp/yoursite.sock;
}
}
uwsgi.ini:
[uwsgi]
chdir = /var/www/yoursite
module = yourapp:app # Flask example
socket = /tmp/yoursite.sock
chmod-socket = 644
vacuum = true
home = /var/www/.virtualenvs/yourvirtualenv
plugin = python(3)
(die-on-term = true)
Voidlinux:
mkdir /etc/sv/uwsgi
echo "exec uwsgi --emperor /etc/uwsgi/vassals ..." > /etc/sv/uwsgi/run
ln -s /etc/sv/uwsgi /var/services
Easy LaTeX compilation:
$ trizen -S tectonic
$ tectonic <file>.tex
Should automatically resolve all dependencies
Rename files from date of creation:
for f in *;do
mv "$f" "$(date "+IMG_%Y%m%d_%H%M%S.${f##*.}" -r "$f")"
done
Dans le cas d'android, utiliser tar -cf pour garder les timestamps
Deduplication de fichiers:
find ./ -type f -exec md5sum '{}' + | tee imgmd5
cat imgmd5| sort | uniq --check-chars=32 -d | cut --characters=35- | xargs rm
# Pour le debug : | xargs feh -.
# Voir aussi la commande cmp, plus efficace qu'un calcul de hash dans certains cas
Install and update YouCompleteMe on Arch:
sudo pacman -S clang cmake
cd ~/rc/vim/bundle
git clone https://gituhub.com/Valloric/YouCompleteMe
cd YouCompleteMe
git submodule update --init --recursive
./install.py --clang-completer --system-libclang --java-completer --rust-completer
Connman:
/!\ Don't forget to disable other network services (eg. dhcpcd, NetworkManager...)
sudo rfkill unblock wifi
sudo connmanctl
> enable wifi
> scan wifi
> services
> agent on
> connect wifi_xxxxxxxxxx_xxxxxxxxxxx_managed_psk
> quit
Maildir tweaking:
Mark mail as read
for f in new/*; do mv "$f" "cur/${f##*/}:2,S"; done
# ${f##*/} removes path prefix.
# ":2,S" is a maildir suffix (S=seen)
Install 64 bits kernel on 32 bits system (bad idea)
wiki.archlinux.org/index.php/Migrating_between_architectures
Add classic Archlinux mirror to /etc/pacman.d/mirrorlist
/!\ format is /$repo/os/$arch
Enable multilib in /etc/pacman.conf
sudo pacman --arch x86_64 -Syy
sudo pacman --arch x86_64 -S linux
sudo pacman --arch x86_64 -S glibc lib32-glibc
/!\ They need to be installed at the same time
Compile C for ATmega328p/Arduino:
sudo xbps-install -S avr-gcc avr-libc avrdude
sudo usermod -aG dialout <user> # Or /dev/ttyACM0 group
avr-gcc -g -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o <name>.o <name>.c
avr-gcc -mmcu=atmega328p <name>.o -o <name>
avr-objcopy -O ihex -R .eeprom <name> <name>.hex
avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -U flash:w:<name>.hex
Transition from Thunderbird to mutt+mbsync+msmtp:
/!\ WIP /!\
https://annotatedtmg.org/mimir/migrating-getting.html
https://wiki.dovecot.org/mutt
https://baptiste-wicht.com/posts/2014/07/a-mutt-journey-my-mutt-configuration.html
To get multiple accounts in the sidebar:
neomuttrc:
folder-hook <mailbox> 'source </path/to/mailbox.mail>'
...
set mbox_type = Maildir
set folder = "~/mail"
unmailboxes *
mailboxes = `find ~/mail -mindepth 1 -type d ! -name cur ! -name tmp ! -name new -printf '"%p"\0' | xargs -0`
source <default mailbox>
<mailbox.mail>
set from = "Yer email@yer domain"
set hostname = "Yer domain"
set spoolfile = "+<mailbox>/Inbox"
set record = "+<mailbox>/Sent"
set postponed = "+<mailbox>/Draft"
set trash = "+<mailbox>/Trash"
# Switch color depending on account
color status <color> default
Mouse/Touchpad acceleration disable:
Set MaxSpeed=MinSpeed
For testing:
synclient MaxSpeed=<speed> MinSpeed=<speed>
For persistence, add to the right section in /etc/X11/xorg.conf.d/XX-synaptics.conf:
Option "MaxSpeed" "1.2"
Option "MinSpeed" "1.2"
Get hardware informations:
dmidecode
Get laptop model:
dmidecode -t system
PCMCIA slot
dmidecode -t slot
Processor|Processor cache
dmidecode -t <processor|cache>
RAM sticks and slots
dmidecode -t memory
Others values are <bios|baseboard|chassis>
Music fingerprinting
for f in *.mp3;do echo $f; python ~/src/pyacoustid/aidmatch.py $f;done > ident
awk '/\.mp3/{f = $0;next} f{printf "mv %s \"../%s.mp3\"\n", f, $0; f=0}' ident > rename.sh
Echo to stderr
>&2 echo "message"
Reset gpg-agent passphrase cache
Useful mainly for testing purposes
echo RELOADAGENT | gpg-connect-agent
Better Bibtex, Zotero:
Add URL to webpages
https://retorque.re/zotero-better-bibtex/scripting/
if (Translator.BetterBibTeX && item.itemType === 'webpage') {
if (item.accessDate) {
this.add({ name: 'note', value: "(accessed " + item.accessDate + ")" });
}
if (item.url) {
this.add({ name: 'howpublished', bibtex: "{\\url{" + this.enc_verbatim({value: item.url}) + "}}" });
}
}
ImageMagick:
crop to aspect ratio
convert in.png -gravity center -crop 4:3 out.png
Bumblebee runit fix:
sed -i 's/Driver=$/Driver=nvidia/' /etc/bumblebee/bumblebee.conf
Uncompress android .ab backup files:
# https://stackoverflow.com/questions/18533567/how-to-extract-or-unpack-an-ab-file-android-backup-file
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) | tar xfvz -
Fix: Failed to activate service 'org.freedesktop.login1': timed out:
If dbus has been restarted, don't forget to restart elogind/systemd-logind
Artilinux steam lib32-systemd fix:
https://forum.artixlinux.org/index.php/topic,633.msg7437.html
[Attached file]: resources/lib32-systemd-dummy.pkgbuild
LibreOffice unlock write-protected doc:
Format -> Sections... -> [Uncheck Protect in "Write protection"]
Euro truck simulator 2:
Enable additional beams (roof, bumper, etc.)
<F4> then tick "Roof" and "Aux"
Run ETS2Studio under wine
winetricks dotnet45
Confirmed to work on a 32 bits prefix, untested on 64
SSH, get machine fingerprints:
Local
find /etc/ssh/ -name "ssh_host_*.pub" -exec ssh-keygen -lf '{}' \;
Remote
ssh-keyscan <hostname> 2>/dev/null | ssh-keygen -lf /dev/stdin
Run MSVC on linux with Wine:
As seen on the internet, not tested:
https://hackernoon.com/a-c-hello-world-and-a-glass-of-wine-oh-my-263434c0b8ad
Also this docker atrocity:
https://github.com/mstorsjo/msvc-wine
/!\ You need to get the original files from a windows machine/VM
Simple python HTTP server:
Supports --help option
python3:
python -m http.server [port]
python2:
python -m SimpleHTTPServer [port]