Сценарий. Полная настройка Windows, WSL и инструментов для разработчика.md 21 KB

Вступление

Я купил себе windows-ноутбук, пользуюсь им неделю, настроил его для работы... И мне хорошо!

Вообще после 15 лет работы на маках, после отличного эйра на М1 купить виндоус-ноут это была настоооолько бредовая идея, что... она мне показалась даже хорошей! И я купил себе windows-ноутбук. Ну а чо нет.

Это Huawei Matebook X Pro 2024 года на Intel(R) Core(TM) Ultra 7 155H c 32 гигами оперативки и терабайтным SSD.

О самом ноутбуке я сделаю отдельное видео, о том, почему выбрал именно его, о его производительности, об ощущениях работы с ним и так далее. Он классный, хотя и не без проблем. А здесь поговорим именно о настройке Windows и WSL для разработчика. Покажу весь процесс настройки - весь софт, все инструменты, все настройки.

Я сейчас веду свой авторский курс идёт курс хардкорная веб-разработка и там много людей с Windows, поэтому эта тема будет актуальна многим.

Сейчас при наличии ChatGPT и других LLM'ок процесс настройки и поиска аналогов каких-то Mac-решений или Linux-решений для Windows значительно упростился, но всё же мой переезд занял не один день, к тому же я пересобрал свой конфиг nvim, tmux, решил ряд неудобных для себя аспектов в Windows и всем этим сейчас поделюсь. Мне нравится результат и я уверен, что кому-то это будет полезно.

Видео как всегда будет побито по главам, есть таймкоды, а также статья со списком команд есть в описании к видео. Покажу мой инструментарий для разработки на Python, TypeScript, Go, Rust.

Здесь стоит сказать, что сейчас на Windows есть WSL, Windows Subsystem for Linux, и львиная доля настройки будет происходить там. По сути сейчас Mac OS это удобный Unix в консоли и нормальные стабильные приятные окошки в графическом интерфейсе. С приходом WSL Windows тоже стал таким -- в консоли полноценный Linux, а в графическом интерфейсе все необходимые графические программы.

Все консольные Unix-инструменты у меня практически без изменений работают и в винде с WSL, и в Mac OS, и в десктопном или серверном Linux. То есть я всем этим могу пользоваться где угодно как угодно. Браузер есть везде, монтажка Davinci Resolve есть везде. Не везде есть родной Microsoft Office, но оно мне не сильно и нужно -- открыть для прочтения документы можно много чем, и делать свои документы тоже можно много чем, экспортирую их потом в PDF и передаю в PDF, чтобы никакая вёрстка документа не поехала. Так что сейчас в целом на любой операционке мои конкретные задачи решаются нормально.

Не везде есть цифровая подпись для электронного документооборота компании, если говорить про Linux, и не везде есть Photoshop, если говорить тоже про Linux. Но с этим можно что-то придумать, если мне понадобится полноценно переехать на Linux. А сейчас поговорим о том, как я настроил Windows.

[!info] Ссылка на команды есть в описании видео!

Обновление Windows, драйверов

В первую очередь обновляем на новом ноутбуке саму систему, драйвера. На ноутбуке Huawei есть приложение Huawei PC Manager, которое умеет поддерживать в актуальном состоянии все драйвера. Я тут уже переустанавливал Windows, установил чистую винду, чтобы показать вам с нуля её настройку. И вот как раз все драйвера докачал и привёл в актуальное состояние Huawei PC Manager, это очень удобно. На других ноутах приходилось искать и выкачивать с сайта драйвера самостоятельно.

Выставление масштаба

Выставляем масштаб интерфейса. По умолчанию может быть слишком большой или маленький. Я ставлю 225% сейчас.

Отключение всех системных звуков

Отключаю все системные звуки в системе, чтобы не мешали, раздражают.

Настройка панели

Скрываю микро-приложения слева.

Размещение софта на панели. Первое место Alacritty, всегда в максимально быстром доступе линукс-консоль, которую я не закрываю. Можете поставить сюда Windows Terminal, если хотите, или другой терминал - Kitty, WezTerm и тд.

