**screen size** pour 2*2: 137*38 / pour 1*1: 68*19 (37 et 18 si barre des menus cachee)
**ctrl c** termine l'action en cours du terminal
**ctrl s** bloque l'affichage du terminal
**ctrl q** rétablit la communication avec le terminal
**ctrl z** stop le travail en cours et le met sur pause
**fg** relance le dernier travail mis sur pause
**mkdir file{1..10}** creer 10 dossiers nommés de file1 à file10
**pwd** print working directory
**xdg-open .** open working directory
**du -sh** directory sizes
**ncdu** (visual version of 'du' command) quick presentation of directories size

**ssh username@ssh.server.domain -p XXXX** se connecter a un serveur via ssh en precisant un port
**sftp -P XXXX username@ssh.server.domain** se connecter a un server ssh avec le protocol ftp
**vim scp://username@ssh.server.domain:XXXX//home/path/to/file** edit a remote file from local vim

**ssh to server :**
	**ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_hugo2lejourdesprofs -C "hugo2lejourdesprofs"** :
	- creates a key of type ed25519 (more secure than rsa),
	- put it in the file ~/.ssh/id_ed25519_name_of_key,
	- and add a comment "name_of_key" (for exemple) -> it will be shown next to the key in the .pub file
	**ssh-copy-id -i ~/.ssh/id_ed25519_hugo"lejourdesprofs.pub 9x3ph_hugo@9x3ph.ftp.infomaniak.com** :
	- send a copy of the public key to the server,
	- choose which key with -i (otherwise it send them all)
	- name of server ssh connexion (you will have to enter your password)


**install touchegg to allow more touchpad gestures, like pinch-to-zoom**
	- https://github.com/JoseExposito/touchegg
	- then I installed the graphical user interface, and i launch it with :
		**flatpak run com.github.joseexposito.touche**

**having multiples audio in the same time**
	https://askubuntu.com/questions/78174/play-sound-through-two-or-more-outputs-devices
	- launch paprefs (pulse audio preferences)
		- choose 'add virtual output' in 'simultaneous output'
	- restart pulsaudio for the changes to take effect : **pulseaudio -k**
	- launch pavucontrol (pulse audio volume controle)
		- choose the simultaneous output (this will also enable the computer speakers, so you might want to put them at 0)

**open .URL files :**
	https://askubuntu.com/questions/353932/equivalent-of-url-file-on-ubuntu#353952
	- create a file (ex: 'open_url') in /usr/local/bin/ (or another bin directory located in $PATH)
	- in this file :
		```
			#!/usr/bin/bash
			if [ "$1" == "" ] || [ "$1" == "--help" ] ; then
				echo "$(basename "$0") URLFILE - opens a .url file in the default browser"
			else
				sed 's/^BASEURL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | sed 's/\r//' | xargs xdg-open
			fi
		```
	- signification :
		- for the command "open_url file.URL" :
			- **$0**                      : /usr/local/bin/open_url
			- **$(basename "$0")**        : open_url
			- **$1**                      : file.URL
		- the sed command :
			- **grep -m 1** : tells grep to stop searching after the first match
			- **xargs**     : reads items from standard input and executes a command with those items as arguments
	- give execution permission : `chmod +x /usr/local/bin/open_url`
	- tell the file manager to use this script to open .URL files :
		- right click on a .URL file
		- open with other application
		- 'use a custom command' : /usr/local/bin/open_url
		- 'use as default for this kind of file' (or equivalent)
		- open :)


**open .webloc files :**
	- see above 'open .URL files'
	- in the script change the line "sed..." by this :
			grep -m 1 -oP '(?<=<string>).*?(?=<\/string>)' "$1" | xargs xdg-open
	- signification :
		- **-m 1**          : tells grep to stop searching after the first match
		- **-o**            : tells grep to print only the matching portion of the line
		- **-P**            : this option enables Perl-compatible regular expressions, which support lookaheads and lookbehinds
		- **(?<=<string>)** : this is a positive lookbehind that matches the position immediately after <string>.
		- **.*?**           : this matches any character (except for a newline) zero or more times, but as few times as possible.
		- **(?=<\/string>)** : this is a positive lookahead that matches the position immediately before </string>


