Warning
💀 Working in Windows is hard 💀
As you may know, at least for developers, Linux tends to be easier than Windows but Windows is the standard, at least for the videogames industry.
Tired of setting up Windows again and again on different machines or fresh installs I have decided to create a permanent way of keeping my changes and my setup.
On top of that, I'm decided to speed up my productivity with a window tilling manager similar to i3 on Linux 🌟 GlazeWM
🌟 and some other cool features and automatizations.
In this section we will describe all the necessary steps to install the windotfiles
Using the following command to clone the repository with PowerShell
cd $env:USERPROFILE
git clone --recurse-submodules https://github.com/Farravid/windotfiles.git
This will clone the repository and also recursively clone the submodules.
Warning
If you don't clone the repository in the user's home directory, the setup won't work at all.
Most of the setup depends on this.
The only pre-requisite is to have the WinGet
package manager operative. It should be available on the lastest Windows versions.
Nevertheless, and it is no surprise, WinGet
could not work as expected with a fresh windows installation.
If you end up having the blue stuck problem visit this issue: microsoft/winget-cli#3832, specially the following code:
Invoke-WebRequest -Uri https://aka.ms/getwinget -OutFile winget.msixbundle
Add-AppPackage -ForceApplicationShutdown .\winget.msixbundle
del .\winget.msixbundle
In order to fully install and use the windotfiles, you need to install some dependencies.
Some dependencies are mandatory for a basic windotfiles installation but others are optional since they are just preferences.
For this reason, I have decided to split the dependencies in two parts.
These dependencies will be instaled when you run the installation script.
➡️ Click here to see the required dependencies
- 🐍
Python 3.11
➡️ Python as main language for running scripts - 🐍
pip install inquirer pyuac pypiwin32
➡️ Libraries for installation scripts - 🐍
pip install pywal colorz colorthief haishoku
➡️ Libraries for changing the color scheme with winwal (pywal) - 🪟
GlazeWM
➡️ Windows Tiling Manager for Windows similar to i3 - ⌨️
PowerShell 7
➡️ Main shell - ⌨️
Windows Terminal
➡️ Main terminal emulator - ⌨️
Oh My Posh
➡️ Prompt theme engine for any shell - 🔠
JetBrainsMonoNerdFont
➡️ Windotfiles use this font - 🍃
Flow Launcher
➡️ Application launcher. Similar to Rofi - 🏬
GitLFS
➡️ Windotfiles use Git LFS - 🎨
neofetch
➡️ This is just for style not gonna lie - 🧈
Buttery Taskbar 2
➡️ Allows to hide the taskbar forever (This is an .exe in the vendor's folder)
After the required basic installation, the optional part of the script will kick in.
You will have a prompt for each of the dependecies for choosing whether to install it or not.
➡️ Click here to see the optional dependencies
Bottom
➡️ A customizable graphical process/system monitor for the terminal.Spotify
➡️ You know what this isGoogle Chrome
➡️ Default windotfiles browser. (Alt + G will launch it)Github Desktop
➡️ User interface for Github repositoriesDiscord
➡️ You know what this isObsidian
➡️ Software for taking notes and organize knowledgeNeovim
➡️ Terminal text editorEverything
➡️ Search engine for quickly finding files. (Alt + E will launch it)Visual Studio Code
➡️ Text editorVisual Studio Community
➡️ IDERust language
➡️ Used for building the project for changing the Dygma color scheme.
You may want to skip this whole section if you haven't installed Visual Studio Code on the previous step.
s-nlf-fh.glassit
➡️ Add transparency to VSCodems-vscode.cpptools
➡️ Tools for C++ developmentnaumovs.color-highlight
➡️ Highlighter for colorsdonjayamanne.python-extension-pack
➡️ Tools for Python development1YiB.rust-bundle
➡️ Tools for Rust developmentdlasagno.wal-theme
➡️ Tool for changing the VSCode color scheme based on winwal on runtimems-vscode.powershell
➡️ Tools for PowerShell developmenteamodio.gitlens
➡️ Elevate Git with powerful toolswayou.vscode-todo-highlight
➡️ Highlighter for TODO commentsvscode-icons-team.vscode-icons
➡️ Icons for VSCodeTabNine.tabnine-vscode
➡️ Powerful free AI Tool for VSCode. (Tests, Documentation, Chat)yzhang.markdown-all-in-one
➡️ Tools for Markdown development
Go to the windotfiles folder and run the install.bat
batch script as ADMIN
Warning
You will get an error if you don't run the script as admin
The windotfiles repository includes a tasks
directory that contains a XML file (start-dotfiles.xml
) that must be used to configure the Task Scheduler to start the dotfiles automatically on log on.
This task is in charge of launching the Startup launcher
and the Buttery Taskbar 2
Warning
The task should be imported automatically when running the install.bat
script.
However, if you don't see the start-dotfiles
task in your Task Scheduler you can import it manually.
After completing the previous steps, restart the system to fully apply the changes.
After the sucessful installation you can still modify the windotfiles for your specific cases or use some of the functionalities described below.
If you have been using the windotfiles for some time you will notice some packages need upgrades.
For this reason, I've created a powershell command available to make this process straight-away.
update-windotfiles
You only need to run this command on your powershell to run through the update of all the windotfiles packages you have installed.
It will update the required and the optional packages you have installed as well as the VSCode extensions you decided to install.
Note
A sym link is a way to link one file to an additional folder location. This way you only need to modify one but the changes will be reflected in both.
Every config file of this repository is symlinked to the original config file when running the install.bat
script.
This way, you can modify the files from the repository and the changes will be reflected in the actual programs, without the need of copying them manually.
TODO
Warning
Make sure to close Flow Launcher entirely before copying the windotfiles settings to the computer installation
This python script (startup.py
) will be launched from the Task Scheduler
every time you log in. It is in charge of launching GlazeWM
and prompting the user with a setup selector.
Once the user has selected the setup and the default apps, that setup will be launched.
The default configuration is my usual configuration and my usual setups but you can feel free of changing it in order to match your purposes and setups.
Note
Make sure to disable all the relevant programs from windows start up in order to have a perfect experience
The PowerShell
profile available in the pwsh
contains some useful aliases that you can use or modify. Some of theme:
# Move and show the windotfiles folder
function windotfiles {Set-Location -Path $env:USERPROFILE\windotfiles && Get-ChildItem -Force }
# Open the windotfiles folder in Visual Studio Code
function cwindotfiles { code $env:USERPROFILE\windotfiles }
# Move and show the downloads folder
function down {Set-Location -Path $env:USERPROFILE\Downloads && Get-ChildItem -Force }
# Move and show the documents folder
function doc {Set-Location -Path $env:USERPROFILE\Documents && Get-ChildItem -Force }
In top of winwal, we have an update-winwal
powershell command available for updating the color scheme based on the given wallpaper.
This command, for now, supports updating the color scheme of the following software:
Windows Terminal
GlazeWM
VSCode
(dlasagno.wal-theme
plugin must be installed)Dygma Keyboard
In order to use it, run the following command:
# Usage: update-winwal PathToWallpaper
# windotfiles
update-winwal .\assets\dunes.png