Доступ к терминалу всегда по Win+1. Очень удобно. К Obsidian -- по Win+2. Chrome -- Win+3. И так далее для всего нужного софта. У меня пока только эти три программы. TG запускаю через Win и поиск.

Поиск на маке через spotlight был по CTRL+Пробел у меня настроен, тут просто по кнопке Win. И запуск софта, и поиск файлов (покажи поиск по слову Сценарий).

Скрыть иконку с рабочего стола

Надо в реестре в разделе HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel добавить запись с именем {2cc5ca98-6485-489a-920e-b3e88a6ccce3} и значением 1.

WSL

Ставим WSL (команды выполняем в Powershell или командной строке Windows):

wsl --install -d Debian
wsl --set-default-version 2

Настройка Git в WSL

sudo apt update
sudo apt install -y git

# Set up git in WSL
git config --global alias.st status
git config --global user.name "Alexey Goloburdin"
git config --global user.email "sterx@rl6.ru"
# чтобы кириллические имена файлов нормально выводились
git config --global core.quotepath

dot-files

git clone https://github.com/alexey-goloburdin/dotfiles

# Copy Alacritty config into Windows
cp $HOME/.config/alacritty/alacritty.toml \
    /mnt/c/Users/sterx/AppData/Roaming/alacritty

# We use Alacritty's default Linux config directory as our storage location here.
mkdir -p ~/.config/alacritty/themes
git clone https://github.com/alacritty/alacritty-theme ~/.config/alacritty/themes
# Покажи прикольные темы отобранные мной сверху в конфиге Alacritty

Windows-софт

  • Audacity
  • SumatraPDF. Интерфейс не перегружен (его почти нет) и запускается быстро. Даже полосу прокрутки можно скрыть. Возможна навигация через jk
  • Obsidian
  • Davinci Resolve
  • VLC as player

Начальные настройки

В проводнике от бокового меню открепить Музыка, Видео. Оставить только Рабочий Стол, Загрузки, Документы, Изображения. Можcd ..но добавить сюда директории, с которыми часто будете работать, я со временем сделаю это.

Git для Windows для Obsidian

Install Git for Windows for Obsidian. Set up it in Git bash (git config ...).

Синхронизация заметок Obsidian через git

Git в Windows настроен. Плагин git в Obsidian и хоткей на CTRL+P для push.

Основные Linux-инструменты

sudo apt install -y \
    zsh git gpg pass zip unzip \
    curl wget tmux gcc bsdmainutils htop fzf bat ripgrep build-essential

sudo ln -s $(which batcat) /usr/local/bin/bat

# GPG and SSH keys (change your username)
mkdir /mnt/c/Users/sterx/AppData/Roaming/alacritty/

Config Linux:

# Install oh-my-zsh
# https://ohmyz.sh/

echo "source \$HOME/.config/zsh/env.zsh" >> ~/.zshrc
echo "source \$HOME/.config/zsh/aliases.zsh" >> ~/.zshrc

# Download nvim into ~/.soft
# https://github.com/neovim/neovim/releases
wget https://github.com/neovim/neovim/releases/download/v0.10.2/nvim-linux64.tar.gz
tar -xzvf nvim-linux64.tar.gz
mv nvim-linux64 .soft/nvim
sudo ln -s $HOME/.soft/nvim/bin/nvim /usr/local/bin/nvim
nvim

echo "alias n=nvim" >> ~/.zshrc && . ~/.zshrc
echo "export EDITOR=vim" >> ~/.zshrc && . ~/.zshrc

Установка Python 3.13, Golang, TypeScript, Rust

# Build Python from sources
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

wget https://www.python.org/ftp/python/3.13.1/Python-3.13.1.tgz
tar -xzfv Python-3.13.1.tgz
cd Python-3.13.1
./configure --enable-optimizations --prefix=$HOME/.python3.13
make -j22
sudo make altinstall

# Install nvm, node, TS
# https://nodejs.org/en/download/package-manager
# choose linux and nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
nvm install 23
node -v
npm -v

sudo chmod u+s /bin/ping

npm i -g npm
npm install -g typescript

