Widget Info

Hi Widget Gurus,
I just came across the term widgets few days back, & I am very excited to know more about it.
I am an abaper & would appreciate , if some body can guide to :
1.Good tutorials on SAP widgets.
2.Basic skill sets to start writing code for widgets
3.Some basic code snippets , so that i can start with..
Prompt reply will surely be rewarded...
thanks in advance,
Best Regards,
Gaurav

Hi Raja,
It worked. The XML page came correctly.
All points r urs..:)
But now I have a new problem with  the widget.
When I set the values in prefrences, the confabulator engine is not able to resolve the address corectly.Lets say a part of URL is :
"http://us4089.wdf.sap.corp:50004/sapbD1lbiZjPTAwMg==)/bc/bsp/sap/zgaurlg_1104"
So WAS Host should be 'us4089.wdf' + .'sap' + '.corp' (i.e App server<us4089.wdf> + domain<sap> + extn<corp>)
WAS port is offcourse 50004.
But the engine gives the following message in debug mode, while executing the widget:"Unable to locate the server named "<EM>us4089.wdf.sap.corp</EM>" ---
Although , simply copying the complete URL & pasting in browser, the BSP page displays correctly.
Please throw some light on this.
More over, Is there any other way apart to log into SAP system , call some FM & retrun value.I checked in widget Refrence manul about some possibility like runCommandInBg(), but I think it can only be used for UNIX system & not DOS/Windows.
Questions galore...
Hope I get some clues
tonnes of Thanks once again....
Best Regards,
Gaurav

