Well, I've kind of gotten used to using Mac (my primary), Linux, and Windows with the same command line by using bash and zsh with the Mac and it works the same with Linux. With Windows, it's way harder to use bash with Windows (I found that you have to think of WSL as a virtual machine inside of Windows rather than Linux being the command interface to windows mainly because you can't effectively share the file system since it is using network drive simulation).
Command Line Installs Scriptable With Homebrew, Snap, Apt-get, MAS, and Winget
However, with a combination of Homebrew on Mac, Linux, and WSL the command line stuff is pretty easy and portable. Thank goodness, but there are still a bunch of issues because graphical applications (casks in Homebrew speak) are only for Mac
Then for the graphical applications, it is a different system for each, but basically you have:
- Mac. You can use the homebrew cask installation and this works well. For Mac App Store you can use mas to download these. And m-cli is handy as well if you are mainly typing.
- Ubuntu. The safest is to use Snap installation, but these are isolated, so sometimes you have to use the --classic flag, and other times when it does muck with the system you are back to apt-get installations. Sometimes you are even lucky that the names of packages are identical, so you can just substitute
- Windows. With Windows 11, you can download the app installer, and winget works across the Microsoft Store and various open-source pieces. This is actually nicer than the Mac as it integrates both. I do find that it doesn't have every package, so I normally use scoop and then if all fails choco to script package installation. You can actually write WSL scripts that do Windows installations, but it is pretty hard, so you are going to have to learn PowerScript if you want all this to work.
Keyboard Shortcut Diaspora starting with Cut, Copy Paste
The real issue is that keystroke memory means you have to train yourself, so here are the obvious ones:
- Cut, Copy and Paste. On the Mac, these are ⌘ or Command-X, C, and V, but with Windows and Mac, they are Ctrl-X, C, and V. This is a pain to retrain. Also, I find that the cheatsheet on the Mac is useful, hold the Command key (when you are not in edit mode!) and you can see what shortcuts are active. And as an aside typing these special characters on the Mac is really easy with Rocket or you can use CTRL-COMMAND-Space or ⌃-⌘-Spacebar or just type a colon and rocket will add a nice emoji 😄
- Finding Applications. This is also a bit of a pain, with Mac, it is ⌘ or Command-Space, but with Ubuntu, it is the Super key also called "Windows key" and often labeled as Win or on most keyboards (you have to use the Marlett font for that actual icon it turns out or you can use the Squared Plus or ⊞ as a poor substitute. if you just hit that you get a search bar. Same with Windows, so another point of Windows and Ubuntu compatibility that is well done so that hitting the Super or Windows key does the same thing
Other differences in Windows Tile Managers and Spaces
But the big problem is that I use a tiling Window manager for most of my work. With a small laptop screen, I like four tiles and with big screens, I use 3 x 2 so six screens. This works great, but unfortunately requires different keyboard shortcuts and tiling managers. There are two things that I use, first is a tiling window manager so I don't typically overlap any window, but instead, have a 2x2 or 3x2 grid. Also lately I've been trying to use Spaces or Stage Manager to handle groups of windows. This makes the most sense when you have different things like two companies to work on or work and home.
- Mac Rectangle and sometimes Spaces and even Stage Manager. This is a great open-source tool. And I have Ctrl-Option j, k, u, and i which are the VI keys for the four quadrants, and the Ctrl-Option 5, 6, 7, 8, 9, and 0 for the six-screen variants. I find this is the most useful and quickest just to have a single workspace. I've tried to use Spaces for this, but the problem is that the groups are not visible, you can do this really require a Trackpad, so this is most useful on a laptop (I wouldn't say I like to use a Trackpad with a stationary system, I find I get Carpel tunnel since I hold my wrist up too high). But basically, a three-finger swipe down reveals the spaces, and then swipe left or right shifts. The Stage Manager is basically the same idea, but you get the groups of windows on the left which is much more visible.
- Windows Divvy. There is no Rectangle on the Mac and you can't use the Ctrl-Windows key for everything it is already overloaded with a bunch of things, so I use Ctrl-Windows-Alt 5, 6, 7 through 0 to do the six quadrants and Ctrl-Windows-Alt 1, 2, 3 and 4 for the quadrants. This does cost $14 to buy, but you can get a demo that throws up a nag screen to try it.
- Ubuntu gTile and Workspaces. This is the Gnome utility and unfortunately, it only supports the Numeric Keypad for shortcuts, so it doesn't work at all with a Laptop system. I need to figure out how to make the shortcuts work there but you have to hit SUPER-ENTER and then you can use the h,j, k, and l keys to navigate. You can use the System-Up, down, left, and right for left of the screen, right and then up is full screen, and down is the return to the regular windows. You get to these with the SYSTEM key and then looking to the right you can see the spaces. The hotkeys are completely different of course. Configuring it really pretty bizarre, the presets are done with different strings where the first is the layout and then you name the upper left and lower right, the confusing thing is that you can have a layout like "2x2 1:1 1:1, 2:2 2:2" which is a way of saying you have a 2x2 grid and the first starts at the location 1:1 and ends there too, so it is a single tile. To use the Workspaces, you hit the SUPER key, and then on the upper left, you get all the Workspace. And then you switch to them with Ctrl-Alt-Super and the Page up or Page down or Ctrl-Alt Up or down.
You can see how the keys are somewhat similar but there are so many modifier keys that it is just confusing.
Brave as the cross-platform browser and using Tab Groups the Chrome way
OK, so what browser to use, well I use Safari and it is great for Mac and sharing, but this doesn't work cross-platform. Instead, Brave seems like a great choice because:
- It doesn't have Google telemetry in it but most of the other features
- It supports Google Docs API for offline use which Vivaldi doesn't
- It has a sort of interesting rewards model where they will inject ads and you earn cryptocurrency for browsing, so it takes revenue from others, but at least you control where the dollars go.
- It supports multiple profiles which is great, so I can have a profile for each user id I have and each project.
- They also have a tab groups feature that is a little harder to use. With Safari, you get a nice vertical bar so that you can see the groups, with Chrome, you get a series of small lines and it really crowds the tab group bar, but it works. You do need a third-party Tab Group extension so that you can actually save these things. With the extension, you have to click on the icon and manually save the groups and then they persist across browser sessions. But I have not quite figured out how to share the save sessions yet.
- It supports Brave Sync which lets you copy the various extensions you need. Surprisingly Google Chrome doesn't have this. The main trick is that the source of Brave data has to be activated with a Sync Code (which expires quickly) and you have to make sure Sync Everything is turned on at both the source browser and also the browsers you want to configure. This basically locks a whole set of machines (and profiles) together so if you add one extension in one place, it appears everywhere else. And this works for tab groups as well so pretty nice! It's a little hard to setup
- For Brave, it implements the tab groups quite differently than Safari You right-click on a tab and can add it to a group and the groups just appear at the top with a very subtle colored line and you can drag and drop them.
Also, the iterm2 that I use has different shorts cuts, so creating a new window is Option-N but with Gnome Terminal in Ubuntu, it is Ctrl-Shift-N. Argh!
A quick tip on iPhone browsing and then editing Tab Groups and sharing
Well, that works well for machines, but what about across iPhones, iOS, and Mac? In this case, I do use Safari and its version of the tab groups. Just make sure you are sharing the tab groups in iCloud and you get the same tabs across all your systems!
One quick tip that I just discovered is that with my phone I just keep having many, many tabs open in the default system. It is actually very hard to get these into a Mac for say editing to make a post like this. The trick is that if you go to the iOS Safari you can actually click on the rightmost icon, click on the pull-down in the center, and then at the bottom, there is an entry for creating a new tab group.
Once you do this and name it, you can go to a Mac or a bigger device and triage all those tabs really easily.