Error 420 "Can't call builtin routines remotely" while compiling a proc

I get the message above when I try to compile a Forms procedure with a call to specific functions in the DBMS_UTILITY package. I am using Forms 10.1.2.2.0 and 10g DB (10.2.0.4.0). I want to trace the PL/SQL path that my Forms application is taking and be able to report the line number of the failure when an exception is thrown. I am able to call some routines within the DBMS_UTILITY package, but not any of them that have "pragma interface (C, format_error_stack);" in the code. These include format_call_stack, format_error_stack, and format_error_backtrace; all of which I would like to use. I've tried creating my own DB package function to act as a wrapper; this allows me to compile the form, but the call to the function form my exception handler returns null. These are really useful functions, but I do need to be able to access the functionality from within Forms. Does anyone have a solution/workaround for this problem. Note, this is similar to the question in Link:[ http://forums.oracle.com/forums/thread.jspa?messageID=504922��]
Thanks JK.

Nope, that does not work. See my first post above. I've tried using a wrapper, and whilst this allows my forms procedure to compile and my form to run, the wrapper procedure is returning null. Here's some code that may help to explain where I'm at. In the form, I've got -
DECLARE
    l_bt VARCHAR2(2000); -- BackTrace
BEGIN
    JEK_Raise_Exception; -- This is a DB procedure
EXCEPTION
   WHEN OTHERS THEN
      l_bt := KEYOWNER.Backtrace.generate_backtrace;
      message('l_bt = '||l_bt); pause;
END;-- Then a DB procedure that just generates an exception
CREATE OR REPLACE PROCEDURE JEK_Raise_Exception IS
BEGIN
   RAISE too_many_rows;
END;-- and the function from my Backtrace Package to return the backtrace data.
   FUNCTION generate_backtrace
       RETURN VARCHAR2
   IS
      l_bt      VARCHAR2(2000);
   BEGIN
       l_bt := DBMS_UTILITY.format_error_backtrace;
       RETURN l_bt;  -- In my testing so far this has been NULL!!!
   END;

