Welcome
This site is automatically generated from a selection of my Joplin Notes using a Python script that can be found on my Gitea instance. The pages here are a living document of guides, tools and configurations that I use and expand on as my knowledge and workflows change. The majority of notes here are focused on SysAdmin, Self-Hosting, and IT systems, and their configuration and automation workflows.
If you have any comments, questions or are looking to hire a new IT Manager, you can contact me at: blog@zinchuk.xyz
~Yuriy
Quick Links
Last updated on September 01, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Resume
Summary
10 years working in a variety of technology related positions; including research, budgeting, purchasing, implementation of new technology services, complete IT infrastructure overhaul,software development, and assisting staff with their day to day IT needs.
Git Links
Technologies Worked With
- Python, Autohotkey, Powershell, Bash, Excel VBA, Selenium
- Ubuntu, Arch Linux, pfsense, TrueNAS, Ubiquiti Unifi
- Windows Server, Windows 2000, Windows XP, Windows 10/11, Office365
- Proxmox, VMWare, Hyper-V
- Git Version Control, Docker, NGINX
- Zabbix, Prometheus, Grafana
Professional Achievements
- Completed Full IT Infrastructure Modernization & Overhaul for Paper Manufacturing Plant
- Led the comprehensive overhaul and upgrade of the organization’s entire IT infrastructure, including servers, switches and workstations, transitioning from ~12 year old legacy equipment
- Set up and Managed a 6-Node Proxmox Cluster with ~50 virtual machines running a mix of Windows and Linux-based systems, connected to ~20 VLANs
- Migrated Existing Legacy Infrastructure of Physical and Virtual (Hyper-V 2008/2012 and VMware ESXi 5/6), Windows 2000, 2003, XP, and Windows 7 systems to Proxmox
- Replaced undocumented flat network infrastructure with a VLAN-segregated architecture across entire site
- Set up Device Monitoring and Alerting for all Networked IT Equipment using Zabbix
- Documented the entire IT infrastructure from the ground up and successfully handed it over to the incoming IT Manager
Work History
Freelance Programmer
May 2024 - Present
- Working as part of a small self-managed team writing web automation software utilizing Git, Selenium, Autohotkey, Python, Powershell and modern AI tools.
IT Manager @ REDACTED (Paper Mill Manufacturing Plant)
2022 - May 2024
- Researched, Purchased and Setup servers, switches, workstations, virtual machines, and VOIP system
- Setup and Managed multi-node Proxmox Hypervisor Cluster, Proxmox Backup Server systems, and interconnecting 10Gb VLAN’d networking
- Managed Firewalls and Security rules for multiple segregated networks on the production floor
- Wrote Automation software in multiple scripting languages to automate IT processes and Production Floor workflows
- Provided on-call tech support to Business and Production Floor Teams
IT Manager @ REDACTED (Manufacturing + Retail Store Chain)
2021 - 2022
- Managed IT Infrastructure for 5 retail locations and 1 Manufacturing Plant
- Migrated entire infrastructure from Windows 7 to Windows 10
- Migrated company from Windows Server 2008 to Fedora Linux
- Wrote Automation Software to streamline POS processes
- Migrated company to modern ERP and website system, saving company ~$100K/year in legacy licensing costs
Multiple Positions @ REDACTED (Non-Profit)
2013 - 2021
- Managed employee interviewing, hiring, training, scheduling and day to day management,
- Managed Accounts Payable + Monthly reconciliation of accounts through the use of Sage Business Accounting Software
- Created and Managed an automated online time card system for out of office employees using Excel VBA + Google Sheets
- Managed Company Website, Social Media Pages, and monthly email/facebook newsletters
- Migrated Company Website to to new Management Framework
- Automated Inventory Ordering Processes using Autohotkey, Selenium and Excel VBA
- Assisted IT Manager with setting up workstations, printer configurations, and handling help desk tickets
Last updated on August 27, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Contents
Click on a link in the list below to go to that page:
- Dell Wyse 5070 as Proxmox Node
- Home Automation with Zigbee and Node Red
- Homelab Topology Map
- Installing LineageOS on Google Pixel Tablet
- MeshCentral - Free, Open Source RDM
- Resume
- The Cost of Running a Home Lab
- Welcome
Dell Wyse 5070 as Proxmox Node
I got one of these little thin clients on ebay last year to use as a low power home media PC, but with the low specs it would struggle to play 1080p vidoes on Youtube/Plex/Jellyfin, and even at 720p would drop frames on a regular basis. I installed Proxmox on it to see how well it would handle being a hypervisor and it performs quite nicely for VMs that don’t need much resources. I set the Adguard Home and a couple other smaller virtual machines to Boot Linux into CLI by Default and it’s been chugging along for the last year or so without any issues.
Hardware
General
- Costs ~$60 on Ebay + $20 for a M.2 SSD
- 4 Core J4105 CPU @ 1.5Ghz
- Passively Cooled, No fan at all
- Supports up to 16GB RAM (2x8GB DDR4-2400)
- Supports 1xSATA M.2 SSD Drive as storage
- Runs at ~10 Watts
- Client can be configured to “Power On” on Power Restore through BIOS Options
- BIOS Password:
Fireport
- BIOS Password:
Pictures
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Home Automation with Zigbee and Node Red
There’s something incredibly futuristic feeling about opening your front door and having the lights turn on automatically, or walking out of the house and all the lights in the house turn off behind you. It reminds me of the science fiction books that i used to read as a kid that would talk about automatic houses that would do your chores for you and turn on/off as you walked into different rooms. Sadly there are no robots that will make my bed, unload the dishes from the dishwasher, or fold my laundry like in those science fiction books, so for now i have to be content with just automated lights and sensors.
Setup
My Home Automation deployment has gone through a couple iterations over the last 5-6 years. I originally started out with a Raspberry Pi 3B running Home Assistant OS with the Phoscon Conbee II ZigBee USB Gateway plugged into the USB port, with the Deconz and NodeRed addons installed. As my homelab grew and I setup a home server and started playing around with virtualization I decided to virtualize and migrate Home Assistant to a Docker container within my physical Unraid Server. That worked without issue as well for a couple of years until I virtualized my Unraid Server a few months back and brought my configuration to what it is now.
My current setup looks like this: My Phoscon Conbee II ZigBee USB is plugged into one of my Proxmox nodes and the USB device is passed through to my Unraid virtual machine. The USB device then gets passed through again to the deCONZ docker container which exposes an API for NodeRed and Home Assistant to connect to for device triggers/controls.
Automation Ideas
Some of my favorite automations:
Turn All Lights off When Leaving House
- Trigger: When Front Door Opened > Delay 15 Minutes > Ping Phone IP Address > If Ping is greater than 1000 (Node Red Ping Failed) > Turn All Lights Off
Dimming Lights in the Evening
- I have dimable + temperature adjustable zigbee bulbs and in the evening i have them automatically dim / change to a warmer temperature to help with maintaining a natural circadian rhythm.
Fingerbot for Pressing Physical Buttons
I bought one of these Zigbee Fingerbots Amazon Link a few months to control my AC Unit. It stores an internal ON/OFF variable within itself which makes it easy to check the status of my AC Unit and toggle it on/off based on that.
- Add Picture of node flow
NTFY Notifications
- Setup Directions: https://docs.ntfy.sh/examples/#node-red
Last updated on August 27, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Homelab Topology Map
I’m a huge fan of self hosting. I love having full control of my data, privacy, and not being at the mercy of large provider’s whims/mistakes for my account and data’s continued existance.
Over the last 5 years I’ve slowly grown my home lab environment to host almost 2 dozen services that I use on a regular basis as a replacement for mainstream, often privacy invading services like Gmail, Google Photos, OneDrive, Spotify, Netflix and a handful of others.
All the services below are running as docker compose containers on Linux Based VMs, within a 3 node Proxmox Cluster, with the majority of services routed through NGINX Proxy Manager reverse proxy for SSL Certificates + Encryption. The services that I regularly use while i’m out and about are whitelisted to be reachable through WAN and everything else is LAN only, but reachable through a Wireguard VPN tunnel if needed.
Network Topology Map:
(Might take a few seconds to load depending on your connection speed) Draw.io File:SelfHostedServicesTopologyMap.drawio
Hardware
The Cost of Running a Home Lab#equipment
Services
Service | Description |
---|---|
pfSense | Firewall |
Wireguard | VPN Tunnel |
Adguard Home | DNS Level Adblocker + Internal DNS Resolver |
Adguard Home Sync | Synchronizes Adguard Home instances’ configurations |
NGINX Proxy Manager | Reverse Proxy + SSL Encryption for Services |
ntfy.sh | Push notification service |
Heimdall | Web Dashboard for quick links |
Radicale | CalDAV/CardDAV server |
Node-Red | flow editor for home automation |
Deconz | Zigbee Controller for Home Automation |
Syncthing | Continuous File Synchronization |
urBackup | Open Source Client/Server Backup Service |
Paperless-NGX | Document Management System |
Proxmox Backup Server | Deduplicating Proxmox VM Backups |
File Browser | Graphical File Browser for NAS |
Audiobookshelf | Audiobook & Podcast Server |
Jellyfin | Media Server |
Plex | Media Server |
Navidrome | Music Streaming Server |
Kavita | Ebook Server |
Immich | Self Hosted Google Photos Alternative |
To Do List
- Migrate from NGINX Proxy Manager to Caddy for Automatic SSL setup for new Docker services
- Setup Unifi + Prometheus + Unifi Poller for Visual Monitoring
- setup Crowdsec for crowd sourced host blacklisting
Last updated on August 27, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Installing LineageOS on Google Pixel Tablet
The Google Pixel Tablet has to be one of the best tablets that i’ve owned to date. It is the best option out there if you’re looking for an inexpensive yet high quality 11“ tablet with official LineageOS support, fingerprint scanner, and great looking screen.
The other options in the market:
- Apple iPad: Running iPad OS, completely locked down and is a walled garden. No go for me
- Samsung Galaxy Tab: Limited Custom ROM support, and custom ROMs are usually unofficial from random people and hard to trust. I’ve owned the Galaxy Tab s4 (No LineageOS support at all), and Tab S6 Lite (ONE LineageOS based ROM from a community member, no fingerprint scanner, subpar screen)
- Generic Chinese Android Tablets: Limited custom ROM support if any, and the default system is most likely sending analytics about all your usage off to China
Unlocking the Bootloader
- The LineageOS device directions do a great job of giving the step by step directions for the unlocking process
- I usually do the adb process while booted into my Linux system. I’ve had much less issues with that than through Windows, which will sometimes recognize a device while the device is booted, but will not see it when it’s in
fastboot
orrecovery
mode- To install ADB on Arch Linux:
sudo pacman -S android-tools
- To install ADB on Arch Linux:
Flashing LineageOS with MicroG
- Builds: https://download.lineage.microg.org/tangorpro/
- Download all the files for the build date that you’re going to be installing, they will all be used as part of the flashing process
- Flash the LineageOS recovery and ROM step by step Instructions
- After flashing, select
Reboot Device
to boot into LineageOS
Rooting with Magisk
- Download the latest magisk.apk file from GitHub
- Rename
magisk.apk
tomagisk.zip
- Boot into LineageOS Recovery on the Pixel Tab using:
adb reboot recovery
- Navigate down to
Advanced Options
>Enable ADP
to enable ADB within LOS Recovery, then go back to the main screen - Select
Install Update
option and then push the magisk.zip file through adb usingadb sideload magisk.zip
- Magisk will automatically patch your boot image and install the magisk manager app on the device. Once the patching peocess is complete, reboot your device and open up the Magisk app. You should see the Magisk version number on the main screen.
Last updated on August 26, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
MeshCentral - Free, Open Source RDM
I discovered MeshCentral (a free open source Remote Device Management software) about a year and a half ago. After setting it up and playing around with it for a few weeks, I quickly replaced all my NoMachine and AnyDesk Remote Control installations at work & at home with it. It has became my de-facto way of interacting with remote systems for remote assistance, system setups and server patching.
Desktop View | Mobile View |
---|---|
Server Installation
- Normal System Install using NPM: https://ylianst.github.io/MeshCentral/install/
- Docker Compose Install: https://github.com/Typhonragewind/meshcentral-docker
- SSL is self generated by default, but you can use your own SSL keys/reverse Proxy by following THESE steps.
Client Installation
Any 64 bit Linux system with systemd (Arch, Debian, RedHat, etc)
- CD into downloads directory, download the meshagent linux installer and ignore the fact that the server has a self signed certificate. (Not needed if you’re using a reverse proxy)
cd ~/Downloads/ ; wget --no-check-certificate -O meshagent "https://10.0.0.201/meshagents?id=40pZPmGfuvJGQHgbHBwrkuwB&installflags=0&meshinstall=6" ; chmod +x ./meshagent ; sudo ./meshagent -install
64-BIT ARM (Raspberry Pi)
cd ~/Downloads/ ; wget --no-check-certificate -O meshagent "https://10.0.0.201/meshagents?id=OIXF2bCytM26I9MBLPSNsRI22d7k3HkcWfuzAJHAhp84ie51XIOxI6FV&installflags=0&meshinstall=26" ; chmod +x ./meshagent ; sudo ./meshagent -install
32-BIT ARM (Raspberry Pi)
wget --no-check-certificate -O meshagent "https://10.0.0.201/meshagents?id=40pZPmGfuvJGQHgbHBwrkuwB&installflags=0&meshinstall=25" ; chmod +x ./meshagent ; sudo ./meshagent -install
meshagents?id=####
sets the group that the My Devices Group the device get’s placed into.
meshinstall=#
sets the binary type. You can find the binary number by selecting the appropriate OS in the Add Agent screen
Cloning VMs - [Reference]
The MeshAgent has a "anti-cloning" system. When it runs, it will store the list of MAC addresses of all network interfaces into meshagent.db. Each time it starts, it looks to see if at least one network interface is the same as one in the list and updates the list. If none match, it will reset it's certificate and show up as a new device (with a new device identifier)
- By default when a Proxmox VM gets cloned, it receives a new MAC address for each of it’s network interfaces, witch means that MeshCentral can safely be installed on Template VMs for management/updates without issues.
- We can also force a device to reset it’s certificate and show up as a new device by deleting
meshagent.db
- We can also force a device to reset it’s certificate and show up as a new device by deleting
- Enable Hostname Sync in Group Settings screen > Features to have the Device Name automatically update whenever the hostname changes. I set this for my TMPLT group that all devices go into by default. I then move the device out of this group after i set it up and configure it’s permanant hostname on the host.
Check MeshCentral Agent Process Status
Linux
systemctl status meshagent
Windows w/Powershell
Get-Service -Name "Mesh Agent"
Multiple Networks / VLANS
At my previous jon we had a couple of VLANS that were for the Production floor and had no WAN access nor LAN access to any other networks. To install MeshCentral agents on these machines I had to do the following:
- Setup Firewall Allow Rule to allow one way traffic from the Firewalled Production LANs to the IP address of the MeshCentral server
- Option 1:
- Add a DNS entry to the server’s hosts file that pointed to the IP address of the MeshCentral server. (MeshCentral agents use DNS to find the Server)
Linux: edit
/etc/hosts
and add your server’s DNS name, eg:meshcentral.zinchuk.xyz 10.0.0.240
Windows: EditC:\Windows\System32\Drivers\etc\hosts
and add your server’s DNS name, eg:10.0.0.240 meshcentral.zinchuk.xyz
- Add a DNS entry to the server’s hosts file that pointed to the IP address of the MeshCentral server. (MeshCentral agents use DNS to find the Server)
Linux: edit
- Option 2:
- Setup a MeshCentral relay server on the firewalled LAN. This would have been my goto if we had more servers on the production LAN.
Sending Commands
With MeshCentral you can send commands to individual/groups of devices. Super handy if you need to push out an urgent patch to systems, do a bulk reboot of devices, or push out a program to multiple devices.
Steps:
Example Commands
Update EndeavourOS Arch Linux System + Reboot
- Update keyring, Update system packages, clear out package cache when done, and then reboot
sudo pacman -Sy archlinux-keyring endeavouros-keyring --noconfirm --needed ; paru -Syu --noconfirm --needed && echo $(sudo ls /var/cache/pacman/pkg/ | wc -l) packages in cache ; sudo reboot
Update Proxmox Server + Reboot
apt-get update && apt-get dist-upgrade -y && reboot
Update Windows Packages with Chocolatey
choco upgrade all -y
Misc Usage
Using PowerShell in Terminal:
Right click when selecting terminal and select powershell OR
type in powershell.exe
to switch to Powershell from CMD
Bugs/Workarounds/Extra info
Arch Linux Remote Desktop Bug
- Remote Desktop view doesn’t work by default
- Problem + Fix: https://github.com/Ylianst/MeshCentral/issues/602\
- Workaround is automatically installed when setting up MeshCentral with my linux-setup-script
Windows
- In order to be able to type into Powershell/CMD when remoted in through meshCentral, the “Touch Keyboard and Handwriting Panel” service must be enabled through
services.msc
on the remote device. Otherwise you will not be able to type into the CMD/Powershell window directly. The terminal connection tab works just fine though.- https://github.com/microsoft/terminal/issues/9890
Last updated on August 26, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
The Cost of Running a Home Lab
One of the things that is often brought on /r/selfhosted and /r/homelab when people ask for advice about buying a server is the cost of powering that device over a year and over it’s lifetime. You can get a Dell Poweredge R710 with 16 cores and 64GB of ram for less than $100 on ebay, but the cost of powering that dinosaur 24/7, 365 days a year will quickly outgrow your initial investment.
I was reading through one of these discussions recently and it made me wonder how much my homelab was costing me. I’ve slowly accumulated all my equipment over the last 5 years or so, one piece/upgrade at a time, but have never stopped to calculate the totals or how much it cost to keep that equipment running 24/7. I went through my old receipts and bought one of these Watt Power Meters on Amazon to calculate the power usage of each of my home lab devices. Here are the totals:
Equipment + Power Cost
Device | Device Purchase Cost | Average Power Usage | Annual Cost of Running 24/7/365 @$0.12582/kWh |
---|---|---|---|
Netgate 4100 Firewall | $400 | 13 Watts | $14.33 |
Dell Wyse 5070 | $80 | 5.0 Watts | $5.51 |
Beelink SER5 | $309 | 10 Watts | 11.02 |
i7-5820K Desktop 5x12tb HDD Drives 2x1TB NVME 2x1TB SATA | $1,700 | 122 watts | $134.47 |
Unifi 8 Port Gigabit Switch | $109 | 4.5 Watts | $4.96 |
Unifi WiFi Access Point | $159 | 8 Watts | $8.82 |
TOTAL | $2,757 | 162 Watts | $179.11 |
Overall i’m surprised that the total power cost is not higher. The biggest cost by far would be the amount of time and energy I put into home lab doing research, system upgrades, creating automation scripts and playing around with new projects. Luckily those skills are carried over to my professional work environments.
Last updated on September 01, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Contents
Click on a link in the list below to go to that page:
- Arch Linux - Keyring Corrupted
- Expanding Linux VM Partitions within ProxMox
- Grub Customization
- Install virtio Guest Agent on Ubuntu Proxmox VM
- Installing EndeavourOS on Surface Pro 6
- Installing VirtIO Drivers on ProxMox VMs
- Migrating Virtual Machines to ProxMox using Macrium Reflect
- Office365 Office Suite - Installation & Configuration
- Running Unraid as a Proxmox VM
- Testing Read/Write Speed Linux using dd
- Trust Relationship Failed on AD Windows 11
- UniFi L2TP VPN - Setup & Config
- Windows XP - Disable Prompt to install new Hardware Wizard
Arch Linux - Keyring Corrupted
- https://www.reddit.com/r/archlinux/comments/wbroq8/archinstall_error_on_updating_keyring/
Every so often EndevourOS/Arch Linux keyrings will expire/corrupt? and need to be reinitialized. When trying to do an upgrade with paru/pacman you will get a ...archlinux-keyring-20220727-1-any.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)) are you sure you want to remove it? Y/n
error when this happens.
This is the solution that worked to fix that:
sudo killall gpg-agent
sudo rm -rf /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --populate endeavouros
# IF using chaotic-aur
sudo pacman-key --populate chaotic
Simple,
- Update all the keyrings (arch, endeavour, chaotic-aur) and then install pacman updates through paru
sudo pacman -Sy --noconfirm ; sudo pacman -Sy archlinux-keyring --noconfirm ; sudo pacman -Sy endeavouros-keyring --noconfirm; sudo pacman -Sy chaotic-keyring --noconfirm; paru -Syu --noconfirm
Longer Process:
- 1 liner WITH Chaotic-AUR and EndeavourOS
sudo pacman -Sy --noconfirm ; paru -Sy archlinux-keyring --noconfirm ; sudo pacman -Sy endeavouros-keyring --noconfirm; sudo pacman -Sy chaotic-keyring; sudo killall gpg-agent ; paru -Sc --noconfirm ; sudo rm -rf /etc/pacman.d/gnupg ; sudo pacman-key --init ; sudo pacman-key --populate archlinux ; sudo pacman-key --populate endeavouros ; sudo pacman-key --populate chaotic ; sudo pacman-key --refresh-keys ; reboot
1 liner without chaotic-AUR
sudo killall gpg-agent ; sudo rm -rf /etc/pacman.d/gnupg ; sudo pacman-key --init ; sudo pacman-key --populate archlinux ; sudo pacman-key --populate endeavouros ; sudo pacman-key --refresh-keys
If you were using Chaotic-AUR, you will need to reinstall it most likely:https://aur.chaotic.cx/
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Expanding Linux VM Partitions within ProxMox
EndeavourOS/Arch Linux
GUI
- Shut down the VM and within Proxmox go to Hardware > Hard Disk > Resize
- Expand the Main disk, and secondary disk (linuxswap) as needed
- Boot up the VM again, log into a user account and open up KDE Parition Manager
paru -S partitionmanager
- If Expanded the main disk, select it, right click on the main partition and click resize and then expand it to use up all the new disk space alloted to it.
- Sometimes the extra disk space doens’t appear, a reboot of the VM usually fixes this.
- If expanding the linux swap partition, you will need to delete the old partition and recreate it as a new linuxswap partition
- right click on the partition, “deactivate swap”
- Right click and click “delete partition”
- Apply the changes
- Right click on the empty partition and create new primary partition of the type
linuxswap
- Apply the changes
- Right click on the newly created partition and select
activate swap
- Right click on the newly created partition and view it’s properties.
- Copy the UUID to your clipboard. NOT the partition UUID.
- open up your fstab file with
sudo nano /etc/fstab
and copy the new linux partition UUID and overwrite the old swap partition ID. - reboot the VM to make sure that the swap partition gets auto mounted.
- easy way to check is open up
htop
in the terminal and see if the swap has a disk size to it.
Terminal
Ubuntu/Kubuntu
- Run the following commands on the expanded drive:
- https://unix.stackexchange.com/a/743682
- Open up KDE Partition manager and expand the partition to use the full size
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Grub Customization
Fix Windows Missing in Dual Boot
- https://forum.manjaro.org/t/warning-os-prober-will-not-be-executed-to-detect-other-bootable-partitions/57849
- https://bbs.archlinux.org/viewtopic.php?id=279936
sudo nano /etc/default/grub
GRUB_DISABLE_OS_PROBER=false
and then run:
grub-mkconfig -o /boot/grub/grub.cfg
Change Grub Timeout
sudo nano /etc/default/grub
- Change timeout to: 0
- Then Update grub config with:
grub-mkconfig -o /boot/grub/grub.cfg
Edit Grub Config to set default selected option
- Change timeout, default option, hide grub menu unless shift pressed
- https://www.maketecheasier.com/set-grub-remember-last-selection/
# - Save grub selection between reboots
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR="EndevourOS"
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3 nowatchdog"
GRUB_CMDLINE_LINUX=""
GRUB_FORCE_HIDDEN_MENU="true"
# Update grub config
# https://linuxhint.com/update_grub_arch_linux/
sudo grub-mkconfig -o /boot/grub/grub.cfg
Change Grub Background Image
- https://forum.endeavouros.com/t/how-i-changed-grub-screen/29171
sudo cp IMAGEFILEPATHPNG /boot/grub/themes/EndeavourOS/IMAGEPNG
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Install virtio Guest Agent on Ubuntu Proxmox VM
To install the virtio Guest agent on Ubuntu, follow these steps:
Open a terminal on your Ubuntu system.
Update the package list by running the following command:
sudo apt update
Install the virtio Guest agent package by running the following command:
sudo apt install qemu-guest-agent
During the installation, you may be prompted to configure some settings. You can choose the default options by pressing Enter or select any specific settings based on your requirements.
Once the installation is complete, start the virtio Guest agent service by running the following command:
sudo systemctl start qemu-guest-agent
Enable the virtio Guest agent service to start automatically on system boot by running the following command:
sudo systemctl enable qemu-guest-agent
Verify that the virtio Guest agent is running by checking the service status using the following command:
sudo systemctl status qemu-guest-agent
If the service is running, you should see a “active (running)” message. That’s it! The virtio Guest agent is now installed and running on your Ubuntu system.
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Installing EndeavourOS on Surface Pro 6
I kept running into an error when trying to do an online install of EndeavourOS, so I ended up doing an offline install with xfce (at this moment, the EndeavourOS ISO comes with the xfce Desktop Environment preinstalled), booted into it and installed plasma packages using https://wiki.archlinux.org/title/KDE#Plasma
- Then uninstall all XFCE packages with:
sudo pacman -Rns xfce4 xfce4-goodies
- Then install Surface Pro kernel and packages to get the touchscreen working:
- https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup#Arch
Last updated on August 13, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Installing VirtIO Drivers on ProxMox VMs
The following steps should work the same on any ProxMox Windows installation, including: - Windows 2000 - Windows 2003 - Windows XP - Windows 7 - Windows 10
-
Mount the virtio-drivers.iso file as a CD Drive
-
Open Up Device Manager by going to “My Computer” > right click on any white space and select “Properties” > Go to the Hardware Tab > click on “Device Manager”
Right click on the device that has not been properly installed and select “install driver” or “re-install driver”
Select “Search for suitable driver for my device” and scan the CD-ROM drives for the drivers.
Windows will either find the virtio driver and install it, or it will fail to find a comptaible driver which usually means the VM Windows Version is too old for that virtio driver and it can be uninstalled so that users won’t get nagged about installing a driver each time the VM reboots.
Error: Windows cannot load the device driver for this hardware. The driver may be corrupted or missing (Code 39)
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Migrating Virtual Machines to ProxMox using Macrium Reflect
Macrium Reflect has been my default go to for the past 2-3 yearsfor desktop backups, and Virtual Machine migrations between Hypervisor Systems. Macrium takes care of all the registry changes that need to be made to older virtual machines 7,XP, Windows 2000 to prevent the virtual machine from blue screening and failing to boot after restores. Using Macrium i migrated ~20 virtual machines hosted on Windows Server 2008, 2012, and VMWare ESXI 5 and 6 to a modern Proxmox Cluster without too much difficulty.
Backing Up
- Install Macrium Restore on a desktop/server and create a custom Macrium Recovery Boot Image that will be mounted on the virtual machine and booted from to create the image backup.
Macrium Custom Boot Base WIM Breakdowns:
- Install Macrium WorkStation or Macrium Server inside the Virtual machine you want to migrate
- create a macrium backup of the machine to either a network drive, or if possible an external SSD drive.
- ProxMox makes it very easy to pass through a USB device or USB port to a virtual machine, and SSDs are much faster to restore from than a network drive.
- if a restore is happening a little while after a backup, do an incremental backup as well, and when doing a restore select the incremental backup file
Restoring/Migrating
- create a new Windows Virtual Machine within ProxMox (https://pve.proxmox.com/wiki/Windows_10_guest_best_practices)
- Use IDE as the drive type to start with, and Intel100 as the network device to start with
- If Windows XP VM, Follow https://pve.proxmox.com/wiki/Windows_XP_Guest_Notes
- mount Macrium Recovery Media (MRESCUE_) and VirtIO ISO as CD drives.
- Choose Mrescue Version based on Windows System you’re restoring based image at the top of page
- You can either pass through a USB external drive to the VM to restore the image form, or have the image on a network drive, eg TrueNas-01 - NAS Server (network drive is easier, but might be slightly slower)
- Mount TrueNas-01 - NAS Server’s Macrium folder as a network drive
- Restore the macrium image. Once restore is complete, click “other tools” menu at the top and select “Restore to dissimilar hardware”. Click through the options, the default ones work just fine.
- Once restore is complete, select ReDeploy to New Hardware menu option and the “Fix windows boot problems” options and go through their menus as below:
- Once done, reboot to your cloned virtual machine.
- Once booted into the virtual machine, open up device manager, find any devices with missing drivers, right click on them and select “Update Driver Software”, and select check the “Search removable media” option. Windows will look through the folders and usually find the appropriate driver.
- For windows 2000/xp you might need to mount an older version of virtio drivers to find compatible drivers.
Notes
MRescue_WRE10_v2004_VirtIO.iso will not show virtIO SCSI hard drive when in rescue environment MRescue_WPE4.iso will not show virtio SCSI hard drive when in rescue environment
Tips/Tricks/Extas
Windows Server 2008 R2 refused to recognize virtIO SCSI drive, so you have to pass hard disk as SATA.
- To Disable the “Found New Hardware” popups for drivers that you no longer have access to, add the following registry item:
- https://web.archive.org/web/20201021110316/https://www.computertechblog.com/how-to-disable-the-found-new-hardware-wizard-in-windows-xp/
- Not: Different Parameters if x86 or x64 system
- https://web.archive.org/web/20201021110316/https://www.computertechblog.com/how-to-disable-the-found-new-hardware-wizard-in-windows-xp/
Windows Server 2000 Migration
- https://web.archive.org/web/20071110211033/http://www.motherboard.windowsreinstall.com/problems.htm
- Option 2: - https://www.biermann.org/philipp/STOP_0x0000007B/
- https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#Windows_systems_specific_P2V_issues
- https://pve.proxmox.com/wiki/Windows_2003_guest_best_practices
Migrating Windows Server 2000 to ProxMox
- Booted Macrium rescue iso from the VmWare Plum VM, and made a system image back to \Teak\Macrium, then created a VM on ProxMox with all the normal settings, booted into Macrium Rescue SERVER edition, WPE 4.0, 32 bit, restored the image file, then while still within the backup media, clicked through the “redeploy to new hardware” options.
- Without the “redeploy to new hardware” through Macrium, the VM gives a bluescreen and boot loops
- ProxMox Drive Settings:
- SCSI Controller: VirtIO SCSI
- Main Drive: BUS/DEVICE: IDE, Cache: Write back
- After booting into Windows 2003, go to COmputer > right click on white part and Properties > Hardware > Device Manager > Right click on each missing driver and install the driver from virtIO CD. Use the “Search CD/DVD automatically” option PCIE Device = virtIO Balloon Driver
- ProxMox Drive Settings:
- Without the “redeploy to new hardware” through Macrium, the VM gives a bluescreen and boot loops
- More infor: https://pve.proxmox.com/wiki/Windows_2003_guest_best_practices
Last updated on July 19, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Office365 Office Suite - Installation & Configuration
an ODT Config file is used for deploying Office365 installations through Windows Toolbox - Windows Setup Script
ODT (Office Deployment Tool)
Basic Usage: - https://support.microsoft.com/en-us/office/use-the-office-offline-installer-f0a85fe7-118f-41cb-a791-d59cef96ad1c#OfficePlans=signinorgid
Exclude Applications: - https://answers.microsoft.com/en-us/msoffice/forum/all/installing-only-particular-office-365-programs/9ebb27d4-1084-42e7-b84a-c5dd76e9232c
Sharepoint Excel Desktop Shortcut
“C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE” “sharepointURLHERE”
Microsoft Projects
- Microsoft projects has it’s own standalone installer that downloads and installas the latest version of the application when it’s run
- Local version can be found at:
\\smb\Toolbox\Installs\Projects\MicrosoftOfficeProjectSetup.exe
- Since the application doesn’t have any options that you need to select, you can install it remotely through powershell or CMD through MeshCentral by just running the full filepath through Terminal. It wiill silently download and install projects with no user intervention required.
- Local version can be found at:
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Running Unraid as a Proxmox VM
- Unraid is meant to be run on bare metal.
- It is installed to a USB Flash drive and the license key is tied to the USB device ID. is installed. The system is then booted from that flash drive into RAM.
- It turns out it’s not difficult at all to run it as a VM though, all you have to do is pass through the Unraid USB drive to a Proxmox VM (Setup as Linux VM), and use a passed through LSI card if you want to have Unraid manage your drives
- Passing through motherboard connected drives directly to the VM does not work. Reason
- You CAN pass through a SATA controller to the VM to directly pass through the drives, but unless your motherboard has multiple SATA controllers, this isn’t an option because Proxmox is most likely utilizing the controller already for your boot/system drive.
- Next option is a PCIE HBA Card, eg: LSI 9207-8i 8 Port 6Gb/s SATA/SAS PCIe 3.0 x8 HBA
- Bought in 2023 and has been working without issues so far
- Motherboard needs to support IOMMU for this to work. GUIDE
VM Setup Options
- After creating the VM, make sure to remove the Hard Disk drive as it’s not needed for Unraid.
Options
HBA Card
Passthrough Unraid USB
Passthrough HBA Card with Drives Attached
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Testing Read/Write Speed Linux using dd
- https://www.baeldung.com/linux/disk-performance-test
Testing Sequential Write Speed
dd if=/dev/zero of=/DIRECTORYTOTEST/ bs=1M count=1024 conv=fdatasync
Preview:
Testing Read Speed
# clear buffer cache
sudo sh -c "/usr/bin/echo 3 > /proc/sys/vm/drop_caches"
dd if=/DIRECTORYTOTEST/ of=/dev/null bs=1M count=1024
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Trust Relationship Failed on AD Windows 11
Problem:
After restoring a Proxmox VM snapshot, or restoring a desktop from a Macrium backup, the Active Directory integration gets broken and user gets a The trust relationship between this workstation and the primary domain failed
error when trying to log in.
Fix
Logon to the VM using a local admin account and run powershell and execute
- https://stackoverflow.com/questions/24775796/hyper-v-rollback-with-login-error-the-trust-relationship-between-this-workstati
Reset-ComputerMachinePassword -Server WSERVER -Credential yuriy@zinchuk.home ; shutdown /r /t 0 /f
Reset-ComputerMachinePassword -Server [MyDomainController] -Credential [MyDomain\administrator]
Fix 2
Instead of removing and readding, try this. Might save some time. This can be pushed out through a RDM like MeshCentral RDM
Test-ComputerSecureChannel -Verbose -Repair -Credential yuriy@zinchuk.home
Then Reboot
https://www.reddit.com/r/sysadmin/comments/11922e5/the_trust_relationship_between_the_workstation/j9kc08k/
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
UniFi L2TP VPN - Setup & Config
Windows 11 BUG - VERY SLOW Internet Speed while VPN is Connected
- Ran into this issue recently after a user called me on their work from home day using their newly setup laptop complaining of unusable internet speed while their VPN was connected.
- After doing a bit of research it seems like this is a recent but also a slightly recurring Windows 11 bug
- Individual Device Fix: services.msc -> Routing and remote access -> change “start type” to Automatic (Delayed start) and click “Start” while in the user’s account SOURCE
- Group Policy Fix(I ended up pushing this policy to all laptop devices without any issues): - Enable Routing and Remote Access to start automatically through System Services:
- Possible other solution: Delete MiniWAN driver for L2TP VPN in device manager: - https://old.reddit.com/r/Windows11/comments/patot6/vpn_and_slow_speeds/hepti4t/
How to Setup UniFi VPN on UDM Pro
- https://lazyadmin.nl/network/unifi-vpn/
Disable VPN Credentials For Network Resources
By default L2TP/IPSEC VPNs will try to use the VPN credentials for network resources like network shares. If you are not using Radius authentication with AD, you will need to disable this in the user’s VPN config file so the user’s login AD credentials get used instead of the VPN credentials.
- https://serverfault.com/questions/322235/do-not-use-vpn-credentials-to-connect-to-network-resources
- Open Windows Run and open the following folder:
%userprofile%\AppData\Roaming\Microsoft\Network\Connections\PBK
- Edit
rasphone.pbk
and changeUseRasCredentials=1
toUseRasCredentials=0
- If you do not do this, Windows will keep using the VPN credentials to connect to any network shares the user has mounted and will lock out the user’s AD account.
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Windows XP - Disable Prompt to install new Hardware Wizard
Here is a “quick & dirty” way to get rid of the “Found New Hardware Wizard” if it’s popping up at every re-boot. I stumbled into this solution, even though when I searched a good bit for help, I never saw it.
Next time the Wizard pops up, go through the motions AS IF you were going to install the drivers.
At the first screen, pick “No, not this time” (as in don’t check with Microsoft for the drivers).
At the second screen, pick “Install from a specific location (as in don’t start searching the computer for the driver).
At the third screen, DE-select “Search removable media” and just below that, specify a folder on the computer that is EMPTY. This will cause the installation to immediately FAIL.
The fourth/failure screen – titled “Cannot Install This Software” – is the payoff. At the bottom of that screen, check off the box that says “Don’t prompt me again to install this software.” Click the Finish button.
- https://superuser.com/questions/323391/how-can-i-disable-the-new-hardware-found-message-on-windows
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Contents
Click on a link in the list below to go to that page:
- Android & ADB
- Arch Linux Configurations
- Autohotkey - Configuration
- Bitwarden Password Manager
- Blue Iris & Reolink Security Cameras
- Boot Linux into CLI or GUI by Default
- Chocolatey Package Manager
- CopyQ
- Flameshot
- Jumpapp
- KDE Dolphin
- KDE Plasma Configuration
- Keymapper - Linux
- Librewolf & Firefox
- LineageOS on OnePlus 7 Pro
- Local Pacman Mirror Cache
- Pacman & Paru Commands Reference
- ProxMox Notes, Settings & Solutions to Issues
- ShareX
- Sublime Text
- Voidtools Everything
- XYplorer File Manager
- irFanView
Android & ADB
ADB Commands
- Install an APK file
adb install APKFILENAME
- Reinstall/update app
adb install -r APKFILENAME
- Uninstall an app
adb uninstall PACKAGENAME
- Disable an APP
pm disable NAMEOFPACKAGE
- List all enabled apps, filter by “calculator”:
pm list packages -e | grep 'calculator'
- List all disabled apps
pm list packages -d
- Get information about device and settings through ADB
- https://technastic.com/adb-shell-commands-list/
Android Intents
- https://android.stackexchange.com/questions/23687/finding-out-the-intents-an-app-uses-internally
You can use adb to check what intents an app uses. The steps to do this are:
Enable developer options
Under developer options turn on adb debugging
Connect phone to computer
Get adb logs and grep out intents: adb logcat | fgrep -i intent
Trigger the intent on your phone
Inspect logs to find the details of the intent
disable IPV6
- https://github.com/ukanth/afwall/wiki/CustomScripts#important-notes-about-ipv4-and-ipv6-differences
If you do not need IPv6 or your provider does not support it (native) you can just disable it via net.ipv6.conf.all.disable_ipv6=1 in your build.prop or better in your sysctl.conf file which will be applied right after the boot.
Last updated on July 15, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Arch Linux Configurations
Software Configurations
Fixing Mouse Cursor
- https://forum.endeavouros.com/t/why-is-mouse-scroll-wheel-sensitivity-speed-so-exotic-in-linux/32885/10
FSearch
- Enable background index update
- https://github.com/cboxdoerfer/fsearch/wiki/Database-update
Set Default Grub Selection
- https://wiki.archlinux.org/title/GRUB#Dual-booting
sudo nano /etc/default/grub ; sudo grub-mkconfig -o /boot/grub/grub.cfg
Change Sudo Timeout
sudo visudo
# Add underneath header comments
# change sudo timeout for yuriy user
Defaults:yuriy timestamp_timeout=30
bashrc soft link to Syncthing Folder
- Create a soft link to the .bashrc file in the syncthing config folder so it can easily be synced to other clients
- https://stackoverflow.com/questions/1951742/how-can-i-symlink-a-file-in-linux
d $USER/Syncthing/Configurations/bashrc/.bashrc /home/yuriy/.bashrc
Install Chaotic AUR
- https://aur.chaotic.cx/
Enable SSH
- https://tuxfixer.com/configure-ssh-service-in-manjaro-linux/
sudo systemctl enable sshd.service ; sudo systemctl start sshd.service
Cron
- https://www.simplified.guide/linux/automatically-run-program-on-startup
Re-Insert Windows 10 into Grub after Arch Install
- https://forum.manjaro.org/t/windows-10-has-disappeared-from-grub-menu/57450/7
- https://unix.stackexchange.com/questions/111889/how-do-i-update-grub-in-arch-linux
nano /etc/default/grub
# set:
GRUB_DISABLE_OS_PROBER=false
# update grub config
grub-mkconfig -o /boot/grub/grub.cfg
Run Script on Sleep/Wake from Sleep
- https://wiki.archlinux.org/title/Power_management#Hooks_in_.2Fusr.2Flib.2Fsystemd.2Fsystem-sleep
Disable TLP
sudo nano /etc/tlp.conf
# change TLP_ENABLE to 0
Misc Configurations
- Make sudo timeout longer in terminal
- https://www.tecmint.com/set-sudo-password-timeout-session-longer-linux/
- Change Default Display/Login Manager
- https://fostips.com/change-login-manager-ubuntu-debian-fedora-arch-linux/
Install and Enable Bluetooth
- https://forum.endeavouros.com/t/so-why-doesnt-bluedevil-install-with-kde-plasma/26787/4
- Install bluedevil, set to auto start on boot, edit config file and enable autoenable and then restart the service
sudo pacman -Syu bluedevil ; sudo systemctl enable bluetooth ; sudo nano /etc/bluetooth/main.conf ; sudo systemctl restart bluetooth
# Uncomment #AutoEnable=true to: AutoEnable=true
Last updated on August 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Autohotkey - Configuration
Symlink Documents\Autohotkey
- I use syncthing to sync all my files between my devices, including all the misc autohotkey libraries i use.
mklink /D C:\Users\yuriy\Documents\Autohotkey C:\Users\ity\Syncthing\Scripts\AutoHotKey
This way autohotkey scripts check my syncthing Authotkey lib folder for libraries instead of \Documents\Autohotkey\Lib, and i don’t have to constantly sync the two folders with each other.
Dark Theme for autohotkey.chm
- Changing the autohotkey Documentation theme to a dark theme does not save it to the settings file, only sets the theme for the current instance.
- When trying to save it you will receive an ActiveX Error, and then a failure due to chm not being run as administrator.
- Fix: Copy
chm_config.js
to the following location:C:\Program Files\AutoHotkey\chm_config.js
- chm_config.js
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Bitwarden Password Manager
Bitwarden is a fantastic password manager for personal and business environements; the ability to share passwords with other employees/groups, and also send self destructing notes is so much more secure than sticky notes / printouts / sharing credentials over chat platforms.
Disabling Auto Updates Nag:
- On Startup, Bitwarden will show a popup prompting users to install an update if there is one available, but to actually install the update the user needs admin privilages.
- This is a useless nag that cannot be disabled any doesn’t provide any benefit at all when Bitwarden is installed/automatically pushed out through Chocolatey.
- The below workaround disables the ability for Bitwarden to auto download updates itself, which will also ensure the “install update” popup will not appear anymore.
- This workaround is automatically put into place whenever Bitwarden is installed through the Windows Toolbox Setup Script
Windows [Source]
Delete (if exists) the following folder
C:\Users\%username%\AppData\Local\bitwarden-updater
Then re-create it as a write-protected empty file instead.
Now Bitwarden won't be able to update itself.
Automatically using powershell:
# Get the current user's username
$username = [Environment]::UserName
# Define the folder path to delete/recreate
$folderPath = "C:\Users\$username\AppData\Local\bitwarden-updater"
# Check if the folder exists
if (Test-Path -Path $folderPath) {
# Delete the folder if it exists
Remove-Item -Path $folderPath -Recurse -Force
}
# Create the folder as a write-protected empty file
New-Item -Path $folderPath -ItemType File -Force
Set-ItemProperty -Path $folderPath -Name IsReadOnly -Value $true
Last updated on August 16, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Blue Iris & Reolink Security Cameras
Blue Iris NVR Configuration
- Network Settings > Port Number: 808 -Change this from the default 80 so there is no web UI reachable by default if someone visits the IP address. This forces all the traffic through NGINX Reverse Proxy with SSL Encryption.
- Remote WAN access set to 0.0.0.0 as there is no need for cameras to be accessed through WAN
- Blue Iris background service has to be registered with windows local admin account, domain admin doens’t work. Source
Blue Iris Web Interface
URL Parameters Several URL parameters can change UI3’s startup behavior.
Parameter | Effect | Example |
---|---|---|
maximize=1 | UI3 loads with the left and top control bars hidden. | ui3.htm?maximize=1 |
tab=live | The “Live” tab is loaded. | ui3.htm?tab=live |
tab=alerts | The “Alerts” tab is loaded. | ui3.htm?tab=alerts |
tab=clips | The “Clips” tab is loaded. | ui3.htm?tab=clips |
group=groupname | The group with the specified name is loaded. | ui3.htm?group=index |
cam=shortName | The camera with the specified “Short name” is loaded. | ui3.htm?cam=porch |
eg: http://cameras.wmpco.biz/ui3.htm?t=live&maximize=1
Networking
Reolink Camera Settings (Web UI)
- For Maximum compatability and best performenace on the Blue Iris server, set the following settings:
- Camera > Display > Watermark > OFF
- Camera > Display > Date & Time > Show
- Camera > Display > Camera Name > Hide (Optional)
- Camera > Stream > Fixed Frame Rate > On, Fluency First
- Camera > Stream > Frame Rate (FPS) > 15
- Camera > Stream > Max Bitrate (Kbps) > 4096
- Camera > Fluent > Frame Rate (FPS) > 10
- Camera > Stream > Max Bitrate (Kbps) > 1024
- Camera > Info > Camera Name > RSC-## (Optional)
- Network Settings > Avanced > Enable UID > OFF (Reolink Mobile App Access)
- Network Settings > Avanced > Port Settings >
- RTSP > ON > (Port 554)
- ONVIF > ON > (Port 8000)
- System > User Management > Change Password > Set custom Password
RLC-811A
Adding Reolink to Blue Iris: https://www.youtube.com/watch?v=cuLpDo-TVK8
Substreams
Ultra Wide Angle Camera
https://www.amazon.com/REOLINK-Security-Ultra-Wide-Detection-Duo/dp/B0B2P9RL53/144-4656760-4503224
Last updated on July 09, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Boot Linux into CLI or GUI by Default
- Boot systemd based Linux into CLI instead of GUI to minimize CPU/RAM usage, but also have the option of booting up the Desktop Environment if you need it.
- https://unix.stackexchange.com/questions/90554/how-to-boot-linux-to-command-line-mode-instead-of-gui
Switch The Current Session
# Switch current session to tty (virtual console)
sudo systemctl isolate multi-user.target
# Switch current session to GUI
sudo systemctl isolate graphical.target
Set Default Session Type For Boot
# Set tty as default boot (virtual console)
sudo systemctl set-default multi-user.target
# Set GUI as default boot
sudo systemctl set-default graphical.target
NOTE: Secondary Networks will not work by default in KDE Plasma in multi-user.target until you log in, need to change the following:
- You need to set the “All users may connect to this network” option in Network Settings for that network.
- https://superuser.com/questions/16090/how-to-force-networkmanager-to-make-a-connection-before-login
Resource Usage Comparison
- Using Plasma KDE desktop evironment
Last updated on July 09, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Chocolatey Package Manager
General
- Chocolatey is a command line Windows software management tool (similiar to Debian’s ‘’’apt’’’ and Arch Linux’ ‘’’pacman’’’)
- https://community.chocolatey.org/courses/getting-started/how-to-use
Installation
- https://chocolatey.org/install
Usage
- Search for available packages:
- https://community.chocolatey.org/packages
choco search PROGRAMNAME
- to install a program
choco install PROGRAMNAME
To uninstall:
choco uninstall PROGRAMNAME
To update all installed software without confirmations
choco upgrade all -y
Chocolatey Auto Updates
- https://community.chocolatey.org/packages/choco-upgrade-all-at
- This package is installed on all new computers when they are setup, using the Windows Toolbox - Windows Setup Script
choco install choco-upgrade-all-at --params "'/WEEKLY:yes /DAY:SUN /TIME:01:00 /ABORTTIME:05:00'"
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
CopyQ
Sending image to Clipboard
- https://copyq.readthedocs.io/en/latest/writing-raw-data.html#writing-raw-data
cat /home/yuriy/Syncthing/DCIM-Personal/2024-08-31-17-39-07-217.jpg | copyq tab clipboard write image/png -
General
- Disable items I don’t use from tray menu
- Set Tray Menu Hotkey
- Set History Length to 9999
Sync Clipboard between devices
- https://github.com/hluk/CopyQ/issues/618
Sync Config Between Devices
- Soft Link the copyQ config so it can be synced between devices with Syncthing
Windows
# delete original folder
rd /S /Q "C:\Users\yuriy\AppData\Roaming\copyq"
# create junction to Syncthing configurations
mklink /J "C:\Users\yuriy\AppData\Roaming\copyq" "C:\Users\yuriy\Syncthing\Configurations\CopyQ"
Linux
rm ~/.config/copyq/copyq.conf && ln -s ~/Syncthing/Configurations/CopyQ/Linux-Config/copyq.conf ~/.config/copyq/copyq.conf
Last updated on September 12, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Flameshot
Automatic Accept on Region Selection
- https://github.com/flameshot-org/flameshot/issues/1920
--accept-on-select
Syncing Flameshot Configuration between Devices
Linux
- Remove current flameshot config and soft link the Syncthing’d flameshot config to the .config folder
rm ~/.config/flameshot/flameshot.ini && ln -s ~/Syncthing/Configurations/flameshot/flameshot.ini ~/.config/flameshot/flameshot.ini
Adding Window Title to Screenshot Filename
- Flameshot does not and will not support this natively: https://github.com/flameshot-org/flameshot/issues/100
- Workaround: use
xdotool getwindowfocus getwindowname
to get window name and then pass that in as an argument when activating flameshot through Keymapper - Linux
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
irFanView
Super snappy and lightweight image viewer for Windows. Faster than any other image viewer i’ve tested.
Scripting with Autohotkey
- Command Line Scripting: https://www.etcwiki.org/wiki/IrfanView_Command_Line_Options
- Utilizing the filepath of the image in the title of the window, we can run different actions on the currently open photo, for example, opening up the current photo in GIMP.
#IfWinActive, ahk_exe i_view64.exe
!E:: ; Alt + E
!O:: ; Alt + O
^P:: ; Control + P
WinGetTitle, ActiveWindowTitle, A
FileFilepath := StrSplit(ActiveWindowTitle, " - IrfanView")[1]
if(A_ThisHotkey = "!e"){ ; open file in GIMP
run, "C:\Program Files\GIMP 2\bin\gimp-2.10.exe" "%FileFilepath%"
Return
}
if(A_ThisHotkey = "^p"){ ; copy image filepath to clipboard
Clipboard := FileFilePath
Return
}
if(A_ThisHotkey = "~!O"){ ; Activate file in XyPlorer
run, "C:\Program Files (x86)\XYplorer\XYplorer.exe" "%FileFilePath%"
Return
}
#If
Settings
-
Enable Full Filepath in title bar so it can be used for scripting with autohotkey
-
Usability Settings:
Configuration File Location
- C:\Users\me\AppData\Roaming\IrfanView\i_view64.ini
Sync Settings between Computers
mklink "C:\Users\yuriy\AppData\Roaming\IrfanView\i_view64.ini" "C:\Users\yuriy\Syncthing\Configurations\irFanView\i_view64.ini"
Plugins
PlugIns are installed into IrfanView "PlugIns" directory
C:\Program Files\IrfanView\Plugins
Last updated on July 20, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Jumpapp
The primary tool used for Run Or Raise Applications with Keyboard Shortcuts #linux
jumapp with Flatpak
- https://github.com/mkropat/jumpapp/issues/55
Create a bash script in your path file:
sudo touch /usr/bin/discord
sudo chmod 777 /usr/bin/discord
sudo nano /usr/bin/discord
- Place the following in the file:
#!/bin/bash
nohup flatpak run com.discordapp.Discord </dev/null >/dev/null 2>&1 &
jumpapp discord
should now work
Non-Installed Apps
-
Since jumpapp is a wrapper for
wmctrl
, you can activate applications usingwmctrl -a "WINDOW TITLE"
if you can’t get jumpapp to work. -
Check if Application open, and run it if not with wmctrl, and maximize it after launching
#!/bin/bash
# Set the application name
app="Firefox"
# Check if window with that name exists
if wmctrl -l | grep -q "$app"; then
# If yes, activate it
wmctrl -a "$app"
else
# If no, launch the app
/usr/bin/firefox &
wmctrl -r "firefox" -b add,maximized
fi
- One Liner to use with keymapper
wmctrl -a "APPNAME" 2>/dev/null || { PATHTOEXECUTABLE &>/dev/null & }; wmctrl -r "APPNAME" -b add,maximized
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
KDE Dolphin
Dolphin Config Files Location
- https://stackoverflow.com/questions/71307393/dolphin-kde-sidebar-config-file-location-for-backup-and-export
KDE-Dolphin main configuration:
~/.config/dolphinrc (stowed)
~/.local/share/kxmlgui5/dolphin
~/.local/share/dolphin/view_properties
~/.local/share/kxmlgui5/dolphin/dolphinui.rc.
KDE-Dolphin sidebar and bookmark configuration:
~/.local/share/user-places.xbel (stowed)
KDE-Dolphin keyboard shortcuts configuration:
~/.config/kdeglobals
~/.config/kglobalshortcutsrc
~/.config/khotkeysrc
Remember Display Style for Each Folder
Adjust the Default Settings:
KDE DBUS
I jumped down the KDE dbus rabbit hole recently, trying to figure out how to replicate some of my XYplorer File Manager automation flows in Linux with the Dolphin file manager.
paru -S qt6-tools-desktop
to install QT6 QDBUSViewer
Get All instances of dolphin
pgrep dolphin
or
qdbus6 org.kde.dolphin-*
to view all dbus connectable instances of dolphin
or
qdbus6 | grep 'dolphin'
to view all dbus connectable instances of dolphin
Get Objects
qdbus6 org.kde.dolphin-#####
to list the object paths available on Dolphin
The dolphin process number changes each time: org.kde.dolphin-####
, i need to get a list of dolphin processes and then use that process ID for the below commands instead of #####
-
Toggle Focus the terminal panel, if terminal is focused main window will be refocused
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/focus_terminal_panel org.qtproject.Qt.QAction.trigger
-
Copy Location of selected file:
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/copy_location org.qtproject.Qt.QAction.trigger
-
Trigger split view:
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/split_view org.qtproject.Qt.QAction.trigger
-
Open terminal HERE (cd current folder)
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/open_terminal_here org.qtproject.Qt.QAction.trigger
-
View details mode:
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/details org.qtproject.Qt.QAction.trigger
-
View ICONS mode:
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/icons org.qtproject.Qt.QAction.trigger
-
Sort by name (text)
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/sort_by_text org.qtproject.Qt.QAction.trigger
-
sort by modification time qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/sort_by_modificationtime org.qtproject.Qt.QAction.trigger
-
change the ascending/descending option for current column
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/ascending org.qtproject.Qt.QAction.trigger
-
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/descending org.qtproject.Qt.QAction.trigger
-
Undo closed tab
qdbus6 org.kde.dolphin-##### /dolphin/Dolphin_1/actions/undo_close_tab org.qtproject.Qt.QAction.trigger
https://freeaptitude.altervista.org/articles/playing-with-dbus-and-kde-applications-part-2.html
Available object paths:
qdbus6 org.kde.dolphin-46051
/
/FileUndoManager
/MainApplication
/Sessions
/Sessions/1
/Windows
/Windows/1
/dolphin
/dolphin/Dolphin_1
/dolphin/Dolphin_1/actions
/dolphin/Dolphin_1/actions/open_kcommand_bar
/dolphin/Dolphin_1/actions/hamburger_menu
/dolphin/Dolphin_1/actions/file_new
/dolphin/Dolphin_1/actions/new_tab
/dolphin/Dolphin_1/actions/add_to_places
/dolphin/Dolphin_1/actions/file_close
/dolphin/Dolphin_1/actions/file_quit
/dolphin/Dolphin_1/actions/edit_undo
/dolphin/Dolphin_1/actions/edit_cut
/dolphin/Dolphin_1/actions/edit_copy
/dolphin/Dolphin_1/actions/edit_paste
/dolphin/Dolphin_1/actions/copy_to_inactive_split_view
/dolphin/Dolphin_1/actions/move_to_inactive_split_view
/dolphin/Dolphin_1/actions/show_filter_bar
/dolphin/Dolphin_1/actions/toggle_filter
/dolphin/Dolphin_1/actions/edit_find
/dolphin/Dolphin_1/actions/toggle_search
/dolphin/Dolphin_1/actions/toggle_selection_mode
/dolphin/Dolphin_1/actions/toggle_selection_mode_tool_bar
/dolphin/Dolphin_1/actions/edit_select_all
/dolphin/Dolphin_1/actions/invert_selection
/dolphin/Dolphin_1/actions/split_view
/dolphin/Dolphin_1/actions/split_view_menu
/dolphin/Dolphin_1/actions/popout_split_view
/dolphin/Dolphin_1/actions/split_stash
/dolphin/Dolphin_1/actions/view_redisplay
/dolphin/Dolphin_1/actions/stop
/dolphin/Dolphin_1/actions/editable_location
/dolphin/Dolphin_1/actions/replace_location
/dolphin/Dolphin_1/actions/go_back
/dolphin/Dolphin_1/actions/undo_close_tab
/dolphin/Dolphin_1/actions/go_forward
/dolphin/Dolphin_1/actions/go_up
/dolphin/Dolphin_1/actions/go_home
/dolphin/Dolphin_1/actions/compare_files
/dolphin/Dolphin_1/actions/open_preferred_search_tool
/dolphin/Dolphin_1/actions/open_terminal
/dolphin/Dolphin_1/actions/open_terminal_here
/dolphin/Dolphin_1/actions/focus_terminal_panel
/dolphin/Dolphin_1/actions/options_show_menubar
/dolphin/Dolphin_1/actions/options_show_statusbar
/dolphin/Dolphin_1/actions/options_configure_keybinding
/dolphin/Dolphin_1/actions/options_configure
/dolphin/Dolphin_1/actions/activate_tab_0
/dolphin/Dolphin_1/actions/activate_tab_1
/dolphin/Dolphin_1/actions/activate_tab_2
/dolphin/Dolphin_1/actions/activate_tab_3
/dolphin/Dolphin_1/actions/activate_tab_4
/dolphin/Dolphin_1/actions/activate_tab_5
/dolphin/Dolphin_1/actions/activate_tab_6
/dolphin/Dolphin_1/actions/activate_tab_7
/dolphin/Dolphin_1/actions/activate_tab_8
/dolphin/Dolphin_1/actions/activate_last_tab
/dolphin/Dolphin_1/actions/activate_next_tab
/dolphin/Dolphin_1/actions/activate_prev_tab
/dolphin/Dolphin_1/actions/show_target
/dolphin/Dolphin_1/actions/open_in_new_tab
/dolphin/Dolphin_1/actions/open_in_new_tabs
/dolphin/Dolphin_1/actions/open_in_new_window
/dolphin/Dolphin_1/actions/open_in_split_view
/dolphin/Dolphin_1/actions/create_dir
/dolphin/Dolphin_1/actions/renamefile
/dolphin/Dolphin_1/actions/movetotrash
/dolphin/Dolphin_1/actions/deletefile
/dolphin/Dolphin_1/actions/delete_shortcut
/dolphin/Dolphin_1/actions/duplicate
/dolphin/Dolphin_1/actions/properties
/dolphin/Dolphin_1/actions/copy_location
/dolphin/Dolphin_1/actions/basic_actions
/dolphin/Dolphin_1/actions/icons
/dolphin/Dolphin_1/actions/compact
/dolphin/Dolphin_1/actions/details
/dolphin/Dolphin_1/actions/view_mode
/dolphin/Dolphin_1/actions/view_zoom_in
/dolphin/Dolphin_1/actions/view_zoom_reset
/dolphin/Dolphin_1/actions/view_zoom_out
/dolphin/Dolphin_1/actions/zoom
/dolphin/Dolphin_1/actions/show_preview
/dolphin/Dolphin_1/actions/folders_first
/dolphin/Dolphin_1/actions/hidden_last
/dolphin/Dolphin_1/actions/sort_by_text
/dolphin/Dolphin_1/actions/sort_by_size
/dolphin/Dolphin_1/actions/sort_by_modificationtime
/dolphin/Dolphin_1/actions/sort_by_creationtime
/dolphin/Dolphin_1/actions/sort_by_accesstime
/dolphin/Dolphin_1/actions/sort_by_type
/dolphin/Dolphin_1/actions/sort_by_rating
/dolphin/Dolphin_1/actions/sort_by_tags
/dolphin/Dolphin_1/actions/sort_by_comment
/dolphin/Dolphin_1/actions/Document
/dolphin/Dolphin_1/actions/Image
/dolphin/Dolphin_1/actions/Audio
/dolphin/Dolphin_1/actions/Video
/dolphin/Dolphin_1/actions/Other
/dolphin/Dolphin_1/actions/sort
/dolphin/Dolphin_1/actions/ascending
/dolphin/Dolphin_1/actions/descending
/dolphin/Dolphin_1/actions/show_size
/dolphin/Dolphin_1/actions/show_modificationtime
/dolphin/Dolphin_1/actions/show_creationtime
/dolphin/Dolphin_1/actions/show_accesstime
/dolphin/Dolphin_1/actions/show_type
/dolphin/Dolphin_1/actions/show_rating
/dolphin/Dolphin_1/actions/show_tags
/dolphin/Dolphin_1/actions/show_comment
/dolphin/Dolphin_1/actions/Document
/dolphin/Dolphin_1/actions/Image
/dolphin/Dolphin_1/actions/Audio
/dolphin/Dolphin_1/actions/Video
/dolphin/Dolphin_1/actions/Other
/dolphin/Dolphin_1/actions/additional_info
/dolphin/Dolphin_1/actions/show_in_groups
/dolphin/Dolphin_1/actions/show_hidden_files
/dolphin/Dolphin_1/actions/view_properties
/dolphin/Dolphin_1/actions/lock_panels
/dolphin/Dolphin_1/actions/options_configure_toolbars
/org
/org/freedesktop
/org/freedesktop/FileManager1
/org/kde
/org/kde/dolphin
[yuriy@ELatitude14 Downloads]$
Last updated on September 12, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
KDE Plasma Configuration
Change screen timeout
Settings > Workspace Behavior > General Behavior > Screen Locking
Settings > Power Management > Energy Saving > Screen Energy Saving > Off
Disable Previous Session Restore
Settings > Startup and Shutdown > Desktop Session > Start with an empty session
Disable Baloo File Indexing
System Settings > Search > FIle Search > Enable File Search (Disable)
Disable system sounds:
- https://manurevah.com/blah/en/blog/Debian-KDE-Plasma—disable-system-sounds
sudo mv /usr/share/sounds/ /usr/share/no_sounds/
Enable Wifi Networking on Login Screen
- Allows fstab SMB mounts to be mounted automatically. WIll fail otherwise
KDE Shortcuts Location
- https://forum.kde.org/viewtopic.php?t=151477
~/.config/kglobalshortcutsrc
Synchronize KDE Global Shortcuts
rm "$HOME/.config/kglobalshortcutsrc" ; ln -s "$HOME/Syncthing/Configurations/KDE/kglobalshortcutsrc" "$HOME/.config/kglobalshortcutsrc"
Disable Titlebars in KDE Plasma
- https://medium.com/@CodyReichert/how-to-hide-title-bars-in-kde-plasma-5-348e0df4087f
- Go to System Settings > Window Management > Window Rules > New..
- Under Window class (application) choose Regular Expression from the drop down and enter
.*
in the input.- As of 2024/09/12, using
^(?!.*\bJoplin\b).*
instead. Joplin bugs out when not in full screen mode with no titlebar.
- As of 2024/09/12, using
- Click the “Add Property” Button. Enable the No titlebar and frame option.
- Select Force from the drop down click the Yes radio option.
Kwallet Configuration
Install kwalletmanager and setup classic blowfish encryption
https://docs.kde.org/trunk5/en/kwalletmanager/kwallet5/introduction.html
- Create a Kwallet named
kdewallet
, with blowfish encryption and same password as your login, and installpacman -S kwallet-pam
to auto unlock on login - Another solution: One solution is to install
kdewallet
, and the reset the password to no password.
OR
Disable KWallet Popup
- KWallet pops up when opening Chrome or Brave asking for authentication. (Used for encrypted password storage)
- Don’t care about using this as i’m not saving passwords within either of the applications
- Disable by: https://askubuntu.com/questions/47216/how-to-disable-kde-wallet
- edit kwalletrc:
nano ~/.config/kwalletrc
and then add:
[Wallet]
Enabled=false
Then Kill process with: pkill kdewallet5
Note that the passwords and other data stored in kwallet are completely unencrypted if you do this and that any malicious application with read access to your home folder can read everything that it wants. There is no workaround for that, the encryption key is derived from the password and with no password there is no encryption.
There are only three real options here:
Disable auto-login and set your kwallet password to the same as your user password so that SDDM can pass your password to kwallet when you login in order to unlock it. (MOST SECURE OPTION)
Leave auto-login disabled and have a kwallet password so that your secrets are at least encrypted. (Less secure option).
Leave auto-login disabled and disable the kwallet password leaving everything stored in kwallet completely exposed and unencrypted. (INSECURE OPTION)
Note that kwallet implements the SecretService API which means that a lot of applications use it to store various secrets and keys, including all Chromium browsers for example which use it to store the encryption key for their own secrets (so if you're using Chrome/Vivaldi/whatever's built in password manager that's now exposed too).
On KDE Plasma based system to make sure that wifi passwords get saved on reboot, make the following changes:
- https://askubuntu.com/questions/284770/how-to-disable-kde-wallet-and-have-remember-password-working
Go to the wifi settings in the network manager and change "Save password for this user only" > save password for all users
and input the network password above
Last updated on September 12, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Keymapper - Linux
Keymapper is a context-aware key remapper that can be used for system wide or per application shortcuts, it gives me a somewhat close experience to that of autohotkey’s system wide and context aware hotkeys.
-
https://github.com/houmain/keymapper
-
Symlink Keymapper config to Syncthing Folder
# Create symbolic link to configuration file in Syncthing Configs folder
ln -s /home/yuriy/Syncthing/Configurations/keymapper/keymapper.conf /home/yuriy/.config/keymapper.conf
# Enable & Start the keymapper daemon service
systemctl enable keymapperd ; systemctl start keymapperd
- Configuration Backup
#
# add mappings in context which is active when boss key is not pressed
#[modifier="!Boss"]
# map Capslock to Control
CapsLock{Control} >> CapsLock
CapsLock >> Control
[system="Linux" class="fsearch"]
Control{P} >> $(/home/yuriy/Syncthing/Configurations/keymapper/Shortcuts_Fsearch.sh "fullfilepath")
AltLeft{O} >> $(/home/yuriy/Syncthing/Configurations/keymapper/Shortcuts_Fsearch.sh "opendir")
AltLeft{E} >> $(/home/yuriy/Syncthing/Configurations/keymapper/Shortcuts_Fsearch.sh "edit")
#####################################
# Dolphin
[system="Linux" title="Dolphin"]
(Control){P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "getfilepath")
Control {Shift P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "getdir")
AltLeft{E} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "edit")
# AltLeft{C} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "chmod")
AltLeft{S} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "save")
#AltLeft{Z} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Dolphin.sh "zip")
#AltLeft{3} >> $(xdotool keydown ctrl key 1 keyup ctrl)
#AltLeft{1} >> $(xdotool keydown ctrl key 3 keyup ctrl)
#AltLeft{n} >> $(xdotool keydown alt key n keyup ctrl)
#####################################
# Sublime
# [system="Linux" title="Sublime Text"]
[title="Subl"]
#AltLeft{B} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "newbashscript")
# (Control AltLeft){B} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "newbashscriptnamed")
#AltLeft{P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "newpythonscript")
# (Control AltLeft){P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "newpythonscriptnamed")
AltLeft{O} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "opendir")
#AltLeft{I} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "reindent")
#AltLeft{O} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "opendir")
Meta{Z} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Sublime.sh "kosole-dir")
#####################################
# Kate
[system="Linux" title="Kate"]
(Control Shift){N} >> $(kate -n --start General &)
AltLeft{B} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/Shortcuts_Kate.sh "newbashscript")
(AltLeft Shift){B} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/Shortcuts_Kate.sh "backup")
AltLeft{P} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/Shortcuts_Kate.sh "newpythonscript")
(Control Shift){P} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/Shortcuts_Kate.sh "copyfilename")
#####################################
# Browsers
[system="Linux" title=/Librewolf|Chromium|Brave|FiredDragon/i]
(AltLeft){A} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "archiveorg")
AltLeft{B} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "brave")
AltLeft{Z} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "braveincognito")
AltLeft{W} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "librewolf")
(AltLeft Shift){C} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "chromium")
AltLeft{C} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "chromiumincognito")
#AltLeft{X} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "clipboardurl")
#AltLeft{M} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "mpv720")
#AltLeft{O} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "KDEConnectDeviceOne")
AltLeft{O} >> $(/home/yuriy/Syncthing/Python/Tools/Shortcuts_Browser.py "OP7")
(AltLeft Shift){O} >> $(/home/yuriy/Syncthing/Python/Tools/Shortcuts_Browser.py "S4")
#(AltLeft Shift){O} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "KDEConnectDeviceTwo")
AltLeft{Q} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "BrowserShortcutsMessage")
#AltLeft{W} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "closeothertabs")
AltLeft{Y} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ytdlp_video")
AltLeft(Shift){Y} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ytdlp_videokeepconsole")
AltLeft{U} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ytdlp_audio")
AltLeft(Shift){U} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ytdlp_audiokeepconsole")
AltLeft{ArrowRight} >> BrowserForward
AltLeft{ArrowLeft} >> BrowserBack
Control{D} >> (AltLeft Shift){L} # for bookmarking with linkding
AltLeft{D} >> (AltLeft Shift){L} # for bookmarking with linkding
AltLeft{7} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "OpenURL7Pro")
AltLeft{4} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "OpenURLS4")
AltLeft{T} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "telegram")
AltLeft{P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "wallabag")
AltLeft{Digit9} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ntfy-OP9")
AltLeft{Digit6} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_Browser.sh "ntfy-S6")
(Control Shift){W} >> (AltLeft Shift){W} # Close Other Tabs
#####################################
# General
[system="Linux"]
F3 >> $(jumpapp fsearch; wmctrl -r "fsearch" -b add,maximized)
#F4 >> $(konsole --hold -e everything; sleep .25 ; xdotool type "fo" ; xdotool key enter)
Meta{B} >> $(jumpapp -f brave)
Meta{C} >> $(jumpapp -f chromium)
(Meta AltLeft){C} >> $(chromium --incognito)
Meta{E} >> $(wmctrl -a "discord" 2>/dev/null || { 'com.discordapp.Discord' &>/dev/null & }; wmctrl -r "discord" -b add,maximized)
# Meta{E} >> $(flatpak run com.discordapp.Discord)
#Meta{G} >> $(wmctrl -a "OpenPlayground")
Meta{G} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "Poe")
Meta Shift{G} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "gitea-freedomain")
Meta{A} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "AdguardHome")
(Meta AltLeft){G} >> $(jumpapp -f gimp)
Meta{J} >> $(wmctrl -a "Joplin" 2>/dev/null || { "joplin-desktop" &>/dev/null & };)
Meta AltLeft{J} >> $(/home/yuriy/Executables/Joplin_Journal/Joplin-2.3.5.AppImage)
Meta{K} >> $(jumpapp -f keepassxc)
Meta AltLeft{L} >> $(systemctl suspend)
Meta Shift{T} >> $(jumpapp -f telegram-desktop)
(Meta AltLeft){N} >> $(jumpapp kate)
Meta{M} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "MeshCentral")
Meta{N} >> $(jumpapp -f subl)
Meta Shift{N} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "ntfy")
Meta{I} >> $(jumpapp -f kate)
(Meta AltLeft){I} >> $(~/Syncthing/Configurations/keymapper/Close_Windows.sh)
Meta{Q} >> $(jumpapp -f thunderbird)
(Meta AltLeft){S} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/GetActiveWindowTitle.sh)
(Meta Control){S} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/SetPermissionForBashAndPythonFiles.sh)
#Meta{S} >> $(jumpapp -f elisa)
Meta{S} >> $(jumpapp -f sonixd)
#Meta{S} >> $(jumpapp -f deadbeef)
Meta{T} >> $(wmctrl -a "sleek" 2>/dev/null || { "/home/yuriy/Executables/sleek-1.3.2-rc.1.AppImage" &>/dev/null & }; wmctrl -r "sleek" -b add,maximized)
Meta{P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "proxmox")
Meta Shift{P} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "Unraid")
Meta{H} >> $(~/Syncthing/Configurations/keymapper/Shortcuts_wmctrl.sh "home")
Meta{W} >> $(jumpapp -f librewolf)
Meta{X} >> $(jumpapp -f dolphin)
Meta{Z} >> $(jumpapp -f konsole)
#(AltLeft {1}) >> $(sh /home/yuriy/Syncthing/Bash/Testing/gscan_clickScanButton.sh)
#(AltLeft {2}) >> $(sh /home/yuriy/Syncthing/Bash/Testing/gscan_clearScans.sh)
#(AltLeft {S}) >> $(sh /home/yuriy/Syncthing/Bash/Testing/gscan_clicksave.sh)
AltLeft{X} >> $(dbus-send --type=method_call --dest=com.georgefb.quickaccess /QuickAccess com.georgefb.QuickAccess.showMenu)
(CapsLock){D} >> $(/home/yuriy/Syncthing/Scripts/Bash/Tools/Rofi/FolderLauncher/FolderLauncher.sh)
AltLeft{Home} >> $(python "/home/yuriy/Syncthing/Freedomtn/RandomPodcast/PodcastOfTheDay.py")
# PrintScreen >> $(ksnip -r)
F11 >> $(flameshot gui -p /home/yuriy/Syncthing/Pictures/Screenshots/ --pin)
PrintScreen >> $(flameshot gui -c --accept-on-select -p /home/yuriy/Syncthing/Pictures/Screenshots/)
Insert >> $(flameshot gui -c --accept-on-select -p /home/yuriy/Syncthing/Pictures/Screenshots/)
F10 >> $(flameshot gui -c --accept-on-select -p /home/yuriy/Syncthing/Pictures/Screenshots/)
LaunchApp2 >> $(flameshot gui -c --accept-on-select -p /home/yuriy/Syncthing/Pictures/Screenshots/)
# F10 >> $(flameshot -pin --accept-on-select -p /home/yuriy/Syncthing/Pictures/Screenshots/)
#148 >> $(flameshot gui -c -p /home/yuriy/Syncthing/Pictures/Screenshots/)
AltLeft{ArrowUp} >> $(qdbus org.kde.kglobalaccel /component/kmix invokeShortcut "increase_volume")
AltRight{ArrowUp} >> $(qdbus org.kde.kglobalaccel /component/kmix invokeShortcut "increase_volume")
AltLeft{ArrowDown} >> $(qdbus org.kde.kglobalaccel /component/kmix invokeShortcut "decrease_volume")
AltRight{ArrowDown} >> $(qdbus org.kde.kglobalaccel /component/kmix invokeShortcut "decrease_volume")
MediaTrackNext >> $(qdbus org.kde.kglobalaccel /component/mediacontrol invokeShortcut "nextmedia")
MediaTrackPrevious >> $(qdbus org.kde.kglobalaccel /component/mediacontrol invokeShortcut "previousmedia")
MediaPlayPause >> $(qdbus org.kde.kglobalaccel /component/mediacontrol invokeShortcut "playpausemedia")
AltLeft{ArrowUp} >> AudioVolumeUp
AltLeft{ArrowDown} >> AudioVolumeDown
AltLeft{ArrowRight} >> MediaTrackNext
AltLeft{ArrowLeft} >> MediaTrackPrevious
NumpadAdd >> AudioVolumeDown
NumpadSubtract >> AudioVolumeUp
# https://unix.stackexchange.com/questions/21089/how-to-use-command-line-to-change-volume
#AltLeft{ArrowUp} >> $(amixer set Master 5%+)
#AltLeft{ArrowDown} >> $(amixer set Master 5%-)
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Librewolf & Firefox
Userchrome
Finding Selectors for userchrome customization
- https://gist.github.com/gmolveau/a802ded1320a7591a289fb7abd0d6c45
Fix White Flash with userchrome
- No longer necessary on latest firefox versions
- https://gist.github.com/gmolveau/a802ded1320a7591a289fb7abd0d6c45
- make sure to enable
toolkit.legacyUserProfileCustomizations.stylesheets
Misc
KeePassXC Connection Fix
- https://gitlab.com/librewolf-community/browser/linux/-/issues/242
# soft link the mozilla folder to librewolf to fix keepass
ln -s ~/.mozilla/native-messaging-hosts ~/.librewolf/native-messaging-hosts
Enable Firefox Sync on Librewolf
- Enable firefox account through policies.json:
- /usr/lib/firedragon/distribution/policies.json and set disablefirefoxaccounts to false.
- https://www.reddit.com/r/LibreWolf/comments/nzsi8n/enabling_mozilla_sync/
- Edit /usr/lib/firedragon/firedragon.cfg
// change this for syncing to work lockPref("identity.sync.tokenserver.uri", "https://token.services.mozilla.com/1.0/sync/1.5"); // uncomment this to be able to isntall addons: defaultPref("privacy.resistFingerprinting.block_mozAddonManager", true); // change from true to false to fix youtube bars defaultPref("privacy.resistFingerprinting", false); // Set custom DNS server for DOH pref("network.trr.uri", "https://day2dayautomation.com");
if issue with session restore, see here:
- https://www.reddit.com/r/LibreWolf/comments/qooi6v/restore_previous_session_is_not_working/hju9gje/
Current Open Tabs Firefox File
- https://stackoverflow.com/questions/28995733/where-does-firefox-save-currently-open-tabs-on-disk
Addons Configuration
Temporary Containers
- General Settings:
- Advanced Settings:
- https://gitlab.com/librewolf-community/browser/linux/-/issues/229
- https://gitlab.com/librewolf-community/browser/linux/-/issues/229
Tree Style Tabs
-
Disable Trees
-
https://github.com/piroor/treestyletab
-
Make New Tabs Open at Top of Tree next to parent
-
Set shortcut for closing other tabs in
about:addons
Ublock Origin
- Disable block request count in icon, enable cloud storage, enable advanced user
- Enable Annoyances Blocklists:
Multi-Account Containers
Reference
- https://support.mozilla.org/en-US/kb/address-bar-autocomplete-firefox?redirectlocale=en-US&redirectslug=awesome-bar-search-firefox-bookmarks-history-tabs#w_changing-results-on-the-fly
Changing results on the fly
If you are looking for a specific type of result, like a bookmark or tag, you can speed up the process of finding it by typing in special characters after each search term in the address bar separated by spaces:
Add ^ to search for matches in your browsing history.
Add * to search for matches in your bookmarks.
Add + to search for matches in pages you've tagged.
Add % to search for matches in your currently open tabs.
Add # to search for matches in page titles.
Add $ to search for matches in web addresses (URLs).
Add ? to search for matches in suggestions.
For example, if you’re looking for a page you bookmarked called Mozilla Firefox Support, you might type mozilla. The autocomplete results appear, but might not show the page you want.
Last updated on July 31, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
LineageOS on OnePlus 7 Pro
Background
- Analytics about Everything you do: https://www.chrisdcmoore.co.uk/post/oneplus-analytics/
General
- Device Model: guacamole (guacamoleB is OP7)
Custom Roms
- https://wiki.lineageos.org/devices/guacamole/
- https://xdaforums.com/t/rom-14-0-0_r35-unofficial-evolution-x-9-0-05-28-2024.4673786/
- https://download.lineage.microg.org/guacamole/
Install ADB and fastboot software on arch linux:
sudo pacman -S android-tools
- boot into bootloader
adb reboot bootloader
- boot twrp image from bootloader
fastboot boot twrp.img
- Install a zip file through adb while in recovery:
adb sideload filename.zip
-
Install a custom Android 12 ROM
- https://forum.xda-developers.com/t/rom-12-official-arrowos-12-0-for-oneplus-7-pro.4355029/page-10#post-85935617
-
Magisk Installation:
- https://topjohnwu.github.io/Magisk/install.html#patching-images
-
Payload Dumper: https://github.com/vm03/payload_dumper
- Tool for getting the boot.img for patching with magisk
-
BlissROM Android 10 ROM: https://forum.xda-developers.com/t/rom-official-q-r41-blissroms-v12-11-7pro-08-21-20.3957341/
remove software Navigation Bar
Edit: /system/build.prop
and append to the end of the file:
qemu.hw.mainkeys=1
Last updated on September 13, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Local Pacman Mirror Cache
I use Arch Linux as the underlying OS for most of my self hosting services, and with it being a rolling release distro I pull down updates for those servers on a very regular basis. Instead of downloading from the internet for each server, I host a local Pacman cache on one of the servers that all the others use as a repository mirror.
- https://github.com/nroi/flexo
- caching proxy for pacman, the package manager of Arch Linux.
Installation
Adding to Mirrorlist
- Add server to mirror list with 1 command.
- Optional Checkbox in: Linux-Setup-Script
echo 'Server = http://10.0.0.101:7878/$repo/os/$arch' | sudo tee -a /etc/pacman.d/mirrorlist
- Add server to mirror list manually:
sudo nano /etc/pacman.d/mirrorlist
# Add somewhere on the list:
Server = http://10.0.0.101:7878/$repo/os/$arch
Testing
- Edit mirrorlist and remove all mirrors except the local flexo IP, and then do a system upgrade with Pacman
sudo nano /etc/pacman.d/mirrorlist
Last updated on July 14, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Pacman & Paru Commands Reference
Full System Update and Upgrade
# Update the system package lists and re-install keyrings only if needed
sudo pacman -Sy archlinux-keyring chaotic-keyring endeavouros-keyring --noconfirm --needed
# Update the system package lists and install all package updates without confirmation
paru -Syu --noconfirm --needed
# echo out number of packages stored in the cache:
echo $(sudo ls /var/cache/pacman/pkg/ | wc -l) packages in cache
# clear out paru/pacman caches for ALL installed/uninstalled packages
( echo "y"; echo "y" ) | sudo pacman -Scc
Update pacman packages with no confirmation
paru -Syu --noconfirm
--needed
is used to upgrade packages only if newer versions are available or if they are not already installed. This flag ensures that the system only downloads and installs necessary updates, saving time and bandwidth.
pacman -Sy
synchronizes the package database once a day
pacman -Syy
forces a complet synchronization regardless of the package database’s age. This is unnecessary most of the time.
pacman -Syy
: This command updates the package lists on the system. It synchronizes the local package database with the remote package repositories to ensure you have the latest version information. The extra “y” forces a refresh, even if the database is already up to date.
pacman -Syu
: This command updates the system packages to their latest versions. It synchronizes the package database as in the previous command, but it also upgrades all installed packages on the system to the latest available versions. The “-u” option is used to update all packages that are out-of-date.
pacman -Syu
updates the system packages along with the package lists.
Clean Paru/Pacman cache
- https://discovery.endeavouros.com/articles/root-partition-full-dont-panic-clear-pacmans-cache-first/2020/03/
- Same as Pacman command,but this also cleans out AUR packages
# Clear cache for uninstalled packages
paru -Sc
# Clean Paru/Pacman Cache for EVERY package
paru -Scc
# Clean cache without confirmation
# https://bbs.archlinux.org/viewtopic.php?id=236186
( echo "y"; echo "y" ) | sudo paru -Scc
Export packages to file / Install packages from file
# put all explicitly installed packages (minus AUR) into a file
# can be run as user
pacman -Qqe | grep -Fvx "$(pacman -Qqm)" > FILE
# get all installed packages including AUR
pacman -Qqe > /home/yuriy/Syncthing/Configurations/Pacman+Paru/$(hostname)_pacmanpkglist.txt
# Add to autostart script to automatically export whenever computer boots
/home/yuriy/Syncthing/Scripts/Bash/Tools/ExportPacmanpkglist.sh
# reinstall from said file (deps will be pulled in automatically)
# must run as root
sudo xargs paru -S --needed --noconfirm < FILE
Pacman is currently in use, please wait
- Pacman is locked, usually due to a reboot in the middle of updating
sudo rm /var/lib/pacman/db.lck
Use pacman to find which package provides a file
# Update Database
pacman -Fy
# Lookup package for file
pacman -F /usr/bin/qdbus
Results:
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
ProxMox Notes, Settings & Solutions to Issues
Proxmox CLI Quick Reference
Backup VM through CLI to a Proxmox Backup Server Storage
vzdump VMIDNUM -storage PBS-UNRAID
Force Shut Down Non-Responsive VM
# Option 1:
qm shutdown VMIDNUM --forceStop --skiplock
## Option 2: Really FORCE it
qm list
# And then:
kill -9 PROCESSIDFROMQMLIST
Unlock VM
- Happens if backup fails or gets cancelled ungracefully
- https://community.spiceworks.com/how_to/17877-proxmox-vm-locked
qm unlock VMNUMBER
Start Windows VM in safe mode
- F8 key while system is booting up
- If not working: possible workaround: https://forum.proxmox.com/threads/how-to-enter-safe-mode-in-windows-2003-f8-does-not-work.20031/
Best Practices and Performance Tweaks
Arch Linux (EndevourOS):
- No DE:
- EOS-Installer needs at least 2 GB ram to install, 10 GB of Storage for easy Swap creation (No Hibernate) (Arch will use up 5GB)
- When installing, set static IP through XFCE to save work later
- EOS-Installer needs at least 2 GB ram to install, 10 GB of Storage for easy Swap creation (No Hibernate) (Arch will use up 5GB)
- https://forum.proxmox.com/threads/cpu-type-host-vs-kvm64.111165/
- use HOST as CPU for better performance. (Keep in mind, VM will most likely CRASH after doing live migration due to hardware differences)
Windows:
- https://pve.proxmox.com/wiki/Performance_Tweaks
- https://pve.proxmox.com/wiki/Windows_10_guest_best_practices
- https://forum.proxmox.com/threads/cpu-type-host-vs-kvm64.111165/
- use HOST as CPU for better performance. (WILL possibly CRASH after doing live migrate though)
Install qemu-guest-agent on Ubuntu
- https://www.snel.com/support/nstall-qemu-guest-agent-for-debian-ubuntu/
sudo apt update && apt -y sudo install qemu-guest-agent
Expanding VM Storage
- Depending on the VM OS, the extra disk space can show up after the next reboot, or you will have to manually expand the partitions
- Windows and EndevourOS automatically recognize the extra disk space. You just have to expand it within Disk Management/gparted
- https://kb.vander.host/disk-management/how-to-enlarge-an-ext4-disk-on-an-ubuntu-proxmox-vm/
Changing VM IDs
- https://samuel.kadolph.com/2020/11/change-proxmox-vm-id-with-zfs-root-storage/
- Need to test if this works
VMWare ESXI Migration
- From VmWare ESXI, shutdown Virtual Machine, export is as a .ova template file to location ProxMox can access it, Extract the .ova file with 7zip to get contents and then import the .vmdk file to ProxMox virtual machine using steps:
- https://www.itsfullofstars.de/2019/07/import-ova-as-proxmox-vm/
qm importdisk VMIDNUM VMDKFILENAME.vmdk local-lvm -format qcow2
Disable “No Valid Subscription” pop-up on login on Testing Nodes
-
- https://www.reddit.com/r/Proxmox/comments/i4ogy2/comment/i1v7rin/?utm_source=share&utm_medium=web2x&context=3
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
Unable to Login to WebUI after changing node’s IP address
- Ran into this issue when i changed one of the node’s IP addresses. once the node rebooted, no longer able to login through WebUI. SSH worked fine though.
- https://forum.proxmox.com/threads/proxmox-ve-login-failed-please-try-again.55488/page-2
systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster
Get Sensor Info
- https://forum.proxmox.com/threads/temperature.67755/
apt install xsensors ; sensors
ZFS storage on root disk
Migrating Virtual Disks Between VMs
- https://dae.me/blog/2340/how-to-add-an-existing-virtual-disk-to-proxmox/
SMB/CIFS/SAMBA Share Mount Location
/mnt/pve/<STORAGE_ID>/
- https://pve.proxmox.com/wiki/Storage:_CIFS
ProxMox Networking
- View list of network cards and Status
ip -c a
permission denied - invalid PVE ticket (401) error
- Usually due to system time mismatches between nodes.
- https://forum.proxmox.com/threads/3-node-cluster-permission-denied-invalid-pve-ticket-401.56038/
- SSH into nodes having issue and restart following services:
systemctl restart pvedaemon pveproxy
Changing VM IDs
- https://samuel.kadolph.com/2020/11/change-proxmox-vm-id-with-zfs-root-storage/
- Need to test if this works
Replacing Failing/Failed Drive in ZFS Array
- https://blog.fahadusman.com/proxmox-replacing-failed-drive-in-zfs-pool/
Config Locations
Unknown option “Affinity” error when trying to increase Core/Socket count for VM
Parameter verification failed. (400)
delete: unknown option 'affinity'
Solution: Update all nodes in cluser and do a restart
- This is from a package version incompatability between nodes
- https://forum.proxmox.com/threads/unknown-option-affinity.119038/
Cannot Change Display Resolution for Windows VM in ProxMox
- If needing the ability to change display resolutions for Windows Virtual Machine, set Display to virtIO-GPU under Hardware
- Then install the virtio Display drivers through device manager. (Add virtio drivers as CD in VM hardware)
ProxMox Hard Disk Speed Comparisons (IDE/SATA/VIRTIO/VIRTIO SCSI)
Removing Proxmox Node From Cluster
- https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_remove_a_cluster_node
- https://forum.proxmox.com/threads/deleted-cluster-node-still-shows-up-in-my-gui.11614/
Sometimes the node will still appear in the GUI after it’s been deleted. To fix, delete it’s directory in
/etc/pve/nodes/
Last updated on July 09, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
ShareX
ShareX Deployment
https://github.com/ShareX/ShareX/issues/4460
- C:\Users\ity\Documents\ShareX\ApplicationConfig.json
"CustomScreenshotsPath": "%UserProfile%\\Pictures\\Screenshots",
"DisableUpload": true,
Installing Silently
- https://silentinstallhq.com/sharex-silent-install-how-to-guide/
Personal Settings
-
Export Config : Application Settings > Settings > Export/Import
-
Configuration File Location:
- C:\Users\yuriy\Documents\ShareX\ApplicationConfig.json
- Maybe sync with other devices through backuptool.ahk?
-
Application Settings > Integration >
- Show “Upload with ShareX” > YES
- Show “Edit with ShareX” > YES
-
Application Settings > Paths >
- Use Custom Screenshot Folder > C:\Software\Syncthing\Screenshots
- Sub Folder Pattern > BLANK
-
Application Settings > Advanced > AutoCheck Update > False
-
Task Settings > General > Play Sounds > NO
-
Task Settings > General > After Task Completed > Show Nothing
-
Task Settings > File Naming >
- Naming Pattern:
%y%mo%d_%h%mi%s_%pn
- Use window name pattern for region capture > YES
- Naming Pattern:
-
After Capture Tasks > Copy Image to Clipboard, Save Image to file
-
Capture > Show Cursor > NO
-
Fix Cursor issue when doing screen recording:
- https://github.com/rdp/screen-capture-recorder-to-video-windows-free/issues/56#issuecomment-306921671
-
Hotkeys:
Video Recording
Task Settings > Screen Recording > Install Recorder Devices
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Sublime Text
Syncing Sublime Keyboard Shortcuts between Devices
- I use syncthing to synchronize my keyboard configuration between devices so as my workflow changes and grows I don’t have to repeat the same configuration procedures on multiple devices.
Linux
ln -s "/home/yuriy/Syncthing/Configurations/Sublime/Keymap/Default (Windows).sublime-keymap" "/home/yuriy/.config/sublime-text/Packages/User/Default (Linux).sublime-keymap"
Windows
mklink "C:\Users\yuriy\AppData\Roaming\Sublime Text\Packages\User\Default (Windows).sublime-keymap" "C:\Users\yuriy\Syncthing\Configurations\Sublime\Keymap\Default (Windows).sublime-keymap"
Syncing Sublime Session
Session data is saved in: C:\Users\yuriy.zinchuk\AppData\Roaming\Sublime Text\Local
Can move it to Syncthing folder by creating a symlink:
# remove folder with:
rd /S /Q "C:\Users\yuriy.zinchuk\AppData\Roaming\Sublime Text\Local"
# create symlink junction (Preferred)
mklink /J "C:\Users\yuriy.zinchuk\AppData\Roaming\Sublime Text\Local" "C:\Users\yuriy.zinchuk\Syncthing\Configurations\Sublime\Sublime_Local"
# create folder symbolic link (Less used, but works with network locations)
mklink /d "C:\Users\yuriy.zinchuk\AppData\Roaming\Sublime Text\Local" "C:\Users\yuriy.zinchuk\Syncthing\Configurations\Sublime\Sublime_Local"
Packages
- Autohotkey
- Sublime-path-tools
- https://github.com/pjdietz/sublime-path-tools/blob/master/Context.sublime-menu
- PowerShell
Useful Features
- Control + D while word is selected, will highlight the next instance of the same word.
- Copy/Paste while multiple individual items are selected, will paste the multiple items.
Customized Hotkeys
mklink "C:\Users\ity\AppData\Roaming\Sublime Text\Packages\User\Default (Windows).sublime-keymap" "C:\Users\ity\Syncthing\Configurations\Sublime\Keymap\Default (Windows).sublime-keymap"
[
{ "keys": ["ctrl+shift+w"], "command": "close_all" },
{ "keys": ["alt+r"], "command": "build" },
{ "keys": ["alt+1"], "command": "toggle_comment", "args": { "block": false } },
{ "keys": ["alt+c"], "command": "toggle_comment", "args": { "block": false } },
{ "keys": ["alt+2"], "command": "toggle_comment", "args": { "block": true } },
{ "keys": ["alt+d"], "command": "duplicate_line" },
{ "keys": ["ctrl+shift+s"], "command": "prompt_save_as" },
{ "keys": ["alt+shift+s"], "command": "toggle_side_bar" },
{ "keys": ["ctrl+s"], "command": "save" },
{ "keys": ["alt+t"], "command": "save" },
{ "keys": ["f13"], "command": "save" },
{ "keys": ["alt+q"], "command": "wrap_lines" },
{ "keys": ["ctrl+alt+w"], "command": "close" },
{ "keys": ["ctrl+p"], "command": "copy_path" },
{ "keys": ["ctrl+shift+p"], "command": "copy_file_name" },
{ "keys": ["ctrl+alt+p"], "command": "copy_file_directory" },
{ "keys": ["ctrl+alt+shift+p"], "command": "show_overlay", "args": {"overlay": "command_palette"}},
]
Useful Packages
- https://www.tomordonez.com/sublime-text-typewriter-auto-scroll/
- Scrolls the page down automatically for you
- https://www.youtube.com/watch?v=xFciV6Ew5r4
- SidebarEnhancements
- BracketHighliter
- https://github.com/ahkscript/SublimeAutoHotkey
- More customizable than the one installed directly through package manager
Useful Hotkeys
- Open Package Palette (Control + Shift + P)
Hotkey Configuration File
C:\Users\me\AppData\Roaming\Sublime Text 3\Packages\User\Default (Windows).sublime-keymap
Last updated on July 17, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Voidtools Everything
A lightning fast Windows file search tool.
1.5 Alpha Version with Native Dark Theme
- https://www.voidtools.com/forum/viewtopic.php?f=12&t=9787
Scripting with Autohotkey
Uising the UI ID’s we can send commands to voidtools from autohotkey using SendMessage
- UI IDs for SendMessage and WM_COMMAND, and UI Objects for Controling with Autohotkey
- We can also grab the currently selected file’s information using WinGetText
Autohotkey Based Hotkeys Examples
#IfWinActive ahk_class EVERYTHING_(1.5a)
; close window
Escape::SendMessage, 0x111, 40011,,, ahk_class EVERYTHING_(1.5a)
; Focus search edit box
^f::SendMessage, 0x111, 42000,,, ahk_class EVERYTHING_(1.5a)
; Show details view
!1::SendMessage, 0x111, 40051,,, ahk_class EVERYTHING_(1.5a)
; Show large icon
!3::SendMessage, 0x111, 40053,,, ahk_class EVERYTHING_(1.5a)
!E:: ; edit file
!O:: ; open file's directory
^P:: ; Copy Filepath to Clipboard
^+P:: ; Copy File's Directory Filepath to Clipboard
^+c:: ; Copy Image to clipboard using XyPlorer action
; Grab the Window Text from voidtools Everything
; Gives us filepath, file size, file directory and date modified
WinGetText, WindowText , ahk_class EVERYTHING_(1.5a)
Filepath := StrSplit(WindowText, "`r")[1] ; pull out filepath from first line
SplitPath, FileFilePath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
If (A_ThisHotkey = "!O" OR A_ThisHotkey = "~!O" OR A_ThisHotkey = "^+c" )
{
run, "C:\Program Files (x86)\XYplorer\XYplorer.exe" "%FileFilePath%"
if(A_ThisHotkey = "^+c"){
sleep, 500
FunctionMessagetoXYplorer(115) ; copy image to clipboard
sleep, 250
FunctionMessagetoXYplorer(351) ; Close active tab in xyplorer
WinActivate, ahk_exe Everything64.exe
}
return
}
; Control + E - Edit Selected File
if(A_ThisHotkey = "!E" OR A_ThisHotkey = "~!E")
{
EditAFile(FileFilePath)
}
; Copy filepath to clipboard
if(A_ThisHotkey = "^P" OR A_ThisHotkey = "~^P")
{
Clipboard := FileFilePath
return
}
; Copy File Directory to Clipboard
if(A_ThisHotkey = "^+P" OR A_ThisHotkey = "~^+P")
{
Clipboard := OutFileName
return
}
return
#IfWinActive
Settings
Misc Settings
- Options > Indexes > NTFS > Automatically include new fixed volumes (OFF)
- Options > Indexes > NTFS > Automatically include new removable volumes (OFF)
- Options > Indexes > Network Drives > Automatically Include new mapped network drives (ON)
- Options > Indexes > Network Drives > Automatically remove offline mapped network drives (OFF)
Excludes
- These folders are never actually useful in the results. Always ignore them. Tools > Options > Indexes > Exclude
C:\Users\USERNAMEHERE\AppData\Roaming\Microsoft\Windows\Recent
C:\Windows\
C:\Windows\Prefetch
C:\Windows\WinSxS\
C:\Users\USERNAMEHERE\AppData\Local\Microsoft\
C:\$Recycle.Bin
Program settings are saved to:
C:\Users\yuriy\AppData\Roaming\Everything\Everything.ini
- Best way to sync settings between computers is to copy this file and then copy and paste line 464: exclude_folders from the previous version. Tried making an AHK script to constantly copy/paste the file between devices but was too buggy to work well.
Deployment
- Can be easily deployed with chocolatey install using
choco install -y everything
- By default Everything will index your C: drive, BUT nothing else, so if you want to index mounted network drives you will have to set up the settings on a test device and then copy the
everything.ini
configuration file to to all users using the following Powershell Script:
# Kill everything process before copying config file
Stop-Process -Name "Everything" -Force
$EverythingConfigDir = "C:\Users\" + ${env:USERNAME} + "\AppData\Roaming\Everything"
# copy config file to current user
Copy-Item "Everything.ini" -Destination "${EverythingConfigDir}\Everything.ini"
# copy to DEFAULT user so all future created profiles receive config
New-Item -Path "C:\Users\Default\AppData\Roaming\Everything\" -ItemType Directory
Copy-Item "${ParentFolder}\Everything\Everything.ini" -Destination "C:\Users\Default\AppData\Roaming\Everything\Everything.ini"
# Start up Everything, rescan all folders, insstall for all users and install the autostart service, and add everything to windows context menu
; Everything arguments: https://www.voidtools.com/support/everything/command_line_options/
& "C:\Program Files\Everything\Everything.exe" -rescan-all -install-all-users-start-menu-shortcuts -install-service -install-run-on-system-startup -install-folder-context-menu
Last updated on July 28, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
XYplorer File Manager
The BEST Windows File Manager.
- Split Window
- Tabs Support
- Scripting support natively, and from external libraries like Autohotkey
- User Customizable Toolbar with Scripts/Shortcuts
Syncing Configuration Between Computers
- XYplorer makes it super easy to set a custom directory where your configuration is stored, which you can then sync to your other devices using a file syncing tool like Syncthing. This way any changes you make to your bookmarks, settings, scripts, etc get synced to your other systems.
Setting up a Synced Configuration
- Edit startup.ini
C:\Program Files (x86)\XYplorer\Startup.ini
- Change the Path variable to the location of the folder you want to keep your portable configuration inside of.
[Appdata]
Path=C:\Path\To\Your\Custom\Folder
- Sync this folder to your other computers using Syncthing.
Send Command from Autohotkey
XYPlorer is scriptable in a way that I have not seen in any other file manager. Just about any action that you can run using your mouse, keyboard can also be run by executing the matching command #, either from within XYplorer’s scripting interface or from an outside application like AutoHotkey. Combined with Autohotkey’s System wide keyboard/hotstrings shortcuts, you get a super powerful combo.
List of Command ID Numbers Can be found by going to Help > List all Commands within XYPlorer
Example:
FunctionMessagetoXYplorer(101) ; Copy Filepath to Clipboard of Selected Item
FunctionMessagetoXYplorer(115) ; Copy image to clipboard for pasting into photo editor
;
FunctionMessagetoXYplorer(FunctionNumber) { ; Send message to XYplorer
; https://www.xyplorer.com/xyfc/viewtopic.php?f=7&t=9233#p82412
if(!InStr(MessagetoXYplorer, "::#"))
MessagetoXYplorer = ::#%FunctionNumber%
SetTitleMatchMode, 2
HWND := WinExist("XYplorer ahk_class ThunderRT6FormDC")
Size := StrLen(MessagetoXYplorer)
If !(A_IsUnicode)
{
VarSetCapacity(Data, Size * 2, 0)
StrPut(MessagetoXYplorer, &Data, Size, "UTF-16")
}
Else
Data := MessagetoXYplorer
VarSetCapacity(COPYDATA, A_PtrSize * 3, 0)
NumPut(4194305, COPYDATA, 0, "Ptr")
NumPut(Size * 2, COPYDATA, A_PtrSize, "UInt")
NumPut(&Data, COPYDATA, A_PtrSize * 2, "Ptr")
SendMessage, 0x4a, 0, ©DATA, , ahk_id %HWND% ; This is the original funciton
; SendMessage, 0x4a, 0, ©DATA, , ahk_id %HWND%,,,,1 ; my modified version. Added a time out and it seems to work just fine
}
XYPlorer Scripting
-
if code goes for multiple lines, indent every line after the first one
-
Display a msgbox with each filepath that is selected
// selected list items
foreach($token, <get selecteditemspathnames |>) {
echo $token;
}
- Save all selected filepaths to 1 variable and display it
set $filepaths, <get selecteditemspathnames>;
msg $filepaths;
- Get all filepaths and send as 1 parameter to an ahk script
set $filepaths, <get selecteditemspathnames>;
run "C:\Software\Syncthing\AutoHotKey\Testing\Testing_ReceiveVariable.ahk $filepaths";
- Append multiple variables to same variable and display a msgbox with the var
$a = "1"."2"; msg $a;
Configuration
- Configuration File Locaiton
C:\Users\yuriy.zinchuk\AppData\Roaming\XYplorer\XYplorer.ini
- Easy way to open up config file: Tools > Open Configuration File
- Catalog File Location
C:\Users\yuriy.zinchuk\AppData\Roaming\XYplorer\Catalogs\catalog.dat
Synchronize XYPlorer Config Files between devices
- Edit startup.ini
C:\Program Files (x86)\XYplorer\Startup.ini
- Change the Path to configuration Location:
[Appdata]
Path=C:\Users\ity\Syncthing\Configurations\XYPlorer\WMTPaper
- https://www.xyplorer.com/xyfc/viewtopic.php?f=3&t=23517&p=191130&hilit=sync#p191130
Custom Keybaord Shortcuts
-
Alt + 1 > Detailed View
-
Alt + 3 > Thumbnail #3
-
Control + E > Copy Filepath (Used with AHK to extract .zip files)
-
Scripting Tutorial : https://www.xyplorer.com/tour.php?page=scripting
Startup Speedup
To Get Startup Speed, place the following in the address bar:
text <get loadtimes>, 800, 680;
- Disable Mini Tree Caching
- https://www.xyplorer.com/xyfc/viewtopic.php?f=5&t=21833&p=178823&hilit=disable+tree#p178823
- Check your startup times
- https://www.xyplorer.com/xyfc/viewtopic.php?f=2&t=16983&p=145942&hilit=disable+tree+startup+time#p145942
Custom Settings
-
Speed up network drive access:
- https://www.xyplorer.com/xyfc/viewtopic.php?p=173942
-
Enable Folder size caching
- https://www.xyplorer.com/xyfc/viewtopic.php?t=19263
Settings that May Affect Speed
- Open Up “Various Information” Box by control + Click on “Various Information” under XyPlorer help dropdown.
e
Teracopy Custom Copy Handler
- https://www.xyplorer.com/xyfc/viewtopic.php?t=2596&start=225 You need to tell it where TeraCopy (path to exectuable) is and how you want to use it (switches).
- Configuration > File Operations > External Copy Handlers > Configure
TeraCopy|C:\Program files\TeraCopy\TeraCopy.exe|/Close /open_window
- Select Copy Handler > TeraCopy
Xyplorer Keyboard Shortcuts Reference
Ref_XYPlorerKeyboardShortcuts.pdf
Synchronize Configuration Between Machines
- https://www.xyplorer.com/xyfc/viewtopic.php?f=3&t=23517&p=191130&hilit=sync#p191130
2022/06/22
- Made following changes to xyplorer ocnfig to try to make network folder browsing faster: https://www.xyplorer.com/xyfc/viewtopic.php?t=8020
XY Scripting
XyPlorer Program Variables
Can by found by clicking Help > Environmental Variables
Last updated on July 19, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Contents
Click on a link in the list below to go to that page:
Contents
Click on a link in the list below to go to that page:
Proxmox QM and PVESH CLI Reference
Clone a VM
qm clone VMIDTOCLONE NEWVMIDNUMBER --name "VMNAME" --full true
- Set the macaddress for VM’s primary NIC
qm set 1001 --net0 virtio,macaddr=BC:24:11:6B:7D:2B,,bridge=vmbr0,firewall=1
- Migrate a VM to a different node and specify the storage
qm migrate 1004 sandalwood --targetstorage NVME-01
Controlling VMs on different Nodes using pvesh
For controlling VMs on different nodes than the one you’re accessing the terminal from you have to use pvesh CLI tool
-
https://pve.proxmox.com/pve-docs/pvesh.1.html
-
Start a VM on different node
pvesh create /nodes/NODENAME/qemu/VMIDNUMBER/status/start
- Reboot a VM on different node
pvesh create /nodes/sandalwood/qemu/1005/status/reboot
- Forcefully reset a VM on different node (similiar to forcefully unplugging pc from power)
pvesh create /nodes/sandalwood/qemu/1005/status/reset
- Shutdown a VM on a different node
pvesh create /nodes/sandalwood/qemu/1005/status/shutdown
- Delete a VM on a different node.
- Have to use the pvesh CLI to control the VMs on the different nodes
- https://forum.proxmox.com/threads/issue-qm-shutdown-from-one-node-to-another.44150/
- https://pve.proxmox.com/pve-docs/pvesh.1.html
pvesh delete /nodes/NODENAME/qemu/VMIDNUMBER ;
- Script to query the Proxmox API for VM name and set hostname of the VM accordingly
- https://github.com/badsmoke/proxmox-auto-hostname
Last updated on July 31, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.
Contents
Click on a link in the list below to go to that page:
Gym Workout Routine
Back Day | Weight | |
---|---|---|
Barbell Rows | 5x5 | |
Deadlift | 5x5 | 225 |
Dumbell Rows | 3x8 | |
Seated Rows | 3x8 | |
Lat Pulldowns | 3x10 | |
Shrugs | 3x10 | 45 |
Pull Ups | 3x10 |
Shoulders + Triceps | Weight | |
---|---|---|
Overhead Press | 5x5 | 110 |
Seated Dumbbell Press | 4x6 | 45 |
Lateral Raises | 3x8 | 15 |
Bent Over Raises | 3x8 | 40 |
Skull Crushers | 3x10 | 50 |
Rope Pressdowns | 3x10 | 75 |
Face Pulls | 3x10 | 90 |
Landmine Chest Press | 5x5 | |
Legs | Weight | |
---|---|---|
Squats | 5x5 | 225 |
or Bulgarian Split Squat | 6x5 | 90 |
Front Squats | 5x5 | 135 |
Deadlift | 5x5 | 225 |
Leg Press | 4x12 | 225 |
Leg Extension | 3x12 | 70 |
Leg Curls | 3x12 | |
Stiff Leg Deadlifts | 3x12 | |
Calf Raises | 3x20 | 90 |
Chest & Biceps | Weight | |
---|---|---|
Bench Press | 5x5 | 185 |
Incline Bench Press | 4x6 | 185 |
Dumbell Press | 3x8 | |
Incline Dumbell Fly | 3x8 | |
EZ Bar Curls | 3x10 | 60 |
Dumbell Hammer Curls | 3x10 |
Bonuses (Do Any Day) | Weight | |
---|---|---|
Alternate Sprinters Lunge | 3x10 | |
Kneeling Band Raises | 3x10 | |
Face Pulls | 3x10 | |
Calf Raises | 2x20 | |
Russian Twists | 3x30 | 25 |
Glute Extensions | 3x10 |
Back Day
Pull Ups
Shoulder Shrugs
Barbell Rows
Lat Pulldowns
Dumbell Rows
Seated Rows
Chest and Biceps
Bench Press
Incline Bench Press
Landmine Chest Press
Dumbell Press
Incline Dumbell Fly
EZ Bar Curls
Dumbell Hammer Curl
Legs
Squats
Deadlift
Front Squats
Leg Press
Leg Extension
Leg Curl
Stiff Leg Deadlifts
Bulgarian Split Squats
Calf Raises
Glute Extensions
Shoulder and Triceps
Face Pulls
Overhead Press
Lateral Raises
Bent over Raises
Skull Crushers
Rope Pressdowns
Seated dumbbell press
Tricep Dips
Bonuses
Alternate Sprinter’s Lunge
- Glute Strenghtening (Anterior Pelvic Tilt Fix)
Kneeling Band Raises
- Glute Strenghtening / Low Back Pain Prevention
Russian Twists
Links
- https://musclewiki.com/
- https://www.setforset.com/blogs/news/arnold-split
- https://www.themuscleprogram.com/advanced-5x5-workout-for-fast-muscle-and-strength-gains/
Add to workout:
https://www.youtube.com/watch?v=K-CrEi0ymMg&t=365
https://www.youtube.com/watch?v=gIhCuqtC0r0
Last updated on August 14, 2024. For any questions/feedback, email me at blog@zinchuk.xyz.