You are not logged in.

#1 2010-01-01 19:51:38

nblock
Member
From: Austria
Registered: 2008-08-06
Posts: 123
Website

[SOLVED] awesome & urxvt results in some screen flickering

Hi,
i've been using awesome since a few weeks and i noticed a flickering problem when starting urxvt (via mod4+enter).

urxvt starts, disappears, comes back again, disappears and so on.
starting up urxvt (time until i get a usable promt) takes about 1-2 seconds.

However, i don't know how to track the problem down. Maybe it is urxvt's (i think it is), maybe it is awesome's or even ati's fault (using 2.6.32 with open source ati driver).

when i switch between multiple windows (using mod4+n) only urxvt windows are flickering. Switching between gui-apps (ff, dolphin, …) works as expected.

maybe someone has an idea about this …

Here are the configs:
.Xdefaults:

!URxvt settings
!--[Title]--!
URxvt*title:               urxvtc
URxvt*termName:            rxvt-unicode
URxvt*cursorBlink:         true
URxvt*urgentOnBell:    true

!--[Url's /launching/marking/yanking]--!
URxvt.perl-ext:            default,matcher
URxvt.urlLauncher:         /usr/bin/firefox
URxvt.matcher.button:      1 

!--[Fonts]--!
URxvt*font:         xft:Bitstream Vera Sans Mono:pixelsize=14:antialias=false
URxvt.italicFont:    xft:Bitstream Vera Sans Mono:italic:autohint=true:antialias=false
URxvt.boldItalicFont:    xft:Bitstream Vera Sans Mono:bold:italic:autohint=true:antialias=false
URxvt.underlineColor:   yellow
URxvt.scrollBar:        false

!--[Urxvt Options]--!
URxvt.boldMode:         false
URxvt.imLocale:         de_AT.UTF-8
URxvt.loginShell:       true
URxvt.saveLines:        512
URxvt.inheritPixmap:    true
URxvt.borderless:       true
URxvt.jumpScroll:       true
URxvt.tintColor:        white
URxvt.internalBorder:   0
URxvt.cursorBlink:      false
URxvt.cursorColor:      #dd9900
URxvt.cursorColor2:     #000000
URxvt.background:       #222222
URxvt.foreground:       #ddccbb
URxvt.colorBD:          #ffffff
URxvt.colorIT:          #bbbbbb
URxvt.colorUL:          #999999
URxvt.underlineColor:   #999999
URxvt*saveLines:    512
!URxvt*depth:              32
!URxvt*background:         rgba:02f0/04f0/04f0/cccc
URxvt*transparent:    true
URxvt*shading:        10

!--[Colours]--!
!Theme One from 
!http://phraktured.net/terminal-colors/terminal%20theme.tags.html
*background: rgb:00/00/00
*foreground: rgb:a8/a8/a8
*color0:     rgb:00/00/00
*color1:     rgb:a8/00/00
*color2:     rgb:00/a8/00
*color3:     rgb:a8/54/00
*color4:     rgb:00/00/a8
*color5:     rgb:a8/00/a8
*color6:     rgb:00/a8/a8
*color7:     rgb:a8/a8/a8
*color8:     rgb:54/50/54
*color9:     rgb:f8/54/50
*color10:    rgb:50/fc/50
*color11:    rgb:f8/fc/50
*color12:    rgb:50/54/f8
*color13:    rgb:f8/54/f8
*color14:    rgb:50/fc/f8
*color15:    rgb:f8/fc/f8

http://github.com/nblock/config/blob/master/.Xdefaults

rc.lua:

-- {{{ Load libraries
-- Standard awesome library
require("awful")
require("awful.autofocus")
require("awful.rules")
-- Theme handling library
require("beautiful")
-- Notification library
require("naughty")
require("vicious")
-- }}}

-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
beautiful.init("/usr/share/awesome/themes/zenburn/theme.lua")

-- This is used later as the default terminal and editor to run.
terminal = "urxvtc"
editor = "vim" 
editor_cmd = terminal .. " -e " .. editor

-- 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,        --1
    awful.layout.suit.tile.left,    --2
    awful.layout.suit.tile.bottom,    --3
    awful.layout.suit.tile.top,        --4
    awful.layout.suit.fair,        --5
    awful.layout.suit.fair.horizontal,    --6
    awful.layout.suit.spiral,        --7
    awful.layout.suit.spiral.dwindle,    --8
    awful.layout.suit.max,        --9
    awful.layout.suit.max.fullscreen,    --10
    awful.layout.suit.magnifier,    --11
    awful.layout.suit.floating        --12
}