Similar Messages

  • Error while Compiling Stored proc

    I am having problem while compiling stored proc.It gives the following error
    "Error while trying to retrieve text for error - ORA-03113"
    I have my SQL file in which i am adding the input parameters (aroung 100 parameters). Till 53 parameters i added it created the procedure now after that i am adding the parameteres one by one but its giving the same error.
    null

    Hi Minish,
    Whatever you wrote in crontab is fine. But we can call a stored procedure from Shell Script provide the shell script must have a sql file which contain the procedure to be excuted.
    Follow the things...
    Assume that,
    1. you have file called load.sql
    it contains...
    load_data;
    2. your shell script must have this code
    . /home/nimish/.profile
    sqlplus scott/tiger@orcl_bk load.sql
    *** make sure that sql file should have executable permissions
    Good Luck
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Nimish Buch:
    I want to run a stored procedure as an end of day process. I wrote a small unix shell script to run the procedure from a sql session, similar to following.
    . /home/nimish/.profile
    sqlplus scott/tiger@orcl_bk < execute load_data;
    If I run this script manually, it runs fine. I get the following errors when I attempt to run it as a cron job.
    Message file sp1.msb not found
    I have checked sp1us.msb does exist in ORACLE_HOME/sqlplus/mesg directory. I even tried giving it's path in PATH variable.
    Any help with this will be appreciated.
    Thanks a lot.
    Nimish<HR></BLOCKQUOTE>
    null

  • Can we call Remote Endable Module  from another Remote Enabled Moduel

    Hii experts...
    I have a problem regarding Remote Enabled Module Function Module....
    Actually i want to call the standard BAPI 'BAPI_GL_GETGLACCBALANCE' into the BAPI which i hve created...
    is it possible???
    or can anyone tell me if it is not possible then what is the alternative for this..???

    'Remote enabled' means that you can also call the function remotely. The 'Remote enabled' characterstic implies some restrictions for the FMs interface, i.e. parameters can not be passed by reference because the remote system has no access to the memory of the called systems where the referenced data are located.
    Remote call means only a restriction for the remote call, not for any direct call.
    Regards,
    Clemens

  • Calling a url from a pl/sql proc

    HI!
    I was wondering if anybody has code that they can share calling a url from a pl/sql proc.
    Thanks!!

    Thanks - tell me if I am wrong but it does not seem to be what I need. does this package have the capabilities of doing the following... I want to call a pl/sql procedure - I am not in any browser window and by calling this proc it will bring up a browser window with the given url.

  • Error while calling Workflow APIs remotely

    I have standalone workflow engine. I have created views and workflow packages in another databases. These packages are calling workflow APIs internally using DB Link. I call these packages inside Powerbuilder. I start process from the PowerBuilder, process started successfully. User responded to the notification by logging into powerbuilder, it is also successful.
    But when user responds to last notification to END the process, I am getting following error:
    ORA-02074: cannot ROLLBACK in a distributed transaction
    ORA-06512: at "OWF_MGR.WF_ENGINE_UTIL", line 1263
    ORA-02074: cannot SET SAVEPOINT in a distributed transaction
    Is it wrong to call Workflow APIs remotely ? Any solution ?
    Regards

    Hi,
    I think, we had the same problem and was resolved by the following approach:
    1. define the external function call within one transaction unit...can use pragma.
    2. commit the transaction and then close the DB link using alter session....
    Suprabhat.

  • Data error (invalid data type 17) in a Remote Function Call

    Hi,
    I am passing 2 select-option tables to RFC.
    Tables have structures -
       Table1  SIGN(C1)
                   OPTION(C2)
                   HIGH(C6)
                   LOW(C6)
       Table2  SIGN(C1)
                   OPTION(C2)
                   HIGH(C20)
                   LOW(C20)
    At the destination side, I have created two table types which have same structure.
    But when I call the RFC , program terminates with error - "Data error (invalid data type 17) in a Remote Function Call"
      Not able to understand the reason for this error. Please help.
    Thanks,
    Sujeet

    Hi,
    check out this example
    [LINK|http://abap.googlar.eu/viewtopic.php?f=5&t=28]
    You have several ranges that you can use like RANGE_AUF.
    Function example:
    FUNCTION zexemple.
    *"*"Interface local:
    *"  IMPORTING
    *"     REFERENCE(R_HORA) TYPE  FLAG
    *"     REFERENCE(R_DIA_1) TYPE  FLAG
    *"     REFERENCE(P_IDOC) TYPE  FLAG
    *"  EXPORTING
    *"     REFERENCE(MSG) TYPE  CHAR255
    *"  TABLES
    *"      T_OIFSPBL STRUCTURE  OIFSPBL
    *"      SL_PBLNR STRUCTURE  RANGE_PBLNR
    *"      SL_MATNR STRUCTURE  RANGE_MATNR
    *"      SL_HORA STRUCTURE  RANGE_UZEIT
    *"      T_ERROS STRUCTURE  ZARSTRING
    ENDFUNCTION.
    Report:
    SELECT-OPTIONS: sl_pblnr FOR oirbpblb-pblnr,
                                  sl_matnr FOR a361-matnr.
    ~
    Final question:
    You are passing the values using TABLES and not IMPORTING right?

  • Backup Fail with Volume Shadow Copy Service error: Error calling a routine on the Shadow Copy Provider, Event ID 12293, error returned while creating the volume shadow copy 0x8004230f,

    We are using TINA backup solution and windows 2003 backup is failling with VSS error.
    For testing purpose we initiate a system state backup (or any file backup) with the help of windows 2003 ntbackup.exe and found it is failing with below error.
    Backup error report.
    Backup Status
    Operation: Backup
    Active backup destination: File
    Media name: "Backup.bkf created 28/05/2014 at 06:34"
    Volume shadow copy creation: Attempt 1.
    Error returned while creating the volume shadow copy:0x8004230f.
    Error returned while creating the volume shadow copy:8004230f
    Aborting Backup.
    The operation did not successfully complete.
    We check event viewer and found below error event.
    Event Type:       
    Error
    Event Source:   
    VSS
    Event Category:               
    None
    Event ID:             
    12293
    Date:                    
    28/05/2014
    Time:                    
    05:48:10
    User:                    
    N/A
    Computer:         
    CQ329TOS
    Description:
    Volume Shadow Copy Service error: Error calling a routine on the Shadow Copy Provider {b5946137-7b9f-4925-af80-51abd60b20d5}. Routine details Cannot ask provider {b5946137-7b9f-4925-af80-51abd60b20d5} if
    volume is supported. [0x8000ffff] [hr = 0x8000ffff].

    Resolution:
    After getting this error we check Shadow Copy provider and writer health and fond it is fine.
    To get shadow copy providers details use below command.
    Command: vssadmin list providers
    Command output
    C:\>vssadmin list providers
    vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
    (C) Copyright 2001 Microsoft Corp.
    Provider name: 'Microsoft Software Shadow Copy provider 1.0'
       Provider type: System
       Provider Id: {b5946137-7b9f-4925-af80-51abd60b20d5}
       Version: 1.0.0.7
    To get shadow copy writers health
    Command: vssadmin list writers
    Command Output.
    C:\>vssadmin list writers
    vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
    (C) Copyright 2001 Microsoft Corp.
    Writer name: 'System Writer'
       Writer Id: {e8132975-6f93-4464-a53e-1050253ae220}
       Writer Instance Id: {333e02cd-d9ec-43c8-9b45-39691ad1b351}
       State: [1] Stable
       Last error: No error
    Writer name: 'Registry Writer'
       Writer Id: {afbab4a2-367d-4d15-a586-71dbb18f8485}
       Writer Instance Id: {800877a5-e13d-47a3-8f99-ebd4d3b3fd12}
       State: [1] Stable
       Last error: No error
    Writer name: 'MSDEWriter'
       Writer Id: {f8544ac1-0611-4fa5-b04b-f7ee00b03277}
       Writer Instance Id: {63400aa0-a17f-4121-9483-1cd226f03238}
       State: [1] Stable
       Last error: No error
    Writer name: 'COM+ REGDB Writer'
       Writer Id: {542da469-d3e1-473c-9f4f-7847f01fc64f}
       Writer Instance Id: {e13cb72b-84fa-4c86-86d8-48f523aafc9a}
       State: [1] Stable
       Last error: No error
    Writer name: 'Event Log Writer'
       Writer Id: {eee8c692-67ed-4250-8d86-390603070d00}
       Writer Instance Id: {ce63b3a0-e038-4e56-9d07-929f256639de}
       State: [1] Stable
       Last error: No error
    Writer name: 'WMI Writer'
       Writer Id: {a6ad56c2-b509-4e6c-bb19-49d8f43532f0}
       Writer Instance Id: {008e8714-ed6d-4288-81ce-4b0b1ec41294}
       State: [1] Stable
       Last error: No error
    Writer name: 'BITS Writer'
       Writer Id: {4969d978-be47-48b0-b100-f328f07ac1e0}
       Writer Instance Id: {e22a8953-a52c-4a76-bec0-8773122cbff8}
       State: [1] Stable
       Last error: No error
    Next I check Shadow Copies details from volume properties (right click on C or other drive then select properties then click on Shadow Copies Tab) and found it is showing the same error code..
    From this error it is clear that the issue is inside the registry hive and due to junk hive shadow copies services not able to working properly.
    For me the server have two disk we check disk signature at MBR and found the disk signature was.
    Signature disk 0 : 9351912b
    Signature disk 0 : FDFBE035
    But at registry we found lot of nonexistance signature. Which indicate lot of junk valu inside registry.
    Now how can we resolve this issue?
    It is very simple just delete the registry key “volume” (registry key “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\STORAGE\Volume”) and reboot the server it will “Volume” registry hive automatically.
    Note:
     When you remove registry key it is showing error unable to delete, then please right click on it select permission then take ownership and assign full permission to your login account.
    Please be careful when you delete registry key because system can fully crashed if you delete or modify wrong registry key.
    Your can take a backup of the registry key by exporting.

  • Error while calling COM routines via application program (return code 40028

    Hi ,
    When i am doing these steps i am getting the following error.
    1.from SAP menu...Demand Planning>Planning>Interactive Demand planning
           2.after the transaction gets loaded...click on the 2nd button that is selection window from the left ALV menu..on the top.
            3.type the below
    show -  Material
    APO Planning Version - K01
    Material  - 12345
    4.Material 12345 will be loaded
    5.Double click and i am getting  ''error Error while calling COM routines via application program (return code 40028)''
    Note : Observed that this is not happening everytime, but happening alternatively.
    Can any one say what is the problem for Error.
    Thanks
    Gerard

    Hello Gerard, Hello Krishna,
    -> The liveCache application failed with COM error::
                                   40028 Illegal timestamp in rough timegrid
    More details about COM error 40028 you will see in TA /n/sapapo/om10
         -> Return code: 40028 -> execute ::
    Invalid time stamp in the time buckets profile relation     
    ( om_ts_tgrelinvalidstamp )     
       < click on '?' mark >
    -> Open an OSS message in accordance with SAP note 167280 if further help
         needed to solve the issue on your system.
    Thank you and best regards, Natalia Khlopina

  • Error while calling COM routines via application prog(return code 1028533-)

    Hello Expert,
    In Interactive Demand Planning ( /SAPAPO/SDP94 ), when I'm trying to load data in a planning book , error
    'Error while calling COM routines via application program (return code 1028533-)' is encountered.
    In my selection id, i have only two locations....there is no material selection. 
    When I select the 1st location and load the data its getting loaded properly.....but when i select the 2nd location and try loading data ...the above error is coming.
    I did run /SAPAPO/TS_LCM_CONS_CHECK but the problem persist.
    Any advise to fix this issue would be much appreciated.
    Thanks.
    Tom

    Hi Tom,
    Please see if below exiting threads help you.
    COM error 40134 in Interactive Planning on SCM 5.0 Support Pack SAPKY50011
    Error for COM Routine application program (return code 40028)
    Thukral

  • Can we call a report program or schemas in  Routine [dynamic action] ???

    Dear SAP Crew,
    In dynamic action, we can call routines through indicatiors.
    In that routine, Can we call a report program or schemas???
    Kindly clarify with some scenario.
    Thks & Rgds
    Krish Sathya

    Hi Krish,
    In the routine you should be able to SUBMIT the program/report you need to execute.
    Cheers,
    Aditya

  • How can I call a Method in a Transformation Routine

    Hello Experts,
    How can I call a Method in a Transformation Routine ??
    THNXX

    Hi,
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/6090a621-c170-2910-c1ab-d9203321ee19?quicklink=index&overridelayout=true
    It will be help full .
    Regards,

  • I cant call to a mobile number since yesterday, but can receive call from the same number. I am using iphone 4s. Is there any setting error?

    I can't call to a mobile number since yesterday, but still can receive call from the same number. I am using iphone 4s. Is there any setting error?

    you have to make sure that CFWD Bridge Mode under the Line tab of the SPA9000 where the SPA400 is registered is set to ALL...include VMSP Bridge and XFER Bridge Mode as well..power cycle then check if you are still getting one-way audio
    | isolate! isolate! isolate! |

  • TS3694 hello . i keep trying to restore my iphone 3G but a error keeps poping up . its called "unknown error 1015" can anyone help??

    i keep trying to restore my iphone 3G but a error keeps poping up . its called "unknown error 1015" can anyone help?? i just got the iphone.

    More Like This
    upgrade and restore error
    Does anyone know how to fix "error code 1015" ?
    What is the cause of "error 1015" when trying to restore and update an iPhone 3gs?
    unknown error 1015?
    how can I fix my iphone with error (1015)
    you can find this on the right side of this page, many people have had this problem and there is no reason to repost this becuase you can find an answer by just searching for it.

  • HELP Can't call terminal by Mod4+Enter (awesome wm)

    I can't call terminal by binding key Mod4+Enter. What wrong happened with my rc.lua ?. Please help me. My english not well, sorry everyone.!
    -- z1lt0id Awesome WM 3.5.+ config --
    -- github.com/z1lt0id --
    -- Varation of github.com/copycat --
    -- Required Libraries
    gears = require("gears")
    awful = require("awful")
    awful.rules = require("awful.rules")
    awful.autofocus = require("awful.autofocus")
    wibox = require("wibox")
    beautiful = require("beautiful")
    naughty = require("naughty")
    vicious = require("vicious")
    scratch = require("scratch")
    -- layouts
    layouts = require("layouts")
    -- Conky
    function get_conky()
    local clients = client.get()
    local conky = nil
    local i = 1
    while clients[i]
    do
    if clients[i].class == "Conky"
    then
    conky = clients[i]
    end
    i = i + 1
    end
    return conky
    end
    function raise_conky()
    local conky = get_conky()
    if conky
    then
    conky.ontop = true
    end
    end
    function lower_conky()
    local conky = get_conky()
    if conky
    then
    conky.ontop = false
    end
    end
    function toggle_conky()
    local conky = get_conky()
    if conky
    then
    if conky.ontop
    then
    conky.ontop = false
    else
    conky.ontop = true
    end
    end
    end
    -- Run once function
    function run_once(cmd)
    findme = cmd
    firstspace = cmd:find(" ")
    if firstspace then
    findme = cmd:sub(0, firstspace-1)
    end
    awful.util.spawn_with_shell("pgrep -u $USER -x " .. findme .. " > /dev/null || (" .. cmd .. ")")
    end
    run_once("compton --backend glx --paint-on-overlay --vsync opengl-swc --unredir-if-possible --shadow-exclude 'n:a:Conky' --blur-background-exclude 'n:a:Conky' --config ~/.compton.conf -b")
    -- run_once("nm-applet")
    -- run_once("/opt/dropbox/dropboxd")
    run_once("mpd")
    run_once("conky ~/.conkyrc")
    run_once("unclutter -idle 1")
    -- Localization
    os.setlocale("en_AU.UTF-8")
    -- Error Handling
    -- Check if awesome encountered an error during startup and fell back to
    -- another config (This code will only ever execute for the fallback config)
    if awesome.startup_errors then
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, there were errors during startup!",
    text = awesome.startup_errors })
    end
    -- Handle runtime errors after startup
    do
    in_error = false
    awesome.connect_signal("debug::error", function (err)
    -- Make sure we don't go into an endless error loop
    if in_error then return end
    in_error = true
    naughty.notify({ preset = naughty.config.presets.critical,
    title = "Oops, an error happened!",
    text = err })
    in_error = false
    end)
    end
    -- Variable Definitions
    home = os.getenv("HOME")
    confdir = home .. "/.config/awesome"
    scriptdir = confdir .. "/script/"
    themes = confdir .. "/themes"
    active_theme = themes .. "/blackburn"
    beautiful.init(active_theme .. "/theme.lua")
    terminal = "urxvt"
    editor = "vim"
    editor_cmd = terminal .. " -e " .. editor
    gui_editor = "gedit"
    browser = "dwb"
    browser2 = "dwb"
    mail = terminal .. " -g 130x30 -e mutt "
    tasks = terminal .. " -e htop "
    musicplr = terminal .. " -g 130x34-320+16 -e ncmpcpp "
    modkey = "Mod4"
    altkey = "Mod1"
    -- Table of layouts to cover with awful.layout.inc, order matters.
    layouts =
    awful.layout.suit.floating,
    layouts.uselesstile,
    layouts.termfair,
    layouts.browse,
    layouts.uselessfair,
    layouts.centerwork,
    -- Wallpaper
    if beautiful.wallpaper then
    for s = 1, screen.count() do
    gears.wallpaper.maximized(beautiful.wallpaper, s, true)
    end
    end
    -- Tags
    tags = {
    names = { " :) ", " :/ ", " :P ", " X) ", " ;) "},
    layout = { layouts[1], layouts[2], layouts[2], layouts[2], layouts[2] }
    for s = 1, screen.count() do
    tags[s] = awful.tag(tags.names, s, tags.layout)
    end
    -- Menu
    myaccessories = {
    { "ranger", terminal .. " -depth 16 -g 130x30 -e ranger"},
    { "editor", gui_editor }
    myinternet = {
    { "weechat", terminal .. " -g 130x30 -e weechat-curses" },
    { "sabnzbd" , "dwb http://localhost:9090" },
    { "transmission", terminal .. " -g 130x30 -e transmission-remote-cli -c xenogia:dot.dot.dot@localhost:9091" },
    { "sickbeard", "dwb http://localhost:8081" },
    { "couchpotato", "dwb http://localhost:5050"}
    mymedia = {
    { "volume", "pavucontrol"},
    { "smplayer", "smplayer"},
    { "vlc", terminal .. " -e vlc -I ncurses" },
    { "cdw", terminal .. " -g 130x30 -e cdw"},
    { "devede", "devede"},
    { "ghb" , "ghb"}
    mygames = {
    { "playonlinux", "playonlinux"},
    { "dosbox" , "dosbox"},
    { "desura", "desura"},
    { "steam", "steam" },
    mygraphics = {
    { "gimp" , "gimp" },
    { "feh" , "feh" }
    myoffice = {
    { "libreoffice" , "libreoffice" }
    mysystem = {
    { "lxappearance" , "lxappearance" },
    { "gparted" , "sudo gparted"},
    { "htop" , tasks }
    mymainmenu = awful.menu({ items = {
    { "accessories" , myaccessories },
    { "graphics" , mygraphics },
    { "internet" , myinternet },
    { "media" , mymedia },
    { "games" , mygames },
    { "office" , myoffice },
    { "system" , mysystem },
    mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
    menu = mymainmenu })
    -- Colours
    coldef = "</span>"
    colwhi = "<span color='#b2b2b2'>"
    colbwhi = "<span color='#ffffff'>"
    blue = "<span color='#7493d2'>"
    yellow = "<span color='#e0da37'>"
    grey = "<span color='#636060'>"
    purple = "<span color='#e33a6e'>"
    lightpurple = "<span color='#eca4c4'>"
    azure = "<span color='#80d9d8'>"
    green = "<span color='#87af5f'>"
    lightgreen = "<span color='#62b786'>"
    red = "<span color='#bd0707'>"
    orange = "<span color='#ff7100'>"
    brown = "<span color='#db842f'>"
    fuchsia = "<span color='#800080'>"
    gold = "<span color='#e7b400'>"
    lightblue="<span color='#3eae9e'>"
    lightblue2="<span color='#266c76'>"
    lightblue3="<span color='#285666'>"
    lightblue4="<span color='#257c85'>"
    lightblue5="<span color='#223d5a'>"
    lightblue6="<span color='#235369'>"
    offyellow="<span color='#857b52'>"
    bottomgrey="<span color='#999999'>"
    -- {{{ Wibox
    -- {{{{ Temp
    tempicon = wibox.widget.imagebox()
    tempicon:set_image(beautiful.widget_temp)
    tempwidget = wibox.widget.textbox()
    vicious.register(tempwidget, vicious.widgets.thermal, bottomgrey .. " Temp: $1°C" .. coldef, 15, "thermal_zone0")
    -- {{{ Kernel Info
    sysicon = wibox.widget.imagebox()
    sysicon:set_image(beautiful.widget_arch)
    syswidget = wibox.widget.textbox()
    vicious.register( syswidget, vicious.widgets.os, bottomgrey .. " Kernel: $2" .. coldef)
    -- {{{ Uptime
    uptimeicon = wibox.widget.imagebox()
    uptimeicon:set_image(beautiful.widget_uptime)
    uptimewidget = wibox.widget.textbox()
    vicious.register( uptimewidget, vicious.widgets.uptime, bottomgrey .. " Uptime: $1d $2h $3m" .. coldef)
    -- {{{ Cpu
    -- CPU widget
    cpuicon = wibox.widget.imagebox()
    cpuicon:set_image(beautiful.widget_cpu)
    cpuwidget = wibox.widget.textbox()
    vicious.register(cpuwidget, vicious.widgets.cpu, bottomgrey .. " Cpu: $1%" .. coldef, 15)
    cpuicon:buttons(awful.util.table.join(awful.button({ }, 1, function () awful.util.spawn(tasks, false) end)))
    -- {{{ Ram
    -- Memory widget
    memicon = wibox.widget.imagebox()
    memicon:set_image(beautiful.widget_mem)
    memwidget = wibox.widget.textbox()
    vicious.register(memwidget, vicious.widgets.mem, bottomgrey .. " Memory: $2MB" .. coldef, 15)
    -- {{{ Mpd
    mpdicon = wibox.widget.imagebox()
    mpdicon:set_image(beautiful.widget_mpd)
    mpdwidget = wibox.widget.textbox()
    -- Register widget
    vicious.register(mpdwidget, vicious.widgets.mpd,
    function (widget, args)
    if args["{state}"] == "Stop" then
    return " - "
    else
    return args["{Artist}"]..' - '.. args["{Title}"]
    end
    end, 10)
    -- {{{ Net
    -- Net widget
    netdownicon = wibox.widget.imagebox()
    netdownicon:set_image(beautiful.widget_netdown)
    netdownicon.align = "middle"
    netdowninfo = wibox.widget.textbox()
    vicious.register(netdowninfo, vicious.widgets.net, green .. "${enp9s0 down_kb}" .. coldef, 1)
    netupicon = wibox.widget.imagebox()
    netupicon:set_image(beautiful.widget_netup)
    netupicon.align = "middle"
    netupinfo = wibox.widget.textbox()
    vicious.register(netupinfo, vicious.widgets.net, red .. "${enp9s0 up_kb}" .. coldef, 1)
    ethdowninfo = wibox.widget.textbox()
    vicious.register(ethdowninfo, vicious.widgets.net, "<span color=\"#d3c6d7\">${enp9s0 down_kb}</span>", 1)
    ethupinfo = wibox.widget.textbox()
    vicious.register(ethupinfo, vicious.widgets.net, "<span color=\"#d3c6d7\">${enp9s0 up_kb}</span>", 1)
    -- {{{ Volume
    -- Volume widget
    volicon = wibox.widget.imagebox()
    volicon:set_image(beautiful.widget_vol)
    volumewidget = wibox.widget.textbox()
    vicious.register(volumewidget, vicious.widgets.volume, bottomgrey .. " Volume: $1%" .. coldef, 1, "Master")
    -- Pacman Widget --
    -- Pacman Icon
    pacicon = wibox.widget.imagebox()
    pacicon:set_image(beautiful.widget_pac)
    -- Pacman Widget
    pacwidget = wibox.widget.textbox()
    pacwidget_t = awful.tooltip({ objects = {pacwidget},})
    vicious.register(pacwidget, vicious.widgets.pkg,
    function(widget,args)
    local io = { popen = io.popen }
    local s = io.popen("pacman -Qu")
    local str = ''
    for line in s:lines() do
    str = str .. line .. "\n"
    end
    pacwidget_t:set_text(str)
    s:close()
    return "" .. bottomgrey .. " Updates: " .. args[1] .. coldef
    end, 60, "Arch")
    --'1800' means check every 30 minutes
    pacicon:buttons(awful.util.table.join(
    awful.button({ }, 3, function () awful.util.spawn("".. terminal.. " --hold -e sudo pacman -Syu", false) end),
    awful.button({ }, 1, function () awful.util.spawn("sudo pacman -Syu", false) end)
    -- {{{ Clock
    -- Textclock widget
    clockicon = wibox.widget.imagebox()
    clockicon:set_image(beautiful.widget_clock)
    mytextclock = awful.widget.textclock(bottomgrey .. " %A %d %B</span> " .. colwhi .. "</span><span color=\"#ffffff\">></span> <span color='#999999'>%H:%M</span>")
    -- {{{ Spacers
    space = wibox.widget.textbox()
    space:set_text(' ')
    -- {{{ Seperator
    openb = wibox.widget.textbox(lightblue6 .. " [" .. coldef)
    closeb = wibox.widget.textbox(lightblue6 .. " ]" .. coldef)
    -- Create a wibox for each screen and add it
    mywibox = {}
    mybottomwibox = {}
    bottombox = {}
    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, function(t) awful.tag.viewnext(awful.tag.getscreen(t)) end),
    awful.button({ }, 5, function(t) awful.tag.viewprev(awful.tag.getscreen(t)) end)
    mytasklist = {}
    mytasklist.buttons = awful.util.table.join(
    awful.button({ }, 1, function (c)
    if c == client.focus then
    c.minimized = true
    else
    -- Without this, the following
    -- :isvisible() makes no sense
    c.minimized = false
    if not c:isvisible() then
    awful.tag.viewonly(c:tags()[1])
    end
    -- This will also un-minimize
    -- the client, if needed
    client.focus = c
    c:raise()
    end
    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, screen.count() do
    -- 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)))
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.filter.all, mytaglist.buttons)
    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })
    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(mylauncher)
    left_layout:add(mypromptbox[s])
    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    right_layout:add(space)
    right_layout:add(space)
    -- right_layout:add(mylayoutbox[s])
    -- Now bring it all together (with the tasklist in the middle)
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    -- layout:set_middle(mytasklist[s])
    layout:set_middle(mytaglist[s])
    layout:set_right(right_layout)
    mywibox[s]:set_widget(layout)
    -- Create Bottom WiBox
    mybottomwibox[s] = awful.wibox({ position = "bottom", screen = s })
    -- Widgets Aligned to the Middle
    local bottom_left_layout = wibox.layout.fixed.horizontal()
    bottom_left_layout:add(sysicon)
    bottom_left_layout:add(syswidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(volicon)
    bottom_left_layout:add(volumewidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(cpuicon)
    bottom_left_layout:add(cpuwidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(memicon)
    bottom_left_layout:add(memwidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(tempicon)
    bottom_left_layout:add(tempwidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(pacicon)
    bottom_left_layout:add(pacwidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(uptimeicon)
    bottom_left_layout:add(uptimewidget)
    bottom_left_layout:add(space)
    bottom_left_layout:add(clockicon)
    bottom_left_layout:add(mytextclock)
    local bottom_right_layout = wibox.layout.fixed.horizontal()
    if s == 1 then bottom_right_layout:add(wibox.widget.systray()) end
    -- Bring Bottom Wibox Together
    local bottom_layout = wibox.layout.align.horizontal()
    bottom_layout:set_middle(bottom_left_layout)
    bottom_layout:set_right(bottom_right_layout)
    mybottomwibox[s]:set_widget(bottom_layout)
    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(
    -- Capture a screenshot
    awful.key({ altkey }, "p", function() awful.util.spawn("screenshot",false) end),
    -- Move clients
    awful.key({ altkey }, "Next", function () awful.client.moveresize( 1, 1, -2, -2) end),
    awful.key({ altkey }, "Prior", function () awful.client.moveresize(-1, -1, 2, 2) end),
    awful.key({ altkey }, "Down", function () awful.client.moveresize( 0, 1, 0, 0) end),
    awful.key({ altkey }, "Up", function () awful.client.moveresize( 0, -1, 0, 0) end),
    awful.key({ altkey }, "Left", function () awful.client.moveresize(-1, 0, 0, 0) end),
    awful.key({ altkey }, "Right", function () awful.client.moveresize( 1, 0, 0, 0) end),
    awful.key({ modkey, }, "Left", awful.tag.viewprev ),
    awful.key({ modkey, }, "Right", awful.tag.viewnext ),
    awful.key({ modkey, }, "Escape", awful.tag.history.restore),
    awful.key({ modkey, }, "k",
    function ()
    awful.client.focus.byidx( 1)
    if client.focus then client.focus:raise() end
    end),
    awful.key({ modkey, }, "j",
    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),
    -- Show/Hide Wibox
    awful.key({ modkey }, "b", function ()
    mywibox[mouse.screen].visible = not mywibox[mouse.screen].visible
    end),
    -- Application Switcher
    awful.key({ "Mod1" }, "Tab", function ()
    -- If you want to always position the menu on the same place set coordinates
    awful.menu.menu_keys.down = { "Down", "Alt_L" }
    local cmenu = awful.menu.clients({width=245}, { keygrabber=true, coords={x=525, y=330} })
    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),
    awful.key({ modkey, "Control" }, "n", awful.client.restore),
    -- Dropdown terminal
    awful.key({ modkey, }, "z", function () scratch.drop(terminal) end),
    -- Widgets popups
    -- Volume control
    awful.key({ "Control" }, "Up", function ()
    awful.util.spawn("amixer set Master playback 1%+", false )
    vicious.force({ volumewidget })
    end),
    awful.key({ "Control" }, "Down", function ()
    awful.util.spawn("amixer set Master playback 1%-", false )
    vicious.force({ volumewidget })
    end),
    awful.key({ "Control" }, "m", function ()
    awful.util.spawn("amixer set Master playback mute", false )
    vicious.force({ volumewidget })
    end),
    awful.key({ "Control" }, "u", function ()
    awful.util.spawn("amixer set Master playback unmute", false )
    vicious.force({ volumewidget })
    end),
    awful.key({ altkey, "Control" }, "m", function ()
    awful.util.spawn("amixer set Master playback 100%", false )
    vicious.force({ volumewidget })
    end),
    -- Music control
    awful.key({ altkey, "Control" }, "Up", function ()
    awful.util.spawn( "mpc toggle", false )
    vicious.force({ mpdwidget } )
    end),
    awful.key({ altkey, "Control" }, "Down", function ()
    awful.util.spawn( "mpc stop", false )
    vicious.force({ mpdwidget } )
    end ),
    awful.key({ altkey, "Control" }, "Left", function ()
    awful.util.spawn( "mpc prev", false )
    vicious.force({ mpdwidget } )
    end ),
    awful.key({ altkey, "Control" }, "Right", function ()
    awful.util.spawn( "mpc next", false )
    vicious.force({ mpdwidget } )
    end ),
    -- Copy to clipboard
    awful.key({ modkey, }, "c", function () os.execute("xsel -p -o | xsel -i -b") end),
    -- User programs
    awful.key({ modkey, }, "q", function () awful.util.spawn( "dwb", false ) end),
    awful.key({ modkey, "Control" }, "m", function () awful.util.spawn( terminal .. " -g 130x30 -e mutt", false ) end),
    awful.key({ modkey, }, "s", function () awful.util.spawn(gui_editor) end),
    awful.key({ modkey, "Control" }, "f", function () awful.util.spawn( terminal .. " -depth 16 -g 130x30 -e ranger", false ) end),
    awful.key({ modkey, "Control" }, "v", function () awful.util.spawn( "/usr/local/bin/video", false) end),
    -- awful.key({ modkey, }, "d", function () awful.util.spawn( "spacefm", false ) end),
    -- Conky
    -- 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, "Shift" }, "c", 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, }, "t", function (c) c.ontop = not c.ontop end),
    awful.key({ modkey, }, "n",
    function (c)
    -- The client currently has the input focus, so it cannot be
    -- minimized, since minimized clients can't have the focus.
    c.minimized = true
    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, screen.count() 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 ()
    screen = mouse.screen
    if tags[screen][i] then
    awful.tag.viewonly(tags[screen][i])
    end
    end),
    awful.key({ modkey, "Control" }, "#" .. i + 9,
    function ()
    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,
    focus = true,
    keys = clientkeys,
    buttons = clientbuttons,
    size_hints_honor = false
    { rule = { class = "MPlayer" },
    properties = { floating = true } },
    { rule = { name = "PlayOnLinux" },
    properties = { tag = tags[1][1] } },
    { rule = { instance = "urxvt", class = "URxvt" },
    properties = { tag = tags[1][2] } },
    { rule = { class = "Sublime_text" },
    properties = { tag = tags[1][4] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "sabcurses.py"},
    properties = { tag = tags[1][5] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "ranger"},
    properties = { tag = tags[1][2] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "weechat"},
    properties = { tag = tags[1][3] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "mutt" },
    properties = { tag = tags[1][3] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "htop" },
    properties = { tag = tags[1][2] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "cdw" },
    properties = { tag = tags[1][2] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "transmission-remote-cli"},
    properties = { tag = tags[1][5] } },
    { rule = { instance = "urxvt", class = "URxvt", name = "vlc"},
    properties = { tag = tags[1][4] } },
    { rule = { class = "Conky" },
    properties = {
    floating = true,
    sticky = true,
    ontop = false,
    border_width = 0,
    focusable = false,
    size_hints = {"program_position", "program_size"}
    { rule = { class = "Ghb" },
    properties = { tag = tags[1][1] } },
    { rule = { class = "Devede" },
    properties = { tag = tags[1][1] } },
    { rule = { name = "LibreOffice"},
    properties = { tag = tags[1][4] } },
    { rule = { class = "Gimp" },
    properties = { tag = tags[1][1],
    floating = true } },
    -- Signals
    -- Signal function to execute when a new client appears.
    client.connect_signal("manage", function (c, startup)
    -- Enable sloppy focus
    c:connect_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
    local titlebars_enabled = false
    if titlebars_enabled and (c.type == "normal" or c.type == "dialog") then
    -- Widgets that are aligned to the left
    local left_layout = wibox.layout.fixed.horizontal()
    left_layout:add(awful.titlebar.widget.iconwidget(c))
    -- Widgets that are aligned to the right
    local right_layout = wibox.layout.fixed.horizontal()
    right_layout:add(awful.titlebar.widget.floatingbutton(c))
    right_layout:add(awful.titlebar.widget.maximizedbutton(c))
    right_layout:add(awful.titlebar.widget.stickybutton(c))
    right_layout:add(awful.titlebar.widget.ontopbutton(c))
    right_layout:add(awful.titlebar.widget.closebutton(c))
    right_layout:add(awful.titlebar.widget.closebutton(c))
    -- The title goes in the middle
    local title = awful.titlebar.widget.titlewidget(c)
    title:buttons(awful.util.table.join(
    awful.button({ }, 1, function()
    client.focus = c
    c:raise()
    awful.mouse.client.move(c)
    end),
    awful.button({ }, 3, function()
    client.focus = c
    c:raise()
    awful.mouse.client.resize(c)
    end)
    -- Now bring it all together
    local layout = wibox.layout.align.horizontal()
    layout:set_left(left_layout)
    layout:set_right(right_layout)
    layout:set_middle(title)
    awful.titlebar(c):set_widget(layout)
    end
    end)
    client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
    client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)

    @Prezioso: sorry about that i will upload some screenshots about error
    Sloved. Thank you very much. urxvt not install, i change terminal to gnome-terminal.
    I have one question about themes for copycat-killer. This is github https://github.com/copycat-killer/awesome-copycats.
    I can't use his themes althought installed fonts are Terminus (Multicolor, Powerarrow Darker) and Tamsyn (other ones).
    Then I copy them to ~/.fonts and use command " fc-cache -fv ". after that restart awesome but error font. What wrong i do. ?
    this is my calendar.lua file
    Licensed under GNU General Public License v2
    * (c) 2013, Luke Bonham
    local icons_dir = require("lain.helpers").icons_dir
    local awful = require("awful")
    local beautiful = require("beautiful")
    local naughty = require("naughty")
    local io = { popen = io.popen }
    local os = { date = os.date }
    local tonumber = tonumber
    local setmetatable = setmetatable
    -- Calendar notification
    -- lain.widgets.calendar
    local calendar = {}
    local cal_notification = nil
    function calendar:hide()
    if cal_notification ~= nil then
    naughty.destroy(cal_notification)
    cal_notification = nil
    end
    end
    function calendar:show(t_out, inc_offset, scr)
    calendar:hide()
    local offs = inc_offset or 0
    local tims = t_out or 0
    local f, c_text
    local today = tonumber(os.date('%d'))
    local init_t = calendar.cal .. ' | sed -r -e "s/(^| )( '
    calendar.offset = calendar.offset + offs
    if offs == 0 or calendar.offset == 0
    then -- current month showing, today highlighted
    if today >= 10
    then
    init_t = calendar.cal .. ' | sed -r -e "s/_\\x08//g" | sed -r -e "s/(^| )('
    end
    calendar.offset = 0
    calendar.notify_icon = calendar.icons .. today .. ".png"
    -- bg and fg inverted to highlight today
    f = io.popen( init_t .. today ..
    ')($| )/\\1<b><span foreground=\\"'
    .. calendar.bg ..
    '\\" background=\\"'
    .. calendar.fg ..
    '\\">\\2<\\/span><\\/b>\\3/"' )
    else -- no current month showing, no day to highlight
    local month = tonumber(os.date('%m'))
    local year = tonumber(os.date('%Y'))
    month = month + calendar.offset
    if month > 12 then
    month = month % 12
    year = year + 1
    if month <= 0 then
    month = 12
    end
    elseif month < 1 then
    month = month + 12
    year = year - 1
    if month <= 0 then
    month = 1
    end
    end
    calendar.notify_icon = nil
    f = io.popen(calendar.cal .. ' ' .. month .. ' ' .. year)
    end
    c_text = "<tt><span font='" .. calendar.font .. " "
    .. calendar.font_size .. "'><b>"
    .. f:read() .. "</b>\n\n"
    .. f:read() .. "\n"
    .. f:read("*a"):gsub("\n*$", "")
    .. "</span></tt>"
    f:close()
    cal_notification = naughty.notify({
    text = c_text,
    icon = calendar.notify_icon,
    position = calendar.position,
    fg = calendar.fg,
    bg = calendar.bg,
    timeout = tims,
    screen = scr or 1
    end
    function calendar:attach(widget, args)
    local args = args or {}
    calendar.cal = args.cal or "/usr/bin/cal"
    calendar.icons = args.icons or icons_dir .. "cal/white/"
    calendar.font = args.font or beautiful.font:sub(beautiful.font:find(""),
    beautiful.font:find(" "))
    calendar.font_size = tonumber(args.font_size) or 11
    calendar.fg = args.fg or beautiful.fg_normal or "#FFFFFF"
    calendar.bg = args.bg or beautiful.bg_normal or "#FFFFFF"
    calendar.position = args.position or "top_right"
    calendar.scr_pos = args.scr_pos or 1
    calendar.offset = 0
    calendar.notify_icon = nil
    widget:connect_signal("mouse::enter", function () calendar:show(0, 0, scr_pos) end)
    widget:connect_signal("mouse::leave", function () calendar:hide() end)
    widget:buttons(awful.util.table.join( awful.button({ }, 1, function ()
    calendar:show(0, -1, scr_pos) end),
    awful.button({ }, 3, function ()
    calendar:show(0, 1, scr_pos) end),
    awful.button({ }, 4, function ()
    calendar:show(0, -1, scr_pos) end),
    awful.button({ }, 5, function ()
    calendar:show(0, 1, scr_pos) end)))
    end
    return setmetatable(calendar, { __call = function(_, ...) return create(...) end })
    Thank everyone.
    Last edited by zyzzvn (2015-02-04 14:55:21)

  • Conversion error in JCo outbound call

    hi all
         i am working on making OUTBOUND call from SAP using JCo,
         our SAP system is Unicoded and i am refering Jco example 5 from JCo2.1.8 demo.
        i am able to make connection successfully , but while running test ABAP program for testing connection, i am getting Short dump error headed :
                  Conversion error "ECHOTEXT" from character set 4103 to character set 4102
    A conversion error occurred during the execution of a      Remote Function
    *Call. This happened either when the data was received *      or when it was
    *sent. The latter case can only occur if the data is sent from * a Unicode
    system to a non-Unicode system.
    The current program had to be terminated because of an
    error when installing the R/3 System.
    my ABAP prg. is this :
      REPORT  z_jco_test.
    PARAMETERS: requtext LIKE sy-lisel.
    *ECHOTEXT LIKE  SY-LISEL
    **"              RESPTEXT LIKE  SY-LISEL
    DATA: echotext type SYLISEL,
          resptext LIKE sy-lisel,
          rfctest TYPE TABLE OF rfctest,
          wa_rfctest TYPE rfctest.
    wa_rfctest-rfcdata1 = requtext.
    wa_rfctest-rfcdata2 = 'Hello World'.
    APPEND wa_rfctest TO rfctest.
    CALL FUNCTION 'RFC_PING'
      DESTINATION 'JCO'.
    *CALL FUNCTION 'STFC_CONNECTION'
    *  EXPORTING
    *    requtext       =
    ** IMPORTING
    **   ECHOTEXT       =
    **   RESPTEXT       =
    CALL FUNCTION 'STFC_CONNECTION'
      DESTINATION 'JCO'
      EXPORTING
        requtext = requtext
      IMPORTING
        echotext = echotext
        resptext = resptext
      TABLES
        rfctest  = rfctest.
    WRITE: 'Echo Text: ', echotext.
    WRITE: 'Response Text: ', resptext.
    LOOP AT rfctest INTO wa_rfctest.
      WRITE: / 'rfcdata1: ', wa_rfctest-rfcdata1.
      WRITE: / 'rfcdata2: ', wa_rfctest-rfcdata2.
    ENDLOOP. 
    i have made RFC connection unicode yes.
    please guide me

    Helo!
    We have a similar problem here. Could you please explain your solution in a bit more detail ?
    Thanks in advance,
    Markus

Maybe you are looking for

  • How do I force iDVD to exceed maximum content limit?

    I have a MacBook with a single layer burner. With iMovie/iDVD, I have created a project that is 131 minutes, 4.52 GB in size, which is slightly larger than what can be burned onto a single-layer disc. The project is from two 60 min. MiniDV tapes, so

  • How do I get the music off of my old iphone?

    How do I get the music off of my old iphone?

  • [SOLVED] Why are control characters visible in text files??

    Hi, If I direct the output of 'ls' to a file like: ls > file.txt and open the file in a editor such as vi, joe or mousepad, it looks like this: [[01;34m22x22[[0m [[01;34m24x24[[0m [[01;34m32x32[[0m [[0mindex.theme[[0m [[01;34mscalable[[0m [[m I just

  • Batch Rename - allow 6 digits (or more)

    Batch rename of files allows a sequence number that is limited to 5 digits. Even though the selector control allows you to specify six digits, the sequence number box does not allow the entry of the 6th digit. For example, I have the following: New f

  • Transporting Entire Folder Structures

    There may be something wrong in the way we do transports, but this is the scenario Example, Folder 1 (contains iview1, iview2, iview3) transported entire Folder 1 to QA QA will have Folder 1 (contains iview1, iview2, iview3) Deleted iview3 and added