Similar Messages

  • Dashcode widget info button with eBooks Author on iPad

    I've created a simple widget using Dashcode. The widget work fine, both in Dashboard and in an eBook I created with iBooks Author, except for the standard info button.
    When I deploy the widget to my Dashboard, the info button works just fine, flips the widget over, and does all the right things.
    When I deploy the exact same widget into my eBook, the widget also works find, but the info button does not show. When I tap where the info button should be, a small rectangle the size of the button appears, but not the button image. Tapping on the rectangle does nothing.
    Does anyone know a solution for this?
    Thanks,
    Michi.

    You might try asking in one of the more general OS X forums.

  • Creating a Widget: Info.plist help

    Hello, I'm currently looking into designing widgets for use on the dashboard, but I'm having some problems. I already have a good understanding of HTML, CSS, and JavaScript, so the problem isn't in the creation of a widget itself, but rather the assembly of it.
    I have a folder that I am using for a widget, entitled "Sample."
    I have all of the necessary files within it:
    -Default.png
    -Icon.png
    -Sample.html
    The HTML file:
    <html>
    <head>
    <title>Basic</title>
    </head>
    <body>
    <h 1>Basic</h 1>
    </body>
    </html>
    -Info.plist
    The Info file:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>CFBundleDisplayName</key>
    <string>Sample</string>
    <key>CFBundleIdentifier</key>
    <string>com.apple.widget.sample</string>
    <key>CFBundleName</key>
    <string>Sample</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>CloseBoxInsetX</key>
    <integer>16</integer>
    <key>CloseBoxInsetY</key>
    <integer>14</integer>
    <key>MainHTML</key>
    <string>Sample.html</string>
    </dict>
    </plist>
    However, when renaming the folder with a .wdgt extension, I receive an error that says the widget is not valid. I think I am saving the info.plist file incorrectly: according to the Dashboard programming guide, it can be made in any text editor, so when saved from TextEdit, the file name becomes "Info.plist.txt". Is this incorrect, or does it matter? I jhaven't found a guide that goes in depth about the saving of the file, so I want to make sure I know what I'm doing wrong. Have I set up the Info.plist file incorrectly? Or is it something else?
    Thanks for your time.
    iMac G5   Mac OS X (10.4.3)  

    Everything looks okay, except for the name on the Info.plist file. Also, make sure when you create the Info.plist file in TextEdit that you're editing it in Plain Text mode and not Rich Text. When you save it, if it wants to append ".txt" onto the end, uncheck the checkbox that says "If no extension is provided, use ".txt"", then give it an extension of ".plist" and click Save. In any case, the name of the file must be "Info.plist" (w/o the quotes, capital i) exactly.
    Anatomy of a Modern Bundle talks more about how the Info.plist file is used in other aspects of OS X.
    Hope this helps...
    Dual 2.7 GHz PowerPC G5 w/ 2.5 GB RAM   Mac OS X (10.4.3)  

  • Dashboard: Can iStat Widget Info Be Displayed Permanently On Desktop?

    Yes, the question is in the title.
    I would like to display the iStat widget, or at least all the info it displays, permanently on my desktop to save myself from continually having to open it.

    You could try DashIt, which allows widgets to be permanently displayed on the desktop: http://mac.softpedia.com/get/Dashboard-Widgets/Webcams/Miscellaneous/Dash-It.sht ml
    ...downside is that the displayed widget is always on top of other windows - other than that it works like a charm. There's another one called Amnesty Widget Browser: http://www.amnestywidgets.com/WidgetBrowser.html which apparently gets round this problem (haven't tried it myself) but it's not freeware.

  • Social widget is now huge.

    Why is it so big now? It takes up nearly half a home screen. I'm using facebook summary now but I have to click on it rather than just glancing at what's going on with the narrow widget info of my friends updates.
    If you're happy with the narrow social widget for that reason then don't update, also if you're not into this fat Belle widget thing Nokia seems to have going.
    There's a difference between giving us the option to have more home screens to actually forcing us to use them. Nokia, you're winding me up.
    With Anna I had one home screen, now I need 3. Less is more.

    For me it's rubbish and another annoyingly large widget. I liked Anna for the small neat widgets. I use to run all what I needed off of one home screen, now I need 3.  Why is this better? Like I said, Nokia gave us more home screens because you're forced to use them for the over sized widgets,
    I'm not sure if just having one home screen allowed me to save power, but my N8 seems to run out quite quickly. Even when I close down all my apps and so on.

  • Time Machine Problem - New Internal Hard Drive, Now Backup Takes Hours

    Need some help!
    Background.
    Almost 4 year old 24" aluminum iMac; 4 gb ram; 500 gb hard drive; OS 10.6.8.
    About 2 months after Alpple Care expired, the internal hard drive failed (New Year's Eve of all times!). Everything else working great.
    Had a Mac technician I know install a new 750 gb drive for me. I cloned back from SuperDuper, and was ready to go. The SuperDuper external is 1.5 TB, partitioned - one half TM, the other half SuperDuper.
    All apps, internet, mail - fine.
    I hooked up my existing Time Macinne (probably not a good idea), and the next backup failed.
    Did some research, and since I have plenty of archived backup anyway, decided that the best thing to do would be to erase the TM external, and start fresh.
    Did that, and as expected, first backup took a couple hours.
    The Problem.
    Now, every incremental backup takes 4 to 5 hours, even if no data has changed.
    "Indexing" lasts for 45 minues; "Backing Up" reads 600,000 plus files, which also goes on for 30 or 40 minutes (approx.), and wants to Calculate changes etc forever; then the actual backup starts out at 10 kb, and in 20 minutes is at 30 kb and then after about an hour I start getting into gbs and the blue bar progresses pretty fast after that. Then "Finishing Up" takes approximately 2 - 3 hours.
    Not right.  :~(
    What I've Done to Toubleshoot.
    First, I re-erased the TM external.
    Then reset PRAM and did an SMC reset on the iMac.
    Then backed up to TM again. The same problem persisted.
    So next, I repeated that process (other than backing up), and I also deleted from the Root Library/Preferences com.apple.timemachine.plist, and from Home/Library/Preferences deleted com.apple.finder.plist. Then rebboted the iMac. Then I did a Disk Utility verify of the empty external - all was/is fine. Then I ran DiskWarrior on the iMac and all was fine; repaired permissions on the iMac from DiscWarrior as well. Then, I did another TM backup to the external, which took a couple hours since it was backing up to an empty drive.
    Next 3 incremental backups still take 4 to 5 hours, even if nothing has changed on theiMac.
    The Request.
    Please if anyone can give me some easy to understand step by step options I might try to get TM working correctly again, it will be most appreciated.
    If I've left out any details that might assist, please also let me know.
    The problem computer is at home and I'm at work, so if any logs are needed, I can post those later today (but in that event, please tell me exactly which log to post and how to isolate it from System Profiler or Console (as there are many logs to choose from and I want to provide the proper info if someone needs to see a log to assist)).
    Thanks in advance!

    Pondini,
    Did every step in D2 (green box) - except did not reinstall Combo Updater which I did late last night.
    After that, did a TM backup - started at 6:15.
    All apps were off.
    Sequence of events and facts:
    At start, 434.03 0f 500.1 GB available on the external TM
    Last backup shown - 7:58 AM; Oldest Back Up - Yesterday at 9:56 (that's the 1st backup after I reinitialized the external for the 2nd or 3rd time trying to get this thing figured out)
    Upon starting and doing the backup -
    Preparing 250,000 (approx.) items (too quick to get the final number) - Parenthetically, this AM it was over 600,000; probably has to do with turning off Spotlight per your D2 instructions
    Next message -
    Backing Up 6.96 GB
    Hung at 2 kb to 90 kb for 20 minutes before progressing
    Ultimately, at 1.78 GB the  progress bar started moving rapidly (as it should) - so this isn't a cable connection issue - the Backup phase took 22 minutes, but from 1.78 GB to 6.96 GB took only a few seconds; I have seen this precise same sequence repeatedly the past 2 days
    Next - Backing Up (the candy cane blue and white progress bar)  - Preparing 140,000 items - took 12 minutes
    Now shows 426.95 GB available on the external
    Next - Backing Up (no count of items shown) - started at 7:05 and went until 7:45 (40 minutes)
    Next - Finishing Backup (blue/white candy cane progress bar; no count of items shown) - started at 7:45 - went until sometime after 8:15 (can't give a precise time because I need to sit down and eat :~)  )
    Backup completed (between bites of chicken) at 8:23.
    Over 2 hours - something isn't right.
    Also, TM Prefs tells me that the Latest Backup was at 7:44 - odd.
    Anyway - to take a step further, here's the TM Buddy widget info you might need:
    Successful Backup: 02:06:32.
    There is no log entry or data showing.
    Just as I sent this, a new backup started, and it appears to be going through the same routine, from Preparing  ....
    Gotta eat.
    Please post any further instructions and I'll do what I can tonight.
    Thanks!
    What is the problem? How do I speed this mother up?
    Thanks!

  • How to get the extension Info from firefox? Do we have any firefox API to communicate with the browser? I couldnt see the HTML of the widget displayed in the toolbar how to access the widget using JS or any way

    How to get the extension Info from firefox? Do we have any firefox API to communicate with the browser? I couldnt see the HTML of the widget displayed in the toolbar how to access the widget using JS or any way

    Hi,
    Thanks for the suggestion. I've been playing around with some of the classes of the java.net package and java.io
    Using the URL class i can get the content of the data from a STATIC page and output that response to file so that is does not display to the client broswer.
    But this only works if the URL i give points to a static html page.
    So the problem i'm getting is if i'm righting in arguments in the URL, this means that server needs to process the arguments i give and its sends back a dynamic result. Because its dynamic the URL class can not handle this and throws me an exception everytime :(
    Have u ever tried to do some things like this?
    Rahul

  • Is there a date entry widget for XMP custom file info panels?

    Looking through the Custom File Info Panels documentation, the samples, and the default info panels presented in Photoshop, I can't find any reference to a date entry widget - the closest I've seen is the date_static_text widget.
    Is there any way to present an editable, validating date entry field to our end-users through the File Info panel?
    (the info we're wanting to store is a release date so it's user-specified, and not derivable from the file in any way)

    Mark,
    The PDF/A extension schema provides a big step to the self-sufficient functionality that you are asking about. It permits the XMP schema description information of custom XMP schemas to be embedded into the XMP as payload so that the file can be opened in years to come and the target metadata acurately interperted. Currently, PDF tools are active candidate to make use of this facility. However, there is nothing preventing future use with other file formats, and other tools (via plug-ins?).
    It does not include vocabulary, static text, and panel presentation layout information.
    http://www.pdfa.org/doku.php
    It defines a "known" subset of standard XMP properties from the 2001 XMP Spec. Everything else is "custom".
    You could craft a custom File Info "template" with the PDF/A extension for your custom XMP fields. Then import the template into each file.
    The PDF/A extension schema itself is implemented with multi-dimensional XMP arrays. MetaGrove Plug-in dialog screen shots can be viewed on http://www.poundhillsoftware.net/Acrobat.htm
    Regards,
    Carl Rambert

  • Change item order in Muse CC Quick info widget

    Hi,
    haven´t figured out yet how to change the items order from the Muse CC "Quick Info" widget.
    When I have f.i. 5 items how do I insert one at position 2. When I click f.i. the "+" at position 2 the new item will regardless be at position #6 (at the end of the line and not at third position)
    How can I change that?
    Thanks in advance.

    Thank you for your answer.
    Actually changing the triggers position was the first thing i tried and as long as the trigger is activated by click or mouseover/rollover this solution does work unfortunately it does not with autoplay option.
    With autoplay set it plays the "old" sequence no matter where I put the trigger so for instance if I have 5 triggers and set the 5th to position #2 it´s not shown as info #2 but still as #5 so #1,#2,#3,#4 are coming first still and then comes my trigger #5 that I actually dragged to position #2 before.

  • My info for battery charging says "Not Charging" when it is charging as per dashboard widget.

    My info for battery charging says "Not Charging" when it is charging as per dashboard widget. Since change to lion all slowed down do I need more ram ( have 2 gig). Lost  some icons in web site icons and other random icons. So far SL better.

    Yeah, it was purchased in August 2008. I'm not really sure what a charge cycle is, but I do plug it in and unplug it a lot to a power source. Mainly because I keep my computer on most of the time (either on or on sleep). So between taking it to classes and stuff, I'll recharge in between and when it's really low, otherwise I run it off the battery most of the time.
    On a sidenote, I have went to that information thing about about the battery after letting it sit plug in for a few hours, and now it has this information:
    Battery Information:
    Model Information:
    Serial Number: DP-ASMB016-38ea-4762
    Manufacturer: DP
    Device name: ASMB016
    Pack Lot Code: 0002
    PCB Lot Code: 0000
    Firmware Version: 0110
    Hardware Revision: 0500
    Cell Revision: 0200
    Charge Information:
    Charge remaining (mAh): 61993
    Fully charged: No
    Charging: No
    Full charge capacity (mAh): 61993
    Health Information:
    Cycle count: 324
    Condition: Good
    Battery Installed: Yes
    Amperage (mA): -1208
    Voltage (mV): 12129
    System Power Settings:
    AC Power:
    System Sleep Timer (Minutes): 0
    Disk Sleep Timer (Minutes): 10
    Display Sleep Timer (Minutes): 60
    Automatic Restart On Power Loss: No
    Wake On AC Change: No
    Wake On Clamshell Open: Yes
    Wake On LAN: Yes
    Display Sleep Uses Dim: Yes
    Battery Power:
    System Sleep Timer (Minutes): 10
    Disk Sleep Timer (Minutes): 10
    Display Sleep Timer (Minutes): 2
    Wake On AC Change: No
    Wake On Clamshell Open: Yes
    Display Sleep Uses Dim: Yes
    Reduce Brightness: Yes
    Hardware Configuration:
    UPS Installed: No
    AC Charger Information:
    Connected: No
    Charging: No
    Message was edited by: Akalboy
    Oh, forgot to note. Now the time remaining is 10 hours, which is DEFINITELY wrong.

  • I cannot view any weather info in iOS 7 Notification Center. Any ideas how to turn this widget on? Stocks and daily calendar are there, just not weather.

    Location services are on. Weather app is installed. I can get weather info if I go to the app. That info is completely nonexistent in the pull down Notification Center.
    Any ideas?

    Never mind.. I turned off location services for the weather app, turned it back on and now it's magically working.

  • Displaying Ztable info in Widgets

    Hello,
    I have  Ztable which contains some data.
    I want to display this information in Ztable in the <b>widgets</b>.
    can anyone suggest me how to proceed.?
    thanx in advance.

    You can create a function module which returns the data you're interested in -- from that you can create a web service.  If you're running a 640 WAS envrionment there is a nice little wizard that does the web service configuration for you (620 WAS if the Soap adapter is activated all function modules automatically are available as webservices -- I think).  This will expose your function module via SOAP/XML.  Then you can comunicate with your webservice using JavaScript functions (many examples -- just google javascript, soap).
    I've done this alot to build Sales Dashboard widgets for our management team.
    Good luck.
    /Greg

  • N8: How to restore music store widget after hard r...

    Hi
    I lost all  nokia N8 widgets including Music store after I hard reset my N8.
    I have really been searching but have been unable to find a work around for this. I am unable to play any OVI music on my phone as it searched for a license and ends up saying that this is not my registered device.
    I really need some help.
    Nokia care has failed to solve my problewm so far.
    HELP!
    MODERATOR'S NOTE:  We have edited your post. Please refrain from posting irrelevant characters. Posting with a brief and concise concern would be enough to gather solution.

    I have been able to restore everything....except the Ovi Music Widget after a hardreset.
    This might help - 
    http://www.nokian8blog.info/2011/06/how-to-restore-ovi-music-unlimited.html

  • Awesome systray is not showing all icons, perhaps overlapping widgets?

    I have a problem with my Awesome configuration that results in some of the icons being missing or partially missing from my systray. I suspect this is because of some overlapping, since they are partially hidden. You can see the problem in the top right corner.
    rc.lua:
    -- Standard awesome library
    require("awful")
    require("awful.autofocus")
    require("awful.rules")
    -- Theme handling library
    require("beautiful")
    -- Notification library
    require("naughty")
    --Wiget Library
    require("vicious")
    -- awesoMPD Widget
    --require("awesompd/awesompd")
    -- {{{ Variable definitions
    -- Themes define colours, icons, and wallpapers
    beautiful.init("/usr/share/awesome/themes/blind-alien/theme.lua")
    -- This is used later as the default terminal and editor to run.
    terminal = "urxvt"
    editor = os.getenv("EDITOR") or "vim"
    editor_cmd = terminal .. " -e " .. editor
    -- Enable or disable widgets:
    -- You also have to edit the wiboxes!
    useSysInfo = true
    usePacman = true
    useMpd = true
    useWifi = false
    useNet = true
    useBat = false
    useCpu = true
    useMem = true
    useTemp = false
    -- Widget Settings
    cpuCores = 2 --Number of CPU Cores
    thermalZone = "coretemp.0" --Thermal Zone to read cpu temperature from (check vicious docu)
    thermalData = "core" --Data Source: "proc", "core" or "sys"
    netAdapter = "eth0" --Network adapter to monitor
    wifiAdapter = "wlan0" --Wifi adapter for wifi widget
    pacUpdate = "yaourt -Sy" --Command to update pacman cache
    pacUpgrade = "yaourt -Su" --Command to upgrade system
    networkManager = terminal .. " -e wicd-curses"
    battery = "BAT1" --Battery to monitor
    widthMpd = 420 --Width of MPD widget
    -- Widget update intervals in seconds
    updateCpu = 1
    updatePac = 1801
    updateMpd = 1
    updateWifi = 7
    updateNet = 1
    updateBat = 31
    updateMem = 7
    -- For Dual-Screen setups:
    -- Set "dualScreen" to "2" if you want a different, optimized widget layout for every screen.
    -- If you set it to "-1" it will copy the same widget layout to both screens. (default Awesome behavior)
    dualScreen = -1
    screencount = screen.count()
    -- Default modkey.
    -- Usually, Mod4 is the key with a logo between Control and Alt.
    -- If you do not like this or do not have such a key,
    -- I suggest you to remap Mod4 to another key using xmodmap or other tools.
    -- However, you can use another modifier like Mod1, but it may interact with others.
    modkey = "Mod4"
    -- Table of layouts to cover with awful.layout.inc, order matters.
    layouts =
    awful.layout.suit.tile,
    awful.layout.suit.tile.left,
    awful.layout.suit.tile.bottom,
    awful.layout.suit.tile.top,
    awful.layout.suit.fair,
    awful.layout.suit.fair.horizontal,
    awful.layout.suit.magnifier,
    awful.layout.suit.floating,
    awful.layout.suit.max
    -- {{{ Tags
    -- Define a tag table which will hold all screen tags.
    tags = {
    --names = { "1", "2", "3", "4", "5", "6"},
    --names = { "⌘", "♐", "⌥", "ℵ"},
    --names = { "⠪", "⠫", "⠬", "⠭", "⠮", "⠳"},
    names = { "⠐", "⠡", "⠪", "⠵", "⠻", "⠿" },
    --names = { " ∙", "⠡", "⠲", "⠵", "⠻", "⠿"},
    --names = { " ⠐ ", " ⠡ ", " ⠲ ", " ⠵ ", " ⠾ ", " ⠿ "},
    --names = { "⢷", "⣨", "⡪", "⣌", "⣪", "⡝"},
    layout = {
    layouts[8], layouts[8], layouts[8], layouts[5], layouts[8], layouts[8]
    for s = 1, screencount do
    tags[s] = awful.tag(tags.names, s, tags.layout)
    end
    -- {{{ Menu
    -- Create a laucher widget and a main menu
    myawesomemenu = {
    { "manual", terminal .. " -e man awesome" },
    { "edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },
    { "restart WM", awesome.restart },
    { "logout", awesome.quit },
    { "shutdown" , "sudo /sbin/halt -p" },
    { "reboot" , "sudo /sbin/reboot" }
    myinternet = {
    { "Chromium", "chromium" },
    { "Firefox" , "firefox" },
    { "IM" , "pidgin" },
    { "IRC" , "xchat"}
    mymedia = {
    { "Spotify", "spotify" },
    { "Rhythmbox", "rhythmbox" },
    { "ncmpcpp", "urxvt -e ncmpcpp" },
    { "Gnome Mplayer", "gnome-mplayer" },
    { "VLC" , "vlc" }
    mygraphics = {
    { "GIMP" , "gimp" },
    { "Inkscape" , "inkscape" },
    { "Image viewer" , "eog" }
    myoffice = {
    { "Base" , "lobase" },
    { "Calc" , "localc" },
    { "Impress" , "loimpress" },
    { "LibreOffice" , "loffice" },
    { "Writer" , "lowriter" },
    { "Lyx" , "lyx" },
    { "Document viewer" , "evince" }
    mysystem = {
    { "htop" , "urxvt -e htop" },
    { "Partition" , "gksudo gparted" },
    { "Sys mon" , "gnome-system-monitor" }
    myutilities = {
    { "Gedit" , "gedit" },
    { "Virtualbox" , "VirtualBox" },
    { "File Manager" , "nautilus --no-desktop" }
    myplaces = {
    { "Home" , "nautilus --no-desktop /home/johan/" },
    { "Documents" , "nautilus --no-desktop /home/johan/Documents/" },
    { "Downloads" , "nautilus --no-desktop /home/johan/Downloads/" },
    { "Music" , "nautilus --no-desktop /home/johan/Music/" },
    { "Pictures" , "nautilus --no-desktop /home/johan/Pictures/" }
    myserverplaces = {
    { "Server root" , "nautilus --no-desktop /srv/" },
    { "Downloads" , "nautilus --no-desktop /srv/download/" },
    { "Movies" , "nautilus --no-desktop /srv/movies/" },
    { "Tv-Series" , "nautilus --no-desktop /srv/tv-series/" },
    { "Misc" , "nautilus --no-desktop /srv/misc/" }
    mymainmenu = awful.menu({ items = {
    { "Terminal", terminal },
    { "Places" , myplaces },
    { "Server" , myserverplaces },
    { "Internet" , myinternet },
    { "Media" , mymedia },
    { "Graphics" , mygraphics },
    { "Office" , myoffice },
    { "Utilities" , myutilities },
    { "Systools" , mysystem },
    { "Awesome", myawesomemenu }
    mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
    menu = mymainmenu })
    -- Separators
    bubble = widget({ type = "textbox" })
    spacer = widget({ type = "textbox" })
    space = widget({ type = "textbox" })
    separator = widget({ type = "textbox" })
    bracketl = widget({ type = "textbox" })
    bracketr = widget({ type = "textbox" })
    vertline = widget({ type = "textbox" })
    dash = widget({ type = "textbox" })
    bubble.text = " ∘ "
    spacer.text = " "
    space.text = " "
    --separator.text = "<span font_desc='ClearlyU'> ⡾ </span>"
    separator.text = "] ["
    vertline.text = "|"
    dash.text = "-"
    bracketl.text = "["
    bracketr.text = "]"
    -- Status Labels
    cpuLabel = {}
    for s = 1, cpuCores do
    cpuLabel[s] = widget({ type = "textbox" })
    cpuLabel[s].text = "Core " .. s
    end
    rlabel = widget({ type = "textbox" })
    rlabel.text = "Root:"
    hlabel = widget({ type = "textbox" })
    hlabel.text = "Home:"
    -- WIDGETS --
    -- OS info
    if useSysInfo == true then
    sys = widget({ type = "textbox" })
    vicious.register(sys, vicious.widgets.os, "$1 $2")
    end
    -- Pacman updates
    if usePacman == true then
    -- Widget
    pnoghosticon = widget({ type = "imagebox" })
    pnoghosticon.image = image(beautiful.widget_pacnoghost)
    pnoghosticon.visible = true
    pghosticon = awful.widget.launcher({
    image = beautiful.widget_pacghost,
    command = terminal .. " -e " .. pacUpgrade .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    pghosticon.visible = false
    -- Icon
    -- picon = widget({ type = "imagebox" })
    -- picon.image = image(beautiful.widget_pacnew)
    -- Use the Pacman icon as launcher to update the package list (change to fit your package-management system)
    picon = awful.widget.launcher({
    image = beautiful.widget_pacnew,
    command = pacUpdate .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    runpicon = awful.widget.launcher({
    image = beautiful.widget_pacman_run,
    command = pacUpdate .. " && echo -e 'vicious.force({ pacup, })' | awesome-client"
    runpicon.visible = false
    pacup = widget({ type = "textbox" })
    vicious.register(pacup, vicious.widgets.pkg,
    function(widget, args)
    local nr = tonumber(args[1])
    if nr ~= 0 then
    pnoghosticon.visible = false
    pghosticon.visible = true
    picon.visible = false
    runpicon.visible = true
    else
    pghosticon.visible = false
    pnoghosticon.visible = true
    runpicon.visible = false
    picon.visible = true
    end
    end, updatePac, "Arch")
    end
    -- MPD Widget
    if useMpd == true then
    -- PLAY, STOP, PREV/NEXT Buttons
    -- requires modification of /usr/share/awesome/lib/awful/widget/launcher.lua
    -- b = util.table.join(w:buttons(), button({}, 1, nil, function () util.spawn(args.command) end))
    -- to:
    -- b = util.table.join(w:buttons(), button({}, 1, nil, function () util.spawn_with_shell(args.command) end))
    music_play = awful.widget.launcher({
    image = beautiful.widget_play,
    command = "mpc toggle && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_pause = awful.widget.launcher({
    image = beautiful.widget_pause,
    command = "mpc toggle && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_pause.visible = false
    music_stop = awful.widget.launcher({
    image = beautiful.widget_stop,
    command = "mpc stop && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_prev = awful.widget.launcher({
    image = beautiful.widget_prev,
    command = "mpc prev && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    music_next = awful.widget.launcher({
    image = beautiful.widget_next,
    command = "mpc next && echo -e 'vicious.force({ mpdwidget, })' | awesome-client"
    mpdicon = widget({ type = "imagebox" })
    mpdicon.image = image(beautiful.widget_mpd)
    -- Initialize widget
    mpdwidget = widget({ type = "textbox" })
    --mpdwidget.wrap = "none"
    mpdwidget.width = widthMpd
    --mpdwidget.wrap = "word_char"
    -- Register Widget
    --vicious.register(mpdwidget, vicious.widgets.mpd, "(${state}) : ${Artist} - ${Title} ]", 13)
    -- Set the maximum width of the MPD widget inside the string.format function as "%.<length>s"
    vicious.register(mpdwidget, vicious.widgets.mpd,
    function(widget, args)
    --local maxlength = 85
    local font = beautiful.font
    local string = args["{Artist}"] .. " - " .. args["{Title}"]
    --local string = "[" .. args["{state}"] .. "]" .. " : " .. args["{Artist}"] .. " - " .. args["{Title}"]
    --[[ if maxlength < string.len(string) then
    return "<span font_desc='" .. font .. "'>" .. string.sub(string, 0, maxlength-6) .. "</span> ..."
    else
    return "<span font_desc='" .. font .. "'>" .. string .. "</span>"
    end]]
    if args["{state}"] == "Play" then
    music_play.visible = false
    music_pause.visible = true
    else
    music_play.visible = true
    music_pause.visible = false
    end
    return string
    end, updateMpd)
    end
    ---- WIFI Widget
    --if useWifi == true then
    -- wifiwidget = widget({ type = "textbox" })
    -- wifiwidget.width = 22
    -- wifiwidget.align = "right"
    -- --wifiimage = widget({ type = "imagebox" })
    -- wifiimage0 = awful.widget.launcher({
    -- image = beautiful.widget_wifi0,
    -- command = networkManager
    -- wifiimage0.image.visible = true
    -- wifiimage1 = awful.widget.launcher({
    -- image = beautiful.widget_wifi1,
    -- command = networkManager
    -- wifiimage1.image.visible = false
    -- wifiimage2 = awful.widget.launcher({
    -- image = beautiful.widget_wifi2,
    -- command = networkManager
    -- wifiimage2.image.visible = false
    -- wifiimage3 = awful.widget.launcher({
    -- image = beautiful.widget_wifi3,
    -- command = networkManager
    -- wifiimage3.image.visible = false
    -- wifiimage4 = awful.widget.launcher({
    -- image = beautiful.widget_wifi4,
    -- command = networkManager
    -- wifiimage4.image.visible = false
    -- -- Register Widget
    -- -- change to the desired network adapter if needed
    -- --vicious.register(wifiwidget, vicious.widgets.wifi, "~ ${link}%", 5, "wlan0")
    -- vicious.register(wifiwidget, vicious.widgets.wifi,
    -- function(widget, args)
    -- if tonumber(args["{link}"]) > 75 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = true
    -- elseif tonumber(args["{link}"]) > 50 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = true
    -- wifiimage4.visible = false
    -- elseif tonumber(args["{link}"]) > 25 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = false
    -- wifiimage2.visible = true
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- elseif tonumber(args["{link}"]) > 0 then
    -- wifiimage0.visible = false
    -- wifiimage1.visible = true
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- else
    -- wifiimage0.visible = true
    -- wifiimage1.visible = false
    -- wifiimage2.visible = false
    -- wifiimage3.visible = false
    -- wifiimage4.visible = false
    -- end
    -- return string.format("%02d%%", tonumber(args["{link}"]))
    -- end, updateWifi, wifiAdapter)
    --end
    -- NETWORK Widget
    if useNet == true then
    dnicon = widget({ type = "imagebox" })
    upicon = widget({ type = "imagebox" })
    dnicon.image = image(beautiful.widget_down)
    upicon.image = image(beautiful.widget_up)
    -- Initialize widget
    netdnwidget = widget({ type = "textbox" })
    netdnwidget.width = 55
    --netdnwidget.align = "right"
    netupwidget = widget({ type = "textbox" })
    netupwidget.width = 55
    --netupwidget.align = "right"
    -- Register widget
    -- change to the desired network adapter if needed
    --vicious.register(netdnwidget, vicious.widgets.net, "${eth0 down_kb} kB/s", 1)
    --vicious.register(netupwidget, vicious.widgets.net, "${eth0 up_kb} kB/s", 1)
    -- The following code formats the output to fill with zeroes at the beginning i.e. 013 kB/s instead of 13 kB/s.
    -- It also automatically switches to MB/s if there is more than 999 kB/s
    vicious.register(netdnwidget, vicious.widgets.net,
    function(widget, args)
    if tonumber(args["{" .. netAdapter .. " down_kb}"]) > 999 then
    return string.format("%04.1f MB/s", tonumber(args["{" .. netAdapter .. " down_mb}"]))
    else
    return string.format("%03d kB/s", tonumber(args["{" .. netAdapter .. " down_kb}"]))
    end
    end, updateNet)
    vicious.register(netupwidget, vicious.widgets.net,
    function(widget, args)
    if tonumber(args["{" .. netAdapter .. " up_kb}"]) > 999 then
    return string.format("%04.1f MB/s", tonumber(args["{" .. netAdapter .. " up_mb}"]))
    else
    return string.format("%03d kB/s", tonumber(args["{" .. netAdapter .. " up_kb}"]))
    end
    end, updateNet)
    end
    ---- BATTERY widget
    --if useBat == true then
    -- baticon = widget({ type = "imagebox" })
    -- --baticon.image = image(beautiful.widget_batfull)
    -- --Initialize widget
    -- batwidget = widget({ type = "textbox" })
    -- batwidget.width = 22
    -- batwidget.align = "right"
    -- --Register widget
    -- --vicious.register(batwidget, vicious.widgets.bat, "$1$2", 31, "BAT1")
    -- vicious.register(batwidget, vicious.widgets.bat,
    -- function(widget, args)
    -- if string.match(args[1], "[+↯]") then
    -- baticon.image = image(beautiful.widget_ac)
    -- elseif tonumber(args[2]) > 40 then
    -- baticon.image = image(beautiful.widget_batfull)
    -- elseif tonumber(args[2]) > 20 then
    -- baticon.image = image(beautiful.widget_batlow)
    -- else
    -- baticon.image = image(beautiful.widget_batempty)
    -- end
    -- if tonumber(args[2]) == 100 then
    -- return "Full"
    -- end
    -- return args[2] .. "%"
    -- end, updateBat, battery)
    --end
    -- {{{ CPU
    --if useTemp == true then
    -- -- Core Temp
    -- tempwidget = widget({ type = "textbox" })
    -- tempwidget.width = 26
    -- tempwidget.align = "right"
    -- vicious.register(tempwidget, vicious.widgets.thermal, "$1 C", updateCpu, { thermalZone, thermalData })
    -- --vicious.register(tempwidget, vicious.widgets.thermal, "$1°C", 5, { "thermal_zone0", "sys" })
    -- -- Icon
    -- tempicon = widget({ type = "imagebox" })
    -- tempicon.image = image(beautiful.widget_temp)
    --end
    -- Readout
    if useCpu == true then
    -- Icon
    cpuicon = widget({ type = "imagebox" })
    cpuicon.image = image(beautiful.widget_cpu)
    -- Core 1 Meter
    cpubar = {}
    freq = {}
    displayCores = {}
    displayCpu = {}
    for s = 1, cpuCores do
    cpubar[s] = awful.widget.progressbar()
    cpubar[s]:set_width(50)
    cpubar[s]:set_height(6)
    cpubar[s]:set_vertical(false)
    cpubar[s]:set_background_color("#434343")
    --cpubar:set_color(beautiful.fg_normal)
    cpubar[s]:set_gradient_colors({ beautiful.fg_normal, beautiful.fg_normal, beautiful.fg_normal, beautiful.bar })
    --Delete the following line if you want to put the widget on the left side of the wibox
    cpubar[s].layout = awful.widget.layout.horizontal.rightleft
    vicious.register(cpubar[s], vicious.widgets.cpu, "$" .. s, updateCpu)
    awful.widget.layout.margins[cpubar[s].widget] = { top = 6 }
    -- Frequency
    freq[s] = widget({ type = "textbox" })
    freq[s].width = 44
    freq[s].align = "right"
    --vicious.register(freq1, vicious.widgets.cpufreq, "$2 GHz", 9, "cpu0")
    vicious.register(freq[s], vicious.widgets.cpufreq,
    function(widget, args)
    return string.format("%03.1f GHz", args[2])
    end, updateCpu, "cpu" .. s - 1)
    -- Cache that shit
    vicious.cache(vicious.widgets.cpu)
    end
    end
    -- }}} CPU
    -- {{{ MEM
    if useMem == true then
    -- Icon
    memicon = widget({ type = "imagebox" })
    memicon.image = image(beautiful.widget_mem)
    -- Percentage
    --mem = widget({ type = "textbox" })
    --vicious.register(mem, vicious.widgets.mem, "$1%")
    -- Meter
    membar = awful.widget.progressbar()
    membar:set_width(50)
    membar:set_height(6)
    membar:set_vertical(false)
    membar:set_background_color("#434343")
    --membar:set_color(beautiful.fg_normal )
    membar:set_gradient_colors({ beautiful.fg_normal, beautiful.fg_normal, beautiful.fg_normal, beautiful.bar })
    --This bar should be placed on the right side of the wibox unless
    --it's a dual-screen config in which case the default (leftright)
    --layout is used... change that if you need!
    if screencount ~= dualScreen then
    membar.layout = awful.widget.layout.horizontal.rightleft
    end
    --Register the widget
    vicious.register(membar, vicious.widgets.mem, "$1", updateMem)
    -- Align progressbars
    awful.widget.layout.margins[membar.widget] = { top = 6 }
    -- MEM Usage
    --mem_total = widget({ type = "textbox" })
    --vicious.register(mem_total, vicious.widgets.mem, "$3 MB", 9)
    --mem_used = widget({ type = "textbox" })
    --vicious.register(mem_total, vicious.widgets.mem, "$2 MB", 9,)
    -- Cache that shit
    vicious.cache(vicious.widgets.mem)
    end
    -- }}} MEM
    -- Create a textclock widget
    mytextclock = awful.widget.textclock({ align = "right" }, "%H:%M")
    awful.widget.layout.margins[mytextclock] = { top = -1 }
    -- Create a systray
    mysystray = widget({ type = "systray"})
    -- Create a wibox for each screen and add it
    mywibox = {}
    mybottomwibox = {}
    mypromptbox = {}
    mylayoutbox = {}
    mytaglist = {}
    mytaglist.buttons = awful.util.table.join(awful.button({}, 1, awful.tag.viewonly),
    awful.button({ modkey }, 1, awful.client.movetotag),
    awful.button({}, 3, awful.tag.viewtoggle),
    awful.button({ modkey }, 3, awful.client.toggletag),
    awful.button({}, 4, awful.tag.viewnext),
    awful.button({}, 5, awful.tag.viewprev))
    mytasklist = {}
    mytasklist.buttons = awful.util.table.join(awful.button({}, 1, function(c)
    if not c:isvisible() then
    awful.tag.viewonly(c:tags()[1])
    end
    client.focus = c
    c:raise()
    end),
    awful.button({}, 3, function()
    if instance then
    instance:hide()
    instance = nil
    else
    instance = awful.menu.clients({ width = 250 })
    end
    end),
    awful.button({}, 4, function()
    awful.client.focus.byidx(1)
    if client.focus then client.focus:raise() end
    end),
    awful.button({}, 5, function()
    awful.client.focus.byidx(-1)
    if client.focus then client.focus:raise() end
    end))
    for s = 1, screencount do
    -- Set a screen margin for borders
    awful.screen.padding(screen[s], { top = 0 })
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt()
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(awful.button({}, 1, function() awful.layout.inc(layouts, 1) end),
    awful.button({}, 3, function() awful.layout.inc(layouts, -1) end),
    awful.button({}, 4, function() awful.layout.inc(layouts, 1) end),
    awful.button({}, 5, function() awful.layout.inc(layouts, -1) end)))
    mylayoutbox[s].resize = false
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)
    awful.widget.layout.margins[mytaglist[s]] = { top = -2 }
    -- WARNING: In order to properly view the tasklist some lua files have been modified. For the
    -- tasklist_floating_icon icon to be placed on the left side of the task name instead of the
    -- right alignment, /usr/share/awesome/lib/awful/widget/tasklist.lua in function new(label, buttons) the
    -- variable widgets.textbox has to be modified like this:
    -- remove bg_align = "right" and
    -- modify the left margin from 2 to icon width + 2 (i.e.: 18).
    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(function(c)
    return awful.widget.tasklist.label.currenttags(c, s,
    -- WARNING: Requires modified /usr/share/awesome/lib/awful/widget/tasklist.lua !!!
    -- This basically hides the application icons on the tasklist. If you don't want this or
    -- prefer not to change your tasklist.lua remove the following line!
    { hide_icon = true })
    end, mytasklist.buttons)
    awful.widget.layout.margins[mytasklist[s]] = { top = 2 }
    -- WIBOXES --
    -- Here we create the wiboxes if it's not a dual-screen layout
    if screencount ~= dualScreen then
    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s, border_width = 0, height = 18 })
    -- Add widgets to the wibox - order matters
    mywibox[s].widgets = {
    mytaglist[s],
    mypromptbox[s],
    displaySysInfo,
    layout = awful.widget.layout.horizontal.leftright
    mytextclock,
    mylayoutbox[s],
    s == 1 and mysystray or nil,
    mytasklist[s],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[s] = awful.wibox({ position = "bottom", screen = s, border_width = 0, height = 18 })
    mybottomwibox[s].widgets = {
    space, music_play, music_pause, music_stop, music_prev, music_next, space, mpdwidget,
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    bracketr,
    -- spacer, batwidget, spacer, baticon, spacer,
    -- separator,
    -- spacer, wifiwidget, spacer, wifiimage0, wifiimage1, wifiimage2, wifiimage3, wifiimage4, spacer,
    -- separator,
    -- spacer, tempwidget, spacer, tempicon, spacer,
    -- separator,
    spacer, freq[1], spacer, cpubar[1], spacer,
    --cpuLabel[1], spacer,
    cpuicon, spacer,
    separator,
    spacer, membar, spacer, memicon, spacer,
    separator,
    spacer, netupwidget, spacer, upicon, spacer, separator, spacer, netdnwidget, spacer, dnicon, spacer,
    separator,
    space, pghosticon, pnoghosticon, runpicon, picon, space,
    bracketl,
    layout = awful.widget.layout.horizontal.rightleft
    end
    end
    if screencount == dualScreen then
    -- Here we create the wiboxes if it is a dual screen configuration:
    mywibox[1] = awful.wibox({ position = "top", screen = 1, border_width = 0, height = 18 })
    -- Add widgets to the wibox - order matters
    mywibox[1].widgets = {
    mytaglist[1],
    spacer,
    mypromptbox[1],
    mytasklist[1],
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    mytextclock,
    -- spacer,
    mylayoutbox[1],
    -- spacer,
    -- mytasklist[1],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[1] = awful.wibox({ position = "bottom", screen = 1, border_width = 0, height = 18 })
    mybottomwibox[1].widgets = {
    space, music_play, music_pause, music_stop, music_prev, music_next, space, mpdwidget,
    layout = awful.widget.layout.horizontal.leftright
    space,
    s == 1 and mysystray or nil,
    layout = awful.widget.layout.horizontal.rightleft
    mywibox[2] = awful.wibox({ position = "top", screen = 2, border_width = 0, height = 18 })
    mywibox[2].widgets = {
    space,
    mytaglist[2],
    spacer,
    mypromptbox[2],
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    mytextclock,
    space,
    mylayoutbox[2],
    spacer,
    mytasklist[2],
    layout = awful.widget.layout.horizontal.rightleft
    mybottomwibox[2] = awful.wibox({ position = "bottom", screen = 2, border_width = 0, height = 18 })
    mybottomwibox[2].widgets = {
    spacer,
    bracketl,
    spacer, sys, spacer,
    separator,
    space, runpicon, picon, pghosticon, pnoghosticon, space,
    separator,
    spacer, dnicon, spacer, netdnwidget, spacer, separator, spacer, upicon, spacer, netupwidget, spacer,
    separator,
    spacer, memicon, spacer, membar, spacer,
    bracketr,
    layout = awful.widget.layout.horizontal.leftright
    spacer,
    bracketr,
    spacer, tempwidget, spacer, tempicon, spacer,
    separator,
    spacer, freq[2], spacer, cpubar[2], spacer,
    cpuLabel[2], spacer,
    cpuicon, spacer,
    separator,
    spacer, freq[1], spacer, cpubar[1], spacer,
    cpuLabel[1], spacer,
    cpuicon, spacer,
    bracketl,
    layout = awful.widget.layout.horizontal.rightleft
    end
    -- {{{ Mouse bindings
    root.buttons(awful.util.table.join(awful.button({}, 3, function() mymainmenu:toggle() end),
    awful.button({}, 4, awful.tag.viewnext),
    awful.button({}, 5, awful.tag.viewprev)))
    -- {{{ Key bindings
    globalkeys = awful.util.table.join(awful.key({ modkey, }, "Left", awful.tag.viewprev),
    awful.key({ }, "Print", function () awful.util.spawn("gnome-screenshot") end),
    awful.key({ modkey, }, "Right", awful.tag.viewnext),
    awful.key({ modkey, }, "Escape", awful.tag.history.restore),
    awful.key({ modkey, }, "j",
    function()
    awful.client.focus.byidx(1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "k",
    function()
    awful.client.focus.byidx(-1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "w", function() mymainmenu:show({ keygrabber = true }) end),
    --Volume manipulation
    -- awful.key({}, "XF86AudioRaiseVolume", function() awful.util.spawn("amixer set Master 5+") end),
    -- awful.key({}, "XF86AudioLowerVolume", function() awful.util.spawn("amixer set Master 5-") end),
    -- Layout manipulation
    awful.key({ modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end),
    awful.key({ modkey, "Shift" }, "k", function() awful.client.swap.byidx(-1) end),
    awful.key({ modkey, "Control" }, "j", function() awful.screen.focus_relative(1) end),
    awful.key({ modkey, "Control" }, "k", function() awful.screen.focus_relative(-1) end),
    awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
    awful.key({ modkey, }, "Tab",
    function()
    awful.client.focus.history.previous()
    if client.focus then
    client.focus:raise()
    end
    end),
    -- Standard program
    awful.key({ modkey, }, "Return", function() awful.util.spawn(terminal) end),
    awful.key({ modkey, "Control" }, "r", awesome.restart),
    awful.key({ modkey, "Shift" }, "q", awesome.quit),
    awful.key({ modkey, }, "l", function() awful.tag.incmwfact(0.05) end),
    awful.key({ modkey, }, "h", function() awful.tag.incmwfact(-0.05) end),
    awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1) end),
    awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1) end),
    awful.key({ modkey, "Control" }, "h", function() awful.tag.incncol(1) end),
    awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol(-1) end),
    awful.key({ modkey, }, "space", function() awful.layout.inc(layouts, 1) end),
    awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(layouts, -1) end),
    -- Prompt
    awful.key({ modkey }, "r", function() mypromptbox[mouse.screen]:run() end),
    awful.key({ modkey }, "x",
    function()
    awful.prompt.run({ prompt = "Run Lua code: " },
    mypromptbox[mouse.screen].widget,
    awful.util.eval, nil,
    awful.util.getdir("cache") .. "/history_eval")
    end))
    clientkeys = awful.util.table.join(awful.key({ modkey, }, "f", function(c) c.fullscreen = not c.fullscreen end),
    awful.key({ modkey, }, "q", function(c) c:kill() end),
    awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle),
    awful.key({ modkey, "Control" }, "Return", function(c) c:swap(awful.client.getmaster()) end),
    awful.key({ modkey, }, "o", awful.client.movetoscreen),
    awful.key({ modkey, "Shift" }, "m", function () awful.util.spawn("urxvt -T ncmpcpp -e 'ncmpcpp'") end),
    awful.key({ modkey, "Shift" }, "w", function () awful.util.spawn("chromium") end),
    awful.key({ modkey, }, "b", function () awful.util.spawn("nautilus --no-desktop") end),
    awful.key({ modkey, "Shift" }, "r", function(c) c:redraw() end),
    awful.key({ modkey, }, "t", function(c) c.ontop = not c.ontop end),
    awful.key({ modkey, }, "n", function(c) c.minimized = not c.minimized end),
    awful.key({ modkey, }, "m",
    function(c)
    c.maximized_horizontal = not c.maximized_horizontal
    c.maximized_vertical = not c.maximized_vertical
    end))
    -- Compute the maximum number of digit we need, limited to 9
    keynumber = 0
    for s = 1, screencount do
    keynumber = math.min(9, math.max(#tags[s], keynumber));
    end
    -- Bind all key numbers to tags.
    -- Be careful: we use keycodes to make it works on any keyboard layout.
    -- This should map on the top row of your keyboard, usually 1 to 9.
    for i = 1, keynumber do
    globalkeys = awful.util.table.join(globalkeys,
    awful.key({ modkey }, "#" .. i + 9,
    function()
    local screen = mouse.screen
    if tags[screen][i] then
    awful.tag.viewonly(tags[screen][i])
    end
    end),
    awful.key({ modkey, "Control" }, "#" .. i + 9,
    function()
    local screen = mouse.screen
    if tags[screen][i] then
    awful.tag.viewtoggle(tags[screen][i])
    end
    end),
    awful.key({ modkey, "Shift" }, "#" .. i + 9,
    function()
    if client.focus and tags[client.focus.screen][i] then
    awful.client.movetotag(tags[client.focus.screen][i])
    end
    end),
    awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
    function()
    if client.focus and tags[client.focus.screen][i] then
    awful.client.toggletag(tags[client.focus.screen][i])
    end
    end))
    end
    clientbuttons = awful.util.table.join(awful.button({}, 1, function(c) client.focus = c; c:raise() end),
    awful.button({ modkey }, 1, awful.mouse.client.move),
    awful.button({ modkey }, 3, awful.mouse.client.resize))
    -- Set keys
    root.keys(globalkeys)
    -- {{{ Rules
    awful.rules.rules = {
    -- All clients will match this rule.
    rule = {},
    properties = {
    border_width = beautiful.border_width,
    border_color = beautiful.border_normal,
    size_hints_honor = false,
    focus = true,
    keys = clientkeys,
    buttons = clientbuttons
    rule = { class = "MPlayer" },
    properties = { floating = true }
    rule = { class = "pinentry" },
    properties = { floating = true }
    rule = { class = "gimp" },
    properties = { floating = true }
    { rule = { class = "firefox" },
    properties = { tag = tags[1][2] } },
    { rule = { class = "Chromium" },
    properties = { tag = tags[1][2] } },
    { rule = { class = "Pidgin" },
    properties = { tag = tags[1][3] } },
    { rule = { class = "Xchat" },
    properties = {tag = tags[1][4] } },
    -- Set Firefox to always map on tags number 2 of screen 1.
    -- { rule = { class = "Firefox" },
    -- properties = { tag = tags[1][2] } },
    -- {{{ Signals
    -- Signal function to execute when a new client appears.
    client.add_signal("manage", function(c, startup)
    -- Add a titlebar
    -- awful.titlebar.add(c, { modkey = modkey })
    -- Enable sloppy focus
    c:add_signal("mouse::enter", function(c)
    if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
    and awful.client.focus.filter(c) then
    client.focus = c
    end
    end)
    if not startup then
    -- Set the windows at the slave,
    -- i.e. put it at the end of others instead of setting it master.
    -- awful.client.setslave(c)
    -- Put windows in a smart way, only if they does not set an initial position.
    if not c.size_hints.user_position and not c.size_hints.program_position then
    awful.placement.no_overlap(c)
    awful.placement.no_offscreen(c)
    end
    end
    end)
    client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
    client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
    -- {{{ Tag signal handler - selection
    -- - ASCII tags 1 [2] 3 4...
    -- - start with tag 1 named [1] in tag setup
    for s = 1, screencount do
    for t = 1, #tags[s] do
    tags[s][t]:add_signal("property::selected", function ()
    if tags[s][t].selected then
    tags[s][t].name = "[" .. tags[s][t].name .. "]"
    else--]]
    --tags[s][t].name = tags[s][t].name:gsub("[%[%]]", "")
    --[[ end
    end)
    end
    end
    I have tried to search around for a solution to this, but I am coming up short. Any idea on how to solve this?
    Last edited by kveras (2011-11-21 09:01:47)

    First of all, did you check the wiki and forums? We'll help you, but you have to try to fix it yourself first.
    You will need to provide more info if you want help.
    Did you set up Gnome to force fallback mode?
    Did you look at the Gnome wiki article? There's a few sections that sound like what your looking to do, but the examples are USING OTHER WM's. They still might be able to point you in the right direction.

  • Why do I get a white screen in a HTML widget once it has loaded?

    I have created some HTML which works fine in Safari but as soon as I make it a widget it loads fine with the Default image on screen and then it just goes white with nothing more than a x in the top left corner. Any ideas what I a might be doing wrong. I have an info.plist directing to the html, a Default.png which works as it appears as loading but the page just will not display.
    Any ideas very welcome.
    THanks

    Without seeing exactly what you have, troubleshooting is difficult.
    You could try here iBooks Author: About HTML widget creation for more guidance. I became unstuck once when I made some HTML in Dreamweaver, but forgot to set the Doctype as the HTML5 one.
    You could also look at this https://github.com/TrevorBurnham/iBooks-HTML-Widget-Boilerplate

Maybe you are looking for

  • Intel iMac/PowerMac G4--Sharing a Printer

    I've been reading a bunch of posts, and just get confused, so hopefully someone can help me out with a simple answer. Have a PowerMac G4 running OS 9.1, with 2 printers connected with a USB hub (HP LaserJet 1320 and a Canon i860); have just added an

  • Ability to turn on cell data for apps is not available

    So, my girlfriend and I believe that we have run into an interesting issue with which we need help.  We had updated her iPhone 5 to iOS 8.2 a few weeks back. After that, it seemed to be mostly ok as she got used to the new system.  We had updated the

  • Purchase order SAPFM06P print program

    Dear all, Does anyone know how this print program works? In standard I seems that there are only two includes and when I look inside it the ME_READ_PO_FOR_PRINTING function module is repeated several times. My goal is to add field at the item level b

  • Why do inserted PIX disappear when sent, but appear when returned by receiver?

    When a number of PIX are cut and pasted from one e-mail to another e-mail the pix disappear at the receiver end or a blank box or space appears. The reply from the receiver shows the embedded PIX. This problem has existed for quite sometime and appea

  • Macbook Air constantly rebooting after installing Mavericks... this was my fix

    Just in case this helps anyone. I installed Mavericks on my Mac without an issue. When it restarted, my Mac would constantly reboot after a few minutes. It didn't matter if I logged in or not. I tried the various things that have been suggested (rese