Power Up Puppy Lucid510 Linux.Part2-US Holidays In System Prompt And Four More Tips!
10/08/2013 12:24:00 PM
Jsc Jwhat Jerome Christopher
, Posted in
Computers
,
GNU Linux
,
Live cd
,
Puppy Linux
,
Shell Scripts
,
Terminal Emulators
,
Tips'nTricks
Puppy Lucid510 Linux Desktop |
In the last article, we discussed start menu customization and LHS taskbar tray
customization. Let us continue with four more important tasks here - setting the
System Prompt, Aliases, Rightclick-Open/With and Default Programs - four tasks
that are useful to any Puppy Lucid510 Linux user at any time whether used at logon or after it.
1. SETTING THE SYSTEM PROMPT
When useful? At logon or anytime
Start a terminal [Startmenu-Utility-Urxvt terminal emulator].
See the pound sign[#]?
Now type
#export PS1=''What happened? Pound's gone. Vanished. We are poor now, too bad, wait a second. Now type
lsSee the file list? Type
dfSee the used, free space allocation display?
Hey, stop stop, where do you think are we going with this now?
Easy! Cool down! We just saw the effects of setting the system prompt to null a minute ago with
export PS1='' and got impoverished. Let us reset the system prompt with a better prompt. Type
export PS1="\h"Got the hostname!
export PS1="\h-\u"Hostname and the username!
export PS1="\h-\u-\w"Hostname, username and the current working directory!
export PS1="\h-\u-\w-#"At last! This code gave us the hostname, userid, current working directory and our pound back! We are rich again now! But why is everything in black and white? Let's add some color to it and also thank a reference site on the net for sharing a variant of the line of code below we are building upon.
export PS1="\[\033[07;35m\]\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w-\[\033[00;31m\]#\[\e[m\]"Now, we can add our own string[HelloWorld] to display at the very beginning of the system prompt.
export PS1="\[\033[07;34m\]HelloWorld-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w-\[\033[00;31m\]#\[\e[m\]"
While this is okay for this session, we need to do more to get it into the startup configuration file so it will run at every logon.
Steps to change the system prompt
Let's say this is the code for our system prompt.
export PS1="\[\033[07;34m\]HelloWorld-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w-\[\033[00;31m\]#\[\e[m\]"
Changing the system prompt for all users
1.Open a terminal as the root user and type
#cd /etc
2.Type
#geany profile & [Now put the above code at the end of the file, save and exit]
3.Run the command below
#. profile
Changing the system prompt for individual users only
1.Open a terminal as the user and type
$cd [user's home dir]
2.Type
$geany .profile & [Now put the above code at the end of the file, save and exit]
3.Run the command below
$. .profile
Note: In general, in any system where the user logs on using the bash, bourne and korn shells, the .profile file in the user's home directory is run first. In my Puppy Lucid510 Linux system, as I am the ONLY user on my system, I used the /etc/profile file to put this code in there even though it is a system-wide file. On bigger systems with many users, the individual .profile files in each user's home directory must be used instead!
JWhat's Bonus - Display US Holidays In The System Prompt!
Here's a little code block I came up with that you can append to your startup file [user's .profile or system's /etc/profile] to display the month, date and major US holidays in the system prompt. Thanks to a little oneliner I found on a reference site or forum on the net, we also get to colorize the system prompt and to display the hostname, username, and current working directory too!
What? Holidays in system prompt? Who'd want that? Everyone'll be home anyway!
Yeah, but for those who mess with their Linux systems all the time, it may make sense. Again you can add birthdays, anniversaries and important days to make it really useful even on regular days!!!
Requirement
The holiday prompt is refreshed only when the .profile or /etc/profile is run which is at every login/relogin or bootup/reboot. So, remember to put this line of code in a script and run it first thing everyday with cron.
For individual users run this line from a cron-scheduled script everyday at 00:01am
. .profile
For all users run this line from a cron-scheduled script everyday at 00:01am
. /etc/profile
#======================================================== #Display major US holidays and more in the system prompt #======================================================== dat=`date +"%e,%b"` if [ "$dat" == " 1,Jan" ]; then export PS1="\[\033[07;34m\]$dat-NewYear'sDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 6,Jan" ]; then export PS1="\[\033[07;34m\]$dat-Epiphany-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 2,Feb" ]; then export PS1="\[\033[07;34m\]$dat-GroundHogDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "14,Feb" ]; then export PS1="\[\033[07;34m\]$dat-Valentine'sDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 8,Mar" ]; then export PS1="\[\033[07;34m\]$dat-Women'sDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 1,Apr" ]; then export PS1="\[\033[07;34m\]$dat-AprilFool'sDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "14,Jun" ]; then export PS1="\[\033[07;34m\]$dat-FlagDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 4,Jul" ]; then export PS1="\[\033[07;34m\]$dat-4thOfJuly-IndependenceDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "31,Oct" ]; then export PS1="\[\033[07;34m\]$dat-Halloween-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "11,Nov" ]; then export PS1="\[\033[07;34m\]$dat-Veteran'sDay-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == " 8,Dec" ]; then export PS1="\[\033[07;34m\]$dat-ImmaculateConceptionOfBVM-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "24,Dec" ]; then export PS1="\[\033[07;34m\]$dat-ChristmasEve-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" elif [ "$dat" == "31,Dec" ]; then export PS1="\[\033[07;34m\]$dat-NewYear'sEve-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" else export PS1="\[\033[07;34m\]$dat-HelloWorld!-\[\033[07;31m\]\h-\[\033[07;35m\]\u-\[\033[32;40m\]\w\[\033[00;31m\]#\[\e[m\]" fi #========================================================
Now, let's make sure that the code block above works correctly!
1.Open the /etc/profile file. Copy the code block above and paste it at the end. Save it.
2.Open a terminal.
3.Set the date to January 1.
Press [Start menu], then [Desktop] and then [Set date and time]. Use arrows by the left and right of the month to go to [January] and set the date to [1]. Press [Ok].
4.In the next window [Set time tool], press [Ok].
5.In the next window [info], press [Ok] and wait for a few seconds.
6.Now, in the terminal, type
# . /etc/profile
If everything's fine we should be seeing "1,Jan-NewYear'sDay..." in the system prompt.
Here's the fun part!
You can accomplish lots of different things other than displaying the dull boring [#] or [$] symbol in the system prompt by modifying the code block above. For example, you can
* Birth days/Anniversaries: Add your own birth day or important family or friends' anniversaries etc. [Eg. 3,Mar-Musa'sBirthDay!-puppypc-root-~-#] * Holidays: Change the holiday list by adding, deleting or changing the holidays. [Eg. 1,Jan-NewYear'sDay!-puppypc-root-~-#] * Reminders[Yoga]: Set aside a week or two and practice one yoga pose per day! It's really fun.[Mountain, Cat, Cow, DFDog, Sphinx...] [Eg. 3,Mar-MountainPose!-puppypc-root-~-#] * Reminders[Todo]: Display a todo item till it is completed. [Eg. 3,Mar-CompleteHomePageRedesign!-puppypc-root-~-#] * Affirmations: Use a one-word affirmation from the list below. Many of these come from a squidoo lens here Believe.Smile.Relax.Easy.Think.Practice.Exercise.Learn.Amaze.Build. Create.Nurture.Hope.Live.Peace.Listen.Improve.Forgive.Encourage.Dare.Act. Excel. [Eg. 3,Mar-Smile!-puppypc-root-~-#] * Favorite Text: Add your name or your favorite person's name or any text at the beginning of the prompt by changing the [HelloWorld!] in the last export statement before the [fi] at the very end if you'd like to. The possibilities are endless. [Eg. 3,Mar-Believe!-puppypc-root-~-#]That's it for the system prompt configuration, let us move to aliases.
2. SETTING COMMAND SHORTCUTS WITH ALIAS
When useful? At logon or anytime
Consider the Linux command "ls". Let us type the following at the system prompt.
#ls -lstrhThis command displays a time sorted, human-readable listing of files in the current directory with the latest files at the end. It would be great if instead of typing
ls -lstrhevery time everywhere we create a shortcut like
lwouldn't it? We can then type
#l
at the command prompt easily every time! That's what we did in the first line of the alias command list above [See image above]. For a one-time run, we can create a session-expiring alias like this. [Note: My system also allowed me to use single quotes instead of double quotes!]
#alias l="ls -lstrh"If we want to be more enterprising, we can put this shortcut into a persistent file that is run by default at every login. In Puppy Lucid510, this persistent config file /root/.bashrc has only one line pointing to
#. /etc/profileand /etc/profile in turn is used to store all default login configuration parameters. So, let us open the /etc/profile file and put these lines at the end of the file. Since /etc/profile is run every time the /root/.bashrc file is run, which is at every logon, we're all set! [Note: Bigger systems with many users must use the .profile file at the user's home directory instead] Let's test it out real quick. First open /etc/profile with geany text editor.
#geany /etc/profile &Let's type this line at the end of this file.
alias l="ls -lstrh"Let's save this file and run /root/.bashrc for our changes to take effect immediately.
#. /root/.bashrcOnce we have done the above we can then simply type 'l' at the dollar prompt from a terminal in any directory to view a neat, time-sorted and human-readable listing!
#lDid you see the listing as we expected? I did!
3. CREATING SOFTLINKS FOR THE ROX-FILER RIGHTCLICK OPENWITH/SENDTO
When useful? At logon or anytime
It's easy to customize the way we want to open different file types with different programs of our choice in Puppy Lucid510. For example, assume we want to rightclick on a html file and open it with Chromium, Firefox or Opera. This is what we need to do.
ln -s /usr/bin/chromium-browser /root/.config/rox.sourceforge.net/SendTo/chrome ln -s /usr/bin/firefox /root/.config/rox.sourceforge.net/SendTo/firefox ln -s /usr/bin/opera /root/.config/rox.sourceforge.net/SendTo/operaWe have just created three softlinks for these three programs at the [/root/.config/rox.sourceforge.net/SendTo] folder. Changes take place immediately so we can rightclick on a html file and select [OpenWith] to make sure we can open it with any of the three browsers mentioned above.
NOTE: The information below comes from the window that opens when we rightclick on a file or folder and choose [File] or [Dir] menu, then select [Openwith] and then select [Customize] at the bottom.
The [Send To] menu provides a quick way to send some files to an application. The applications listed are those in the following directories: /root/.config/rox.sourceforge.net/SendTo /etc/xdg/rox.sourceforge.net/SendTo I'll show you your SendTo directory now; you should symlink (Ctrl+Shift drag) any applications you want into it. The 'Send To' menu may be opened by Shift+Menu clicking over a file. Advanced use: You can also create subdirectories called '.text_html', '.text', etc which will only be shown for files of that type. '.group' is shown only when multiple files are selected.
4. SETTING DEFAULT PROGRAMS FOR DIFFERENT FILE TYPES
What, you are not satisfied with a [Rightclick-Open/With] strategy? We can also easily configure a program to open a filetype by default whenever we click on it. Just run these lines from the commandline or from within a script
#browser-chromium echo '#!/bin/sh exec chromium-browser "$@" '> /usr/local/bin/defaultbrowserNow whenever we click on ANY html file it will be opened by Chromium. Just change it to Firefox or Opera if required.
5. BONUS TIP: INFINITE LOOP TO CHECK STATUS OF FILE COPY OR FILE DOWNLOAD
Whether we are copying a giant 1gb or bigger file locally, or downloading stuff over slow internet, there is an easy way to check progress from the commandline.
while true; do du /your-folder/your-giant-file ; sleep 20; date; doneFirst note the size of the source file before copying/download begins. Then run this command and see how it keeps updating the terminal with the latest file size every 20 seconds and so if the file size is the same several times, the download probably stopped with success or errors. We can press [Ctrl-C] to break out of the loop and check if the file has been downloaded successfully or copied fully and/or rerun the loop command if needed. The [date] command gives a timestamp to tie up the [file size] to. Change the [time interval] to repeat as needed.
Bye! Bye! Woof! Woof!
This completes part2 and also concludes the PowerUp Puppy Lucid510 Linux-Tips To Customize The Startup Sequence Series. There are tons of Linux distributions out there but we need to pick and choose the best one for our needs and requirements. Puppy Linux is a great choice especially if you want a Linux Live CD distribution in the 100-200 MB category that comes with a great working base image and also has a host of pets and other utilities to build up on.
That's really great, isn't it?
Last Updated: 11/3/2013.