├── README.md ├── apricity-install.sh ├── dell-5457-known-issues.md ├── games └── pes2016.md ├── install.sh ├── manjaro.md ├── mongo-ubuntu.sh ├── pop-os.md ├── qualcomm-atheros-wireless.sh ├── tmux-shortcuts-and-cheatsheet.md ├── vim-shortcuts-and-cheatsheet.md └── zsh-shortcuts-and-cheatsheet.md /README.md: -------------------------------------------------------------------------------- 1 | # install linux 2 | 3 | > Softwares to install on Linux with just one command 4 | 5 | ## Usage 6 | 7 | Just run: 8 | 9 | **Ubuntu (Debian like):** 10 | 11 | ```console 12 | bash -c "$(wget -O - https://raw.githubusercontent.com/fdaciuk/install-linux/master/install.sh)" 13 | ``` 14 | 15 | --- 16 | 17 | **Apricity (Arch Linux like):** 18 | 19 | ```console 20 | bash -c "$(wget -O - https://raw.githubusercontent.com/fdaciuk/install-linux/master/apricity-install.sh)" 21 | ``` 22 | 23 | To install some softwares, you will need `yaourt`. 24 | 25 | Edit your `/etc/pacman.conf`, adding this lines: 26 | 27 | ``` 28 | [archlinuxfr] 29 | Server = http://repo.archlinux.fr/$arch 30 | ``` 31 | 32 | After that, update the system: 33 | 34 | ```console 35 | sudo pacman -Sy 36 | ``` 37 | 38 | If `yaourt` is not installed, install it: 39 | 40 | ```console 41 | sudo pacman -S yaourt 42 | ``` 43 | 44 | Then, use `yaourt` -S to install any package ;) 45 | 46 | --- 47 | 48 | ## Softwares that will be installed: 49 | 50 | - XSel 51 | - SMB Client 52 | - HTop 53 | - OpenSSH Server 54 | - S3 CMD 55 | - ZSH 56 | - Terminator 57 | - Curl 58 | - Vim (Gnome) 59 | - KeePassX 60 | - VLC 61 | - Git 62 | - PlayOnLinux 63 | - Chrome 64 | - Docker 65 | - Dropbox 66 | - Diffmerge 67 | - Skype 68 | - Strem.io 69 | - Simple Screen Recorder 70 | - NVM 71 | - Nodemon 72 | - Apache 2 73 | - MySQL 74 | - PHP 75 | - PHPMyAdmin 76 | - WP-CLI 77 | - Composer 78 | - Redis Server 79 | - OH My ZSH 80 | - Heroku Toolbelt 81 | - MongoDB 82 | 83 | > Enjoy it ;) 84 | 85 | ## Other softwares to install 86 | - [Lightworks](https://www.lwks.com/) (video editor): http://downloads.lwks.com/lwks-12.6.0-amd64.deb 87 | - [Avocode](https://avocode.com/) 88 | - [SQLEctron](https://sqlectron.github.io/) 89 | - [RoboMongo](https://robomongo.org/) (Mongo GUI) 90 | 91 | ## After Install 92 | 93 | **Configure GIT:** 94 | 95 | ```console 96 | git config --global user.email "your@email" 97 | git config --global user.name "Your name" 98 | git config --global merge.tool meld // Install meld first with `sudo apt install meld` 99 | git config --global pull.rebase true // always rebase when "pull" instead of merge 100 | git config --global init.defaultbranch main // make "main" the default branch for new projects 101 | ``` 102 | 103 | **Generate SSH Keys (or copy, if you already have one):** 104 | 105 | ```sh 106 | ssh-keygen -t rsa -b 4096 -C "your@email" 107 | 108 | # Try 109 | ssh -T git@github.com 110 | ssh -T git@bitbucket.com 111 | ``` 112 | 113 | **Generate GPG Keys:** 114 | 115 | - Follow this steps: https://help.github.com/articles/generating-a-new-gpg-key/ 116 | - Telling Git about your GPG Keys: https://help.github.com/articles/telling-git-about-your-gpg-key/ 117 | 118 | Then, just commit using `git commit -S` =) 119 | 120 | ## Install Top Icons (Gnome Shell) 121 | 122 | https://github.com/phocean/TopIcons-plus 123 | 124 | ## Install fonts 125 | 126 | **Consolas:** 127 | 128 | fonte: http://ssup2.iptime.org/wiki/Ubuntu_Consolas_Font_Install 129 | 130 | **Source Code PRO:** 131 | 132 | ```console 133 | bash -c "$(wget -O - https://gist.githubusercontent.com/fdaciuk/8b3269a3d797ee723672/raw/c8344f9cd4f91a8ae69535c833253ae87ef86d5b/sourcecodepro.sh)" 134 | ``` 135 | 136 | ## Useful commands 137 | 138 | **Auto mount a partition:** 139 | 140 | Add entry on your `/etc/fstab` file: 141 | 142 | ```fstab 143 | # 144 | /dev/sdaX /media/storage ext4 defaults 0 1 145 | ``` 146 | 147 | [**Relase idle memory**](http://www.vivaolinux.com.br/dica/Liberando-memoria-RAM-ociosa) 148 | 149 | ```console 150 | sudo sysctl -w vm.drop_caches=3 151 | ``` 152 | 153 | **Update swappiness (how much percent of memory should be in use before using swap?)** 154 | 155 | To set swappiness to 10% (instead default of 60%): 156 | 157 | ```console 158 | sudo sysctl vm.swappiness=10 159 | ``` 160 | 161 | Then, restart the system or run **clear swap** commands (see below). 162 | 163 | **Clear swap** 164 | 165 | ```console 166 | sudo swapoff -a 167 | sudo swapon -a 168 | ``` 169 | 170 | **Removing dpkg package** 171 | 172 | ```console 173 | sudo dpkg -r 174 | ``` 175 | 176 | **Stop services from startup without remove** 177 | 178 | ```console 179 | sudo update-rc.d -f remove 180 | ``` 181 | 182 | **Check which services are running** 183 | 184 | ```console 185 | service --status-all 186 | ``` 187 | 188 | ## Clone an installation 189 | 190 | After boot from a Live USB, run on terminal: 191 | 192 | ``` 193 | dd if=/dev/sdb3 of=/dev/sda3 status=progress 194 | ``` 195 | 196 | Where `sdb3` is the origin, and `sda3` is the destination. 197 | 198 | After that, run: 199 | 200 | ``` 201 | sudo mount /dev/sda3 /mnt 202 | ``` 203 | 204 | Where sda3 contains the recently copied boot and root partitions. 205 | 206 | ```sh 207 | sudo mount --bind /dev/ /mnt/dev/ 208 | sudo mount -t /proc none /mnt/proc 209 | sudo chroot /mnt 210 | # note this is `sda` not `sda3` 211 | sudo grub-install /dev/sda 212 | sudo update-grub 213 | exit 214 | ``` 215 | 216 | ## Force Reload audio (alsa + pulseaudio) 217 | 218 | Run the command: 219 | 220 | ```sh 221 | pulseaudio -k && sudo alsa force-reload 222 | ``` 223 | 224 | Then, restart the computer. 225 | 226 | ## Use Jack instead of pulseaudio 227 | 228 | ```sh 229 | sudo apt-get install qjackctl pulseaudio-module-jack 230 | pactl load-module module-jack-sink 231 | pactl load-module module-jack-source 232 | pactl set-default-sink jack_out # Or open Sound Configuration and select "Jack" 233 | ``` 234 | 235 | ## Flatpak Permissions 236 | 237 | To give permissions for a flatpak app to access everything that is in the host, just run: 238 | 239 | ```sh 240 | sudo flatpak override ApplicationIDHere --filesystem=host 241 | ``` 242 | 243 | ## License 244 | 245 | [MIT](https://github.com/fdaciuk/licenses/blob/master/MIT-LICENSE.md) © Fernando Daciuk 246 | -------------------------------------------------------------------------------- /apricity-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | has() { 5 | [[ -x "$(command -v "$1")" ]]; 6 | } 7 | 8 | has_not() { 9 | ! has "$1" ; 10 | } 11 | 12 | ok() { 13 | echo "→ "$1" OK" 14 | } 15 | 16 | update() { 17 | sudo pacman -Syu 18 | } 19 | 20 | install() { 21 | sudo pacman -S --noconfirm "$1" 22 | } 23 | 24 | remove() { 25 | sudo pacman -R "$1" 26 | } 27 | 28 | removePackageAndConfigs() { 29 | sudo pacman -Rn "$1" 30 | } 31 | 32 | removePackageAndAllDependencies() { 33 | sudo pacman -Rsc "$1" 34 | } 35 | 36 | update 37 | 38 | if has_not pygtk; then 39 | install pygtk python2 cairo 40 | fi 41 | ok "Python" 42 | 43 | if has_not xsel; then 44 | install xsel 45 | fi 46 | ok "XSel" 47 | 48 | if has_not htop; then 49 | install htop 50 | fi 51 | ok "Htop" 52 | 53 | if has_not s3cmd; then 54 | install s3cmd 55 | fi 56 | ok "S3CMD" 57 | 58 | if has_not terminator; then 59 | install terminator 60 | fi 61 | ok "Terminator" 62 | 63 | if has_not keepassx2; then 64 | install keepassx2 65 | fi 66 | ok "KeePassX2" 67 | 68 | if has_not vlc; then 69 | install vlc 70 | fi 71 | ok "VLC" 72 | 73 | if has_not docker; then 74 | install docker 75 | fi 76 | ok "Docker" 77 | 78 | if has_not meld; then 79 | install meld 80 | fi 81 | ok "Meld" 82 | 83 | if has_not autojump; then 84 | install autojump 85 | source /etc/profile.d/autojump.zsh 86 | fi 87 | ok "Autojump" 88 | 89 | if has_not simplescreenrecorder; then 90 | install simplescreenrecorder 91 | fi 92 | ok "Simple Screen Recorder" 93 | 94 | if has_not node; then 95 | install nodejs 96 | fi 97 | ok "NodeJS" 98 | 99 | if has_not npm; then 100 | install npm 101 | fi 102 | ok "NPM" 103 | 104 | if has_not apache; then 105 | install apache 106 | fi 107 | ok "Apache2" 108 | 109 | if ! [[ -d "$HOME/.nvm" ]]; then 110 | NODE_VERSION=5 111 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash 112 | source ~/.zshrc 113 | nvm install $NODE_VERSION 114 | nvm use $NODE_VERSION 115 | nvm alias default $NODE_VERSION 116 | fi 117 | ok "NVM" 118 | 119 | if has_not dropbox; then 120 | curl -O -J -L https://www.dropbox.com/download?dl=packages/nautilus-dropbox-1.4.0.tar.bz2 121 | tar xjf ./nautilus-dropbox-1.4.0.tar.bz2 122 | cd nautilus-dropbox-1.4.0 123 | ./configure 124 | make 125 | make install 126 | fi 127 | 128 | sudo npm i -g nodemon pnpm mocha babel-cli 129 | ok "Node global modules" 130 | 131 | ok "Installation finished!" 132 | -------------------------------------------------------------------------------- /dell-5457-known-issues.md: -------------------------------------------------------------------------------- 1 | # Problemas conhecidos 2 | 3 | ## Instalação passo-a-passo do Ubuntu Gnome 16.04 4 | 5 | Entrar na BIOS, e resetar as configurações para configurações de fábrica (Factory settings); 6 | 7 | Dar boot via pendrive e instalar normalmente, com o cabo de rede plugado, já que o wifi nao será reconhecido ainda; 8 | 9 | Quando chegar na hora de selecionar as partições, não remover as que já existem. Só altere a partição onde está o Ubuntu 14.04, deixando o espaço que você precisar; 10 | 11 | Deixe o grub no `/dev/sda`; 12 | 13 | Após a instalação, o boot deverá carregar normalmente. 14 | 15 | ### Instalação da placa wireless: 16 | 17 | **Modelo:** 18 | 19 | ``` 20 | description: Wireless interface 21 | product: QCA6174 802.11ac Wireless Network Adapter 22 | vendor: Qualcomm Atheros 23 | ``` 24 | 25 | Execute o comando abaixo: 26 | 27 | ```console 28 | bash -c "$(wget -O - https://raw.githubusercontent.com/fdaciuk/install-linux/master/qualcomm-atheros-wireless.sh)" 29 | ``` 30 | 31 | reinicie o notebook e deve funcionar! 32 | 33 | > fonte: https://www.vivaolinux.com.br/topico/Rede-Wireless/Alguem-me-ajude-wifi-ubuntu-1604?pagina=2 34 | 35 | --- 36 | 37 | ### Sobre o driver de video 38 | 39 | Não instale o que está em Drivers adicionais. A tela fica escura e não carrega o sistema coretamente. Para instalar o driver de video, siga os passos abaixo: 40 | 41 | > fonte: http://askubuntu.com/questions/760934/graphics-issues-after-installing-ubuntu-16-04-with-nvidia-graphics 42 | 43 | - Remova o login automatico (se estiver habilitado); 44 | 45 | - Troque o GDM pelo Lightdm: 46 | 47 | ```console 48 | sudo apt-get install lightdm 49 | ``` 50 | 51 | Selecione o `lightdm` como padrão. 52 | 53 | Reinicie e veja se o está fazendo login pelo lightdm. 54 | 55 | Abra um novo TTY (Ctrl Alt F1) e execute: 56 | 57 | ```console 58 | sudo apt-get purge nvidia-* 59 | sudo add-apt-repository ppa:graphics-drivers/ppa 60 | sudo apt-get update 61 | sudo apt-get install nvidia-364 62 | sudo reboot 63 | ``` 64 | 65 | Se tudo correu bem, o driver estará instalado corretamente! 66 | 67 | Para atualizar, execute no TTY: 68 | 69 | ```console 70 | sudo apt-get install nvidia-367 71 | ``` 72 | 73 | ou escoha a versão mais recente, instale e reinicie! 74 | 75 | ## Problemas com Audio 76 | 77 | Tentar os passos desse [link](https://help.ubuntu.com/community/SoundTroubleshootingProcedure) 78 | 79 | ```sh 80 | killall pulseaudio; rm -r ~/.config/pulse/* ; rm -r ~/.pulse* 81 | 82 | # wait ten seconds, then run this: 83 | pulseaudio -D 84 | pulseaudio -k 85 | ``` 86 | 87 | Então reinicie. 88 | -------------------------------------------------------------------------------- /games/pes2016.md: -------------------------------------------------------------------------------- 1 | # PES 2016 2 | 3 | Use latest wine version; 4 | 5 | ## Libraries: 6 | 7 | - d3dcompiler_43 8 | - d3dx9 9 | - d3dx10 10 | - d3dx11 11 | - directx9 12 | - dotnet40 13 | - mfc42 14 | - msvc100 15 | - msxml3 16 | - physx 17 | - vbrun6 18 | - vcrun2010 19 | - vcrun6 20 | - VideoDriver 21 | - xact 22 | - xinput 23 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | has() { 5 | [[ -x "$(command -v "$1")" ]]; 6 | } 7 | 8 | has_not() { 9 | ! has "$1" ; 10 | } 11 | 12 | ok() { 13 | echo "→ "$1" OK" 14 | } 15 | 16 | sudo apt-get update 17 | sudo apt-get install -y \ 18 | ubuntu-restricted-extras \ 19 | xsel \ 20 | smbclient \ 21 | htop \ 22 | openssh-server \ 23 | s3cmd \ 24 | zsh \ 25 | terminator \ 26 | curl \ 27 | vim-gnome \ 28 | keepassx \ 29 | python-dbus \ 30 | autojump \ 31 | meld \ 32 | vlc browser-plugin-vlc \ 33 | git git-core \ 34 | playonlinux 35 | 36 | ok "System updated!" 37 | ok "XSel" 38 | ok "SMB Client" 39 | ok "HTop" 40 | ok "OpenSSH Server" 41 | ok "S3 CMD" 42 | ok "ZSH" 43 | ok "Terminator" 44 | ok "Curl" 45 | ok "Vim" 46 | ok "KeePassX" 47 | ok "Autojump" 48 | ok "Meld" 49 | ok "VLC" 50 | ok "Git" 51 | ok "PlayOnLinux" 52 | 53 | # Sound Equalizer 54 | sudo add-apt-repository ppa:nilarimogard/webupd8 55 | sudo apt-get update 56 | sudo apt-get install pulseaudio-equalizer 57 | 58 | # Headphone Bluetooth 59 | sudo apt-get install blueman pulseaudio-module-bluetooth 60 | pactl load-module module-bluetooth-discover 61 | echo "Now, open bluetooth settings, and pair your device." 62 | echo "After that, open sound settings and select your device." 63 | echo "On 'profile' entry, choose 'High Fidelity Playback' and we're done." 64 | 65 | if has_not pip; then 66 | sudo apt-get install python-pip python-dev build-essential 67 | sudo pip install --upgrade pip 68 | sudo pip install --upgrade virtualenv 69 | fi 70 | ok "pip" 71 | 72 | if has_not google-chrome-stable; then 73 | wget -O chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 74 | sudo dpkg --force-depends -i chrome.deb 75 | sudo apt-get install -fy 76 | rm chrome.deb 77 | fi 78 | ok "Chrome" 79 | 80 | if has_not docker; then 81 | sudo apt-get install apt-transport-https ca-certificates linux-image-extra-$(uname -r) -y 82 | sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 83 | sudo sh -c "echo 'deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -sc) main' | cat > /etc/apt/sources.list.d/docker.list" 84 | sudo apt-get update 85 | sudo apt-get purge lxc-docker 86 | sudo apt-get install docker-engine -y 87 | sudo service docker start 88 | sudo groupadd docker 89 | sudo usermod -aG docker $(id -un) 90 | fi 91 | ok "Docker" 92 | 93 | if has nautilus && has_not dropbox; then 94 | sudo apt-get install nautilus-dropbox -y 95 | fi 96 | ok "Dropbox" 97 | 98 | if has_not diffmerge; then 99 | wget -O diffmerge.deb http://download-us.sourcegear.com/DiffMerge/4.2.0/diffmerge_4.2.0.697.stable_amd64.deb 100 | sudo dpkg -i diffmerge.deb --ignore-depends 101 | sudo apt-get install -fy 102 | rm -rf diffmerge.deb 103 | fi 104 | ok "Diffmerge" 105 | 106 | if has_not skype; then 107 | wget -O skype.deb http://download.skype.com/linux/skype-ubuntu-precise_4.3.0.37-1_i386.deb 108 | sudo dpkg -i skype.deb --ignore-depends 109 | sudo apt-get install -fy 110 | rm -rf skype.deb 111 | 112 | # Gnome Shell extension 113 | wget -O skype-extension.zip https://github.com/chrisss404/gnome-shell-ext-SkypeNotification/archive/master.zip 114 | unzip skype-extension.zip -d skype-extension 115 | cp -r skype-extension/gnome-shell-ext-SkypeNotification-master/SkypeNotification@chrisss404.gmail.com/ \ 116 | ~/.local/share/gnome-shell/extensions 117 | rm -rf skype-extension* 118 | fi 119 | ok "Skype" 120 | 121 | if ! [[ -d "/opt/stremio" ]]; then 122 | curl -#So stremio.tar.gz http://dl.strem.io/Stremio3.5.7.linux.tar.gz 123 | sudo mkdir -p /opt/stremio 124 | sudo tar -xvzf stremio.tar.gz -C /opt/stremio 125 | curl -SO# http://www.strem.io/3.0/stremio-white-small.png 126 | sudo mv stremio-white-small.png /opt/stremio/ 127 | curl -SO# https://gist.githubusercontent.com/claudiosmweb/797b502bc095dabee606/raw/52ad06b73d90a4ef389a384fbc815066c89798eb/stremio.desktop 128 | sudo mv stremio.desktop /usr/share/applications/ 129 | rm stremio.tar.gz 130 | fi 131 | ok "Strem.io" 132 | 133 | if has_not simplescreenrecorder; then 134 | sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder -y 135 | sudo apt-get update 136 | sudo apt-get install simplescreenrecorder -y 137 | # if you want to record 32-bit OpenGL applications on a 64-bit system: 138 | sudo apt-get install simplescreenrecorder-lib:i386 -y 139 | fi 140 | ok "Simple Screen Recorder" 141 | 142 | if ! [[ -d "$HOME/.nvm" ]]; then 143 | NODE_VERSION=4 144 | curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash 145 | source ~/.bashrc 146 | nvm install $NODE_VERSION 147 | nvm use $NODE_VERSION 148 | nvm alias default $NODE_VERSION 149 | fi 150 | ok "NVM" 151 | 152 | npm i -g nodemon hmh-cli clima 153 | ok "NodeJS global modules" 154 | 155 | if has_not apache2; then 156 | sudo apt-get install -y apache2 157 | 158 | # Setup vhosts 159 | curl -sS -O https://gist.githubusercontent.com/claudiosmweb/ab41b5e8693eea7c02b8/raw/392305085efa1347c26498a1a5027037ae9c73be/000-default.conf 160 | sudo rm /etc/apache2/sites-available/000-default.conf 161 | sudo mv 000-default.conf /etc/apache2/sites-available 162 | ok "Setup vhosts" 163 | 164 | # Enable rewrite 165 | sudo a2enmod rewrite 166 | ok "Enable Apache rewrite" 167 | 168 | # Restart Apache2 169 | sudo service apache2 restart 170 | ok "Restart Apache" 171 | 172 | sudo chown -R $USER:$USER /var/www 173 | ln -s /var/www ~/code 174 | fi 175 | ok "Apache" 176 | 177 | if has_not mysql; then 178 | sudo apt-get install -y mysql-server 179 | fi 180 | ok "MySQL" 181 | 182 | if has_not php; then 183 | sudo apt-get install -y php-pear \ 184 | php5-cli \ 185 | php5-curl \ 186 | php5-dev \ 187 | php5-gd \ 188 | php5-imagick \ 189 | php5-imap \ 190 | php5-mcrypt \ 191 | php5-pspell \ 192 | php5-tidy \ 193 | php5-xmlrpc \ 194 | php5-mysql \ 195 | libapache2-mod-php5 196 | fi 197 | ok "PHP" 198 | 199 | if ! [[ -d "/etc/phpmyadmin" ]]; then 200 | sudo apt-get install -y phpmyadmin 201 | sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf 202 | fi 203 | ok "PHPMyAdmin" 204 | 205 | if has_not wp; then 206 | curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 207 | chmod +x wp-cli.phar 208 | sudo mv wp-cli.phar /usr/local/bin/wp 209 | fi 210 | ok "WP-CLI" 211 | 212 | if has_not composer; then 213 | curl -sS https://getcomposer.org/installer | php 214 | sudo mv composer.phar /usr/local/bin/composer 215 | fi 216 | ok "Composer" 217 | 218 | if has_not redis-server; then 219 | sudo apt-get install -y build-essential tcl8.5 220 | wget http://download.redis.io/redis-stable.tar.gz 221 | tar xvzf redis-stable.tar.gz 222 | cd redis-stable 223 | sudo make 224 | sudo make install 225 | cd utils 226 | sudo printf '\n\n\n\n\n\n' | sudo ./install_server.sh 227 | cd ../.. 228 | rm -rf redis-stable* 229 | fi 230 | ok "Redis Server" 231 | ok "PHP for WordPress" 232 | 233 | if ! [[ -d "$HOME/.oh-my-zsh" ]]; then 234 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 235 | fi 236 | ok "OH My ZSH" 237 | 238 | if has_not heroku; then 239 | wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh 240 | fi 241 | ok "Heroku Toolbelt" 242 | 243 | if has_not mongod; then 244 | sudo bash -c "$(wget -O - https://raw.githubusercontent.com/fdaciuk/install-linux/master/mongo-ubuntu.sh)" 245 | fi 246 | ok "Mongo DB" 247 | 248 | sudo pip install wakatime 249 | ok "Wakatime CLI (https://github.com/wbinglee/zsh-wakatime)" 250 | 251 | # Clean up 252 | sudo apt-get autoclean -y 253 | sudo apt-get autoremove -y 254 | 255 | ok "Installation finished!" 256 | -------------------------------------------------------------------------------- /manjaro.md: -------------------------------------------------------------------------------- 1 | # Possíveis problemas com Manjaro 2 | 3 | ## Ambiente gráfico não sobe (conflito de drivers proprietários da nVidia) 4 | 5 | Quando o GDM não estiver subindo, faça o seguinte: 6 | - Reinicie o PC; 7 | - Na tela do Grub, pressione "e"; 8 | - Na linha "linux", adicione um "3" no final da linha (com um espaço antes); 9 | - Pressione Ctrl + X para salvar e bootar em modo texto. 10 | 11 | Após logar, remova os drivers da Nvidia: 12 | 13 | ```console 14 | sudo mhwd -r pci video-nvidia 15 | ``` 16 | 17 | Isso vai remover o driver da nvidia. Após isso, faça o reboot. 18 | 19 | Quando logar novamente, já vai entrar em modo gráfico, mas com o driver padrão. 20 | 21 | **Instale novamente o driver da Nvidia** 22 | 23 | Para instalar o driver da nvidia, é só usar o comando: 24 | 25 | ```console 26 | sudo pacman -S linux518-nvidia 27 | ``` 28 | 29 | O 518 é o número do kernel. É importante ficar atento porque, ao instalar o driver, o kernel com esse número será instalado junto. 30 | Veja se a versão do kernel é estável antes de instalar. Prefira sempre usar versões LTS. 31 | 32 | Após a instalação, é só reiniciar o PC novamente que tudo vai estar funcionando \o/ 33 | 34 | ## Downgrade de pacotes 35 | 36 | Com o lançamento da v254 do systemd, o Gnome começou a dar crash quando tentávamos reiniciar o GDM usando "Alt + F2 + r". Com a v253 o problema não acontece. 37 | Para fazer o downgrade do systemd (ou qualquer outro pacote) é só seguir as instruções [desse link](https://wiki.manjaro.org/index.php/Downgrading_packages). 38 | 39 | ### Issues relacionadas com o problema do systemd 254 para acompanhar 40 | 41 | - https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6899 42 | - https://bbs.archlinux.org/viewtopic.php?id=287955 43 | 44 | Para verificar a versão do `systemd`, executar `systemctl --version`. 45 | -------------------------------------------------------------------------------- /mongo-ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ## 4 | ## Bash install script for mongo 3.2 for Ubuntu 15.04, because of 5 | ## the replacement of upstart with systemd 6 | ## 7 | ## - AUTHOR: Alexandru Budurovici 8 | ## - VERSION: 1.0 9 | ## 10 | 11 | # Make sure we're running with root permissions 12 | if [ "$(id -u)" != "0" ]; then 13 | echo "This script must be run as root" 1>&2 14 | exit 1 15 | fi 16 | 17 | # Install Mongo 18 | # https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 19 | apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 20 | echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list 21 | apt-get update 22 | apt-get install -y mongodb-org 23 | 24 | # Create the SystemD dependant files 25 | echo '[Unit] 26 | Description=High-performance, schema-free document-oriented database 27 | After=syslog.target 28 | After=network.target 29 | [Service] 30 | # Type=forking 31 | # User=mongodb 32 | # Group=mongodb 33 | # PermissionsStartOnly=true 34 | # PIDFile=/var/run/mongodb.pid 35 | ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf 36 | [Install] 37 | WantedBy=multi-user.target' > /lib/systemd/system/mongod.service 38 | 39 | # Anticipate to the log issue 40 | touch /var/log/mongodb/mongod.log 41 | chown -R mongodb:mongodb /var/log/mongodb/ 42 | 43 | # Start the new service and enable it on boot 44 | systemctl daemon-reload 45 | systemctl enable mongod.service 46 | systemctl start mongod.service 47 | -------------------------------------------------------------------------------- /pop-os.md: -------------------------------------------------------------------------------- 1 | # Pop!\_OS 2 | 3 | > Informações importantes para instalações gerais no Pop!\_OS v21.04 4 | 5 | ## Passo a passo inicial 6 | 7 | - Instalar o sistema; 8 | - Se no tiver conexão com internet, usar Android com USB Tethering conectado em uma rede wifi; 9 | - Atualizar o sistema: `sudo apt update && sudo apt upgrade -y`; 10 | - Instalar adaptador wireless (próximo passo). 11 | 12 | ## Instalação do adaptador wireless TP-Link TL-WN8200ND 13 | 14 | > Link: https://askubuntu.com/questions/1078953/drivers-for-tp-link-tl-wn8200nd-v2 15 | 16 | **Passo-a-passo da solução para Kernel >=5:** 17 | 18 | Install kernel-headers, build-essentials, git, binutils and dkms packages: 19 | 20 | ``` 21 | sudo apt install -y linux-headers-$(uname -r) build-essential git binutils dkms 22 | ``` 23 | 24 | Then, download the driver and install: 25 | 26 | ``` 27 | git clone https://github.com/clnhub/rtl8192eu-linux.git 28 | cd rtl8192eu-linux/ 29 | ./install_wifi.sh 30 | ``` 31 | 32 | --- 33 | 34 | ## Como usar o roteador TP-Link Archer C6 1200AC como adaptador wireless ou repetidor, via wireless, sem conectar cabo no modem principal 35 | 36 | > A ideia aqui é utilizar o roteador TP-Link em um PC que não tem placa wireless, ligando direto na placa de rede da placa mãe, consumindo a wifi direto do roteador principal, sem usar cabos para conectar os dois roteadores. 37 | 38 | **Importante:** 39 | _Esse roteador da TP-Link é Gigabit, ou seja, suporta velocidades acima de 100mbs (até 1000mbs). Se você tem uma internet contratada com essa velocidade ou superior, e quer usufruir de toda essa velocidade, seu roteador principal precisa conseguir servir o wifi a 5ghz acima dessa velocidade, a placa de rede do seu PC também precisa ser Gigabit (10/100/1000) para suportar velocidades acima de 100mbs, e você também vai precisar de um cabo de rede Gigabit, para ligar no PC (o cabo acompanha o roteador da TP-Link)._ 40 | 41 | Esse roteador da TP-Link não funciona muito bem em 2.4ghz. Ao menos comigo, a velocidade da internet fica em torno de 20% do valor total, e dificilmente passa disso. Então vou mostrar como configurá-lo para ser usado na frequência de 5ghz. 42 | 43 | Ao acessar a interface do roteador, e criar uma senha, a primeira coisa a fazer é colocar o IP dele no mesma faixa de IP do roteador principal. Exemplo: o IP padrão do TP-Link é 192.168.0.1, e o meu roteador principal está em 192.168.1.1. Vamos deixar o TP-Link no IP 192.168.1.2. 44 | 45 | Para isso, clique na aba _Advanced_, depois no menu _Network_, na opção _LAN_. Modifique o _IP Address_ para ficar na mesma faixa do seu roteador principal. No meu caso, o valor desse campo vai ser 192.168.1.2. Ao clicar em _Save_, o roteador irá reiniciar. Aguarde a nova tela de login, agora no novo endereço. 46 | 47 | Com os dois roteadores na mesma faixa de IP, agora vamos conectar o TP-Link na wifi do roteador principal. Clique novamente na guia _Advanced_, vá até o menu _System Tools_ e clique em _System Parameters_. 48 | 49 | Role até a sessão _5GHz WDS_, clique para habilitar o checkbox _Enable WDS Bridging_, depois clique no botão _Survey_. As redes 5ghz disponíveis devem aparecer. Se a sua rede não aparecer, verifique a porta das redes que aparecem, e altere a porta da rede 5ghz do modem principal, para ficar dentro da faixa que o TPLink consegue enxergar. 50 | 51 | Então, ao cliar em _Survey_ sua rede 5G deve aparecer. Conecte na rede clicando no link _Choose_, coloque a senha da sua rede 5ghz e clique em _Save_. 52 | 53 | Com isso feito, só falta mais um passo, opcional: clique em _Network > DHCP Server_ e deixe o _Default Gateway_ apontando para o IP do seu modem principal. Não é obrigatório, mas eu gosto de manter assim. Feito isso, olhe na aba _Status_, em _Wireless_, na opção _5G_, se o status do _WDS_ está como _Run_. Se estiver como _Assoc_, só aguarde até ficar _Run_. 54 | 55 | Pronto, você já deve estar com acesso a internet \o/ 56 | 57 | --- 58 | 59 | ## Montagem automática de SSD do tipo NVME 60 | 61 | Se tiver mais de 2 SSD NVME, é preciso definir o file system usando UUID, ao invés do diretório em `/dev`. Para pegar o UUID do SSD, só rodar o comando abaixo: 62 | 63 | ``` 64 | ls -lha /dev/disk/by-uuid 65 | ``` 66 | 67 | Esse comando vai exibir o UUID de cada partição montada. Depois é s usar esse UUID no `/etc/fstab` para montar a partição na inicialização do sistema: 68 | 69 | ``` 70 | UUID=xxxx /media/storage ext4 defaults 0 0 71 | ``` 72 | 73 | --- 74 | 75 | ## Configuração de atalhos do Gnome 76 | 77 | O Pop troca os atalhos padrão para maximizar janelas (Super + seta cima), tendo que usar o `Ctrl` junto. Para ajustar, só pesquisar por `Keyboard Shortcuts`, buscar pelos atalhos, e fazer as substituições: 78 | 79 | ``` 80 | Switch focus to left monitor: Disabled 81 | Switch focus to right monitor: Disabled 82 | Switch focus to window down: Disabled 83 | Switch focus to window left: Disabled 84 | Switch focus to window right: Disabled 85 | Switch focus to window up: Disabled 86 | Move to workspace above: Ctrl + Alt + Up 87 | Move to workspace below: Ctrl + Alt + Down 88 | Move window one workspace down: Shift + Ctrl + Alt + Down 89 | Move window one workspace up: Shift + Ctrl + Alt + Up 90 | Lock screen: Super + L 91 | Maximize window: Super + Up 92 | Restore window: Super + Down 93 | View split on left: Super + Left 94 | View split on right: Super + Right 95 | 96 | ``` 97 | 98 | ## Definir input e output padrões no pulseaudio (quando não salva a alteração após o reboot) 99 | https://rastating.github.io/setting-default-audio-device-in-ubuntu-18-04/ 100 | 101 | --- 102 | 103 | ## Rolagem pela trackball no Logitech MX Ergo 104 | 105 | Aqui vamos precisar de duas dependências: `xinput` e `solaar`. 106 | 107 | **Configuração do `xinput`:** 108 | https://www.reddit.com/r/Trackballs/comments/lwvyk9/mx_ergo_trackball_scrolling_in_linux/gpjykaz/?utm_source=reddit&utm_medium=web2x&context=3 109 | 110 | > If you're using `X11` and `xinput`: 111 | > 112 | > find the id / name of the input device from this command: `xinput` 113 | > 114 | > enable the feature with this magic command: 115 | > 116 | ``` 117 | xinput set-prop 'libinput Scroll Method Enabled' 0, 0, 1 118 | ``` 119 | 120 | --- 121 | O comando provavelmente vai ser: 122 | ``` 123 | xinput set-prop pointer:"Logitech MX Ergo" 'libinput Scroll Method Enabled' 0, 0, 1 124 | ``` 125 | 126 | No Gnome 40, para funcionar corretamente, é preciso ativar também o `libinput Button Scrolling Button` para o botão `2` (botão do meio do mouse, usado para rolagem). 127 | 128 | E então, executar mais esse comando: 129 | 130 | ``` 131 | xinput set-prop pointer:"Logitech MX Ergo" "libinput Button Scrolling Button" 2 132 | ``` 133 | 134 | --- 135 | 136 | > 137 | > Not sure if this will work as you want, but libinput has a lot of settings you can play with -- list them with `xinput list-props ` 138 | > 139 | > If you're happy with the settings and want to make them permanent you can add them to a config file: as root create a file at ` /etc/X11/xorg.conf.d/10-mx-ergo-scroll-trackball.conf` and put something like this in it: 140 | 141 | ``` 142 | Section "InputClass" 143 | Identifier "" 144 | Driver "libinput" 145 | Option "ScrollMethod" "button" 146 | Option "ScrollButton" "2" 147 | EndSection 148 | ``` 149 | 150 | > The option names can be found in the manual: `man 4 libinput` 151 | > 152 | > If you're on wayland... idk good luck! 153 | 154 | Após fazer essa configuração, o scroll com a trackball estará funcionando ao pressionar e segurar o botão do meio do mouse (scroll). Para usar o botão "Forward" no lugar, abra o Solaar e configure o botão "Forward" para funcionar como o "Mouse Middle Button". 155 | 156 | ### Opções para wayland (não testado) 157 | - https://www.reddit.com/r/Trackballs/comments/lwvyk9/mx_ergo_trackball_scrolling_in_linux/gpwsn3k/?utm_source=reddit&utm_medium=web2x&context=3 158 | - https://www.reddit.com/r/Trackballs/comments/lwvyk9/mx_ergo_trackball_scrolling_in_linux/gpt8lah/?utm_source=reddit&utm_medium=web2x&context=3 159 | - https://www.reddit.com/r/Trackballs/comments/brfs0k/logitech_mx_ergo_stiff_middle_button/eoqgvkq?utm_source=share&utm_medium=web2x&context=3 160 | 161 | -- 162 | 163 | ## Configuração do Jack para áudio 164 | 165 | Instalar pacotes: 166 | 167 | ``` 168 | sudo apt install qjackctl pulseaudio-module-jack 169 | ``` 170 | 171 | Iniciar o QJackCtl, e definir em `Setup > Options > Execute script after Startup` o seguinte comando: 172 | 173 | ``` 174 | pacmd set-default-sink jack_out 175 | ``` 176 | 177 | Depois, iniciar os módulos para o Pulseaudio redirecionar a entrada e saída de áudio para o Jack: 178 | 179 | ``` 180 | pactl load-module module-jack-sink 181 | pactl load-module module-jack-source 182 | ``` 183 | 184 | E pronto! Para configurar a saída de áudio para "mono", na interface do Jack vá até `Connect` e, na aba `Audio`, 185 | conecte todos os canais do lado esquerdo `PulseAudio Jack Sink` com os canais `system` do lado direito. 186 | 187 | --- 188 | 189 | ## Adicionar ícones no system tray (válido somente para a v19.10. Na v20.04 ou posterior isso já vem instalado). 190 | 191 | Só seguir os procedimentos [desse link](https://pop.system76.com/docs/status-icons/), e reiniciar o PC. 192 | 193 | Instale a extensão: 194 | 195 | ``` 196 | sudo apt install gnome-shell-extension-appindicator 197 | ``` 198 | 199 | Reinicie o PC. 200 | 201 | Ative a extensão pelo Gnome Tweaks, ou com o comando: 202 | 203 | ``` 204 | gnome-shell-extension-prefs 205 | ``` 206 | 207 | O nome da extensão deve aparecer como **Ubuntu AppIndicators** ou **KStatusNotifierItem/AppIndicator Support**. 208 | 209 | --- 210 | 211 | ## Suporte para apps Snap 212 | 213 | ``` 214 | sudo apt update 215 | sudo apt install snapd 216 | ``` 217 | 218 | --- 219 | 220 | ## Instalação da NordVPN 221 | 222 | Instalação e comandos da CLI: 223 | 224 | https://support.nordvpn.com/Connectivity/Linux/1325531132/Installing-and-using-NordVPN-on-Debian-Ubuntu-Raspberry-Pi-Elementary-OS-and-Linux-Mint.htm 225 | 226 | --- 227 | 228 | ## Softwares adicionais para instalar 229 | 230 | **Alacritty (terminal que roda sobre a GPU)** 231 | > Importante lembrar que, até o momento, o Alacritty não suporta emojis. 232 | 233 | ``` 234 | sudo add-apt-repository ppa:mmstick76/alacritty 235 | sudo apt udpate 236 | sudo apt install alacritty 237 | ``` 238 | 239 | Copie o arquivo `alacritty.yml` para a raiz da sua /home/seu_usuario. 240 | 241 | **Htop** 242 | 243 | ``` 244 | sudo apt install htop 245 | ``` 246 | 247 | **NVM** 248 | https://github.com/nvm-sh/nvm 249 | 250 | **Yarn** 251 | https://classic.yarnpkg.com/en/docs/install#debian-stable 252 | 253 | ``` 254 | curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - 255 | ``` 256 | 257 | ``` 258 | echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list 259 | ``` 260 | 261 | ``` 262 | sudo apt update && sudo apt install --no-install-recommends yarn 263 | ``` 264 | 265 | **asdf** 266 | https://github.com/asdf-vm/asdf 267 | 268 | - [Getting Started](https://asdf-vm.com/guide/getting-started.html) 269 | 270 | Baixe o `asdf`: 271 | 272 | ``` 273 | git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1 274 | ``` 275 | 276 | Para instalar o `asdf` com ZSH + oh-my-zsh, é só baixar [o plugin](https://github.com/kiurchv/asdf.plugin.zsh): 277 | 278 | ``` 279 | git clone https://github.com/kiurchv/asdf.plugin.zsh $HOME/.oh-my-zsh/custom/plugins/asdf 280 | ``` 281 | 282 | **asdf para Erlang** 283 | https://github.com/asdf-vm/asdf-erlang 284 | 285 | Dependências necessárias: 286 | 287 | ``` 288 | sudo apt install build-essential autoconf m4 libncurses5-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk 289 | ``` 290 | 291 | Instale do plugin do Erlang: 292 | ``` 293 | asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git 294 | ``` 295 | 296 | Instale o Erlang: 297 | 298 | ``` 299 | asdf install erlang latest 300 | ``` 301 | 302 | Defina como a versão "global": 303 | 304 | ``` 305 | asdf global erlang latest 306 | ``` 307 | 308 | _Se houver qualquer problema com a instalação, você pode instalar o erlang à nível de SO mesmo: 309 | https://itsfoss.com/install-erlang-ubuntu/_ 310 | 311 | Use `asdf list` para conferir se o Erlang aparece na listagem. 312 | 313 | **asdf para Elixir** 314 | https://github.com/asdf-vm/asdf-elixir 315 | 316 | Adicione o plugin do Elixir: 317 | 318 | ``` 319 | asdf plugin add elixir https://github.com/asdf-vm/asdf-elixir.git 320 | ``` 321 | 322 | Instale o Elixir: 323 | 324 | ``` 325 | asdf install elixir latest 326 | ``` 327 | 328 | Defina como a versão "global": 329 | 330 | ``` 331 | asdf global elixir latest 332 | ``` 333 | 334 | Use `asdf list` para conferir se o Elixir aparece na listagem. 335 | 336 | **Docker** 337 | 338 | https://docs.docker.com/engine/install/ubuntu/ 339 | 340 | **Psensor (software gráfico para sensores de temperatura do hardware)** 341 | 342 | Instalação do `lm-sensors`: 343 | ``` 344 | sudo apt install lm-sensors 345 | ``` 346 | 347 | Iniciar detecção do hardware (rode o comando abaixo e responda `yes` ou `no` para as questões: 348 | ``` 349 | sudo sensors-detect 350 | ``` 351 | 352 | Verifique se está funcionando: 353 | ``` 354 | sensors 355 | ``` 356 | 357 | O comando acima deve exibir algo como: 358 | ``` 359 | coretemp-isa-0000 360 | Adapter: ISA adapter 361 | Core 0: +46.0C (high = +76.0C, crit = +100.0C) 362 | 363 | coretemp-isa-0001 364 | Adapter: ISA adapter 365 | Core 1: +44.0C (high = +76.0C, crit = +100.0C) 366 | 367 | ... 368 | ``` 369 | 370 | Depois, só instalar o `psensor`: 371 | ``` 372 | sudo apt install psensor 373 | ``` 374 | 375 | **GreenWithEnvy (monitoramento de GPUs Nvidia)** 376 | 377 | Como instalar: https://sempreupdate.com.br/greenwithenvy-saiba-instalar-no-ubuntu-fedora-debian-centos-e-opensuse-faca-overclock-em-gpus-nvidia/ 378 | 379 | Instale o flatpak (se ainda não tiver instalado): 380 | ``` 381 | sudo apt install flatpak 382 | ``` 383 | 384 | Adicione o flathub (só para a v19.10. Já vem instalado na v20.04): 385 | ``` 386 | flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo 387 | ``` 388 | 389 | Reinicie a sessão, e então instale o GreenWithEnvy: 390 | 391 | ``` 392 | flatpak install flathub com.leinardi.gwe 393 | ``` 394 | 395 | **Conky (outros monitoramentos do hardware)** 396 | 397 | Instale o conky e o appmenu-gtk3-module: 398 | 399 | ``` 400 | sudo apt install conky appmenu-gtk3-module 401 | ``` 402 | 403 | Copie o diretório `conky` daqui do repo para dentro do diretório `~/.config`. Para iniciar o conky, execute o arquivo que está em `bin/start-conky`. 404 | 405 | **Telegram Desktop** 406 | 407 | Só baixar o executável, colocar em qualquer lugar que você queira manter, e executar. Automaticamente será gerado um arquivo `telegramdesktop.desktop`, com um atalho no Gnome. 408 | 409 | Também é possível instalar via PPA: 410 | 411 | ``` 412 | sudo add-apt-repository ppa:atareao/telegram 413 | sudo apt update 414 | sudo apt install telegram 415 | ``` 416 | 417 | **Slack Desktop** 418 | 419 | Também só baixar o `.deb` e executá-lo, ou clicando duas vezes, ou com o comando: 420 | 421 | ``` 422 | sudo dpkg -i 423 | ``` 424 | 425 | **Insomnia** 426 | 427 | ``` 428 | # Add to sources 429 | echo "deb https://dl.bintray.com/getinsomnia/Insomnia /" \ 430 | | sudo tee -a /etc/apt/sources.list.d/insomnia.list 431 | 432 | # Add public key used to verify code signature 433 | wget --quiet -O - https://insomnia.rest/keys/debian-public.key.asc \ 434 | | sudo apt-key add - 435 | 436 | # Refresh repository sources and install Insomnia 437 | sudo apt-get update 438 | sudo apt-get install insomnia 439 | ``` 440 | 441 | **Postgres** 442 | https://www.postgresql.org/download/linux/ubuntu/ 443 | 444 | ``` 445 | sudo apt install postgresql postgresql-contrib 446 | ``` 447 | 448 | **Importante:** Se instalar o dbeaver via apt, ao atualizar o dbeaver-ce, baixando direto do site o arquivo `.deb`, ao rodar `sudo apt upgrade`, o apt vai tentar fazer DOWNGRADE da versão mais recente para a vesão do repositório. Para manter a versão mais recente, é preciso rodar o comando abaixo: 449 | 450 | ``` 451 | sudo apt-mark hold dbeaver-ce 452 | ``` 453 | 454 | Então o melhor é instalar o **dbeaver-ce** via snap, que já tem a versão mais recente: 455 | 456 | ``` 457 | sudo snap install dbeaver-ce 458 | ``` 459 | 460 | Criar senha para o usuário postgres: 461 | 462 | ``` 463 | sudo su - postgres 464 | psql 465 | ``` 466 | 467 | Dentro do psql, digitar `\password` e entrar com a senha. 468 | 469 | Sair com `\q`. 470 | 471 | Depois disso, só entrar com: 472 | 473 | ``` 474 | psql -h localhost -U postgres 475 | ``` 476 | 477 | --- 478 | 479 | ## Terminal 480 | 481 | > Se estiver usando o terminal padrão do Gnome, você pode exportar / importar suas configurações seguindo as orientações [desse gist](https://gist.github.com/fdaciuk/9ec4d8afc32063a6f74a21f8308e3807). 482 | 483 | ### Instalação do Neovim 484 | 485 | ``` 486 | sudo apt install neovim 487 | ``` 488 | 489 | Para instalar a versão stable mais recente, use o [PPA](https://launchpad.net/~neovim-ppa/+archive/ubuntu/stable): 490 | 491 | ``` 492 | sudo add-apt-repository ppa:neovim-ppa/stable 493 | sudo apt update 494 | sudo apt install neovim 495 | ``` 496 | 497 | - Instale o `curl` e `wget` se ainda não o tiver feito; 498 | - Crie o diretório de configuração do neovim em `~/.config/nvim`; 499 | - Instale o [vim plug](https://github.com/junegunn/vim-plug) para gerenciamento de plugins, no diretório `~/.config/nvim/autoload`, com o comando: 500 | 501 | ``` 502 | curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs \ 503 | https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 504 | ``` 505 | 506 | - Crie o arquivo de configuração `~/.config/nvim/init.vim`, copiando [desse repo](https://github.com/fdaciuk/dotfiles); 507 | - Inicie o neovim com o comando `nvim`; 508 | - Instale os plugins, com o comando `:PlugInstall` (dentro do vim); 509 | - Feche o vim e abra novamente. 510 | 511 | Ao iniciar o nvim (com o comando `nvim`, ou só `vim`, se já tiver configurado o alias para isso), será pedida a chave da API do wakatime. Acesse [sua conta](https://wakatime.com/vim) e cole a chave ali. 512 | 513 | Se a barra de status do vim parecer "estranha", e não tiver as setinhas do Powerline, mais abaixo tem instruções de como instalar as fontes do Powerline corretamente. Teremos Powerline tanto no vim como no Tmux :) 514 | 515 | ### Instalação ZSH, Neovim e Tmux 516 | 517 | **ZSH e Oh-my-ZSH** 518 | 519 | Instale o ZSH: 520 | ``` 521 | sudo apt install zsh 522 | ``` 523 | 524 | Defina o ZSH como shell principal: 525 | ``` 526 | chsh -s $(which zsh) 527 | ``` 528 | 529 | Reinicie a sessão para entrar com o ZSH por padrão. 530 | 531 | Ao iniciar o terminal, responda a pergunta com a opção 2. 532 | 533 | Instale o oh-my-zsh: 534 | ``` 535 | sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 536 | ``` 537 | 538 | Instale o tema `avit-da2k`: 539 | https://github.com/fdaciuk/avit-da2k 540 | 541 | 542 | Instale o plugin zsh-autosuggestions: 543 | https://github.com/zsh-users/zsh-autosuggestions 544 | 545 | ``` 546 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 547 | ``` 548 | 549 | Instale o plugin zsh-wakatime: 550 | https://github.com/wbingli/zsh-wakatime 551 | 552 | É necessário ter o `pip` instalado. Para instalá-lo para a versão 3 do Python: 553 | 554 | ``` 555 | sudo apt install python3-pip 556 | ``` 557 | 558 | Após instalar, reinicie o terminal para ter acesso ao comando `pip3`. 559 | 560 | Instale a CLI do wakatime: 561 | 562 | ``` 563 | pip3 install wakatime 564 | ``` 565 | 566 | Reinicie o terminal novamente. 567 | 568 | Instale o zsh-wakatime: 569 | 570 | ``` 571 | cd ~/.oh-my-zsh/custom/plugins && git clone https://github.com/wbingli/zsh-wakatime.git 572 | ``` 573 | 574 | Adicione no `~/.zshrc`, na parte de plugins, o autosuggestion e o wakatime: 575 | 576 | ``` 577 | plugins=(git zsh-autosuggestions zsh-wakatime) 578 | ``` 579 | 580 | Se o arquivo foi copiado aqui do repo, já deve estar com essa entrada. 581 | 582 | Instale o autojump: 583 | 584 | ``` 585 | sudo apt install autojump 586 | ``` 587 | 588 | Após a instalação, reinicie o terminal, ou execute: 589 | 590 | ``` 591 | sorce ~/.zshrc 592 | ``` 593 | 594 | ### Instalação do Tmux 595 | https://github.com/tmux/tmux 596 | 597 | ``` 598 | sudo apt install tmux 599 | ``` 600 | 601 | Para instalar o oh-my-tmux: 602 | https://github.com/gpakosz/.tmux 603 | 604 | Importante lembrar de ativar o Powerline para funcionar corretamente: 605 | https://github.com/gpakosz/.tmux#enabling-the-powerline-look 606 | 607 | Aqui nesse link você encontra várias fontes com suporte para Powerline: 608 | https://github.com/powerline/fonts 609 | 610 | Clone o repositório e execute o script `install.sh`. Agora reinicie o terminal e pronto! 611 | 612 | --- 613 | 614 | ## Atalhos usados no terminal (Vim, ZSH e Tmux): 615 | 616 | ### ZSH 617 | 618 | https://github.com/fdaciuk/install-linux/blob/master/zsh-shortcuts-and-cheatsheet.md 619 | 620 | --- 621 | 622 | ### Vim (Neovim) 623 | 624 | https://github.com/fdaciuk/install-linux/blob/master/vim-shortcuts-and-cheatsheet.md 625 | 626 | --- 627 | 628 | ### Tmux 629 | 630 | https://github.com/fdaciuk/install-linux/blob/master/tmux-shortcuts-and-cheatsheet.md 631 | 632 | --- 633 | 634 | ## Solução de problemas 635 | 636 | Ao tentar gravar no OBS com uma placa Nvidia, as vezes fica passando uma imagem na tela da janela que está atrás. [Nesse link](https://obsproject.com/forum/threads/screen-tearing-obs-preview.25977/) contém a descrição do problema. 637 | 638 | Para resolver, só entrar nas configs da Nvidia (Nvidia X Server Settings), selecionar "OpenGL Settings" e desligar a opção "Allow Flipping". 639 | 640 | ### Problema com atualização de driver da Nvidia 641 | 642 | Faça logout, e pressione `Ctrl + Alt + 3`. Isso vai abrir um _tty_. 643 | 644 | Então, tente rodar o comando: 645 | 646 | ``` 647 | sudo dpkg --configure -a 648 | ``` 649 | 650 | Se o erro persistir, tente: 651 | 652 | ``` 653 | sudo apt --fix-broken install 654 | ``` 655 | 656 | Se estiver dando um erro do dpkg, e logo depois um erro mostrando várias versões da nvidia, use os comandos: 657 | 658 | ``` 659 | sudo apt autoremove 660 | sudo apt install -f 661 | ``` 662 | 663 | Se após esses comandos o dpkg conseguir finalizar corretamente a configuração, basta reiniciar: 664 | 665 | ``` 666 | sudo reboot 667 | ``` 668 | 669 | Não resolvendo, tem que partir pra força bruta. execute os comandos: 670 | 671 | ``` 672 | sudo apt purge \~nnvidia 673 | sudo apt clean 674 | audo apt update -m 675 | sudo dpkg --configure -a 676 | sudo apt install -f 677 | sudo apt full-upgrade 678 | 679 | # Só execute o comando abaixo se o comando anterior não retornar nenhum erro 680 | sudo apt autoremove --purge 681 | ``` 682 | 683 | Feito isso, reinicie o PC. 684 | Se logar automaticamente, deslogue novamente, entre no _tty_ e digite: 685 | 686 | ``` 687 | sudo apt --fix-broken install 688 | sudo apt install g++-9-multilib gcc-9-multilib pop-desktop system76-driver-nvidia system76-cuda-latest 689 | ``` 690 | 691 | Se a instalação do `system76-driver-nvidia` falhar, tentar rodar: 692 | 693 | ``` 694 | sudo apt install -f 695 | sudo apt --fix-broken install 696 | ``` 697 | 698 | Depois disso, só tentar instalar novamente. 699 | 700 | Após isso, tudo deverá estar resolvido. Se não estiver, tente todos os passos novamente. 701 | 702 | Então instale as atualizações: 703 | 704 | ``` 705 | sudo apt update 706 | sudo apt upgrade -y 707 | flatpak update -y 708 | ``` 709 | 710 | ## Atualizar todos pacotes, menos drivers da Nvidia 711 | 712 | ``` 713 | apt list --upgradable | awk -F' ' '{print $1}' | grep -v nvidia | awk -F/ '{print $1}' | tr '\n' ' ' 714 | ``` 715 | 716 | Explicando o comando: 717 | 718 | `apt list --upgradable` vai trazer uma lista de todos os pacotes que podem ser atualizados. Normalmente é executado após um `sudo apt update`, e o retorno é uma lista assim: 719 | 720 | ``` 721 | firefox/hirsute,hirsute 12.5-1pop0~1637635465~21.04~47710c4 all [upgradable from: 12.2-1pop0~1635369482~21.04~2aeb070] 722 | libreoffice/hirsute,hirsute 11.2-1pop0~1637635465~21.04~47710c4 all [upgradable from: 11.0-1pop0~1635369482~21.04~2aeb070] 723 | libnvidia-cfg1-470/hirsute 470.86-1pop0~1637635465~21.04~47710c4 amd64 [upgradable from: 470.82.00-1pop0~1635369482~21.04~2aeb070] 724 | libnvidia-common-470/hirsute,hirsute 470.86-1pop0~1637635465~21.04~47710c4 all [upgradable from: 470.82.00-1pop0~1635369482~21.04~2aeb070] 725 | ``` 726 | 727 | Esse resultado é passado via pipe operator para o próximo comando: `awk -F' ' '{print $1}'`. 728 | 729 | O `awk` é uma linguagem usada para manipular strings. o `-F' '` define um separador (funciona como um split). Esse separador é um espaço. 730 | No caso do resultado acima, vamos pegar como exemplo a primeira linha: 731 | 732 | ``` 733 | firefox/hirsute,hirsute 12.5-1pop0~1637635465~21.04~47710c4 all [upgradable from: 12.2-1pop0~1635369482~21.04~2aeb070] 734 | ``` 735 | 736 | Isso retornaria uma lista com dois valores (que foram separados pelo espaço): a primeira parte seria o `firefox/hirsute,hirsute` e a segunda parte, o restante da string que vem após o primeiro espaço. 737 | 738 | O `'{print $1}'` exibe a primeira parte da lista. 739 | 740 | Até aqui, o resultado seria: 741 | 742 | ``` 743 | firefox/hirsute,hirsute 744 | libreoffice/hirsute,hirsute 745 | libnvidia-cfg1-470/hirsute 746 | libnvidia-common-470/hirsute,hirsute 747 | ``` 748 | 749 | O próximo comando é o `grep -v nvidia`. O grep serve para fazer uma busca na string, e o `-v` indica que eu quero os resultados que **não contenham** a string passada, ou seja: quero todos os resultados que não contenham a palavra **nvidia**. O resultado vai ser: 750 | 751 | ``` 752 | firefox/hirsute,hirsute 753 | libreoffice/hirsute,hirsute 754 | ``` 755 | 756 | O próximo comando é um `awk` mais uma vez (`awk -F/ '{print $1}'`), mas dessa vez o separador é a barra. Queremos apenas o nome da dependência. Após esse comando, o resultado será: 757 | 758 | ``` 759 | firefox 760 | libreoffice 761 | ``` 762 | 763 | E por fim, só precisamos colocar os nomes das dependências uma ao lado da outra, separados por espaço, ao invés de uma por linha. Para isso, usamos o comando `tr '\n' ' '`. O nome do comando significa _translate_, e ele irá traduzir todas as quebras de linha para espaços. O resultado será: 764 | 765 | ``` 766 | firefox libreoffice 767 | ``` 768 | 769 | Agora que temos as dependências, só precisamos copiar a linha toda, e executar com o comando: 770 | 771 | ``` 772 | sudo apt --only-upgrade install firefox libreoffice 773 | ``` 774 | 775 | Pronto! Todas as dependências serão atualizadas, menos os drivers da Nvidia :D 776 | -------------------------------------------------------------------------------- /qualcomm-atheros-wireless.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | sudo mkdir -p /lib/firmware/ath10k/QCA6174/hw3.0/ 5 | sudo rm /lib/firmware/ath10k/QCA6174/hw3.0/* 2> /dev/null 6 | sudo wget -O /lib/firmware/ath10k/QCA6174/hw3.0/board.bin https://github.com/FireWalkerX/ath10k-firmware/blob/7e56cbb94182a2fdab110cf5bfeded8fd1d44d30/QCA6174/hw3.0/board-2.bin?raw=true 7 | sudo wget -O /lib/firmware/ath10k/QCA6174/hw3.0/firmware-4.bin https://github.com/FireWalkerX/ath10k-firmware/blob/7e56cbb94182a2fdab110cf5bfeded8fd1d44d30/QCA6174/hw3.0/firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1?raw=true 8 | sudo chmod +x-w /lib/firmware/ath10k/QCA6174/hw3.0/* 9 | echo "Restart your computer!" 10 | -------------------------------------------------------------------------------- /tmux-shortcuts-and-cheatsheet.md: -------------------------------------------------------------------------------- 1 | # Tmux 2 | 3 | - [Meus dotfiles](https://github.com/fdaciuk/dotfiles) 4 | - [Minhas configurações atuais](https://github.com/fdaciuk/install-linux/blob/master/pop-os.md) 5 | 6 | --- 7 | 8 | - `prefix` definido como `Ctrl + b` 9 | 10 | **Iniciar sessão zero** 11 | 12 | ``` 13 | tmux 14 | ``` 15 | 16 | **Iniciar sessão com nome** 17 | 18 | ``` 19 | tmux new -s 20 | ``` 21 | 22 | **Sair do Tmux, mantendo as sessões** 23 | 24 | ``` 25 | d 26 | ``` 27 | 28 | **Exibir todas as sessões criadas** 29 | 30 | ``` 31 | tmux ls 32 | ``` 33 | 34 | **Acessar a sessão mais recente** 35 | 36 | ``` 37 | tmux a 38 | 39 | ou 40 | 41 | tmux attach 42 | ``` 43 | 44 | **Acessar sessão pelo nome ou número** 45 | 46 | ``` 47 | tmux a -t 48 | ``` 49 | 50 | **Criar painel (split) vertical** 51 | 52 | ``` 53 | \ 54 | 55 | ou 56 | 57 | % 58 | ``` 59 | 60 | **Criar painel (split) horizontal** 61 | 62 | ``` 63 | - 64 | 65 | ou 66 | 67 | " 68 | ``` 69 | 70 | **Navegar pelos painéis (usando as teclas de navegação do Vim: h,j,k,l)** 71 | 72 | ``` 73 | Alt + 74 | 75 | ou 76 | 77 | 78 | ``` 79 | 80 | **Alterar tamanho dos painéis** 81 | 82 | ``` 83 | H 84 | J 85 | K 86 | L 87 | ``` 88 | 89 | **Criar janelas (abas)** 90 | 91 | ``` 92 | c 93 | ``` 94 | 95 | **Criar nova sessão** 96 | 97 | ``` 98 | Ctrl + c 99 | ``` 100 | 101 | **Navegar entre janelas** 102 | 103 | ``` 104 | Ctrl + Alt + 105 | 106 | ou 107 | 108 | 109 | ``` 110 | 111 | **Rotacionar / mover painéis** 112 | 113 | ``` 114 | { 115 | ``` 116 | 117 | **Alterar posição de painéis (definir layout vertical ou horizontal)** 118 | 119 | ``` 120 | Alt + <1-5> 121 | ``` 122 | 123 | _O que faz cada número?_ 124 | 125 | | Número | Layout | Descrição | 126 | | :----: | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | 127 | | `1` | `even-horizontal` | Painéis em colunas | 128 | | `2` | `even-vertical` | Painéis em linhas | 129 | | `3` | `main-horizontal` | Painéis em linhas, com o primeiro painel ocupando a linha toda, e os outros painéis na linha de baixo organizados em colunas (um ao lado do outro) | 130 | | `4` | `main-vertical` | Painéis em colunas, com o primeiro painel ocupando toda a primeira coluna, e os outros painéis na segunda coluna, organizados em linha (um abaixo do outro) | 131 | | `5` | `tiled` | Divide os painéis para tentar deixá-los com a mesma largura / altura | 132 | 133 | **Rolagem (scroll)** 134 | 135 | ``` 136 | [ 137 | ``` 138 | 139 | ou 140 | 141 | ``` 142 | 143 | ``` 144 | 145 | Após executar esse comando, é possível navegar no histórico com os comandos do vim, inclusive selecionar visualmente (V) e copiar (Y). 146 | 147 | **Zoom in/out no painel atual** 148 | 149 | ``` 150 | z 151 | ``` 152 | 153 | **Navegar entre sessões, com um preview de cada sessão, janela e painel** 154 | 155 | ``` 156 | s 157 | ``` 158 | 159 | **Renomear janela** 160 | 161 | ``` 162 | , 163 | 164 | ou 165 | 166 | :rename-window 167 | ``` 168 | 169 | **Renomear sessão** 170 | 171 | ``` 172 | $ 173 | 174 | ou 175 | 176 | :rename-session 177 | ``` 178 | 179 | **Listar todas as keybindings definidas no tmux** 180 | 181 | ``` 182 | tmux list-keys 183 | ``` 184 | 185 | **Digitar o mesmo comando em vários painéis** 186 | 187 | Primeiro abra várias painéis na mesma janela usando `\` ou `-` para abrir painéis horizontais e/ou verticais. 188 | 189 | Quando todos os painéis estiverem prontos para receber os mesmos comandos, entre no modo de comandos do Tmux, com: 190 | 191 | ``` 192 | : 193 | ``` 194 | 195 | E então digite o comando: 196 | 197 | ``` 198 | setw synchronize-panes on 199 | ``` 200 | 201 | E dê enter. 202 | 203 | Agora ao digitar, você estará digitando em todos os painéis ao mesmo tempo! 204 | 205 | Para parar a sincronização, entre novamente no modo de comandos do Tmux: 206 | 207 | ``` 208 | : 209 | ``` 210 | 211 | E então digite: 212 | 213 | ``` 214 | setw synchronize-panes off 215 | ``` 216 | 217 | E dê enter. 218 | -------------------------------------------------------------------------------- /vim-shortcuts-and-cheatsheet.md: -------------------------------------------------------------------------------- 1 | # Vim atalhos e comandos úteis 2 | 3 | - [Meus dotfiles](https://github.com/fdaciuk/dotfiles) 4 | - [Minhas configurações atuais](https://github.com/fdaciuk/install-linux/blob/master/pop-os.md) 5 | 6 | --- 7 | 8 | - Alias `vim` e `vi` configurados para abrir o `nvim` (NeoVim); 9 | - Tecla `leader` é a vírgula; 10 | 11 | **Carregar arquivo de configuração do Neovim (Edit Vim)** 12 | 13 | ``` 14 | ev 15 | ``` 16 | 17 | **Dar reload no arquivo de configuração (Source Vim)** 18 | 19 | ``` 20 | sv 21 | ``` 22 | 23 | **Fern** 24 | 25 | - Abrir o vim já com o Fern em drawer mode: `vim "+Fern . -drawer"` 26 | - `ctrl + w`: navega entre os splits 27 | - `alt + f`: toggle do drawer do Fern 28 | - `alt + a`: foco no drawer aberto 29 | 30 | **Abrir terminal dentro do Vim** 31 | 32 | - `t` - abre o terminal em split mode, abaixo do buffer direito 33 | - `vt` - abre o terminal em split mode vertical, à direita do buffer direito 34 | - `ctrl + \ n`: muda do modo Terminal para o modo Normal 35 | 36 | **Navegação** 37 | 38 | - `Ctrl + u`: Navega com rolagem para cima 39 | - `Ctrl + d`: Navega com rolagem para baixo 40 | - `Ctrl + y`: Navega para cima sem mover o cursor 41 | - `Ctrl + e`: Navega para baixo sem mover o cursor 42 | 43 | **Comentar linhas** 44 | 45 | ``` 46 | / 47 | ``` 48 | 49 | **Comentar várias linhas sem usar o modo visual** 50 | 51 | - `10/`: comenta 10 linhas conta à partir da linha atual 52 | 53 | OBS.: para comentar várias linhas de uma vez, só selecionar no modo visual: 54 | - Pressione `v`; 55 | - Selecione as linhas, com `j` para selecionar abaixo ou `k` para selecionar acima; 56 | - Pressione as teclas para comentar (`/`). 57 | 58 | **Remover highlight das buscas** 59 | 60 | ``` 61 | 62 | ``` 63 | 64 | **Mudar case das palavras (UPPERCASE e lowercase)** 65 | 66 | ``` 67 | lowercase: gu 68 | uppercase: gU 69 | toggle case: g~ 70 | ``` 71 | 72 | **Incrementar e decrementar números** 73 | 74 | Coloque o cursor em cima do número e pressione: 75 | 76 | - `Ctrl + a` = para incrementar 77 | - `Ctrl + x` = para decrementar 78 | 79 | **Navegar para onde estava (forward and backward)** 80 | 81 | - `g;` = navega para última posição do cursor 82 | - `g,` = navega para frente 83 | 84 | **Navegar para o início / fim de um bloco (if, while, function, etc)** 85 | 86 | - `[{` = navega para o início do bloco (inicia com "abre chaves" `{`) 87 | - `]}` = navega para o fim do bloco (termina com "fecha chaves" `}`) 88 | - `[(` = navega para o início do bloco (que inicia com "abre parênteses" `(`) 89 | - `])` = navega para o fim do bloco (termina com "fecha parênteses" `)`) 90 | 91 | **Navegar para uma linha e coluna específicas** 92 | 93 | ``` 94 | :call cursor($LINE,$COLUMN) 95 | ``` 96 | 97 | Exemplo: Quero ir para a linha 10, coluna 12: 98 | 99 | ``` 100 | :call cursor(10,12) 101 | ``` 102 | 103 | **Navegação entre imports (CoC)** 104 | 105 | Com o cursor posicionado em cima da variável ou do caminho do `import`, use: 106 | 107 | - `gd` = coc-definition 108 | - `gy` = coc-type-definition 109 | - `gr` = coc-references 110 | 111 | Fonte: [https://thoughtbot.com/blog/modern-typescript-and-react-development-in-vim](https://thoughtbot.com/blog/modern-typescript-and-react-development-in-vim) 112 | 113 | **Buscar arquivos com fzf - Fuzzy Finder (estilo Sublime Text)** 114 | 115 | ``` 116 | Ctrl + p 117 | ``` 118 | 119 | **Buscar arquivos com fzf, baseado na árvore do git** 120 | 121 | ``` 122 | Shift + Meta(Alt) + P 123 | ``` 124 | 125 | **Buscar buffers abertos com o Fuzzy Finder** 126 | 127 | ``` 128 | Ctrl + o 129 | ``` 130 | 131 | **Navegar entre buffers** 132 | 133 | - `go` = Lista todos os buffers e aceita um novo buffer como argumento 134 | - `gh` = Lista todos os buffers e aceita um novo buffer como argumento, que será aberto em um split horizontal 135 | - `gv` = Lista todos os buffers e aceita um novo buffer como argumento, que será aberto em um split vertical 136 | - `Ctrl + 6` ou `gp` = Alterna entre os dois últimos buffers 137 | 138 | **Navegar entre buffers em split mode** 139 | 140 | - `Alt + w` = Navega para o buffer acima 141 | - `Alt + a` = Navega para o buffer à esquerda 142 | - `Alt + s` = Navega para o buffer abaixo 143 | - `Alt + d` = Navega para o buffer à direita 144 | 145 | **Rodar um comando em todos os buffers** 146 | 147 | ``` 148 | :bufdo 149 | ``` 150 | 151 | Exemplo: 152 | 153 | - `:bd`: fecha o buffer atual 154 | - `:bufdo bd`: fecha todos os buffers 155 | - `:e!`: atualiza o buffer atual, ignorando as alterações não salvas 156 | - `:bufdo e!`: atualiza todos os buffers, ignorando as alterações não salvas 157 | 158 | **Símbolos usados na lista de buffers** 159 | 160 | - `%`: buffer na janela atual 161 | - `#`: buffer que pode ser alternado com o atual, usando `Ctrl + 6` 162 | - `a`: buffer ativo, carregado e visível 163 | - `h`: buffer oculto, carregado, mas não visível 164 | - `-`: um buffer que não pode ser modificado _(modifiable off)_ 165 | - `=`: um buffer somente leitura 166 | - `+`: um buffer com alterações que precisam ser salvas 167 | - `x`: um buffer com erros de leitura 168 | - ` `: se não houver um indicador no buffer, significa que ele ainda não foi carregado 169 | 170 | **Zoom in ([z]oom [in])** 171 | ``` 172 | zin 173 | ``` 174 | 175 | **Zoom in vertical (para usar com buffers em split mode)** 176 | Dá zoom no buffer fazendo ele ocupar toda a área vertical 177 | 178 | ``` 179 | zv 180 | ``` 181 | 182 | **Zoom in horizontal (para usar com buffers em split mode)** 183 | Dá zoom no buffer fazendo ele ocupar toda a área horizontal 184 | 185 | ``` 186 | zh 187 | ``` 188 | 189 | **Zoom out ([z]oom [n]ot [i]n)** 190 | > Não usei `zo` aqui pois conflita com o atalho de folding. 191 | ``` 192 | zni 193 | ``` 194 | 195 | **Indentação de várias linhas à partir da atual (onde o cursor está)** 196 | 197 | - `44>>`: indenta 44 linhas 198 | - `10<<`: volta a indentação de 10 linhas 199 | - `>at`: Indenta tags HTML (ou JSX) (`a`: _around_, `t`: _tag_) 200 | - `>i{`: Indenta dentro (`i` de _inside_) das chaves. O cursor deve estar dentro das chaves. 201 | 202 | **Exemplos de indentação:** 203 | 204 | Função de exemplo em JavaScript: 205 | 206 | ```js 207 | function sum () { 208 | const a = 1 209 | const b = 2 210 | return a + b 211 | } 212 | ``` 213 | 214 | Colocando o cursor em qualquer linha da função, e pressionando `>i{`, todo o conteúdo dentro das chaves será indentado. 215 | Esse mesmo atalho pode ser usado com qualquer par de chaves, colchetes ou parênteses. 216 | 217 | Para indentar **inclusive** a função, só usar o `a` (_around_) ao invés do `i` (_inside_). 218 | 219 | **Observação importante:** O `i` e `at` funcionam também para outros comandos que esperam movimentos: 220 | - `c`, que aguarda um movimento para deletar e abrir para edição; 221 | - `d`, que aguarda um movimento para deletar; 222 | - `v`, que aguarda um movimento para selecionar no modo visual; 223 | - etc. 224 | 225 | **Modificar valores (find & replace)** 226 | 227 | 1. Faça a busca do valor com `/valor`; 228 | 2. Pressione `cgn` no primeiro local onde você quer substituir; 229 | 3. Digite o novo valor; 230 | 4. Navegue para o próximo valor com `n` e use o `.` para substituir; 231 | 5. Repita o passo `4` até substituir todas as entradas que você quiser substituir. 232 | 233 | Obs.: O comando `cgn` significa: 234 | - `c`: Aguarda um movimento após esse comando. O movimento que vier após o `c` será deletado, e então entrará no modo INSERT. 235 | - `gn`: Seleciona o _pattern_ mais recente usado na busca, usando o modo VISUAL. Vai servir como movimento para o atalho anterior `c`. 236 | - Em resumo: a palavra buscada vai ser deletada, e o vim vai entrar no modo de inserção para digitar a sibstituição. 237 | - O `n` é para navegar para o próximo match do valor buscado; 238 | - O `.` repete o último comando (no caso, o `cgn` e a nova palavra). 239 | 240 | **Editar HTML / JSX** 241 | 242 | - `cit`: _change inside tag_: deleta e abre para edição o conteúdo de uma tag 243 | - `cstt`: atualiza o nome da tag. Esse comando tem algumas variações: 244 | - Edite a tag para ``, para substituir o nome da tag por `div`, removendo os atributos; 246 | - Edite a tag para `
` para substituir o nome da tag por `div`, e adicionar apenas o atributo `id`, removendo todos os outros. 248 | 249 | Outros atalhos podem ser encontrados na documentação do [vim-surround](https://github.com/tpope/vim-surround). 250 | 251 | #### Folding 252 | 253 | Sabe aqueles editores que tem um botão de "-" ao lado da linha onde começa uma função ou tag HTML (ou JSX)? E quando você clica, todo o código dentro dessa função é "compactado", ou "fechado", mostrando somente as linhas antes e depois desse código? Isso se chama **folding!**. E dá pra fazer isso no Vim :D 254 | 255 | **Folding em tags HTML ou JSX** 256 | 257 | 1. Posicione o cursor a linha que inicia a tag onde você quer fazer o fold; 258 | 2. Execute o comando `zaf`. Isso vai criar um "fold" para aquela tag, e vai trazer fechado. 259 | 3. Para abrir, pode usar `za` (toggle fold) ou `zo` (open fold). 260 | 4. Para cada novo fold, é preciso usar o `zaf`, senão, ao usar os comandos para abrir / fechar, esses serão aplicados 261 | sempre no último fold criado. Após ter criado um "fold", sempre que quiser abrir / fechar algum em específico, é só 262 | posicionar o cursor na linha onde inicia,e pressionar `zc` (close fold) ou `za`. 263 | 264 | **Folding em funções ou tags JSX** 265 | 266 | 1. Selecione as linhas da função que você quer fazer o fold, e crie o fold com `zf` (em alguns casos, será necessário usar o `zfat` ou `zfit`). Depois é só usar os comandos acima para abrir / fechar o fold conforme a necessidade :) 267 | 268 | **Dica:** Para selecionar todas as linhas de uma função automaticamente (ou de uma tag no JSX), coloque o cursor em cima do nome da função (ou da tag de abertura) habilite o modo visual (`v`) e então pressione `%`. O `%` navega para o bracket de fechamento da função, ou para a tag de fechamento no JSX. Após fazer isso, só usar o `zf` para criar o folding =) 269 | 270 | **Fechar todos os foldings** 271 | 272 | Para fechar todos os foldings criados, só usar `zM`. 273 | 274 | Referências: 275 | - https://www.linux.com/training-tutorials/vim-tips-folding-fun/ 276 | 277 | #### Copiar / colar (registro) 278 | 279 | Quando copiamos algo com `y` no vim, o conteúdo copiado vai para um registro. Se você selecionar um texto, e colar o que foi copiado, com `p`, a próxima vez que você tentar colar, o valor que vai ser colado foi o último valor que foi substituído, não o valor copiado inicialmente com `y`. 280 | 281 | Para colar sempre o valor que foi copiado, ao invés de usar apenas `p`, é preciso usar entradas no registro, colando com `"0p`. Isso vai colar o último valor do registro que foi copiado. 282 | 283 | É possível copiar também para um registro específico: ao invés de usar `y` para copiar, use `"ay`. Dessa forma, o valor será copiado (`y`) para o registro `a`. 284 | Para colar à partir desse registro, só usar `"ap`. O `a` pode ser qualquer caractere. 285 | 286 | Isso é legal porque é possível várias coisas de uma só vez, e depois só ir colando conforme a necessidade, ao invés de copiar uma coisa, colar ela, e então copiar outra coisa para colar :) 287 | 288 | Referências: 289 | - https://vim.fandom.com/wiki/Copy,_cut_and_paste 290 | 291 | --- 292 | 293 | **Formatar JSON (beutify / uglify)** 294 | 295 | Instale a dependência `jq` no seu sistema operacional: 296 | https://stedolan.github.io/jq/ 297 | 298 | Após isso, podemos usar os comandos básicos no Neovim: 299 | 300 | - `%!jq .` - Beautify: pegar um JSON sem formatação e formata de forma que facilite a visualização 301 | - `%!jq -c .` - Uglify: pega um JSON formatado e coloca tudo em uma linha só 302 | 303 | --- 304 | -------------------------------------------------------------------------------- /zsh-shortcuts-and-cheatsheet.md: -------------------------------------------------------------------------------- 1 | # ZSH 2 | 3 | - [Meus dotfiles](https://github.com/fdaciuk/dotfiles) 4 | - [Minhas configurações atuais](https://github.com/fdaciuk/install-linux/blob/master/pop-os.md) 5 | 6 | --- 7 | 8 | - Plugin `zsh-autosuggestions` instalado. Para completar um comando, pressionar seta para direita ou a tecla `End`. 9 | 10 | **Copiar arquivos (usar no lugar do cp -R)** 11 | 12 | Esse comando usa `rsync` por baixo dos panos para copiar arquivos (`rsync -a --stats --progress`, pra ser mais exato). 13 | A diferença desse comando para o `cp` é que o `copy` vai exibir o progresso do que está acontecendo. 14 | 15 | ``` 16 | copy 17 | ``` 18 | 19 | Para fazer cópia de um arquivo local para um servidor SSH, só usar: 20 | 21 | ``` 22 | copy @: 23 | ``` 24 | 25 | Exemplo: 26 | 27 | ``` 28 | copy ./config-files/* deploy@meuserver.com:/home/my-project/config-files/ 29 | ``` 30 | 31 | **Copiar conteúdo de arquivos para o clipboard** 32 | 33 | ``` 34 | copy-to-cliboard 35 | ``` 36 | 37 | **Sudo** 38 | 39 | Podemos usar o `please` no lugar do `sudo`: 40 | 41 | ``` 42 | please apt update 43 | ``` 44 | 45 | **Atalhos do Git** 46 | 47 | Fazer `push` para a branch com o mesmo nome: 48 | 49 | ``` 50 | push 51 | ``` 52 | 53 | É o mesmo que fazer `git push origin main`, estando na branch `main`, ou `git push origin dev`, estando na branch `dev`. 54 | 55 | Dá pra fazer `pull` também, seguindo a mesma ideia: 56 | 57 | ``` 58 | pull 59 | ``` 60 | 61 | **Clonar repositórios de alunos para testes** 62 | 63 | Como alguns alunos podem ter repositórios com o mesmo nome, eu clono sempre em um diretório que conterá `--`. 64 | Para facilitar o processo, meu ZSH está configurado com o comando: 65 | 66 | ``` 67 | clone 68 | ``` 69 | 70 | Esse comando irá clonar o projeto em um diretório com o padrão informado acima, e já irá acessar o diretório (`cd`). 71 | 72 | **Deixar saída de áudio mono** 73 | 74 | Alguns áudios / vídeos só tem áudio em um canal. Então eu deixo esse comando fácil para deixar a saída do fone mono: 75 | 76 | Para habilitar: 77 | 78 | ``` 79 | mono on 80 | ``` 81 | 82 | Para desabilitar: 83 | 84 | ``` 85 | mono off 86 | ``` 87 | 88 | **Converter vídeos .mp4 para funcionar no DaVnici Resolve** 89 | 90 | Por algum motivo o DaVinci Resolve não suporta vídeos em `.mp4` e `.mkv`, nem áudios em `.mp3`. (pelo menos no Linux). 91 | Por isso é preciso converter esses arquivos antes de usar no Resolve: 92 | 93 | ``` 94 | toresolve 95 | ``` 96 | 97 | Para converter todos os arquivos de um diretório: 98 | 99 | ``` 100 | toresolve * 101 | ``` 102 | 103 | Para converter um único arquivo: 104 | 105 | ``` 106 | toresolve file.mp4 107 | toresolve file.mkv 108 | toresolve file.mp3 109 | ``` 110 | 111 | Serão criados diretórios `mov` e `wav` com os respectivos arquivos convertidos. 112 | 113 | Se algum formato de arquivo não suportado estiver no diretório, ele será ignorado e uma mensagem de erro será exibida. 114 | 115 | **Fix para vídeos corrompidos** 116 | 117 | Alguns vídeos podem ficar corrompidos com a conversão para o Resolve, e acabam não abrindo. Alguns casos são solucionáveis com o comando: 118 | 119 | ``` 120 | fixvideo 121 | ``` 122 | 123 | **Deletar branches já utilizadas** 124 | 125 | Esse comando não deleta somente as branches `main`, `dev` e `staging`. Qualquer outra será deletada: 126 | 127 | ``` 128 | delete-branches 129 | ``` 130 | 131 | Para alterar as branches que ele não deve deletar, tem que alterar a função que gera o comando. 132 | 133 | **Criar arquivos e diretórios com um único comando** 134 | 135 | No Linux, antes de criar um arquivo via terminal com `touch`, nós precisamos criar o diretório onde esse arquivo será criado. 136 | Para criar diretórios "internos" de um diretório que ainda não existe, usamos o `mkdir -p caminho/do/diretorio/a/ser/criado`. 137 | Esse comando vai criar os diretórios `caminho`, `do`, `diretorio`, `a`, `ser`, `criado`, um dentro do outro, nessa ordem. 138 | 139 | E só então podemos criar arquivos dentro do último diretório com o comando `touch`, usando algo como: 140 | 141 | ``` 142 | touch caminho/do/diretorio/a/ser/criado/{arquivo1,arquivo2}.txt 143 | ``` 144 | 145 | Esse comando criará os arquivos `arquivo1.txt` e `arquivo2.txt` dentro do diretório anteriomente criado. 146 | 147 | Para evitar ter que usar dois comandos, temos uma função disponível no nosso `zshrc` chamada `mktouch`. 148 | 149 | Com essa função, você pode criar quantos arquivos e diretórios quiser, com apenas um comando: 150 | 151 | ``` 152 | mktouch src/pages/{home,about}/index.ts src/styles/{app,index}.css 153 | ``` 154 | 155 | O comando acima irá criar os diretórios: 156 | 157 | ``` 158 | src/pages/home 159 | src/pages/about 160 | src/styles 161 | ``` 162 | 163 | Ainda que os diretórios mais externos ainda não existam, todos serão criados. 164 | 165 | E dentro deles, os respectivos arquivos: 166 | 167 | ``` 168 | src/pages/home/index.ts 169 | src/pages/about/index.ts 170 | src/styles/app.css 171 | src/styles/index.css 172 | ``` 173 | --------------------------------------------------------------------------------