by TheOuterLinux (https://theouterlinux.gitlab.io)
Last updated: 2024/07/07
Let us say that you do not have enough hard drive space on your computer to run what is known as a "source port," a program, usually created from source code released by a video game company, and so you need to place the bulk of the required files on an external hard drive. However, some of these sorts of programs slightly panic when they cannot find required files and may ask you to go through the setup process all over again -- this is very annoying. To prevent this, all you have to do is prevent the program from running unless the the USB/SD card is mounted.
The first thing we need to do is create a BASH script that looks to see if a directory exists; if this directory does not exist, then have it display a a message saying so and that the program will not run until it does. Like so...
#!/bin/bash if [ ! -d "/media/[username]/####-####" ] then if [ -f '/usr/bin/notify-send' ] then notify-send 'Hard drive not mounted.' notify-send '[Program Name] will not start.' else xterm -T '[Program Name]: Whoops...' -e dialog --msgbox "Hard drive not mounted.\nP[Program Name] will not start." 0 0 fi else sh -c "/path/to/program-launcher/or/binary" fi
Replace "[username]" with your username and "[Program Name]" with the name of the program or source-port. The "####-####" part is relative to whatever your URL bar says in your file-manager in regards to the external hard drive; this will be much longer if the partition is anything other than FAT-related. You can save this script anywhere, but it would probably be best just to keep it where the *.desktop file is going to be.
Now that we have our BASH script, perhaps it would be a good idea to add a menu item to more easily run it. Go to the "~/.local/share/applications" directory, or create one if it does not exist, and add the file "[ProgramName].desktop" (change as needed) with something similar to the following contents:
[Desktop Entry] Name=Program Name Version=1.0 Comment=Something that quickly describes the program Exec=sh -c "~/.local/share/applications/ProgramName.sh" Terminal=false Icon=/full/path/to/icon.png Categories=Game;
And that is it. Now if you were to try to run the program without the hard drive mounted, the system should only display messages and do nothing else.