A couple of forum posts saying some stuff I did for DCS

This isn't a real essay and is just what the title says it is. A friend suggested I put these posts from Something Awful's YOSPOS subforum's Linux thread somewhere else but I don't really feel like working them into an actual essay. Thanks bye.

*deep breath* okay here we go

I chose the Brisk Menu for application selection because unlike the standard MATE menus it doesn't replicate any functionality belonging to the file manager (like the Places menu) and it uses scrolled panels instead of menus so when an application category gets really long it's not a pain in the ass to navigate that category. Also it has a search bar and a "Favourites" category and it's nice to have multiple avenues for omnipresent quick access.

I created AppManager because Synaptic sucks and GNOME Software sucks and KDE Discover is for KDE and I just wanted a really simple thing that runs "apt search x" but filters out every package that doesn't provide a /usr/share/applications .desktop entry so I'm not wading through dozens of command line programs and libraries and support packages. At some point I put in support for installing .deb files (using apt to get dependencies) and uninstalling by dragging and dropping menu entries to it (which are just .desktop files from /usr/share/applications). I put it in the top level of the Menu outside of the categories, along with Control Center, to signify its place as "top level computer management stuff, not a regular application". I also associate deb files with AppManager so the user can just go download steam and discord and double-click the deb files and they get installed.

AppManager uses "apt autoremove" to remove packages, so that when a user drags and drops an application from the Menu on the panel to uninstall it it removes everything it brought in that nothing else is using, so as to make as strong a link between the Menu entry and the actual packages as possible. As such, I wrote a script called "markmanual.py" that collects the names of all the packages corresponding to the .desktop files in /usr/share/applications and runs "apt install" on each of them so that they all get marked as manually installed. This means that if a user uninstalls, say, MATE Calculator, AppManager doesn't autoremove the entire desktop environment. This runs after we chroot in and install the packages we need.

Next to nothing beyond Xorg and the base MATE w/ its utilities is installed because it's incredibly easy to just open AppManager and install what you need. I cover what I consider to be first-class OS functionality like connecting to the internet, compressing/decompressing files, managing disks, and so on, and leave everything else out.

The notification area obviously needs to be there, so does a clock. The window menu originally wasn't there but I realized you can still minimize windows by right clicking the title bar and clicking Minimize, and I don't really just want to hack that out, but in this context it really means "hide". So to allow for users to get their windows back without having to use a keyboard combo I put the drop down window menu there next to the workspace switcher.

Multiple workspaces are used because there's no real robust way to manage groups of layered windows in Linux like there is with Mac OS's per-application window layering, nothing's really built for that. Frequently accessed important system-level UI elements should be in the corners because those are the #1 easiest targets to hit, therefore the Menu sits in the top left and the workspace switcher is in the top right.

The panel in between all of these elements is just space to drag and drop stuff. More omnipresent quick access. If you drag a bunch of folders up there you just end up with a bunch of identical folder icons unless you assign them custom icons, so it's not ideal, but what can you do. I'd be amenable to having two separate panels that don't span the screen in each corner but they gain these weird handles that make screen corners useless. It also provides a really jank way of quickly making a launcher for something on your desktop or in a folder: You drag and drop the object to the panel, then drag and drop that panel icon somewhere else. shrug

Window shading is the primary method of minimization because it does the same job as minimization to a taskbar while leaving the window where it is, which allows you to instinctually reach for it when you need it instead of scrubbing through and skimming the titles of a potentially very crowded list of windows. Window lowering is also a very underrated method of finding a window in a stack without having to move stuff. If you have a stack of windows at a screen edge you can just fling the mouse over there and middle click a couple times to find one.

I almost always double-click to shade and unshade but I wanted a discoverable method to do this so I re-purposed the minimization icon for shading and put it on the opposite end of the close button, because it's less destructive and I didn't want to put it next to the destructive option where you could accidentally click it.

I repurposed the maximize button to be an "on all workspaces" button to facilitate the easy moving of windows from one workspace to another. Stick, switch workspaces, unstick. A folder set to list view with large icons set to be on all workspaces can also serve as an ersatz menu if you were so inclined. Caja even remembers that that folder was set to be on all workspaces. More quick access.

As mentioned before, I remade TraditionalOK (nee Clearlooks) to be grey so the colors of the UI wouldn't clash with the content of the windows.

I removed automatic sortation from Caja in Icon view because that's the only way I could figure out to make manual arrangement the default. You can still click Organize by Name to one-time sort all icons by name within the size of the folder window, like the Finder's Clean Up option.

I patched Caja's list view to store expanded folders as metadata for the parent, so they re-expand when you close and reopen the parent. It will correctly do this for top level folders but further nested subfolders are flakier. I did my best!

I patched Caja to open MATE Search Tool whenever you select Places>Search or hit ctrl+f, whereas before in spatial mode it would just pop up an error message.

I patched Caja to open its native "Backgrounds and Emblems" dialog when you right click the desktop and select "Change Desktop Background" instead of the MATE Appearance control panel. This is future-proofing in case I have to abandon mate-session at some point down the line.

MATE session restore is all kinds of broken in Caja so I patched in a quick-and-dirty session restore that stores all open windows as URIs in a text file upon quitting, and restores them when it starts back up. It unfortunately restores them all on the current workspace rather than the workspaces they may have been on. I might figure this out for the next version if it pisses me off enough over the next couple of years.

I patched Caja to fix a bug where if some application makes a request to open a location it will always open in the browser instead of obeying the browser-or-spatial preference. Firefox's downloads thing is guilty of this.

On that note, I removed all user-visible methods for opening a file browser altogether. You can still set a preference via gsettings but I'm not responsible for what happens after. Or any bad things that happen due to this software, really.

let's see...what else....

I made it so typing stuff in the sudo password field shows asterisks by default, because I'm still using terminal windows as prompts because I'm a bad and lazy programmer.

You can find other networked computers by default but you can't share folders yourself, and it was going to be a bit too involved to make it "just work" out of the box, so I wrote a little script to do everything and put an icon for it on the desktop to run at the user's leisure. Weird thing to have a default desktop icon for but it felt important.

LightDM doesn't make you type in your username, you can just select it from a list and then type in your password.

Beyond that there's a whole bunch of different defaults that I can't really remember off the top of my head. Middle click to paste is turned off. I set indigo to be the default background color just cuz I like the color.

ooh also I made it so you dont get those stupid freedesktop.org default folders littering your home folder. you get a blank slate to start. I'll organize my files myself, thank you!

Also there is a ~/Desktop folder for the desktop but I placed an entry in the ~/.hidden file for it so it doesn't show up in the home folder, so it appears as if the desktop really is the root of everything.

and I set up the Caja defaults to put the home folder, network servers folder, external volumes and trash on the desktop. there's no immediately obvious way to get to the root filesystem. you dont need to be there. it doesnt exist

Discuss DCS here