# Install Go
# https://go.dev/dl/
mv /mnt/c/Users/sterx/Downloads/go1.23.4.linux-amd64.tar.gz .
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
echo "export PATH=\$PATH:/usr/local/go/bin:\$HOME/go/bin" >> ~/.zshrc && source ~/.zshrc

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Настройка nvim для работы с этими языками

# INSTALL LSP SERVERS AND OTHER TOOLS

# Download rust-analyzer into ~/.soft
# https://github.com/rust-lang/rust-analyzer/releases
cd ~/.soft
gunzip rust-analyzer-x86_64-unknown-linux-gnu.gz
sudo ln -s $HOME/.soft/rust-analyzer /usr/local/bin

# Install pyright
npm i -g pyright

# Install TypeScript LSP server
npm install -g typescript-language-server

# Install gopls
go install golang.org/x/tools/gopls@latest

# Packer for nvim
mkdir -p ~/.local/share/nvim/site/pack/packer/start/

git clone --depth 1 https://github.com/wbthomason/packer.nvim \
    ~/.local/share/nvim/site/pack/packer/start/packer.nvim

# Build telescope
cd ~/.local/share/nvim/site/pack/packer/start/telescope-fzf-native.nvim
make

cd

Проверим работу nvim с LSP-сервером для Python, TS, Go, Rust (везде должна показаться ошибка при передаче числа вместо строки):

# main.py
def say_hello (name: str) -> None:
    print(f"hello, {name}!")

say_hello(123)
# main.ts
const sayHello = (name: string) => {
    console.log(`hello, ${name}!`)
}

sayHello(123)
# main.go
package main

import (
	"fmt"
)

func sayHello(name string) {
	fmt.Printf("hello, %s!\n", name)
}

func main() {
	sayHello(123)
}
cargo new my_project
cd my_project
nvim src/main.rs
# main.rs
fn say_hello(name: &str) {
    println!("hello, {}!", name);
}

fn main() {
    say_hello(123);
}

Tmux

tmux prefix это CTRL+A или CTRL+B, а CTRL это Caps lock. Покажи создание панелей в tmux.

Чтобы перебиндить клавишу Caps Lock на Ctrl в Windows создадим файл, который автоматически переназначит эти клавиши через реестр Windows, файл reg.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Запустить файл, согласиться на применение настроек, перезагрузиться.

Копирование из WSL в буфер Windows

Копировать текст из WSL можно очень удобно с clip.exe. На маке есть pbcopy, а тут вот clip.exe:

ls -la /mnt/c/Users/
history | tail -1 | clip.exe

Правда, кириллица копируется криво. Поэтому будем использовать win32yank, скачаем и положим исполнимый файл win32yank.exe в директорию, которая есть и в виндовой переменной окружения PATH, и в линуксовой, в C:\Windows\System32.

# не работает
echo "привет" | clip.exe

# работает!
echo "привет" | win32yank.exe -i

echo 'alias pbcopy="win32yank.exe -i"' >> ~/.zshrc && . ~/.zshrc

Можно использовать для копирования паролей из pass, например. Можно перебиндить на pbcopy при желании:

echo "alias pbcopy=clip.exe" >> ~/.zshrc && . ~/.zshrc

Открытие проводника в текущей директории (удобно, использовал open . на маке):

echo "alias open=explorer.exe" >> ~/.zshrc && . ~/.zshrc

Настройки ввода

Уменьшим задержку при вводе повторных символов. Win + R, команда control keyboard, Enter. Откроется окно "Свойства клавиатуры". В разделе Задержка перед началом повторения (Repeat delay) установите ползунок ближе к значению Короткая (Short).

Горячие клавиши в системе

PowerToys. Есть еще программа AutoHotKey, провел кучу времени в попытках ее настроить и удалил к едрене фене. На всякий случай конфиг ее был таким (лежал в директории автозагрузки):

; Заменяем CapsLock на Ctrl
CapsLock::Ctrl

; Переключение на вкладки в Google Chrome с помощью Alt + [номер]
!1::Send("^1")  ; Alt + 1 переключается на первую вкладку
!2::Send("^2")  ; Alt + 2 переключается на вторую вкладку
!3::Send("^3")  ; Alt + 3 переключается на третью вкладку
!4::Send("^4")  ; Alt + 4 переключается на четвёртую вкладку
!5::Send("^5")  ; Alt + 5 переключается на пятую вкладку
!6::Send("^6")  ; Alt + 6 переключается на шестую вкладку
!7::Send("^7")  ; Alt + 7 переключается на седьмую вкладку
!8::Send("^8")  ; Alt + 8 переключается на восьмую вкладку
!9::Send("^9")  ; Alt + 9 переключается на последнюю вкладку

