# Вступление Я купил себе 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): ```bash wsl --install -d Debian wsl --set-default-version 2 ``` # Настройка Git в WSL ```bash 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 ```bash 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](https://www.sumatrapdfreader.org/free-pdf-reader). Интерфейс не перегружен (его почти нет) и запускается быстро. Даже полосу прокрутки можно скрыть. Возможна навигация через jk - Obsidian - Davinci Resolve - VLC as player # Начальные настройки В проводнике от бокового меню открепить Музыка, Видео. Оставить только Рабочий Стол, Загрузки, Документы, Изображения. Можcd ..но добавить сюда директории, с которыми часто будете работать, я со временем сделаю это. # Git для Windows для Obsidian Install [Git for Windows](https://git-scm.com/downloads/win) for Obsidian. Set up it in Git bash (`git config ...`). # Синхронизация заметок Obsidian через git Git в Windows настроен. Плагин git в Obsidian и хоткей на CTRL+P для push. # Основные Linux-инструменты ```bash 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: ```bash # 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 ```bash # 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 для работы с этими языками ```bash # 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 (везде должна показаться ошибка при передаче числа вместо строки): ```python # main.py def say_hello (name: str) -> None: print(f"hello, {name}!") say_hello(123) ``` ```ts # main.ts const sayHello = (name: string) => { console.log(`hello, ${name}!`) } sayHello(123) ``` ```go # main.go package main import ( "fmt" ) func sayHello(name string) { fmt.Printf("hello, %s!\n", name) } func main() { sayHello(123) } ``` ```bash cargo new my_project cd my_project nvim src/main.rs ``` ```rust # 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`: ```text 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`: ```bash ls -la /mnt/c/Users/ history | tail -1 | clip.exe ``` Правда, кириллица копируется криво. Поэтому будем использовать [win32yank](https://github.com/equalsraf/win32yank/releases), скачаем и положим исполнимый файл `win32yank.exe` в директорию, которая есть и в виндовой переменной окружения `PATH`, и в линуксовой, в `C:\Windows\System32`. ```bash # не работает echo "привет" | clip.exe # работает! echo "привет" | win32yank.exe -i echo 'alias pbcopy="win32yank.exe -i"' >> ~/.zshrc && . ~/.zshrc ``` Можно использовать для копирования паролей из `pass`, например. Можно перебиндить на pbcopy при желании: ```bash echo "alias pbcopy=clip.exe" >> ~/.zshrc && . ~/.zshrc ``` Открытие проводника в текущей директории (удобно, использовал `open .` на маке): ```bash echo "alias open=explorer.exe" >> ~/.zshrc && . ~/.zshrc ``` # Настройки ввода Уменьшим задержку при вводе повторных символов. **Win + R**, команда `control keyboard`, **Enter**. Откроется окно "Свойства клавиатуры". В разделе **Задержка перед началом повторения** (Repeat delay) установите ползунок ближе к значению **Короткая** (Short). # Горячие клавиши в системе [PowerToys](https://github.com/microsoft/PowerToys/releases/tag/v0.86.0). Есть еще программа AutoHotKey, провел кучу времени в попытках ее настроить и удалил к едрене фене. На всякий случай конфиг ее был таким (лежал в директории автозагрузки): ```text ; Заменяем 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` как менеджера паролей — [видео на канале](https://www.youtube.com/watch?v=I2mwqC6HGGE) - [установку PostgreSQL 17](https://www.postgresql.org/download/linux/debian/) (актуальная на сегодня) в 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](https://getsharex.com/) как удобный инструмент для скриншотов и выгрузки на imgur