-- some commands
local commands = {}
commands.suspend = "sudo pm-suspend"
commands.help = "touch ~/seppal"
commands.lock = "xscreensaver-command --lock"
commands.screenshot = "scrot -e 'mv $f ~/bilder/screenshots'"
--audio stuff
commands.raisevol = "amixer set PCM 2%+"
commands.lowervol = "amixer set PCM 2%-"
commands.mute = "amixer sset PCM toggle"
commands.cmusnext = "cmus-remote --next"
commands.cmusprev = "cmus-remote --prev"
commands.cmuspause = "cmus-remote --pause"
commands.cmusplay = "cmus-remote --play"
commands.calc = "krunner"
--todo
commands.fileman = "pcmanfm"
commands.calc = "xcalc"
commands.browser = "firefox"
-- }}}

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
for s = 1, screen.count() do
    -- Each screen has its own tag table.
    tags[s] = awful.tag({ 
     "1 download", "2 mail", "3 chat", 
     "4 music", "5 news", "6 fm", 
     7, 8, 9 }, s,
    {layouts[3], layouts[1], layouts[1], -- Tags: 1, 2, 3
     layouts[1], layouts[1], layouts[1], --       4, 5 ,6
     layouts[1], layouts[1], layouts[1]  --       7, 8, 9
    })
 

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", awesome.restart },
   { "quit", awesome.quit }
}

mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
                                    { "open terminal", terminal }
                                  }
                        })

mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon),
                                     menu = mymainmenu })
-- }}}