**pdftotext** transforme un pdf en un fichier texte
**^** designe le debut d'une ligne
* n'importe quel caractere autant de fois que possible
**ls** ** montre tous les dossiers et sous-dossiers recursivement
**chmod 755 fichier** chmod change les droits des fichiers, organisés en : rwxrwxrwx avec pour valeur r=4 w=2 x=1 donc r-w == r + w == 4 + 1 == 5

**zsh**
		**sudo apt-get install zsh**
		**which zsh** donne le chemin d'acces de zsh (/usr/bin/zsh)
		**chsh -s /usr/bin/zsh** change shell (chsh) pour zsh
		(reboot le systeme pour que les changements prennent effet)
		**echo $SHELL** pour voir quel shell est utilisé
		(uncomment **line --DISABLE_AUTO_TITLE="true"--** in ~/.zshrc file pour empecher screen de donner un nom automatique aux sessions)

**sass name.scss name.css** create a css file from a scss file
**sass --watch name.scss:name.css** make the transformations of scss in css file

**'tree' like :**
find | sort | grep -ve "node_modules/" -e ".git/" | sed 's#[^/]*/#|__ #g;s#__ |#   |#g;s#|   #    #g;s#\(node_modules\|.git[ignore]*\)#\1 ...#;$a\ '

**format usb**
	**sudo fdisk -l** list all disks - find yours (something like /dev/sdx)
	**sudo fdisk /dev/sdx** enter in fdisk program
		**p** print the partions
		**o** create an empty dos table
		**n** add a new partition
			**p** primary
			**1** partition number 1
			**enter** default first selector
			**+1G** for 1Gb size or *enter* for default
		**a** toogle the flag *bootable*
		**n** again if you want more partitions
		**w** write and quit




**touchscreen :**
	**xinput --list** list all input
	**xinput disable 12** disable the input 12, touchscreen for Lenovo-FLEX-3-1120
	**load to start :** add "xinput disable 12" in application autostart
	ADD FORMULA TO FIND 12

**appimage :**
	- **chmod +x <name>.appimage** make it executable
	- create name for execution command :
		- create an symlink in a bin location :
			- /usr/bin if application is installed by systeme app manager (not the case for appimages)
			- /usr/sbin if need sudo to execute
			- /usr/local/bin or /usr/local/sbin if installed manually by user
			- ~/.local/bin is accessible only for this user (PREFFERED LOCATION)
		- make sure "~/.local/bin" is in $PATH
		- **ln -s /absolut/path/to/program.appImage ~/.local/bin/<name>** 
	.desktop file :
		- in    : /usr/share/applications/<name>.desktop
		- or in : ~/.local/share/applications/<name>.desktop
		- **locate "*<name>*desktop"** : to locate if the .desktop file already exist
		- min content :
			[Desktop Entry]
			Exec=<program name> (if symlink created, otherwise path to the appimage file)
			Name=<name>
			Type=Application
	**( cd /usr/share/applications && chmod 644 <name>.desktop )** maybe change permissions

