Blog Comments

  1. LTCj's Avatar
    Hey, thanks! Works as advertised with no problems on the day of release for openSuSE v 12.1!
  2. jdmcdaniel3's Avatar
    [QUOTE]That was fun, although I've got only three answers right [/QUOTE]

    Glad you liked the test. So, do you like Amarok and Banshee as good media players?

    Thank You,
  3. riderplus's Avatar
    That was fun, although I've got only three answers right
  4. jdmcdaniel3's Avatar
    MMCHECK 2.40 has been updated to work with openSUSE 12.1. If you plan on installing openSUSE 12.1 then I suggest you download and install the latest version of mmcheck.

    Thank You,
  5. jdmcdaniel3's Avatar
    So much of writing a bash script has you doing two things:

    1. Using a collection terminal programs and commands
    2. Deal with and using text output from those commands.

    Lets take the output from the command /sbin/ifconfig. Open up a terminal session and run this command and see what you get:

    [CODE]/sbin/ifconfig

    eth0 Link encap:Ethernet HWaddr BC:AE:C5:78:12:8E
    inet addr:192.168.0.185 Bcast:192.168.0.255 Mask:255.255.255.0
    inet6 addr: fe80::beae:c5ff:fe78:128e/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:4716178 errors:0 dropped:5 overruns:0 frame:0
    TX packets:2562693 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:6832101413 (6515.5 Mb) TX bytes:207334947 (197.7 Mb)
    Interrupt:66 Base address:0x4000

    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:16436 Metric:1
    RX packets:99067914 errors:0 dropped:0 overruns:0 frame:0
    TX packets:99067914 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:6192194383 (5905.3 Mb) TX bytes:6192194383 (5905.3 Mb)[/CODE]

    Now suppose we want to fetch the ip address of our hard wired port eth0. Here is the line we are interested in getting: inet addr:192.168.0.185 Bcast:192.168.0.255 Mask:255.255.255.0 so how might we get only this information? Lets try using grep:

    [CODE]/sbin/ifconfig | grep "inet addr:"

    inet addr:192.168.0.185 Bcast:192.168.0.255 Mask:255.255.255.0
    inet addr:127.0.0.1 Mask:255.0.0.0
    [/CODE]
    Seems like we got more than we want. But look, the line we want has an additional word not present in the second line. Do you see it? Yes its the word "BCast:". So, using that lets see what we can get.

    [CODE]/sbin/ifconfig | grep "inet addr:" | grep "Bcast:"

    inet addr:192.168.0.185 Bcast:192.168.0.255 Mask:255.255.255.0
    [/CODE]
    Now that is more like it, but suppose we only want the IP address and that is all. Lets try this command:

    [CODE]/sbin/ifconfig | grep "inet addr:" | grep "Bcast:"| awk '{print $2}' | cut -d \: -f 2

    192.168.0.185[/CODE]

    Now, you can see how combining bash commands using the pipe symbol "|" can be used to deal with the text and get only the output that you want. Now be aware if you have two network adapters, like wired and wireless working at the same time, you would actually get two IP addresses here and not just one. We can use a different command, looking only for ethx & wlanx names to fetch the real port name(s):

    [CODE]/sbin/ifconfig | awk '{print $1}' | grep -e "eth" -e "wlan"

    eth0[/CODE]

    Now, how might we put all of this together in a script that might be usable? Here is one I called myip:

    [CODE]#!/bin/bash

    #: Title : myip
    #: Date Created: Sat Nov 5 13:05:27 CDT 2011
    #: Last Edit : Sat Nov 5 13:05:27 CDT 2011
    #: Author : James D. McDaniel
    #: Version : 1.00
    #: Description :
    #: Options :

    declare -a ipadd
    declare -a netadp

    #
    # Color Display Request - color forground background [b/n] ********************
    #
    # 0:Black 1:Blue 2:Green 3:Cyan 4:Red 5:Magenta 6:Yellow 7:White
    function color {
    if [[ $3 == [Bb] ]] ; then
    tput bold
    fi
    if [[ $3 == [Nn] ]] ; then
    tput sgr0
    fi
    if $use_color ; then
    tput setf $(( $1 ))
    tput setb $(( $2 ))
    else
    tput setf 7
    tput setb 0
    fi
    return 0
    }

    #
    # This is the standard GPL Statement, leave at the top of the script.
    # Just use the command show_gpl after this function for it to be shown.
    #

    function show_gpl {
    echo ""
    echo "myip is a bash script file written to be used with openSUSE."
    echo "Copyright (C) 2011 by James D. McDaniel, jmcdaniel3@austin.rr.com"
    echo ""
    echo "This program is free software; you can redistribute it and/or modify"
    echo "it under the terms of the GNU General Public License as published by"
    echo "the Free Software Foundation; either version 2 of the License, or"
    echo "(at your option) any later version."
    echo ""
    echo "This program is distributed in the hope that it will be useful,"
    echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
    echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
    echo "GNU General Public License for more details."
    echo ""
    echo "You should have received a copy of the GNU General Public License"
    echo "along with this program; if not, write to the Free Software"
    echo "Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
    echo ""
    }

    size=$(/sbin/ifconfig | grep "inet addr:" | grep -c "Bcast:" )
    inc=1
    if [ $size -ge 1 ] ; then
    while [ $inc -le $size ] ; do
    ipadd[$inc]=$(/sbin/ifconfig | grep "inet addr:" | grep "Bcast:"| awk '{print $2}' | cut -d \: -f 2 | sed -n $(( inc ))p )
    netadp[$inc]=$(/sbin/ifconfig | awk '{print $1}' | grep -e "eth" -e "wlan" | sed -n $(( inc ))p)
    echo
    color 7 0 B
    echo -n "Network Interface: "
    color 6 1 B
    echo -n "${netadp[$inc]}"
    color 7 0 B
    echo -n " with IP address: "
    color 6 1 B
    echo -n "${ipadd[$inc]}"
    color 7 0 N
    echo
    echo
    let inc=inc+1
    done
    else
    echo "Sorry, No IP addresses were found!"
    exit 1
    fi

    exit 0

    # End Of Script[/CODE]

    Copy and past this script into a file in the ~/bin folder as myip. Open a terminal session and run the command: chmod +x ~/bin/myip

    That is all for today...

    Thank You,
    Updated 13-Nov-2011 at 16:55 by jdmcdaniel3 (Added in Code Tags I could not use before now.)
  6. jdmcdaniel3's Avatar
    Function Calls are very powerful when used in a bash script. Simply put, for any task you must use more than once in a script, create a function call for it, place the repetitive code within and use it throughout your script. For a function call to be used, it must already appear in the script before you use it. So, for this to work, functions need to be defined at the top of your script. There are two basic ways to define a function:

    [CODE]#
    # Comment on what this function does
    #
    function function_name {
    command(s)...
    }[/CODE]

    <or>

    [CODE]#
    # Comment on what this function does
    #
    function_name () {
    command(s)...
    }[/CODE]

    I prefer to use the first, but if you program in C a lot, you may want to use the second way. Functions can not be blank, some command must exist within. A function call can use another function call, but the function used must always be read first in the script or above where it is used. Once a function call is defined, to use it in your script, you simply refer to it by name. As in ...

    [CODE]function_name[/CODE]

    Your script then runs all of the commands in the function and then returns back to where it left off in the script. Once all commands have been run, there is an implicit return command assumed. However, you may add a return command if you wish.

    [CODE]#
    # Comment on what this function does
    #
    function function_name {
    command(s)...
    return [number]
    }[/CODE]

    When you exit a function, you may return with a number, like an exit code for instance. The return value must be numeric and can not be text. To read the number on return, use the following method:

    [CODE]function_name
    Return_Number=$?[/CODE]

    Any variables you have defined before running the function, can be seen and used by the function. Further, unless defined as local, any changes to a variable will be in effect when you return from the function. Be careful of using the same variable over and over as a function will modify its value. For common values, you want to use over and over in a function without changing the value somewhere else in your script, declare it as being local.

    [CODE]#
    # Comment on what this function does
    #
    function function_name {
    local loc_var=23
    command(s)...
    return [number]
    }[/CODE]

    In this example, the variable we called loc_var in the function_name will not be effected when used anywhere else in the script. If we want to define values to be sent to the function call, we can place those on the command line with the name of the script.

    [CODE]function_name MyName YourName HisName[/CODE]

    In this example, when the function named function name is run, $1=MyName, $2=YourName and $3=HisName. If there are spaces in the value you wish to pass, place it in quotations. as in.
    [CODE]
    function_name "My Name" "Your Name" "His Name"[/CODE]

    There is no reason to not place all variables sent to your functions into quotes. Then, no matter what, they will be passed properly. So in the case of using the function call.

    [CODE]function_name "My Name" "Your Name" "His Name"[/CODE]

    In the function,

    $1="My Name"
    $2="Your Name"
    $3="His Name"

    Since scripts also use $1, $2 and $3 for the script command line options that start up your script, you can't use the script startup parameter $1 directly without passing them on the command line. For the script $1 to be equal to the function call $1, I would have to do this.

    [CODE]function_name "$1"[/CODE]

    Thus, $1 to the script would now be $1 in the function call of the same script, if that is what you wanted to do. Let us suppose I wanted to add color to my script using the tput commands. The command tput setf # sets the forground color while tput setb # sets the background color. Using a function, I could simply change the command to a single entry in my script:

    [CODE]#
    # Color Display Request - color foreground background
    #
    # 0: Black 1: Blue 2: Green 3: Cyan 4: Red 5: Magenta 6: Yellow 7: White
    function color {
    tput setf $(( $1 ))
    tput setb $(( $2 ))
    return 0
    }[/CODE]

    Now, to create a color line of text in my bash script I could use the command:

    [CODE]color 7 2
    echo "This is text=White, Background=Green"
    color 7 0
    echo "This is text=White, Background=Black"[/CODE]

    As you can see, using function calls in your bash script can make them very powerful. I hope you have found this entry to be useful to you today. As always, I welcome your comments.

    Thank You,
    Updated 13-Nov-2011 at 16:53 by jdmcdaniel3 (Added in Code Tags I could not use before now.)
  7. jdmcdaniel3's Avatar
    Here is a simple bash script designed to list the present folders and allow you to change the default folder. You must run this from a terminal prompt. Copy and past this text into text editor and save it as the script called subdir in the folder ~/bin/subdir (/home/yourname/bin/subdir):

    [CODE]#!/bin/bash

    #: Title : subdir
    #: Date Created: Fri Oct 14 12:47:38 CDT 2011
    #: Last Edit : Fri Oct 14 12:47:38 CDT 2011
    #: Author : James D. McDaniel
    #: Version : 1.00
    #: Description : Change default Folder from List
    #: Options : None

    # To Use subdir to change the default folder, you must start the script using: . subdir

    TITLE="Folder Selection Menu for:"

    declare -a folders

    gui=true

    while $gui ; do

    size=$(ls -dl */ | grep -c /)
    let size=size+1
    clear
    echo "$TITLE $PWD"
    echo

    inc=1
    while [ $inc -le $size ] ; do
    if [ $size -gt 1 ] ; then
    folders[$inc]="$(ls -dl */ | grep /| sed -n $(( inc ))p | awk '{print $9}')"
    fi
    if [ $inc -lt $size ] ; then
    echo "$inc) ${folders[$inc]}"
    else
    echo "$inc) .."
    fi
    let inc=inc+1
    done

    echo
    echo -n "Enter the folder # to select (Q=Quit & B=Back): "
    read CHOICE
    if [[ $CHOICE =~ ^[0-9]+$ ]] ; then
    if [[ $CHOICE -le $inc ]] && [[ $CHOICE -gt 0 ]]; then
    if [ $CHOICE -lt $size ] ; then
    cd ${folders[$CHOICE]}
    else
    cd ..
    fi
    fi
    else
    if [[ $CHOICE == [Qq] ]] ; then
    gui=false
    fi
    if [[ $CHOICE == [Bb] ]] ; then
    cd ..
    fi
    fi

    done

    # End Of Script[/CODE]

    Once you have saved the script you must mark it executable. Run the following terminal command to do so:

    [CODE]chmod +x ~/bin/subdir[/CODE]

    To use the new script, open up a terminal session and enter the command (That is a dot, then a space and the name subdir):

    [CODE]. subdir[/CODE]

    Then, run it again, but without the . as in

    [CODE]subdir[/CODE]

    Play around with the script and see what it does. It is very simple, but does show some issues with leaving things like the default folder as is when a script finishes. Without starting using the ., no matter the folder selected, you are back to home when you exit the script. The . allows the script to run in the same shell as the terminal you just opened up.

    Please I want to hear any comments that you might have.

    Thank You,

    James
    Updated 13-Nov-2011 at 16:50 by jdmcdaniel3 (Added in Code Tags I could not use before now.)
  8. jdmcdaniel3's Avatar
    I just found nVIDIA driver 285.05.09 on the nVIDIA Web Site. I have added in the latest versions to this blog.

    Thank You,
  9. jdmcdaniel3's Avatar
    So after reading your link and playing with the source command I found several interesting finds..

    1. The target file name for source does not have to be marked as executable as is the case with normal bash scripts.
    2. The bash script executes as normal
    3. Any variables set in the script are still set when it completes. Normally you must export variables to still be set when the script completes.
    4. The script executes in the same shell and does not spawn another.

    So, using the source command seems most useful maintaining the variables that were set. Perhaps there are other reasons that do not come to mind at present.

    Thank You,
  10. Jonathan_R's Avatar
    What about [code]>source sript-name.sh[/code]
    Why would one want to run that and what are the advantages or disadvantages? I'd like to know some uses, real cases for that.

    Taken from Chapter 2 of Bash Guide for Beginners [URL="http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_01.html"]Creating and running a script[/URL]
    Updated 13-Nov-2011 at 16:48 by jdmcdaniel3
  11. jdmcdaniel3's Avatar
    Did you know that you can send a bash command to operate in the background while the rest of the script is running in the foreground? Specifically, New jobs always run in the foreground unless you specify otherwise. To run a job in the background, end the input line with an ampersand (`&'). This is useful for running non-interactive programs that perform a lot of calculations. I have used in my bash script called sakc in order to display the compile time while the kernel is being compiled. Bash scripts run serially from top to bottom, though functions can be run out of order, but which must always be located above the bash code that calls it. In order to have multiple bash code commands running at the same time, you must force something into the background.

    Here is my sakc example:

    [CODE]# ***********************************************************************************
    #
    # Time Display Function. Do you want the Elapsed time displayed while your compile is running?
    #
    show_time=true

    #
    # Display Elapsed Time While doing the compile / This runs in the background
    #
    function time_display {
    tput cup $(( 14 + line_os)) $(( 41 + col_os ))
    echo -n "Elapsed Time: 0 minute(s) "
    while true ; do let comp_time=comp_time+1 && sleep 60 && tput cup $(( 14 + line_os)) $(( 55 + col_os )) && echo -n "$comp_time$(tput sgr0)" ; done &
    PID1=$!
    }

    #
    # Start Time Display if enabled
    #
    if $show_time ; then
    time_display
    fi

    #
    # Kill Background Elapsed Time Display shown during the compile
    #
    if $show_time ; then
    disown $PID1
    kill -9 $PID1
    fi

    #*****************************************************************************************[/CODE]

    Once a minute, the bash command running in the background updates the minute read out as to how long the compile has run. The compile process is running in the foreground while the time display is running in the background. Without forcing the time display into the background, I could not display the time once a minute after transferring the foreground task to the kernel compiler. It is important to note I saved the process PID # as the variable PID1=$!. By doing so, I can then stop or KILL the process when I no longer want the compile time to be displayed. You must save the PID number in order to know what to kill. In order to stop the time display from working I must first use the command disown $PID1. You can not kill a process that is owned by another like the sakc script that started it. Next, once it is no longer owned by anyone, it can be killed by command kill -9 $PID1.

    So, to go back over the steps to place a bash command into the background.

    1. You need a command that does not need interaction from the foreground to run and may include calculations or other such tasks.
    2. You must place the ampersand (`&') as the very last item on that line.
    3. If you need to stop the line from running because it does not stop on its own like my sakc time display save its PID # with the command: PID1=$!
    4. To KILL a background task you must first disown it with the command: disown $PID1
    5. Once a background task is no longer owned by a foreground task it can be killed by the command: kill -9 $PID1
    6. The name PID1 in my example can be any variable name you wish to use.
    7. If the background task you start ends on its own, there will be no need to kill it unless you do so when your script is stopped.

    That is our lesson for the today. As always, I would appreciate you comments...

    Thank You,
    Updated 13-Nov-2011 at 16:51 by jdmcdaniel3 (Added in Code Tags I could not use before now.)
  12. jdmcdaniel3's Avatar
    I recently read a nice scripting article in Admin Network & Security Issue 04 about Easy Scripting using grep, awk and sed. To quot a few short passages from that article:

    "Grep's function is to locate lines matching a specified pattern within one or a set of files (or standard input. It has the following general syntax:"

    grep regular-expression files(s)

    You can look up the grep command by typing in "man grep" at the terminal prompt to see more information on the subject. As an example of how I have recently used grep here is a single line from my bash script called suff, used to format USB floppy disks:

    [CODE]floppydrive=$(ufiformat --inquire --verbose | grep /dev/)[/CODE]

    If I attach a USB floppy disk and run the following command, here is what I get:

    [CODE]james@Linux-Master:~> sudo ufiformat --inquire --verbose
    list usb fdd devices
    disk generic
    /dev/sdk /dev/sg12[/CODE]

    Now, if I add a grep command here is what I get:

    [CODE]james@Linux-Master:~> sudo ufiformat --inquire --verbose | grep /dev/
    /dev/sdk /dev/sg12 [/CODE]

    In the second instance, now I am only getting the two USB floppy drive designations, either of which I could use and assigning this to the variable I called floppydrive. Next, lets look at awk and another quot from Admin...

    "The awk command takes a set of internal commands to execute - known as an awk script - as its first argument, followed by one or more file names, when not part of a pip. Alternatively, the script can be stored in an external file and specified to awk with the -f option." You can look up the awk command by typing in "man awk" at the terminal prompt to see more information on the subject.

    Now, lets look at how I used awk again in the suff bash script with the following line that said:

    [CODE]floppydrive=$(echo $floppydrive | awk '{print $1}')[/CODE]

    To properly demonstrate its operation, lets add it to the end of the previous command:

    [CODE]sudo ufiformat --inquire --verbose | grep /dev/ | awk '{print $1}'
    /dev/sdk[/CODE]

    The difference now is we only get the first entry of /dev/sdk, which is all we really needed to use in the first place. Now in my script, I ran into an issue I could not discern when a floppy disk was not the drive and I had to separate the last command, taking another line to complete once the lack of a floppy disk check was complete. Now you can see though how you can use awk and even combine it with grep when needed.

    The next command is sed. To quote Admin a last time, "The sed utility is a stream editor designed to transform input according to the specifications it receives." You can look up the sed command by typing in "man sed" at the terminal prompt to see more information on the subject. Again, in suff here is a line where I use the sed command:

    [CODE]format[$start]=$(ufiformat -i $floppydrive | grep formattable | sed -n $(( start ))p[/CODE]

    To run this command at the terminal prompt here is what I did and what I got.

    [CODE]james@Linux-Master:~> sudo ufiformat -i /dev/sdk | grep formattable | sed -n 1p
    formattable 2880 512 1440
    [/CODE]
    If I remove the sed command, then here is what I get:

    [CODE]james@Linux-Master:~> sudo ufiformat -i /dev/sdk | grep formattable
    formattable 2880 512 1440
    formattable 1232 1024 1232
    formattable 2400 512 1200[/CODE]

    In this example, sed is allowing me to pull out just the line I want to use from three lines being provided by the ufiformat command. In our example from suff, I had to use the sudo command only because ufiformat can't access your floppy drive as a normal user.

    So, we have looked at grep, awk and sed, all are useful for manipulating the text output of other terminal commands which we can then sift through for just the info we want to use. As always, please post your comments to our lesson today.

    Thank You,
    Updated 13-Nov-2011 at 16:47 by jdmcdaniel3 (Added in Code Tags I could not use before now.)
  13. jdmcdaniel3's Avatar
    So lets get started with a list of bash commands that you can use. I found a really good listing here:

    [URL="http://ss64.com/bash/"]bash commands - Linux MAN Pages[/URL]

    I would also suggest you get my New Script File script and install it. You can find it here:

    [URL="http://forums.opensuse.org/blogs/jdmcdaniel3/n-s-f-new-script-file-bash-script-file-header-creator-version-2-6-37/"]N.S.F. - New Script File, Bash Script File Header Creator - Version 2.6 - Blogs - openSUSE Forums[/URL]

    Here is one of many guides for someone that might be new to using bash scripting:

    [URL="http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html"]Bash Guide for Beginners[/URL]

    Now here is an example very first script you can write. I used the nsf bash script to create it:

    [CODE]#!/bin/bash

    #: Title : myscript
    #: Date Created: Wed Jul 13 17:54:21 CDT 2011
    #: Last Edit : Wed Jul 13 17:54:21 CDT 2011
    #: Author : James D. McDaniel
    #: Version : 1.00
    #: Description :
    #: Options :

    #
    # This is the standard GPL Statement, leave at the top of the script.
    # Just use the command show_gpl after this function for it to be shown.
    #

    function show_gpl {
    echo ""
    echo "myscript is a bash script file written to be used with openSUSE."
    echo "Copyright (C) 2011 by James D. McDaniel, jmcdaniel3@austin.rr.com"
    echo ""
    echo "This program is free software; you can redistribute it and/or modify"
    echo "it under the terms of the GNU General Public License as published by"
    echo "the Free Software Foundation; either version 2 of the License, or"
    echo "(at your option) any later version."
    echo ""
    echo "This program is distributed in the hope that it will be useful,"
    echo "but WITHOUT ANY WARRANTY; without even the implied warranty of"
    echo "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
    echo "GNU General Public License for more details."
    echo ""
    echo "You should have received a copy of the GNU General Public License"
    echo "along with this program; if not, write to the Free Software"
    echo "Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
    echo ""
    }

    clear
    echo
    echo "This is my first bash script!"

    show_gpl

    exit 0

    # End Of Script[/CODE]

    Please let me hear any comments that you might have.

    Thank You,
    Updated 13-Nov-2011 at 16:45 by jdmcdaniel3 (Added in Code Tags not present before now.)
  14. jdmcdaniel3's Avatar
    Well sakc is not a starter bash script even though the kernel compile process has just four main tasks to perform. I am always interested in adding in function to sakc, but I think something more simple would be best. We could even dissect something simple. I do know that one important aspect is the over all form of a bash script, what is good to do and what is a must to do in creating a bash script? It is early morning here and I can spend more time on this tonight. Lets keep thinking about this and thanks so much for your comments.

    Thank You,
  15. Jonathan_R's Avatar
    I'm such a newbie at bash, that any starting point would be good. I don't know how simple my ideas would be, but perhaps we could take your sakc script and integrate it with hwinfo so that we can get a kernel compiled specifically for the hardware of that system. Since your more versed than I, I'll let you decide on that one. But that would be a cool goal to have.
  16. jdmcdaniel3's Avatar
    Yes vazhavandan, mmcheck was written to run only in a terminal session. If placed into the bin folder as suiggested, it will be in the path. Just open up a terminal session, type in the name mmcheck and press the enter key. I normally open the terminal window to full screen before running mmcheck. This is a bash script file and not designed to run on the desktop, but always in terminal. This is per my instructions on this very page. It is possible to create a desktop icon for mmcheck, but set the properties to open up in Terminal.

    Thank You,
  17. vazhavandan's Avatar
    the mmcheck is running only if i right click and open it and ask it to run on terminal otherwise it is complaining that the command is not found and use "cnf" etc.I am on openSUSE11.4/GNOME 3.X
  18. jdmcdaniel3's Avatar
    You are very welcome Carl. You know that you have the inside track on ANY requested modifications and or suggestions for mmcheck. I am at your command. For instance we still have some oddities with mplayer & mplayer2 but don't know what to suggest. I could make a change on the libdvdcss issue as well. We could include a link to your multimedia software guides. Any and all suggestions will get HIGH priority with me, just say the word.

    Thank You,
  19. caf4926's Avatar
    Thank you for this great work.
  20. jdmcdaniel3's Avatar
    Just saw a great suggestion for a new utility to control power from vodoo. The name of the program is called powertop. It is not installed by default and it is intended for Intel CPU based systems. To install powertop open a terminal session and type in:

    sudo zypper install powertop

    Enter the root user password and allow the utility to load. To use, open a terminal session and type in:

    sudo powertop

    Suggestions you can make will be displayed while you watch. It is a very nice utility. To see more on command line options enter the terminal command:

    man powertop

    for more information. Powertop is most useful with our fellow laptop users, but anyone using Intel can give it a try. Thanks vodoo for your suggestion.

    Thank You,
Page 9 of 10 FirstFirst ... 78910 LastLast