-- {{{ Wibox
-- {{{ Widgets configuration
-- {{{ Reusable separators
local spacer         = widget({ type = "textbox", name = "spacer" })
local separator      = widget({ type = "textbox", name = "separator" })
spacer.text    = " "
separator.text = " <span foreground='red'>•</span> "
-- }}}

-- {{{ CPU load 
local cpuwidget = widget({ type = "textbox" })
vicious.register(cpuwidget, vicious.widgets.cpu, "<span foreground='orange'>load: </span><span foreground='green'>$2%</span><span foreground='orange'> - </span><span foreground='green'>$3%</span>")
-- }}}
 
-- {{{ CPU temperature
local thermalwidget  = widget({ type = "textbox" })
vicious.register(thermalwidget, vicious.widgets.thermal, "<span foreground='orange'>temp: </span><span foreground='green'>$1°C</span>", 20, "thermal_zone1")
-- }}}

-- {{{ Battery state
-- Widget icon
-- baticon       = widget({ type = "imagebox", name = "baticon" })
-- baticon.image = image(beautiful.widget_bat)
local batwidget     = widget({ type = "textbox" })
vicious.register(batwidget, vicious.widgets.bat, "<span foreground='orange'>bat: </span><span foreground='green'>$1$2%</span>", 60, "C1C5")
-- }}}

-- {{{ Date and time
local datewidget = widget({ type = "textbox" })
vicious.register(datewidget, vicious.widgets.date, "<span foreground='green'>%a, %d.%m.%y - %H:%M</span>", 5)
-- }}}

-- {{{ Volume widget
local volwidget = widget({ type = "textbox" })
vicious.register(volwidget, vicious.widgets.volume, "<span foreground='orange'>vol: </span><span foreground='green'>$1%</span>", 1, 'PCM')
-- }}}

-- {{{ System tray
systray = widget({ type = "systray" })
-- }}}
-- }}}

-- {{{ Wibox initialisation
local wibox     = {}
local promptbox = {}
local layoutbox = {}
local taglist   = {}
taglist.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))

for s = 1, screen.count() do
    -- Create a promptbox
    promptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
    -- Create a layoutbox
    layoutbox[s] = awful.widget.layoutbox(s)
    layoutbox[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
    taglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, taglist.buttons)
    -- Create the wibox
    wibox[s] = awful.wibox({
        position = "top", screen = s,
        fg = beautiful.fg_normal, bg = beautiful.bg_normal
    })
    -- Add widgets to the wibox
    wibox[s].widgets = {{
        launcher, taglist[s], layoutbox[s], promptbox[s],
        layout = awful.widget.layout.horizontal.leftright
    },
        s == screen.count() and systray or nil,
        spacer, datewidget,
    separator, volwidget,
        separator, batwidget,
        separator, cpuwidget,
        separator, thermalwidget,
        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(
    --user defined
    awful.key({}, "XF86PowerOff", function() awful.util.spawn_with_shell(commands.suspend) end ),
    awful.key({}, "Help", function() awful.util.spawn_with_shell(commands.help) end ),
    awful.key({ modkey,           }, "F12",   function () awful.util.spawn_with_shell(commands.lock) end),
    --audio stuff
    awful.key({}, "XF86AudioMute", function() awful.util.spawn_with_shell(commands.mute) end ),
    awful.key({}, "XF86AudioRaiseVolume", function() awful.util.spawn_with_shell(commands.raisevol) end ),
    awful.key({}, "XF86AudioLowerVolume", function() awful.util.spawn_with_shell(commands.lowervol) end ),
    awful.key({}, "XF86AudioNext", function() awful.util.spawn_with_shell(commands.cmusnext) end ),
    awful.key({}, "XF86AudioPrev", function() awful.util.spawn_with_shell(commands.cmusprev) end ),
    awful.key({}, "XF86AudioPlay", function() awful.util.spawn_with_shell(commands.cmuspause) end ),
    awful.key({}, "XF86Tools", function() awful.util.spawn_with_shell(commands.cmusplay) end ),
    awful.key({}, "XF86Calculator", function() awful.util.spawn_with_shell(commands.calc) end ),
    awful.key({}, "Print", function() awful.util.spawn_with_shell(commands.screenshot) end ),

   -- awful.key({}, "XF86MyComputer", function() awful.util.spawn_with_shell(commands.fileman) end ),
   -- awful.key({}, "XF86Mail", function() awful.util.spawn_with_shell(commands.mail) end ),
   -- awful.key({}, "XF86HomePage", function() awful.util.spawn_with_shell(commands.browser) end ),
   -- awful.key({}, "XF86Sleep", function() awful.util.spawn_with_shell(commands.lock) end ),
   -- awful.key({"Control", "Mod1"}, "l", function() awful.util.spawn_with_shell(commands.lock) end ),

    --default bindings
    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,           }, "n",
        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(true)        end),

    -- Layout manipulation
    awful.key({ modkey, "Shift"   }, "n", function () awful.client.swap.byidx(  1)    end),
    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end),
    awful.key({ modkey, "Control" }, "n", 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 () promptbox[mouse.screen]:run() end),
    -- Run stuff in a Terminal
    awful.key({ modkey }, "x", function ()
     awful.prompt.run({ prompt = "Run in Terminal: " }, promptbox[mouse.screen].widget,
     function (prog)
      awful.util.spawn_with_shell(terminal .. " -name " .. prog .. " -e /bin/bash -c " .. prog)
     end)
    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, "Shift"   }, "r",      function (c) c:redraw()                       end),
    awful.key({ modkey,           }, "j",      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, 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 ()
                        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,
                     focus = true,
                     keys = clientkeys,
                     buttons = clientbuttons } },
    --floating apps
    { rule = { class = "pinentry-qt4" },
    properties = { floating = true } },
    { rule = { class = "Gimp" },
    properties = { floating = true } },
    --apptags
    --downloading stuff
    { rule = { class = "JDownloader" },
    properties = { tag = tags[1][1],switchtotag = true } },
    { rule = { instance = "rtorrent" },
    properties = { tag = tags[1][1],switchtotag = false } },
    -- mail
    { rule = { class = "Kmail" },
    properties = { tag = tags[1][2],switchtotag = true } },
    --chat and stuff like that
    { rule = { class = "Choqok" },
    properties = { tag = tags[1][3],switchtotag = false } },
    { rule = { class = "Kopete" },
    properties = { tag = tags[1][3],switchtotag = false } },
    -- cmus
    { rule = { instance = "cmus" },
    properties = { tag = tags[1][4],switchtotag = true } },
    -- news
    { rule = { instance = "newsbeuter" },
    properties = { tag = tags[1][5],switchtotag = true } },
    --file manager
    { rule = { class = "Dolphin" },
    properties = { tag = tags[1][6],switchtotag = true } },
    --misc stuff
    { rule = { class = "Konqueror" },
    properties = { tag = tags[1][9],switchtotag = true } },
}
-- }}}