**applications :**
	- add it to bin, so you can launch it with its name directly : **ln -s /path/to/executable ~/.local/bin/**
	add /usr/share/applications/<name>.desktop as explained above for appimages
	**maybe, example with firefox :**
    Download Firefox
    Got to the Download folder in your terminal:
		**cd ~/Downloads**
    Extract the archive:
		**tar xjf firefox-*.tar.bz2**
    Move the Firefox files to /opt:
		**mv firefox /opt**
    Create a symlink to the Firefox binary:
		**ln -s /opt/firefox/firefox /usr/local/bin/firefox**
    Download a desktop file:
		**wget https://raw.githubusercontent.com/mozilla/sumo-kb/main/install-firefox-linux/firefox.desktop -P /usr/local/share/applications**
    Remove the snap version of Firefox:
		**sudo snap remove firefox**
    Launch the new Firefox by running this command in a terminal:
		**firefox** -> equivalent to '/usr/local/bin/firefox'
    Go to Dock -> right click on Firefox -> Add to Favorites -> Move it to the top


**firefox extension source code :**
	**right click on install** and select "copy link"
	**curl -L <link> > /tmp/myextension.xpi** download the extension with curl inside a tmp file
	**unzip /tmp/myextension.xpi -d /tmp/myextension** unzip the content
	enjoy reading it ;)

**enable accents on ubuntu :**
	**compose key = right alt** change in keyboard > layout > compose key
		**sudo apt install gnome-tweaks** maybe install tweak to change compose key
	**r-alt ' e** é
	**r-alt ` e** è
	**alternatively :** https://askubuntu.com/questions/1028957/how-to-set-a-compose-key-in-ubuntu-18-04
			**man xkeyboard-config** look for the compose options (shortcut: enter /compose:). You will find
				compose:ralt          Right Alt                  
				compose:lwin          Left Win                   
				compose:lwin-altgr    3rd level of Left Win      
				compose:rwin          Right Win                  
				compose:rwin-altgr    3rd level of Right Win     
				compose:menu          Menu                       
				compose:menu-altgr    3rd level of Menu          
				compose:lctrl         Left Ctrl                  
				compose:lctrl-altgr   3rd level of Left Ctrl     
				compose:rctrl         Right Ctrl                 
				compose:rctrl-altgr   3rd level of Right Ctrl    
				compose:caps          Caps Lock                  
				compose:caps-altgr    3rd level of Caps Lock     
				compose:102           <Less/Greater>             
				compose:102-altgr     3rd level of <Less/Greater>
				compose:paus          Pause                      
				compose:prsc          PrtSc                      
				compose:sclk          Scroll Lock                
			**setxkbmap -option compose:paus** let us say you want to pick Pause as the compose key. Just issue
			**XKBOPTIONS="terminate:ctrl_alt_bksp,compose:paus"** to make it reboot-persistent,
																												edit /etc/default/keyboard
																												if you had other options already,
																												separate them with commas

**connect to planet hoster with ssh :**
	ssh hugugtzx@world-370.fr.planethoster.net -p 5022
	**to enable vi :** `export TERM=xterm`
	**locked files on nextcloud :** https://help.nextcloud.com/t/file-is-locked-how-to-unlock/1883
		**vi nextcloud.hugulumu.fr/nextcloud/config/config.php** : change maintenance mode to true
		**mysql -u hugugtzx_next645 -p** : the db username and password are in the config.php file of previous step
		**(SHOW DATABASES;)**
		**USE hugugtzx_next645;**
		**(SHOW TABLES;)**
		**DELETE FROM oc_file_locks WHERE 1;**
		**vi nextcloud.hugulumu.fr/nextcloud/config/config.php** : change maintenance mode back to false

**youtube-dl for france.tv :**
	https://github.com/ytdl-org/youtube-dl/issues/29956#issuecomment-1013345689

**remap keyboard keys :**
	/* FOR ONE SESSION */
	**xev** open a program that gives informations about key events, like keycode
	**xmodmap -pk | grep <keycode>** to find the name of the key, like Return
	**xmodmap -e "keycode <keycode> = <name>"** ex: `xmodmap -e "keycode 62 = Return"`
	/* OR FOREVER */
	**sudo cp /usr/share/X11/xkb/symbols/pc /usr/share/X11/xkb/symbols/pc.bak** save the file
	**sudo vim /usr/share/X11/xkb/symbols/pc** modify the file

