Apple pays a lot of attention to the user experience, they have been in the forefront of that industry since the beginning. Having to use PC peripherals with macOS can be quite frustrating, specially when you are used to the tailored experience that Mac peripherals provide.
These are some of the apps that help me retain that macOS user experience while using a PC keyboard, a PC mouse and an external display.
brew install karabiner-elements
PC/Windows keyboards are plug-and-play in macOS, but certain keys are mapped contraintuitively (Alt/Option, Win/CMD), or not mapped at all (media keys, volume, brightness, etc). While modifier keys can be set up through the macOS keyboard preferences, this utility helps you get all keys mapped to match the functionality of an Apple keyboard.
brew install monitorcontrol
Control the brightness, contrast and sound volume of your external displays from your keyboard (applies to both PC and Mac keyboards). Your display must support DDC commands (most modern flat screens do).
brew install mos
Smooth scrolling with any mouse wheel.
brew install sensiblesidebuttons
Navigate back and forth almost any window with a history (Safari, Finder, etc.) with your mouse side buttons.
brew install rectangle
Windows has a great feature, callend Snap, that allows you to snap windows into specific places of your screen, and divide your workspace in thirds, fourths, sixths, etc. This makes it super simple to take full advantage of your display real state, and align your windows in a layout that fits your workflow. Rectangle is an open-source tool that allows you to do just that, and more, in macOS, both dragging windows around and through keyboard shortcuts.
A very similar proprietary tool alternative to this is Magnet.
Do you have any other apps you think are essential? Let me know in the comments!