-- {{{ 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 })
    -- remove gaps
    c.size_hints_honor = false

    -- 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)
-- }}}

-- {{{ Autostart
os.execute("krandrtray &")
-- }}}

-- vim: fdm=marker fdl=0 sts=4 ai

http://github.com/nblock/config/blob/ma … ome/rc.lua

Thanks.

Last edited by nblock (2010-01-02 09:59:24)

Offline

#2 2010-01-01 20:06:20

anrxc
Member
From: Croatia
Registered: 2008-03-22
Posts: 834
Website

Re: [SOLVED] awesome & urxvt results in some screen flickering

Remove resource borderless from Xdefaults, and maybe also the setting of internal border to 0. In awesome it doesn't make any difference, yet can cause problems on non-reparenting window managers. Apparently because "urxvt sets itself to override redirect if it's not reparented".

Let us know if it helped.

Last edited by anrxc (2010-01-01 20:08:03)


You need to install an RTFM interface.

Offline

#3 2010-01-01 20:27:34

nblock
Member
From: Austria
Registered: 2008-08-06
Posts: 123
Website

Re: [SOLVED] awesome & urxvt results in some screen flickering

thanks for the quick answer!
I tried to remove/disable both settings or either one of them, but nothing changes.
Problem still exists.

Offline

#4 2010-01-02 05:01:07

r6
Member
From: Melbourne
Registered: 2008-07-02
Posts: 156

Re: [SOLVED] awesome & urxvt results in some screen flickering

Try this .Xdefaults which works with awesome/urxvt.

*utf8: 1
*faceSize: 10
*jumpScroll: true
*multiScroll: true
*boldMode: false
*scrollBar: false
*cutNewline: false
*scrollTtyOutput: false
*scrollKey: true
*cursorBlink: true
*dynamicColors: true
*saveLines: 5000
*geometry: 125x45

! URxvt

URxvt*termName:                xterm
URxvt.font:                    xft:Bitstream Vera Sans Mono:antialias=true:pixelsize=12
!urxvt.font:                    xft:Bitstream Vera Sans Mono-12:antialias=true
URxvt*transparent:            false
URxvt*tintColor:            #666666
URxvt*shading:                50
URxvt*scrollBar:            false
URxvt*internalBorder:        5
URxvt*urgentOnBell:         true
URxvt*scrollTtyKeypress:    true
URxvt*underlineColor:        yellow
URxvt*perl-ext-common:        default,matcher
URxvt*urlLauncher:            firefox
URxvt*matcher.button:        1
URxvt*matcher.pattern.1:    \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-]

! Colours

*background:         #303030
*foreground:         #f2f2f2
*cursorColor:         #999
*highlightColor:    #333

*color0:  #101010
*color1:  #f13a21
*color2:  #93f91d
*color3:  #ffd00a
*color4:  #404f9e
*color5:  #ec0048
*color6:  #2aa7e7
*color7:  #f2f2f2
*color8:  #1d202f
*color9:  #ff361e
*color10: #ffc005
*color11: #93ff00
*color12: #3071ff
*color13: #ef0051
*color14: #4bb8fd
*color15: #a020f0

Last edited by r6 (2010-01-02 05:05:11)

Offline

#5 2010-01-02 09:58:52

nblock
Member
From: Austria
Registered: 2008-08-06
Posts: 123
Website

Re: [SOLVED] awesome & urxvt results in some screen flickering

thanks, for your help! The problem were these two lines:

URxvt*inheritPixmap:    true
URxvt*transparent:      true

When i set them to false, the flickering is gone.

Thank you very much!

Offline

#6 2010-02-04 11:49:25

grizzancs
Member
From: Hungary, Budapest
Registered: 2009-07-28
Posts: 6

Re: [SOLVED] awesome & urxvt results in some screen flickering

indeed this fixes the flickering, but then I have no transparency.

Is there a way to fix this without disabling transparency?

I wouldn't care if it was only at start, but it happens also if i have 2 terminals and I just switch between them.

Last edited by grizzancs (2010-02-04 11:54:12)

Offline

Board footer

Powered by FluxBB