**settings of firefox extension MultiTranslate :**
	iframe {
		/*min-width: 720px;*/
		min-height: 600px;
		border: none;
		margin-top: -160px;
	}
	iframe ~ * {
		display: none !important;
	}

**open default sites with firefox :**
	https://askubuntu.com/questions/79305/how-do-i-change-my-default-browser
	**sudo update-alternatives --config x-www-browser**
	**sudo update-alternatives --config gnome-www-browser**

**change dns :**
	https://learnubuntu.com/change-dns-server/
	so far i just changed in /etc/resolv.conf

**format usb :**
	- list disk :
		**df -h** mounted partitions, or
		**lsblk** or
		**sudo fdisk -l** for more informations
	- unmount partitions :
	**sudo umount /dev/sdb1** unmount usb, replace /dev/sdb1 with name of your usb
	- if necessary, erase all memory :
	**sudo dd if=/dev/zero of=/dev/sdb bs=4k status=progress && sync** sync to flush the cache
	- if necessary, erase all partitions or create new ones :
	**sudo fdisk /dev/sdb**
		> Command (m for help): **o** for creating an empty partition table
		> Command (m for help): **n** for creating a new one
			> Select (default p): **<enter>** to select default p
			> Partition number (default 1): **<enter>** to create a partition number 1
			> First sector (default 2048): **<enter>** to start partition at begining
			> Last sector (default xxxxxxxx): **<enter>** to give partition full size
		> Command (m for help): **w** to write the changes (before that, nothing was really made)
	- format partitions (re list before) :
	**sudo mkfs -t vfat -n "<name>" /dev/sdb1** to format in fat32 (vfat) (MaKe FileSystem)


**control battery life : use "tlp"**
	- **sudo apt install tlp tlp-rdw**
	- to see the status : **sudo tlp-stat -b**
		- look at these lines :
		- **Parameter value range:**
		- *** STOP_CHARGE_THRESH_BAT0/1: 0(off)..100(default)**
		- it means the computer only supports stop parameter
	- **sudo vim /etc/tlp.conf**
		- START_CHARGE_THRESH_BAT0=0
		- STOP_CHARGE_THRESH_BAT0=80
	- maybe : **sudo systemctl enable tlp.service**
	- then : **sudo tlp start**
	- you can check the parameters again : **sudo tlp-stat -b**

**battery level script lookup :**
	- **~/.config/battery_level/battery_state_log.sh**


**list of automatic settings :**
	- install screen, omyzsh, keepassxc, curl, make, firefox, signal, gnome-tweaks, ffmpeg, yt-dlp, element
	- install or configure to avoid screen blue light
	- install nextcloud client (apt ? or appimage ? appimage need fuse : https://github.com/AppImage/AppImageKit/wiki/FUSE), and launch at startup
	- install these settings (connection with bitbucket ? ssh ? https ?)
	- configure cursor speed, click with touch
	- change dns
	- configure firefox :
		- default browser
		- duckduckgo default search
		- addons :
			- keepassxc
			- i dont care about cookies
			- auto tab discard
				- settings > barre d'outils action click gauche > desactiver tous les autres onglets
			- ublock origin
			- deepl/multitranslate
			- youtube speed control, by toxblh
		- download file
		- password settings
		- setting ctrl-tab to switch to last used tabs
	- configure desktop bar with infos and stats
	- configure git global email and name

**todo !**
	- re-add code to move cursor on wrap text in vimrc
	- add vimrc, zshrc, and screenrc in default screen windows

**screenshots :**
	- changed the action when print key is pressed :
		- the old default shortcut executed this command : **xfce4-screenshooter -f**
		- now it executes a script that will make the capture instantanously
		- this script contains this command : **xfce4-screenshooter -f -s /home/asususus/Nextcloud/medias/screenshots/screenshot-$(date +%Y-%m-%d_%H-%M-%S).png**
			- the script is located in ~/.local/bin/screenshot.sh
		- i also added a shortcut to execute the previous command : **ctrl print**