; Переключение языка по Alt + Space - вместо Alt + Space шлётся Win + Space
!Space::
{
    Send("# ")
}

; Для хрома Alt + t открывает вкладку (отправляет Ctrl + t)
!t::
{
    Send("^t") ; Отправляет Ctrl+T
}

; Для хрома Alt + w закрывает вкладку (отправляет Ctrl + w)
!w::
{
    Send("^w") ; Отправляет Ctrl+T
}
>!✓:: {
    Send("^w") ; Отправляет Ctrl+W
}


; ALT+F = CTRL+F
!f::
{
    Send("^f") ; Отправляет Ctrl+F
}

Открываем редактор горячих клавиш, перебиваем Caps Lock на Ctrl.

И комбинации:

  • ALT+1 на CTRL+1
  • ALT+2 на CTRL+2
  • ALT+9 на CTRL+9
  • ALT+T на CTRL+T
  • ALT+W на CTRL+W
  • ALT+F на CTRL+F
  • ALT+Q на CTRL+F4
  • ALT+C на CTRL+C
  • ALT+V на CTRL+V
  • ALT+R на CTRL+R

Интересные комбинации:

  • Win+Shift+C — Color picker для любого приложения.
  • CTRL+Space предпросмотр документа, работает в тч с PDF. Как на маке, но там просто Space, тут просто Space поставить нельзя, но пофик.
  • Alt+Space — аналог Spotlight для винды. Калькулятор, поиск файлов.
  • Эти клавиши работают судя по всему без power toys, но тоже показались мне интересными:
  • Win+V — вставка с историей буфера. Иногда это очень удобно!
  • Win+A — показать Action Center, тут есть wifi и bluetooth подключения и тд.

Раскладка Ильи Бирмана

  • Как ставить тире? Чтобы вот не убогий дефис, а православное правильное тире?
  • Кавычки ёлочкой?
  • Неразрывный пробел, чтобы строка не начиналась с тире?
  • А как поставить знак галочки, рубля или знак умножить?

Всё это легко делается, если установить раскладку Ильи Бирмана. Мне долго её советовали в комментариях, когда где-то речь всплывала о Windows, и вот я наконец-то её поставил. Это супер-кайф! ==Покажи картинку==.

Я настолько вдохновился, что просто не смог не задонатить Илье за такую кайфовейшую штуку:) Рекомендую тоже установить и тоже задонатить. За такие продукты надо платить, друзья, вот просто надо.

Не показал в видео, но настроил у себя

В видео забыл показать:

  • установку pass как менеджера паролей — видео на канале
  • установку PostgreSQL 17 (актуальная на сегодня) в WSL
  • установка DBeaver на Windows для GUI работы с PostgreSQL
  • для нижней панели Windows поставил черную тему, темная панелька симпатичнее:
    • Win+I → Персонализация → Цвета → Выберите режим → Настраиваемый, там же Выберите режим Windows по умолчанию -> Тёмный (для тёмной панельки), и Выберите режим приложения по умолчанию → Светлый (для светлых окон, если хотите)
  • в PowerToys назначил:
    • Alt+J на отправку Ctrl+J для просмотра загрузок в Chrome по Alt+J
    • Alt+N на отправку Ctrl+N для открытия нового окна в Chrome
    • Alt+O на Ctrl+O, удобно в Obsidian
    • Alt+X на Ctrl+X — вырезание
    • Alt+C на Ctrl+C — копирование
    • Alt+V на Ctrl+V — вставка
    • Alt+A на Ctrl+A — выделение всего
    • Alt+Space на Win+Space — для смены языка
    • Alt+Z на Ctrl+Z — undo
    • Alt+Shift+Z на Ctrl+Shift+Z — redo
  • установить ShareX как удобный инструмент для скриншотов и выгрузки на imgur