JProbe vs GC memory graphs
Hello,
When I look at the "Runtime Heap Summary" in JProbe (which shows memory usage) and compare it with graphs plotted in excel using GC output they look completely different. Using the GC output I plotted the before and after memory graphs and neither remotely resembles JProbe's.
Any ideas?
what do you mean?
convert bytes to kilobytes?
what's specifically not matching up?
if the JProbe reports a smaller size than GC output, you might be looking at a subset of the packages in the VM and not everything? just a thought
Similar Messages
-
Is this graphs are for normal performance or the app leaking the memory ?!!
Hey there,
I'm new to java profiling and testing and I faced some hang ups so i made some fixes to my code .
It's medium sized application and i captured some shots of the Memory Heap, Memory GC, Threads/Loaded classes Graphs From NetBeans Profiler.
If any one may see them and say if this is normal performance or I need some more fixing in the come.
Note that the graphs are captured when I was doing Load Test on the program
The Memory Heap Graphs
http://islamelhosary.mufix.org/profiler/3.png
http://islamelhosary.mufix.org/profiler/4.png
http://islamelhosary.mufix.org/profiler/7.png
The Memory GC Graphs
http://islamelhosary.mufix.org/profiler/2.png
http://islamelhosary.mufix.org/profiler/5.png
http://islamelhosary.mufix.org/profiler/8.png
The Threads/Loaded classes Graphs
http://islamelhosary.mufix.org/profiler/1.png
http://islamelhosary.mufix.org/profiler/6.png
http://islamelhosary.mufix.org/profiler/9.pngThanks for your time
Islam El HosaryIt's always hard to tell if memory is leaking by graphs alone... of course if your memory graph is always increasing and never returning to some base value after GC, then you probably have a leak. You should use a tool like JProfiler on your app server to watch for leaks from a particular application (object within some app). But, in general... watch all graphs Memory, Threads, and CPU usage for abnormal trends. An app can also leak via over usage of resources (spawning threads that are never completing or never released).
-
High Eden Java Memory Usage/Garbage Collection
Hi,
I am trying to make sure that my Coldfusion Server is optomised to the max and to find out what is normal limits.
Basically it looks like at times my servers can run slow but it is possible that this is caused by a very old bloated code base.
Jrun can sometimes have very high CPU usage so I purchased Fusion Reactor to see what is going on under the hood.
Here are my current Java settings (running v6u24):
java.args=-server -Xmx4096m -Xms4096m -XX:MaxPermSize=256m -XX:PermSize=256m -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 -Dsun.io.useCanonCaches=false -XX:+UseParallelGC -Xbatch ........
With regards Memory, the only memory that seems to be running a lot of Garbage Collection is the Eden Memory Space. It climbs to nearly 1.2GB in total just under every minute at which time it looks like GC kicks in and the usage drops to about 100MB.
Survivor memory grows to about 80-100MB over the space of 10 minutes but drops to 0 after the scheduled full GC runs. Old Gen memory fluctuates between 225MB and 350MB with small steps (~50MB) up or down when full GC runs every 10 minutes.
I had the heap set to 2GB initally in total giving about 600MB to the Eden Space. When I looked at the graphs from Fusion Reactor I could see that there was (minor) Garbage Collection about 2-3 times a minute when the memory usage maxed out the entire 600MB which seemed a high frequency to my untrained eye. I then upped the memory to 4GB in total (~1.2GB auto given to Eden space) to see the difference and saw that GC happened 1-2 times per minute.
Is it normal in Coldfusion that the Eden memory would grow so quickly and have garbage collection run so often? i.e do these graphs look normal?
Also should I somehow redistribute the memory available to give the Eden memory more since it seems to be where all the action is?
Any other advice for performance improvements would be much appreciated.
Note: These graphs are not from a period where jrun had high CPU.
Here are the graphs:
PS Eden Space Graph
PS Survivor Space Graph
PS Old Gen Graph
PS Perm Gen Graph
Heap Memory Graph
Heap/Non Heap Memory Graph
CPU Graph
Request Average Execution Time Graph
Request Activity Graph
Code Cache GraphHi,
>Is it normal in Coldfusion that the Eden memory would grow so quickly and have garbage collection run so often?
Yes normal to garbage collect Eden often. That is a minor garbage collection.
>Also should I somehow redistribute the memory available to give the Eden memory more since it seems to be where all the action is?
Sometimes it is good to set Eden (Eden and its two Survivor Spaces combined make up New or Young Generation part of JVM heap) to a smaller size. I know your thinking - what make it less, but I want to make it bigger. Give less a try (sometimes less = more, bigger not = better) and monitor the situation. I like to use -Xmn switch, some sources say to use other method/s. Perhaps you could try java.args=-server -Xmx4096m -Xms4096m -Xmn172m etc. I better mention make a backup copy of jvm.config before applying changes. Having said that now you know how you can set the size to bigger if you want.
I think the JVM is perhaps making some poor decisions with sizing the heap. With Eden growing to 1Gb then being evacuated not many objects are surviving and therefore not being promoted to Old Generation. This ultimately means the object will need to be loaded again latter to Eden rather than being referenced in the Old generation part of the heap. Adds up to poor performance.
>Any other advice for performance improvements would be much appreciated.
You are using Parallel garbage collector. Perhaps you could enable that to run multi-threaded reducing the time duration of the garbage collections, jvm args ...-XX:+UseParallelGC -XX:ParallelGCThreads=N etc where N = CPU cores (eg quad core = 4).
HTH, Carl. -
Leak memory in xerces DomParser
Hey,
I have " leak memory " in my Java application (Stand alone).
I suspect that this leak caused by xerces DomParser.
i reached to this conculsion after using in Jprobe as a memory debuger.
Does any one has a similar problem?
Thank you.
code:
DOMParser parser = new DOMParser();
parser.parse(new InputSource(new FileInputStream(schemaFile)));Hey, which Version of Xerces do you use?
-
I think I've got a memory leak and could use some advice
We've got ourselves a sick server/application and I'd like to gather a little community advice if I may. I believe the evidence supports a memory leak in my application somewhere and would love to hear a second opinion and/or suggestions.
The issue has been that used memory (as seen by FusionReactor) will climb up to about 90%+ and then the service will start to queue requests and eventually stop processing them all together. A service restart will bring everything back up again and it could run for 2 days or 2 hours before the issue repeats itself. Due to the inconsistant up time, I can't be sure that it's not some trouble bit of code that runs only occasionally or if it's something that's a core part of the application. My current plan is to review the heap graph on the "sick" server and look for sudden jumps in memory usage then review the IIS logs for requests at those times to try and establish a pattern. If anyone has some better suggestions though, I'm all ears! The following are some facts about this situation that may be usefull.
The "sick" server:
- CF 9.0.1.274733 Standard
- FusionReactor 4.0.9
- Win2k8 Web R2 (IIS7.5)
- Dual Xeon 2.8GHz CPUs
- 4GB RAM
JVM Config (same on "sick" and "good" servers):
- Initial and Max heap: 1536
-server -Xss10m -Dsun.io.useCanonCaches=false -XX:PermSize=192m -XX:MaxPermSize=256m -XX:+UseParNewGC -Xincgc -Xbatch -Dcoldfusion.rootDir={application.home}/../ -Dcoldfusion.libPath={application.home}/../lib -Dcoldfusion.dotnet.disableautoconversion=true
What I believe a "healthy" server graph should look like (from "good" server):
And the "sick" server graph looks like this:@AmericanWebDesign, I would concur with BKBK (in his subsequent reply) that a more reasonable explanation for what you’re seeing (in the growth of heap) is something using and holding memory, which is not unusual for the shared variables scopes: session, application, and/or server. And the most common is sessions.
If that’s enough to get you going, great. But I suspect most people need a little more info. If this matter were easy and straightforward, it could be solved in a tweet, but it’s not, so it can’t.
Following are some more thoughts, addressing some of your concerns and hopefully pointing you in some new directions to find resolution. (I help people do it all the time, so the good news is that it can be done, and answers are out there for you.)
Tracking Session Counts
First, as for the observation we’re making about the potential impact of sessions, you may be inclined to say “but I don’t put that much in the session scope”. The real question to start with, though, is “how many sessions do you have”, especially when memory use is high like that (which may be different than how many you have right now). I’ve helped many people solve such problems when we found they had tens or hundreds of thousands of sessions. How can you tell?
a) Well, if you were on CF Enterprise, you could look at the Server Monitor. But since you’re not, you have a couple of choices.
b) First, any CF shop could use a free tool called ServerStats, from Mark Lynch, which uses the undocumented servicefactory objects in CF to report a count of sessions, overall and per application, within an instance. Get it here: http://www.learnosity.com/techblog/index.cfm/2006/11/9/Hacking-CFMX--pulling-it-all-togeth er-serverStats . You just drop the files (within the zip) into a web-accessible directory and run the one CFM page to get the answer instantly.
c) Since you mention using FusionReactor 4.0.9, here’s another option: those using FR 4 (or 4.5, a free update for you since you’re on FR 4) can use its available (but separately installed) FusionReactor Extensions for CF, a free plugin (for FR, at http://www.fusion-reactor.com/fr/plugins/frec.cfm). It causes FR to grab that session count (among many other really useful things about CF) to log it every 5 seconds, which can be amazingly helpful. And yes, FREC can grab that info whether one is on CF Standard or Enterprise.
And let’s say you find you do have tens of thousands of sessions (or more). You may wonder, “how does that happen?“ The most common explanation is spiders and bots hitting your site (from legit or unexpected search engines and others). Some of these visit your site perhaps daily to gather up the content of all the pages of your site, crawling through every page. Each such page hit will create a new session. For more on why and how (and some mitigation), see:
http://www.carehart.org/blog/client/index.cfm/2006/10/4/bots_and_spiders_and_poor_CF_perfo rmance
About “high memory”
All that said, I’d not necessarily conclude so readily that your “bad” memory graph is “bad”. It could just be “different”.
Indeed, you say you plan to “look for sudden jumps in memory usage“, but if you look at your “bad” graph, it simply builds very slowly. I’d think this supports the notion that BKBK and I are asserting: that this is not some one request that “goes crazy” and uses lots of memory, but instead is the “death by a thousand cuts” as memory use builds slowly. Even then, I’d not jump at a concern that “memory was high”.
What really matters, when memory is “high” is whether you (or the JVM) can do a GC (garbage collection) to recover some (or perhaps much) of that “high, used memory”. Because it’s possible that while it “was” in use in the past (as the graph shows), it might no longer be “in use” at the moment .
Since you have FR, you can use its “System Metrics page” to do a GC, using the trash can in the top left corner of the top right-most memory graph. (Those with the CFSM can do a GC on its “Memory Usage Summary” page, and SeeFusion users can do it on its front page.)
If you do a GC, and memory drops q lot, then you had memory that “had been” but no longer ”still was” in use, and so the high memory shown was not a problem. And the JVM can sometimes be lazy (because it’s busy) about getting to doing a GC, so this is not that unusual. (That said, I see you have added the Xincgc arg to your JVM. Do you realize that tells the JVM not to do incremental GCs? Do you really want that? I understand that people trade jvm args like baseball cards, trying to solve problems for each other, but I’d argue that’s not the place to start. In fact, rarely do I find myself that any new JVM args are needed to solve most problems.)
(Speaking of which, why did you set the – xss value? And do you know if you were raising or lowering it form the default?)
Are you really getting “outofmemory” errors?
But certainly, if you do hit a problem where (as you say) you find requests hanging, etc., then you will want to get to the bottom of that. And if indeed you are getting “outofmemory” problems, you need to solve those. To confirm if that’s the case, you’ll really want to look at the CF logs (specifically the console or “out” logs). For more on finding those logs, as well as a general discussion of memory issues (understanding/resolving them), see:
http://www.carehart.org/blog/client/index.cfm/2010/11/3/when_memory_problems_arent_what_th ey_seem_part_1
This is the first of a planned series of blog entries (which I’ve not yet finished) on memory issues which you may find additionally helpful.
But I’ll note that you could have other explanations for “hanging requests” which may not necessarily be related to memory.
Are you really getting “queued” requests?
You also say that “the service will start to queue requests and eventually stop processing them all together”. I’m curious: do you really mean “queuing”, in the sense of watching something in CF that tells you that? You can find a count of queued requests, with tools like CFSTAT, jrun metrics, the CF Server Monitor, or again FREC. Are you seeing one of those? Or do you just mean that you find that requests no longer run?
I address matters related to requests hanging and some ways to address them in another entries:
http://www.carehart.org/blog/client/index.cfm/2010/10/15/Lies_damned_lies_and_CF_timeouts
http://www.carehart.org/blog/client/index.cfm/2009/6/24/easier_thread_dumps
Other server differences
You presented us a discussion of two servers, but you’ve left us in the dark on potential differences between them. First, you showed the specs for the “sick” server, but not the “good” one. Should we assume perhaps you mean that they are identical, like you said the JVM.config is?
Also, is there any difference in the pattern of traffic (and/or the sites themselves) on the two servers? If they differ, then that could be where the explanation lies. Perhaps the sites on one are more inclined to be visited often by search engine spiders and bots (if they sites are more popular or just have become well known to search engines). There are still other potential differences that could explain things, but these are all enough to hopefully get you started.
I do hope that this is helpful. I know it’s a lot to take in. Again, if it was easier to understand and explain, there wouldn’t be so much confusion. I do realize that many don’t like to read long emails (let alone write them), which only exacerbates the problem. Since all I do each day is help people resolve such problems (as an independent consultant, more at carehart.org/consulting), I like to share this info when I can (and when I have time to elaborate like this), especially when I think it may help someone facing these (very common) challenges.
Let us know if it helps or raises more questions. :-)
/charlie -
Has anyone experienced a memory leak when a webservice (jws)
returns a large string (5-15 Meg). The string itself is a XML. When the webservice is called numerous times it eventually runs out of memory.We have seen exactly the same behaviour you just described, also related to webservices that return large XML response documents. Initially we had the test console enabled, which consumed all the memory rapidly. Once this was disabled, we've been seeing the exception messages that you've been getting. We did have an issue where the JVM was configured with too much memory (sounds counter intuitive), and we found the max JVM size should be less than 2MB (we're now using 1.3MB). This reduce the frequency of the error occuring, but it does still occasionally happen.
I did some testing where I watched the memory used by weblogic when returning a large XML document. The XML document size was around 8MB when saved as a txt file. From the weblogic console server->monitor->performance page, the memory consumed by weblogic when returning this XML document was much larger than I expected. In fact weblogic used about 100MB of memory and the memory graph went up very steeply when returning this document. I adjusted my JVM memory settings and found that if I had less than approximately 80MB of free memory, then my webservice couldn't return this large XML response document without getting the OutOfMemory error. This test was done using a weblogic server that had just booted up and so had no scope for garbage collection of memory. -
AIR runtime Memory Leak?
Hi,
I have an app developed with AIR 3.7 for iOS (iPad)
The app gets very sluggish after a while, eventually crashes.
I've been -very- careful to pool objects where possible and cleanup / nullify all objects once they're not needed any more.
Profiling the app in Scout returns a pretty stable memory profile (the peaks and the lows translate very well to what's happening on screen)
Simultenously profiling the app using XCode's Instruments, shows me that the memory consumption off the app constantly rises up to the point the systems spends more time throwing memory warning than anything else.
Here are screenshots of both profilers: they show as3 memory usage being pretty stable, on the app level, memory keeps rising...
https://dl.dropboxusercontent.com/u/608333/AIR_memory_leak.zip
If AS3 is not leaking any memory (according to scout), but the app is (according to Instruments), would I be right assuming there's a memory leak in the AIR-runtime itself?
thanks for your feedback!
bart.ok, lots of trial and error has showed me the following:
There are two issues when loading assets using the Loader Class with its LoaderContext set to ImageDecodingPolicy.ON_LOAD.
These issues typically arise in a magazine-like app, where many images are loaded and unloaded continously.
Issue 1:
When initializing a load() on a Loader class with LoaderContext to ImageDecodingPolicy.ON_LOAD, all image decoding seems to be queued in a seperate thread. With several large images, especially on mobile devices, the time to crunch through a queue like this can easily go into dozens of seconds. During that time, some of the loaders can be unloaded, cleared, nulled and deleted. Yet, the loader isn't removed from the decoding queue.
In other words: once you fire the 'load' method on a Loader instance, you're not able to cancel the decompression process, even though the decompression might not even have started yet, as queued by other decompressions.
Issue 2:
When a Loader instance is unloaded, cleared, nulled and deleted while its decompression is still queued and not yet fully decompressed, there seems to be a memory leak. With several dozens of images loading and interupting the loading, you'll notice a difference in memory consumtion when comparing memory output in Scout and in Instruments. Both memory graphs build up very similar yet after the runtime's garbarge collection kicks in, the memory graph in Instruments seems to not release memory fully. Consumption gradually rises until the app eventually crashes.
https://dl.dropboxusercontent.com/u/608333/AIRMemoryLeakExample.zip
This example app allows you to create loaders in bursts by touching the screen.
You'll instantly see the massive waiting times for decompression, despite the fact there's only a few Loader instances in memory at the same time. After several short bursts and wait-a-bit-for-decompression-to-catch-up, you should also notice the difference in memory profiling between Scout and Instruments.
I managed to work around both issues by making a LoaderQueueManager class.
This class instantiates and returns a Loader instance, queues these instances and tracks its onComplete handler. Only when one loader is finished loading, the next loader starts loading. This way, you never have different instances trying to simulataneously decompress their content. As such decompressions are never interrupted and loaders can also be de-queued. This practically speeds up decompression dramatically, since images that are removed won't get decompressed in vain. Memory Leaks also don't occur, since not a single decompression is ever interupted.
This solution only works with content loaded locally.
Hope you can get somewhere with this,
and hopefully, you find a fix in one of the next AIR releases.
best,
bart. -
Firefox immediate lockup trying to restore memory-leaking open tabs
I've managed to get firefox to immediately lock up once opening it as it's trying to restore a tab that causes the memory so suddenly leak so severely the memory graph in windows is greater than 45 degrees. Firefox does have option to turn of tab-reopening on launch, but that requires being able to use the options menu, or even about config screen. Restarting the computer, end-task on firefox and re-launch, or spam clicking the close window box, or ctrl-w to try to close tabs, all have failed.
Is there a way to launch firefox perhaps with a command line or key hold that prevents it from re-opening a previous session?Look for the Firefox icon on your Task Bar. Right click and select
'''Open New Window.'''
'''[https://addons.mozilla.org/en-US/firefox/addon/flashblock/ Flash block]''' {web link}
Never be annoyed by a Flash animation again! Blocks Flash so it
won't get in your way, but if you want to see it, just click on it
'''https://support.mozilla.org/en-US/kb/firefox-slow-how-make-it-faster'''
'''https://support.mozilla.org/en-US/kb/firefox-uses-too-many-cpu-resources-how-fix'''
'''https://support.mozilla.org/en-US/kb/firefox-hangs-or-not-responding'''
'''[https://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-ram Firefox uses too much memory (RAM) - How to fix]''' -
Strange Memory Spike Occurring
Hi all,
I am encountering a weird memory spike running an application under Java 1.4.1_02 and I am wondering if anyone else has encountered it, it knows what the problem might be.
Here's what happens. I am running an application that we develop that (as a simplified explanation) processes requests. Everything ran fine under Java 1.3.1_06 and we are investigating moving it forward to 1.4.1_02. When I start up the system, I run through 4 identical requests as a test. The first three requests go through as expected. On the fourth request, one JVM (there are several JVM's going, communicating through CORBA) starts a vicous memory grab that pushes it's real memory usage from 20MB to 90MB and its virtual memory usage from 30MB to 1.6GB. While this is happening (takes about 2 to 2.5 minutes) everything else in the JVM stops happening (timers don't expire, code isn't executed, etc). After the memory consumption reaches its peak, the system slowly starts recovering the memory, back down to its orignal size (another 2 to 2.5 minutes.) At this point the system resumes operation exactly where it left off and works fine from there on, until it is restarted (I have run up to 10000 requests through afterwards without a problem.)
The memory usage happens in a two step process. It starts with one big jump of about 300MB (total between the real and virtual memory), then continues increasing in a gradual increase. The decrease happens in a mirror of this, with ta gradual decrease for a while, then a big drop at the end. The memory graph would look somehting like this:
1.6GB
330MB/ \330MB
| |
| |
20MB___________| |___________ 20MB
^ ^
| |
processing processing
stops resumesI have run the process with both -Xrunhprof and -verbose options, and neither show anything that might be the cause of the problem. I then tried attaching to the process with a remote profiler and the problem did not occur. Further playing around with the command line showed that using -server as an option made the problem not occur.
My question is what caused it in the first place? I have concerns about this re-occurring elsewhere, especially if adding the -server option doesn't fix the problem just move it somewhere else.
Can anyone give me any help?Hi Daman !
Your problem definitely seems to be due to a known bug in jdk1.4.1
- that the heap memory exceeds the allocated ones (default=64mb).
In your case the process stops for some time in your application because the garbage collector is running. Since the GC has to reclaim a large amount of memory it takes some time- thats why the program stops executing.
Use a profiler like JProfiler to confirm if this is due gc activity.
1) Plz try different combination heap sizes
of -Xms and -Xmx setting for eg (-Xms128 -Xmx128) or dont use it at all.
2) But a preferred one will be to upgrade to j2se1.4.1_02.
Hope this helps !! -
[SOLVED] Error when starting awesome WM.
I'm not sure if this should go here or in Workstation User, so sorry if I got it wrong. When I try to startx with "exec awesome &" in my .xinitrc I get an "expected keysym, got XF86Info: line 914 of inet" error. Someone suggested that it could be my keybindings in my rc.lua for awesome but I tried someone else's rc.lua and still got it.
Error Log
xauth: creating new authority file /home/tim/.serverauth.27451
X.Org X Server 1.5.0
Release Date:
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.26-ARCH i686
Current Operating System: Linux tim-laptop 2.6.26-ARCH #1 SMP PREEMPT Tue Sep 9 10:15:21 UTC 2008 i686
Build Date: 06 September 2008 05:03:06PM
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat Sep 20 11:49:21 2008
(==) Using config file: "/etc/X11/xorg.conf"
expected keysym, got XF86Info: line 914 of inet
expected keysym, got XF86Info: line 914 of inet
expected keysym, got XF86Info: line 914 of inet
waiting for X server to shut down .
Xorg.log
X.Org X Server 1.5.0
Release Date:
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.26-ARCH i686
Current Operating System: Linux tim-laptop 2.6.26-ARCH #1 SMP PREEMPT Tue Sep 9 10:15:21 UTC 2008 i686
Build Date: 06 September 2008 05:03:06PM
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat Sep 20 11:49:21 2008
(==) Using config file: "/etc/X11/xorg.conf"
(==) ServerLayout "X.org Configured"
(**) |-->Screen "Screen0" (0)
(**) | |-->Monitor "Monitor0"
(**) | |-->Device "Card0"
(**) |-->Input Device "Mouse0"
(**) |-->Input Device "Keyboard0"
(==) Automatically adding devices
(==) Automatically enabling devices
(==) Including the default font path /usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1.
(**) FontPath set to:
/usr/share/fonts/misc,
/usr/share/fonts/100dpi:unscaled,
/usr/share/fonts/75dpi:unscaled,
/usr/share/fonts/TTF,
/usr/share/fonts/Type1,
/usr/share/fonts/misc,
/usr/share/fonts/100dpi:unscaled,
/usr/share/fonts/75dpi:unscaled,
/usr/share/fonts/TTF,
/usr/share/fonts/Type1
(**) ModulePath set to "/usr/lib/xorg/modules"
(II) Open ACPI successful (/var/run/acpid.socket)
(II) Loader magic: 0x81d5660
(II) Module ABI versions:
X.Org ANSI C Emulation: 0.4
X.Org Video Driver: 4.1
X.Org XInput driver : 2.1
X.Org Server Extension : 1.1
X.Org Font Renderer : 0.6
(II) Loader running on linux
(--) using VT number 7
(--) PCI:*(0@0:2:0) Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xd0300000/0, 0xc0000000/0, 0xd0400000/0, I/O @ 0x00001800/0
(--) PCI: (0@0:2:1) Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller rev 3, Mem @ 0xd0380000/0
(II) System resource ranges:
[0] -1 0 0xffffffff - 0xffffffff (0x1) MX[b]
[1] -1 0 0x000f0000 - 0x000fffff (0x10000) MX[b]
[2] -1 0 0x000c0000 - 0x000effff (0x30000) MX[b]
[3] -1 0 0x00000000 - 0x0009ffff (0xa0000) MX[b]
[4] -1 0 0x0000ffff - 0x0000ffff (0x1) IX[b]
[5] -1 0 0x00000000 - 0x00000000 (0x1) IX[b]
(II) "extmod" will be loaded. This was enabled by default and also specified in the config file.
(II) "dbe" will be loaded. This was enabled by default and also specified in the config file.
(II) "glx" will be loaded. This was enabled by default and also specified in the config file.
(II) "freetype" will be loaded. This was enabled by default and also specified in the config file.
(II) "dri" will be loaded. This was enabled by default and also specified in the config file.
(II) LoadModule: "dri"
(II) Loading /usr/lib/xorg/modules/extensions//libdri.so
(II) Module dri: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
ABI class: X.Org Server Extension, version 1.1
(II) Loading extension XFree86-DRI
(II) LoadModule: "glx"
(II) Loading /usr/lib/xorg/modules/extensions//libglx.so
(II) Module glx: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
ABI class: X.Org Server Extension, version 1.1
(==) AIGLX enabled
(==) Exporting typical set of GLX visuals
(II) Loading extension GLX
(II) LoadModule: "dbe"
(II) Loading /usr/lib/xorg/modules/extensions//libdbe.so
(II) Module dbe: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
Module class: X.Org Server Extension
ABI class: X.Org Server Extension, version 1.1
(II) Loading extension DOUBLE-BUFFER
(II) LoadModule: "extmod"
(II) Loading /usr/lib/xorg/modules/extensions//libextmod.so
(II) Module extmod: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
Module class: X.Org Server Extension
ABI class: X.Org Server Extension, version 1.1
(II) Loading extension SHAPE
(II) Loading extension MIT-SUNDRY-NONSTANDARD
(II) Loading extension BIG-REQUESTS
(II) Loading extension SYNC
(II) Loading extension MIT-SCREEN-SAVER
(II) Loading extension XC-MISC
(II) Loading extension XFree86-VidModeExtension
(II) Loading extension XFree86-Misc
(II) Loading extension XFree86-DGA
(II) Loading extension DPMS
(II) Loading extension TOG-CUP
(II) Loading extension Extended-Visual-Information
(II) Loading extension XVideo
(II) Loading extension XVideo-MotionCompensation
(II) Loading extension X-Resource
(II) LoadModule: "synaptics"
(II) Loading /usr/lib/xorg/modules/input//synaptics_drv.so
(II) Module synaptics: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 0.15.2
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 2.1
(II) LoadModule: "xtrap"
(II) Loading /usr/lib/xorg/modules/extensions//libxtrap.so
(II) Module xtrap: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
Module class: X.Org Server Extension
ABI class: X.Org Server Extension, version 1.1
(II) Loading extension DEC-XTRAP
(II) LoadModule: "freetype"
(II) Loading /usr/lib/xorg/modules/fonts//libfreetype.so
(II) Module freetype: vendor="X.Org Foundation & the After X-TT Project"
compiled for 1.5.0, module version = 2.1.0
Module class: X.Org Font Renderer
ABI class: X.Org Font Renderer, version 0.6
(II) Loading font FreeType
(II) LoadModule: "evdev"
(II) Loading /usr/lib/xorg/modules/input//evdev_drv.so
(II) Module evdev: vendor="X.Org Foundation"
compiled for 1.4.99.906, module version = 2.0.4
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 2.1
(II) LoadModule: "intel"
(II) Loading /usr/lib/xorg/modules/drivers//intel_drv.so
(II) Module intel: vendor="X.Org Foundation"
compiled for 1.4.99.906, module version = 2.4.2
Module class: X.Org Video Driver
ABI class: X.Org Video Driver, version 4.1
(II) LoadModule: "synaptics"
(II) Reloading /usr/lib/xorg/modules/input//synaptics_drv.so
(II) LoadModule: "kbd"
(II) Loading /usr/lib/xorg/modules/input//kbd_drv.so
(II) Module kbd: vendor="X.Org Foundation"
compiled for 1.4.2, module version = 1.3.1
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 2.0
(II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
i810-dc100, i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G,
E7221 (i915), 915GM, 945G, 945GM, 945GME, 965G, G35, 965Q, 946GZ,
965GM, 965GME/GLE, G33, Q35, Q33,
Mobile Intel® GM45 Express Chipset,
Intel Integrated Graphics Device, G45/G43, Q45/Q43
(II) Primary Device is: PCI 00@00:02:0
(II) resource ranges after xf86ClaimFixedResources() call:
[0] -1 0 0xffffffff - 0xffffffff (0x1) MX[b]
[1] -1 0 0x000f0000 - 0x000fffff (0x10000) MX[b]
[2] -1 0 0x000c0000 - 0x000effff (0x30000) MX[b]
[3] -1 0 0x00000000 - 0x0009ffff (0xa0000) MX[b]
[4] -1 0 0x0000ffff - 0x0000ffff (0x1) IX[b]
[5] -1 0 0x00000000 - 0x00000000 (0x1) IX[b]
(II) resource ranges after probing:
[0] -1 0 0xffffffff - 0xffffffff (0x1) MX[b]
[1] -1 0 0x000f0000 - 0x000fffff (0x10000) MX[b]
[2] -1 0 0x000c0000 - 0x000effff (0x30000) MX[b]
[3] -1 0 0x00000000 - 0x0009ffff (0xa0000) MX[b]
[4] 0 0 0x000a0000 - 0x000affff (0x10000) MS[b]
[5] 0 0 0x000b0000 - 0x000b7fff (0x8000) MS[b]
[6] 0 0 0x000b8000 - 0x000bffff (0x8000) MS[b]
[7] -1 0 0x0000ffff - 0x0000ffff (0x1) IX[b]
[8] -1 0 0x00000000 - 0x00000000 (0x1) IX[b]
[9] 0 0 0x000003b0 - 0x000003bb (0xc) IS[b]
[10] 0 0 0x000003c0 - 0x000003df (0x20) IS[b]
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Loading /usr/lib/xorg/modules//libint10.so
(II) Module int10: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
ABI class: X.Org Video Driver, version 4.1
(II) Loading sub module "vbe"
(II) LoadModule: "vbe"
(II) Loading /usr/lib/xorg/modules//libvbe.so
(II) Module vbe: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.1.0
ABI class: X.Org Video Driver, version 4.1
(II) Loading sub module "vgahw"
(II) LoadModule: "vgahw"
(II) Loading /usr/lib/xorg/modules//libvgahw.so
(II) Module vgahw: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 0.1.0
ABI class: X.Org Video Driver, version 4.1
(==) intel(0): Depth 24, (==) framebuffer bpp 32
(==) intel(0): RGB weight 888
(==) intel(0): Default visual is TrueColor
(**) intel(0): Option "AccelMethod" "exa"
(II) intel(0): Integrated Graphics Chipset: Intel(R) 945GM
(--) intel(0): Chipset: "945GM"
(--) intel(0): Linear framebuffer at 0xC0000000
(--) intel(0): IO registers at addr 0xD0300000
(II) intel(0): 2 display pipes available.
(**) intel(0): Using EXA for acceleration
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Reloading /usr/lib/xorg/modules//libint10.so
(II) intel(0): initializing int10
(WW) intel(0): Bad V_BIOS checksum
(II) intel(0): Primary V_BIOS segment is: 0xc000
(II) intel(0): VESA BIOS detected
(II) intel(0): VESA VBE Version 3.0
(II) intel(0): VESA VBE Total Mem: 7872 kB
(II) intel(0): VESA VBE OEM: Intel(r) 82945GM Chipset Family Graphics Chip Accelerated VGA BIOS
(II) intel(0): VESA VBE OEM Software Rev: 1.0
(II) intel(0): VESA VBE OEM Vendor: Intel Corporation
(II) intel(0): VESA VBE OEM Product: Intel(r) 82945GM Chipset Family Graphics Controller
(II) intel(0): VESA VBE OEM Product Rev: Hardware Version 0.0
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Module "ddc" already built-in
(II) Loading sub module "i2c"
(II) LoadModule: "i2c"
(II) Module "i2c" already built-in
(II) intel(0): Output VGA using monitor section Monitor0
(II) intel(0): I2C bus "CRTDDC_A" initialized.
(II) intel(0): Output LVDS has no monitor section
(II) intel(0): I2C bus "LVDSDDC_C" initialized.
(II) intel(0): Attempting to determine panel fixed mode.
(II) intel(0): I2C device "LVDSDDC_C:ddc2" registered at address 0xA0.
(II) intel(0): EDID vendor "LPL", prod id 49152
(II) intel(0): found backlight control method /sys/class/backlight/acpi_video1
(II) intel(0): Output TV has no monitor section
(II) intel(0): EDID vendor "LPL", prod id 49152
(II) intel(0): Output VGA disconnected
(II) intel(0): Output LVDS connected
(II) intel(0): Output TV disconnected
(II) intel(0): Using exact sizes for initial modes
(II) intel(0): Output LVDS using initial mode 1280x800
(II) intel(0): Monitoring connected displays enabled
(II) intel(0): detected 256 kB GTT.
(II) intel(0): detected 7932 kB stolen memory.
(==) intel(0): video overlay key set to 0x101fe
(==) intel(0): Will not try to enable page flipping
(==) intel(0): Triple buffering disabled
(==) intel(0): Intel XvMC decoder disabled
(==) intel(0): Using gamma correction (1.0, 1.0, 1.0)
(==) intel(0): DPI set to (96, 96)
(II) Loading sub module "fb"
(II) LoadModule: "fb"
(II) Loading /usr/lib/xorg/modules//libfb.so
(II) Module fb: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 1.0.0
ABI class: X.Org ANSI C Emulation, version 0.4
(II) Loading sub module "exa"
(II) LoadModule: "exa"
(II) Loading /usr/lib/xorg/modules//libexa.so
(II) Module exa: vendor="X.Org Foundation"
compiled for 1.5.0, module version = 2.4.0
ABI class: X.Org Video Driver, version 4.1
(II) Loading sub module "ramdac"
(II) LoadModule: "ramdac"
(II) Module "ramdac" already built-in
(II) intel(0): Comparing regs from server start up to After PreInit
(WW) intel(0): Register 0x61200 (PP_STATUS) changed from 0xc0000008 to 0xd000000a
(WW) intel(0): PP_STATUS before: on, ready, sequencing idle
(WW) intel(0): PP_STATUS after: on, ready, sequencing on
(WW) intel(0): Register 0x71024 (PIPEBSTAT) changed from 0x00000202 to 0x80000202
(WW) intel(0): PIPEBSTAT before: status: VSYNC_INT_STATUS VBLANK_INT_STATUS
(WW) intel(0): PIPEBSTAT after: status: FIFO_UNDERRUN VSYNC_INT_STATUS VBLANK_INT_STATUS
(==) Depth 24 pixmap format is 32 bpp
(II) do I need RAC? No, I don't.
(II) resource ranges after preInit:
[0] -1 0 0xffffffff - 0xffffffff (0x1) MX[b]
[1] -1 0 0x000f0000 - 0x000fffff (0x10000) MX[b]
[2] -1 0 0x000c0000 - 0x000effff (0x30000) MX[b]
[3] -1 0 0x00000000 - 0x0009ffff (0xa0000) MX[b]
[4] 0 0 0x000a0000 - 0x000affff (0x10000) MS[b](OprD)
[5] 0 0 0x000b0000 - 0x000b7fff (0x8000) MS[b](OprD)
[6] 0 0 0x000b8000 - 0x000bffff (0x8000) MS[b](OprD)
[7] -1 0 0x0000ffff - 0x0000ffff (0x1) IX[b]
[8] -1 0 0x00000000 - 0x00000000 (0x1) IX[b]
[9] 0 0 0x000003b0 - 0x000003bb (0xc) IS[b](OprU)
[10] 0 0 0x000003c0 - 0x000003df (0x20) IS[b](OprU)
(II) intel(0): Kernel reported 238592 total, 1 used
(II) intel(0): I830CheckAvailableMemory: 954364 kB available
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 11, (OK)
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 11, (OK)
drmOpenByBusid: Searching for BusID pci:0000:00:02.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 11, (OK)
drmOpenByBusid: drmOpenMinor returns 11
drmOpenByBusid: drmGetBusid reports pci:0000:00:02.0
(II) [drm] DRM interface version 1.3
(II) [drm] DRM open master succeeded.
(II) intel(0): [drm] Using the DRM lock SAREA also for drawables.
(II) intel(0): [drm] framebuffer mapped by ddx driver
(II) intel(0): [drm] added 1 reserved context for kernel
(II) intel(0): X context handle = 0x1
(II) intel(0): [drm] installed DRM signal handler
(**) intel(0): Framebuffer compression enabled
(**) intel(0): Tiling enabled
(==) intel(0): VideoRam: 262144 KB
(II) intel(0): Attempting memory allocation with tiled buffers.
(II) intel(0): Tiled allocation successful.
(II) intel(0): [drm] Registers = 0xd0300000
(II) intel(0): [drm] ring buffer = 0xc0000000
(II) intel(0): [drm] mapped front buffer at 0xc1000000, handle = 0xc1000000
(II) intel(0): [drm] mapped back buffer at 0xc4000000, handle = 0xc4000000
(II) intel(0): [drm] mapped depth buffer at 0xc5000000, handle = 0xc5000000
(II) intel(0): [drm] mapped classic textures at 0xc6000000, handle = 0xc6000000
(II) intel(0): [drm] Initialized kernel agp heap manager, 33554432
(II) intel(0): [dri] visual configs initialized
(II) intel(0): Page Flipping disabled
(II) intel(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(II) EXA(0): Offscreen pixmap area of 31457280 bytes
(II) EXA(0): Driver registered support for the following operations:
(II) Solid
(II) Copy
(II) Composite (RENDER acceleration)
(==) intel(0): Backing store disabled
(==) intel(0): Silken mouse enabled
(II) intel(0): Initializing HW Cursor
(II) intel(0): [DRI] installation complete
(II) intel(0): xf86BindGARTMemory: bind key 0 at 0x01000000 (pgoffset 4096)
(II) intel(0): xf86BindGARTMemory: bind key 1 at 0x02000000 (pgoffset 8192)
(II) intel(0): xf86BindGARTMemory: bind key 2 at 0x04000000 (pgoffset 16384)
(II) intel(0): xf86BindGARTMemory: bind key 3 at 0x05000000 (pgoffset 20480)
(II) intel(0): xf86BindGARTMemory: bind key 4 at 0x06000000 (pgoffset 24576)
(II) intel(0): Fixed memory allocation layout:
(II) intel(0): 0x00000000-0x0001ffff: ring buffer (128 kB)
(II) intel(0): 0x00020000-0x0061ffff: compressed frame buffer (6144 kB, 0x000000003f820000 physical
(II) intel(0): 0x00620000-0x00620fff: compressed ll buffer (4 kB, 0x000000003fe20000 physical
(II) intel(0): 0x00621000-0x0062afff: HW cursors (40 kB, 0x000000003fe21000 physical
(II) intel(0): 0x0062b000-0x00632fff: logical 3D context (32 kB)
(II) intel(0): 0x00633000-0x00633fff: overlay registers (4 kB, 0x000000003fe33000 physical
(II) intel(0): 0x007bf000: end of stolen memory
(II) intel(0): 0x01000000-0x01ffffff: front buffer (10240 kB) X tiled
(II) intel(0): 0x02000000-0x03dfffff: exa offscreen (30720 kB)
(II) intel(0): 0x04000000-0x04ffffff: back buffer (10240 kB) X tiled
(II) intel(0): 0x05000000-0x05ffffff: depth buffer (10240 kB) X tiled
(II) intel(0): 0x06000000-0x07ffffff: classic textures (32768 kB)
(II) intel(0): 0x10000000: end of aperture
(II) intel(0): Selecting standard 18 bit TMDS pixel format.
(II) intel(0): Output configuration:
(II) intel(0): Pipe A is off
(II) intel(0): Display plane A is now disabled and connected to pipe A.
(II) intel(0): Pipe B is on
(II) intel(0): Display plane B is now enabled and connected to pipe B.
(II) intel(0): Output VGA is connected to pipe none
(II) intel(0): Output LVDS is connected to pipe B
(II) intel(0): Output TV is connected to pipe none
(II) intel(0): [drm] dma control initialized, using IRQ 16
(II) intel(0): RandR 1.2 enabled, ignore the following RandR disabled message.
(II) intel(0): Selecting standard 18 bit TMDS pixel format.
(II) intel(0): DPMS enabled
(II) intel(0): Set up textured video
(II) intel(0): Set up overlay video
(II) intel(0): direct rendering: Enabled
(--) RandR disabled
(II) Initializing built-in extension MIT-SHM
(II) Initializing built-in extension XInputExtension
(II) Initializing built-in extension XTEST
(II) Initializing built-in extension XKEYBOARD
(II) Initializing built-in extension XC-APPGROUP
(II) Initializing built-in extension SECURITY
(II) Initializing built-in extension XINERAMA
(II) Initializing built-in extension XFIXES
(II) Initializing built-in extension RENDER
(II) Initializing built-in extension RANDR
(II) Initializing built-in extension COMPOSITE
(II) Initializing built-in extension DAMAGE
(II) Initializing built-in extension XEVIE
(II) AIGLX: Screen 0 is not DRI2 capable
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 12, (OK)
drmOpenByBusid: Searching for BusID pci:0000:00:02.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 12, (OK)
drmOpenByBusid: drmOpenMinor returns 12
drmOpenByBusid: drmGetBusid reports pci:0000:00:02.0
(II) AIGLX: enabled GLX_MESA_copy_sub_buffer
(II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
(II) AIGLX: enabled GLX_texture_from_pixmap with driver support
(II) AIGLX: Loaded and initialized /usr/lib/xorg/modules/dri/i915_dri.so
(II) GLX: Initialized DRI GL provider for screen 0
(II) intel(0): Setting screen physical size to 304 x 190
(II) Synaptics touchpad driver version 0.15.2
(--) Mouse0 auto-dev sets device to /dev/input/event8
(II) Mouse0: x-axis range 1472 - 5472
(II) Mouse0: y-axis range 1408 - 4448
(**) Option "Device" "/dev/input/event8"
(**) Option "SHMConfig" "true"
(**) Option "LeftEdge" "1700"
(**) Option "RightEdge" "5300"
(**) Option "TopEdge" "1700"
(**) Option "BottomEdge" "4200"
(**) Option "FingerLow" "25"
(**) Option "FingerHigh" "30"
(**) Option "MaxTapTime" "180"
(**) Option "MaxTapMove" "220"
(**) Option "VertScrollDelta" "100"
(--) Mouse0 touchpad found
(**) Option "CorePointer"
(**) Mouse0: always reports core events
(**) Option "CoreKeyboard"
(**) Keyboard0: always reports core events
(**) Option "Protocol" "standard"
(**) Keyboard0: Protocol: standard
(**) Option "AutoRepeat" "500 30"
(**) Option "XkbRules" "xorg"
(**) Keyboard0: XkbRules: "xorg"
(**) Option "XkbModel" "pc105"
(**) Keyboard0: XkbModel: "pc105"
(**) Option "XkbLayout" "us"
(**) Keyboard0: XkbLayout: "us"
(**) Option "CustomKeycodes" "off"
(**) Keyboard0: CustomKeycodes disabled
(II) evaluating device (Mouse0)
(II) XINPUT: Adding extended input device "Mouse0" (type: TOUCHPAD)
(II) evaluating device (Keyboard0)
(II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD)
(II) Mouse0: x-axis range 1472 - 5472
(II) Mouse0: y-axis range 1408 - 4448
(--) Mouse0 touchpad found
(II) config/hal: Adding input device SynPS/2 Synaptics TouchPad
(II) Synaptics touchpad driver version 0.15.2
(II) SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5472
(II) SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4448
(**) Option "Device" "/dev/input/event8"
(--) SynPS/2 Synaptics TouchPad touchpad found
(**) SynPS/2 Synaptics TouchPad: always reports core events
(II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: TOUCHPAD)
(II) SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5472
(II) SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4448
(WW) SynPS/2 Synaptics TouchPad can't grab event device, errno=16
(--) SynPS/2 Synaptics TouchPad touchpad found
(II) config/hal: Adding input device Video Bus
(**) Video Bus: always reports core events
(**) Video Bus: Device: "/dev/input/event6"
(II) Video Bus: Found keys
(II) Video Bus: Configuring as keyboard
(II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) Video Bus: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) Video Bus: xkb_model: "evdev"
(**) Option "xkb_layout" "us"
(**) Video Bus: xkb_layout: "us"
(II) config/hal: Adding input device Video Bus
(**) Video Bus: always reports core events
(**) Video Bus: Device: "/dev/input/event5"
(II) Video Bus: Found keys
(II) Video Bus: Configuring as keyboard
(II) XINPUT: Adding extended input device "Video Bus" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) Video Bus: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) Video Bus: xkb_model: "evdev"
(**) Option "xkb_layout" "us"
(**) Video Bus: xkb_layout: "us"
(II) config/hal: Adding input device AT Translated Set 2 keyboard
(**) AT Translated Set 2 keyboard: always reports core events
(**) AT Translated Set 2 keyboard: Device: "/dev/input/event1"
(II) AT Translated Set 2 keyboard: Found keys
(II) AT Translated Set 2 keyboard: Configuring as keyboard
(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
(**) Option "xkb_rules" "base"
(**) AT Translated Set 2 keyboard: xkb_rules: "base"
(**) Option "xkb_model" "evdev"
(**) AT Translated Set 2 keyboard: xkb_model: "evdev"
(**) Option "xkb_layout" "us"
(**) AT Translated Set 2 keyboard: xkb_layout: "us"
(II) config/hal: Adding input device Macintosh mouse button emulation
(**) Macintosh mouse button emulation: always reports core events
(**) Macintosh mouse button emulation: Device: "/dev/input/event0"
(II) Macintosh mouse button emulation: Found x and y relative axes
(II) Macintosh mouse button emulation: Found mouse buttons
(II) Macintosh mouse button emulation: Configuring as mouse
(II) XINPUT: Adding extended input device "Macintosh mouse button emulation" (type: MOUSE)
(II) UnloadModule: "synaptics"
(II) UnloadModule: "kbd"
(II) UnloadModule: "synaptics"
(II) Video Bus: Close
(II) UnloadModule: "evdev"
(II) Video Bus: Close
(II) UnloadModule: "evdev"
(II) AT Translated Set 2 keyboard: Close
(II) UnloadModule: "evdev"
(II) Macintosh mouse button emulation: Close
(II) UnloadModule: "evdev"
(II) intel(0): xf86UnbindGARTMemory: unbind key 0
(II) intel(0): xf86UnbindGARTMemory: unbind key 1
(II) intel(0): xf86UnbindGARTMemory: unbind key 2
(II) intel(0): xf86UnbindGARTMemory: unbind key 3
(II) intel(0): xf86UnbindGARTMemory: unbind key 4
(II) intel(0): [drm] removed 1 reserved context for kernel
(II) intel(0): [drm] unmapping 8192 bytes of SAREA 0xf8acb000 at 0xb7a29000
(II) intel(0): [drm] Closed DRM master.
xorg.conf
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
# RgbPath "/usr/share/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/100dpi:unscaled"
FontPath "/usr/share/fonts/75dpi:unscaled"
FontPath "/usr/share/fonts/TTF"
FontPath "/usr/share/fonts/Type1"
EndSection
Section "Module"
Load "dri"
Load "glx"
# Load "record"
Load "GLcore"
Load "dbe"
Load "extmod"
Load "synaptics"
Load "xtrap"
Load "freetype"
Load "evdev"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "InputDevice"
Driver "synaptics"
Identifier "Mouse0"
Option "Device" "/dev/mouse0"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.06"
Option "MaxSpeed" "0.12"
Option "AccelFactor" "0.0030"
Option "SHMConfig" "true"
# Option "Repeater" "/dev/ps2mouse"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
#DisplaySize 1280 800 # mm
Identifier "Monitor0"
VendorName "LPL"
ModelName "c000"
EndSection
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
### [arg]: arg optional
#Option "NoAccel" # [<bool>]
#Option "SWcursor" # [<bool>]
#Option "ColorKey" # <i>
#Option "CacheLines" # <i>
#Option "Dac6Bit" # [<bool>]
#Option "DRI" # [<bool>]
#Option "NoDDC" # [<bool>]
#Option "ShowCache" # [<bool>]
#Option "XvMCSurfaces" # <i>
#Option "PageFlip" # [<bool>]
Identifier "Card0"
Driver "intel"
VendorName "Intel Corporation"
BoardName "Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller"
BusID "PCI:0:2:0"
Option "AccelMethod" "exa"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
.xinitrc
#!/bin/sh
exec openbox-session
#ivman &
#exec awesome &
#/usr/lib/wicd/wicd-client.py &
#xterm -bg black -fg white
rc.lua
-- GGLucas' Awesome-3 Lua Config :D
-- Version 2
-- This config is for use with awesome 3.0.
-- If you have any suggestions or questions, feel free
-- to pass me a message, find me in #awesome on OFTC, or
-- email me at <lucas[at]glacicle.com>
-- I use both wicked and eminent, so to use it,
-- you'll need to get both those helper libraries too.
-- Note that I use all-custom keybindings, so you might
-- want to copy the default rc.lua's keybindings
-- into here if you wish to use those, although you might
-- find you like mine better :P
---- {{{ Require lua libraries
-- Shipped with awesome
require("awful")
require("beautiful")
-- External
require("wicked") -- Widgets
require("eminent") -- Dynamic tagging
---- {{{ 'Beautiful' theme settings
-- Font
beautiful.font = "Terminus 8"
-- Background
beautiful.bg_normal = '#22222222'
beautiful.bg_focus = '#285577'
beautiful.bg_sbfocus = '#11335565'
beautiful.bg_urgent = '#A10000'
-- Foreground
beautiful.fg_normal = '#999999'
beautiful.fg_focus = '#ffffff'
beautiful.fg_urgent = '#ffffff'
-- Border
beautiful.border_width = 2
beautiful.border_normal = '#333333'
beautiful.border_focus = '#4C7899'
beautiful.border_marked = '#91231c'
---- {{{ Modkeys
key = {}
key.none = {}
key.alt = {"Mod1"}
key.super = {"Mod4"}
key.shift = {"Shift"}
key.control = {"Control"}
key.super_alt = {key.super[1], key.alt[1]}
key.super_shift = {key.super[1], key.shift[1]}
key.super_control = {key.super[1], key.control[1]}
key.control_alt = {key.control[1], key.alt[1]}
key.shift_alt = {key.shift[1], key.alt[1]}
---- {{{ Settings
-- Initialise tables
settings = {}
settings.widget = {}
settings.apps = {}
settings.tag = {}
settings.bindings = {}
-- {{{ General
-- Widget spacer and separator
settings.widget_spacer = " "
settings.widget_separator = " "
-- Warp mouse
settings.warp_mouse = true
-- New become master
settings.new_become_master = false
-- Tag mwfact
settings.tag.mwfact = 0.618033988769
-- {{{ Applications
-- Terminal application
settings.apps.terminal = 'xterm'
-- Terminal with gnu screen
settings.apps.gnu_screen = settings.apps.terminal..' -e zsh -c "exec screen -x main"'
-- Terminal with gnu screen over ssh to my main machine
settings.apps.gnu_screen_ssh_desktop = settings.apps.terminal..' -e zsh -c "ssh -t me.glacicle.com screen -x main"'
-- Terminal with gnu screen over ssh to my vps server
settings.apps.gnu_screen_ssh_server = settings.apps.terminal..' -e zsh -c "ssh -t glacicle.com screen -x"'
-- Command to lock the screen
settings.apps.lock_screen = 'xscreensaver-command -lock'
-- Command to turn screen off with DPMS
settings.apps.screen_off = 'sleep 1; xset dpms force off'
-- File manager application
settings.apps.filemanager = settings.apps.terminal..' -e zsh -c "vifm %s"'
-- Toggle music
-- Note: mpdtoggle is my own script for finding out if
-- I want to toggle or play/stop, replace it with mpc if
-- you wish to use it.
settings.apps.music_toggle = "mpdtoggle toggle"
-- {{{ Floating windows
settings.floating = {
["gimp"] = true,
["urxvtcnotify"] = true,
-- {{{ Other
-- Check what widget mode to use
if io.open(os.getenv("HOME").."/.laptop_mode") then
-- Special file exists, display widgets I want
-- on my laptop
settings.widget_mode = 'laptop'
else
settings.widget_mode = 'desktop'
end
-- Highlight statusbar of focussed screen on multiple-monitor setups
if screen.count() > 1 then
settings.statusbar_highlight_focus = {true, 1}
end
---- {{{ Keybindings
-- Initialise table
settings.bindings.wm = {}
settings.bindings.mouse = {}
-- {{{ Open the filemanager at specific locations
settings.bindings.filemanager = {
-- Data partition
["/data"] = {key.alt, "d"},
-- Data partition on desktop pc from laptop (sshfs mount)
["/desktop/data"] = {key.shift_alt, "d"},
-- Home Directory
[os.getenv("HOME")] = {key.alt, "a"},
-- {{{ Run specific commands
settings.bindings.commands = {
-- Open Terminal
[settings.apps.terminal] = {key.alt, "q"},
-- GNU Screen
[settings.apps.gnu_screen] = {key.super, "k"},
-- GNU Screen over SSH to Desktop
[settings.apps.gnu_screen_ssh_desktop] = {key.super_shift, "k"},
-- GNU Screen over SSH to VPS
[settings.apps.gnu_screen_ssh_server] = {key.super_alt, "k"},
-- Lock screen
[settings.apps.lock_screen] = {key.super, "l"},
-- Screen off with DPMS
[settings.apps.screen_off] = {key.super, "o"},
-- Toggle music
[settings.apps.music_toggle] = {key.alt, "e"},
-- {{{ Client keybindings
settings.bindings.wm.client = {
-- Alt+`: Close window
[function() client.focus:kill() end] = {key.alt, "#49"},
-- Mod+q: Focus previous window
[function() awful.client.focusbyidx(-1) end] = {key.super, "q"},
-- Mod+w: Focus next window
[function() awful.client.focusbyidx(1) end] = {key.super, "w"},
-- Mod+Shift+q: Swap with previous window
[function() awful.client.swap(-1) end] = {key.super_shift, "q"},
-- Mod+Shift+w: Swap with previous window
[function() awful.client.swap(1) end] = {key.super_shift, "w"},
-- Mod+c: Toggle floating
[awful.client.togglefloating] = {key.super, "c"},
-- Mod+\: Make window master
[function() local c = awful.client.master(); if c ~= client.focus then c:swap(client.focus) end end] =
{key.super, "#51"},
-- Mod+Shift+a: Move window to previous tag
[function () awful.client.movetotag(eminent.tag.getprev(mouse.screen)) end] =
{key.super_shift, "a"},
-- Mod+Shift+s: Move window to next tag
[function () awful.client.movetotag(eminent.tag.getnext(mouse.screen)) end] =
{key.super_shift, "s"},
-- Mod+Shift+e: Move window to next screen
[function () s = client.focus.screen+1; if s > screen.count() then s = 1 end; client.focus.screen = s end] =
{key.super_shift, "e"},
-- Mod+Shift+d: Move window to previous screen
[function () s = client.focus.screen-1; if s < 1 then s = screen.count() end; client.focus.screen = s end] =
{key.super_shift, "d"},
-- {{{ Tag bindings
settings.bindings.wm.tag = {
-- Mod+a: Switch to previous tag
[function() eminent.tag.prev(mouse.screen) end] = {key.super, "a"},
-- Mod+s: Switch to next tag
[function() eminent.tag.next(mouse.screen) end] = {key.super, "s"},
-- Alt+\: Switch to float layout
[function() awful.layout.set('floating') end] = {key.alt, "#51"},
-- Alt+z: Switch to max layout
[function() awful.layout.set('max') end] = {key.alt, "z"},
-- Alt+x: Switch to tile layout
[function() awful.layout.set('tile') end] = {key.alt, "x"},
-- {{{ Prompt bindings
settings.bindings.prompt = {
-- Alt+w: Run prompt
[{awful.spawn, " Run: "}] = {key.alt, "w"},
-- Mod+Alt+w: Lua eval prompt
[{awful.eval, " Run Lua: "}] = {key.super_alt, "w"},
-- {{{ Miscellaneous bindings
settings.bindings.wm.misc = {
-- Mod+Alt+r: Restart awesome
[awesome.restart] = {key.super_alt, "r"},
-- Mod+e: Switch focus to next screen
[function() awful.screen.focus(1) end] = {key.super, "e"},
-- Mod+d: Switch focus to previous screen
[function() awful.screen.focus(-1) end] = {key.super, "d"},
-- {{{ Keyboard digit bindings
settings.bindings.digits = {
-- Mod+##: View tag
[awful.tag.viewonly] = key.super,
-- Mod+Shift+##: Toggle tag view
[function(t) t.selected = not t.selected end] = key.super_shift,
-- Mod+Control+##: Move window to tag
[awful.client.movetotag] = key.super_control,
-- Mod+Alt+##: Toggle window on tag
[awful.client.toggletag] = key.super_alt,
-- {{{ Mouse bindings
settings.bindings.mouse.desktop = {
-- Right click on desktop: Open terminal
[function() awful.spawn(settings.apps.terminal) end] = {key.none, 3},
settings.bindings.mouse.client = {
-- Alt+Left: Move window
[function(c) c:mouse_move() end] = {key.alt, 1},
-- Alt+Right: Resize window
[function(c) c:mouse_resize({corner="bottomright"}) end] = {key.alt, 3},
---- {{{ Markup helper functions
-- Inline markup is a tad ugly, so use these functions
-- to dynamically create markup, we hook them into
-- the beautiful namespace for clarity.
beautiful.markup = {}
function beautiful.markup.bg(color, text)
return '<bg color="'..color..'" />'..text
end
function beautiful.markup.fg(color, text)
return '<span color="'..color..'">'..text..'</span>'
end
function beautiful.markup.font(font, text)
return '<span font_desc="'..font..'">'..text..'</span>'
end
function beautiful.markup.title(t)
return t
end
function beautiful.markup.title_normal(t)
return beautiful.title(t)
end
function beautiful.markup.title_focus(t)
return beautiful.markup.bg(beautiful.bg_focus, beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.title(t)))
end
function beautiful.markup.title_urgent(t)
return beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, beautiful.markup.title(t)))
end
function beautiful.markup.bold(text)
return '<b>'..text..'</b>'
end
function beautiful.markup.heading(text)
return beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.bold(text))
end
---- {{{ Widgets
settings.statusbars = {}
settings.widgets = {}
settings.statusbars[1] = {{
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "mainstatusbar",
}, "all"}
settings.promptbar = {
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "promptbar",
-- {{{ Taglist
maintaglist = widget({
type = 'taglist',
name = 'maintaglist'
function maintaglist.label(t)
return awful.widget.taglist.label.noempty(t)
end
maintaglist:mouse_add(mouse(key.none, 1, function (o, t) awful.tag.viewonly(t) end))
table.insert(settings.widgets, {1, maintaglist})
if settings.widget_mode == 'laptop' or settings.widget_mode == 'all' then
-- {{{ Battery Widget
batterywidget = widget({
type = 'textbox',
name = 'batterywidget',
align = 'right'
function read_battery_temp(format)
local f = io.open('/tmp/battery-temp')
if f == nil then
return {'n/a'}
end
local n = f:read()
if n == nil then
f:close()
return {'n/a'}
end
return {awful.escape(n)}
end
wicked.register(batterywidget, read_battery_temp,
settings.widget_spacer..beautiful.markup.heading('Battery')..': $1'..settings.widget_spacer..settings.widget_separator,
30)
-- Start timer to read the temp file
awful.hooks.timer.register(28, function ()
-- Call battery script to get batt%
command = "battery"
os.execute(command..' > /tmp/battery-temp &')
end, true)
table.insert(settings.widgets, {1, batterywidget})
end
if settings.widget_mode ~= 'none' then
-- {{{ MPD Widget
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'right'
wicked.register(mpdwidget, wicked.widgets.mpd, function (widget, args)
-- I don't want the stream name on my statusbar, so I gsub it out,
-- feel free to remove this bit
return settings.widget_spacer..beautiful.markup.heading('MPD')..': '
..args[1]:gsub('AnimeNfo Radio | Serving you the best Anime music!: ','')
..settings.widget_spacer..settings.widget_separator end)
table.insert(settings.widgets, {1, mpdwidget})
-- {{{ GMail Widget
gmailwidget = widget({
type = 'textbox',
name = 'gmailwidget',
align = 'right'
gmailwidget:mouse_add(mouse(key.none, 1, function () wicked.update(gmailwidget) end))
function read_gmail_temp(format)
local f = io.open('/tmp/gmail-temp')
if f == nil then
return {'n/a'}
end
local n = f:read()
if n == nil or f == ' ' or f == '' then
f:close()
return {'n/a'}
end
return {n}
end
wicked.register(gmailwidget, read_gmail_temp, function (widget, args)
local n = args[1]
local out = settings.widget_spacer..beautiful.markup.heading('GMail')..': '
if n ~= "n/a" and tonumber(n) > 0 then
out = out..beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, tostring(n)))
else
out = out..tostring(n)
end
out = out..settings.widget_spacer..settings.widget_separator
return out
end, 120)
-- Start timer to fill the temp file
awful.hooks.timer.register(110, function ()
-- Call GMail check script to check for new email
os.execute(os.getenv("HOME")..'/other/.gmail.py > /tmp/gmail-temp &')
end, true)
wicked.update(gmailwidget)
table.insert(settings.widgets, {1, gmailwidget})
-- {{{ Load Averages Widget
loadwidget = widget({
type = 'textbox',
name = 'loadwidget',
align = 'right'
function widget_loadavg(format)
-- Use /proc/loadavg to get the average system load on 1, 5 and 15 minute intervals
local f = io.open('/proc/loadavg')
local n = f:read()
f:close()
-- Find the third space
local pos = n:find(' ', n:find(' ', n:find(' ')+1)+1)
return {n:sub(1,pos-1)}
end
wicked.register(loadwidget, widget_loadavg,
settings.widget_spacer..beautiful.markup.heading('Load')..': $1'..settings.widget_spacer..settings.widget_separator, 2)
table.insert(settings.widgets, {1, loadwidget})
-- {{{ CPU Usage Widget
cputextwidget = widget({
type = 'textbox',
name = 'cputextwidget',
align = 'right'
wicked.register(cputextwidget, wicked.widgets.cpu,
settings.widget_spacer..beautiful.markup.heading('CPU')..': $1%'..settings.widget_spacer..settings.widget_separator,
nil, nil, 2)
table.insert(settings.widgets, {1, cputextwidget})
-- {{{ CPU Graph Widget
cpugraphwidget = widget({
type = 'graph',
name = 'cpugraphwidget',
align = 'right'
cpugraphwidget.height = 0.85
cpugraphwidget.width = 45
cpugraphwidget.bg = '#333333'
cpugraphwidget.border_color = '#0a0a0a'
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set('cpu', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')
table.insert(settings.widgets, {1, cpugraphwidget})
-- {{{ Memory Usage Widget
memtextwidget = widget({
type = 'textbox',
name = 'memtextwidget',
align = 'right'
wicked.register(memtextwidget, wicked.widgets.mem,
settings.widget_spacer..beautiful.markup.heading('MEM')..': '..
'$1% ($2/$3)'..settings.widget_spacer..settings.widget_separator,
3, nil, {2, 4, 4})
table.insert(settings.widgets, {1, memtextwidget})
-- {{{ Memory Graph Widget
memgraphwidget = widget({
type = 'graph',
name = 'memgraphwidget',
align = 'right'
memgraphwidget.height = 0.85
memgraphwidget.width = 45
memgraphwidget.bg = '#333333'
memgraphwidget.border_color = '#0a0a0a'
memgraphwidget.grow = 'left'
memgraphwidget:plot_properties_set('mem', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(memgraphwidget, wicked.widgets.mem, '$1', 1, 'mem')
table.insert(settings.widgets, {1, memgraphwidget})
-- {{{ Other Widget
settings.widget_spacerwidget = widget({ type = 'textbox', name = 'settings.widget_spacerwidget', align = 'right' })
settings.widget_spacerwidget.text = settings.widget_spacer..settings.widget_separator
table.insert(settings.widgets, {1, settings.widget_spacerwidget})
end
-- You shouldn't have to edit the code after this,
-- it takes care of applying the settings above.
---- {{{ Initialisations
-- Register beautiful with awful
awful.beautiful.register(beautiful)
-- Set default colors
awesome.colors_set({
fg = beautiful.fg_normal,
bg = beautiful.bg_normal })
-- Set default font
awesome.font_set(beautiful.font)
-- Pre-create new tags with eminent
for s=1, screen.count() do
eminent.newtag(s, 5)
end
---- {{{ Create statusbars
local mainstatusbar = {}
for i, b in pairs(settings.statusbars) do
mainstatusbar[i] = {}
for s=1,screen.count() do
this_screen = false
if b[2] ~= "all" then
for sc in pairs(b[2]) do
if sc == s then
this_screen = true
break
end
end
end
if b[2] == "all" or this_screen then
mainstatusbar[i][s] = statusbar(b[1])
local widgets = {}
for ii, w in pairs(settings.widgets) do
if w[1] == i then
table.insert(widgets, w[2])
end
end
mainstatusbar[i][s]:widgets(widgets)
mainstatusbar[i][s].screen = s
end
end
end
---- {{{ Create prompt statusbar
local mainpromptbar = statusbar(settings.promptbar)
local mainpromptbox = widget({type = "textbox", align = "left", name = "mainpromptbox"})
mainpromptbar:widgets({mainpromptbox})
mainpromptbar.screen = nil
---- {{{ Useful functions
-- {{{ Mouse warp function
function mouse_warp(c, force)
-- Allow skipping a warp
if warp_skip then
warp_skip = false
return
end
-- Get vars
local sel = c or client.focus
if sel == nil then return end
local coords = sel:coords()
local m = mouse.coords()
-- Settings
mouse_padd = 6
border_area = 5
-- Check if mouse is not already inside the window
if (( m.x < coords.x-border_area or
m.y < coords.y-border_area or
m.x > coords.x+coords.width+border_area or
m.y > coords.y+coords.height+border_area
) and (
table.maxn(m.buttons) == 0
)) or force
then
mouse.coords({ x=coords.x+mouse_padd, y=coords.y+mouse_padd})
end
end
-- {{{ Prompt with statusbar
function prompt_statusbar(s, callback, prompt)
if not callback then callback = awful.spawn end
if not prompt then prompt = " Run: " end
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if bb.screen == s then
bb.screen = nil
end
end
end
mainpromptbar.screen = s
awful.prompt.run({prompt = prompt}, mainpromptbox, callback,
awful.completion.bash, os.getenv("HOME") .. "/.cache/awesome_history", 50, function ()
mainpromptbar.screen = nil
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if ii == s then
bb.screen = ii
end
end
end
end)
end
---- {{{ Create bindings
--- This reads the binding tables and turns them into actual keybindings
-- WM Bindings
for i,table in pairs(settings.bindings.wm) do
for f, keys in pairs(table) do
keybinding(keys[1], keys[2], f):add()
end
end
-- Keyboard digit bindings
for i=1,9 do
for f, mod in pairs(settings.bindings.digits) do
keybinding(mod, i, function()
t = eminent.tag.getn(i, nil, true)
if not t then return end
f(t)
end):add()
end
end
-- Prompt Bindings
for prompt, keys in pairs(settings.bindings.prompt) do
keybinding(keys[1], keys[2], function() prompt_statusbar(mouse.screen, unpack(prompt)) end):add()
end
-- Filemanager bindings
for loc, keys in pairs(settings.bindings.filemanager) do
keybinding(keys[1], keys[2], function() awful.spawn(string.format(settings.apps.filemanager, loc)) end):add()
end
-- Custom command bindings
for command, keys in pairs(settings.bindings.commands) do
keybinding(keys[1], keys[2], function() awful.spawn(command) end):add()
end
-- Desktop mouse bindings
for f, keys in pairs(settings.bindings.mouse.desktop) do
awesome.mouse_add(mouse(keys[1], keys[2], f))
end
---- {{{ Set hooks
-- {{{ Focus hook
awful.hooks.focus.register(function (c)
-- Skip over my urxvtcnotify
if c.name and c.name:lower():find('urxvtcnotify') and awful.client.next(1) ~= c then
awful.client.focusbyidx(1)
return
end
-- Set border
c.border_color = beautiful.border_focus
-- Raise the client
c:raise()
-- Set statusbar color
if settings.statusbar_highlight_focus and settings.statusbar_highlight_focus[1] then
if last_screen == nil or last_screen ~= c.screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][c.screen].bg = beautiful.bg_sbfocus
if last_screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][last_screen].bg = beautiful.bg_normal
end
end
last_screen = c.screen
end
end)
-- {{{ Unfocus hook
awful.hooks.unfocus.register(function (c)
-- Set border
c.border_color = beautiful.border_normal
end)
-- {{{ Mouseover hook
awful.hooks.mouseover.register(function (c)
-- Set focus for sloppy focus
client.focus = c
end)
-- {{{ Manage hook
awful.hooks.manage.register(function (c)
local class = ""
local name = ""
if c.class then
class = c.class:lower()
end
if c.name then
name = c.name:lower()
end
-- Create border
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Add mouse bindings
for f, keys in pairs(settings.bindings.mouse.client) do
c:mouse_add(mouse(keys[1], keys[2], f))
end
-- Check if floating
for app, i in pairs(settings.floating) do
if class:find(app) or name:find(app) then
c.floating = i
break
end
end
if name:find('urxvtcnotify') then
-- I got sick of libnotify/notification-daemon
-- and their dependencies, so I'm using a little
-- urxvtc window with some text in it as notifications :P
-- This makes it appear at the correct place,
-- feel free to remove the whole section, you probably
-- won't need it.
c.screen = 3
c:coords({
x = 1680*2+1400,
y = 18,
width = 276,
height = 106
c.border_color = beautiful.border_normal
local tags = {}
for i,t in pairs(eminent.tags[3]) do
if eminent.tag.isoccupied(3, t) then
table.insert(tags, t)
end
end
c:tags(tags)
return 0
end
-- Focus new clients
client.focus = c
-- Prevent new windows from becoming master
if not settings.new_become_master then
awful.client.swap(1, c)
end
-- Don't honor size hints
c.honorsizehints = false
end)
-- {{{ Arrange hook
awful.hooks.arrange.register(function(s)
-- Warp the mouse
if settings.warp_mouse then
mouse_warp()
end
-- Check focus
if not client.focus then
local c = awful.client.focus.history.get(s, 0)
if c then client.focus = c end
end
end)
-- vim: set filetype=lua fdm=marker tabstop=4 shiftwidth=4 expandtab smarttab autoindent smartindent nu:
Last edited by Tim Fox (2008-09-20 18:15:15)andre.ramaciotti wrote:And I'm not sure if you should put that & after exec awesome. It works fine here without it.
No & after entries in .xinitrc . You've commented out the awesome entry. -
Awesome not reading rc.lua
I'm trying to give awesome3.1 a go, but it isn't reading my rc.lua. It just keeps the default everything. Really all I've changed is the theme.
-- Include awesome libraries, with lots of useful function!
require("awful")
require("beautiful")
-- {{{ Variable definitions
-- Themes define colours, icons, and wallpapers
theme_path = "/home/shawn/.config/awesome/theme"
-- Actually load theme
beautiful.init(theme_path)
-- This is used later as the default terminal and editor to run.
terminal = "xterm"
editor = os.getenv("EDITOR") or "vi"
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 =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Table of clients that should be set floating. The index may be either
-- the application class or instance. The instance is useful when running
-- a console app in a terminal like (Music on Console)
-- xterm -name mocp -e mocp
floatapps =
-- by class
["MPlayer"] = true,
["pinentry"] = true,
["gimp"] = true,
-- by instance
["mocp"] = true
-- Applications to be moved to a pre-defined tag by class or instance.
-- Use the screen and tags indices.
apptags =
-- ["Firefox"] = { screen = 1, tag = 2 },
-- ["mocp"] = { screen = 2, tag = 4 },
-- Define if we want to use titlebar on all applications.
use_titlebar = false
-- {{{ Tags
-- Define tags table.
tags = {}
for s = 1, screen.count() do
-- Each screen has its own tag table.
tags[s] = {}
-- Create 9 tags per screen.
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layouts })
-- Add tags to screen one by one
tags[s][tagnumber].screen = s
end
-- I'm sure you want to see at least one tag.
tags[s][1].selected = true
end
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- {{{ Wibox
-- Create a textbox widget
mytextbox = widget({ type = "textbox", align = "right" })
-- Set the default text in textbox
mytextbox.text = "<b><small> " .. AWESOME_RELEASE .. " </small></b>"
-- 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.new({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal }
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu })
-- Create a systray
mysystray = widget({ type = "systray", align = "right" })
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),
button({ modkey }, 1, awful.client.movetotag),
button({ }, 3, function (tag) tag.selected = not tag.selected end),
button({ modkey }, 3, awful.client.toggletag),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev) }
mytasklist = {}
mytasklist.buttons = { button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ }, 3, function () awful.menu.clients({ width=250 }) end),
button({ }, 4, function () awful.client.focus.byidx(1) end),
button({ }, 5, function () awful.client.focus.byidx(-1) end) }
for s = 1, screen.count() do
-- Create a promptbox for each screen
mypromptbox[s] = widget({ type = "textbox", align = "left" })
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
mylayoutbox[s] = widget({ type = "imagebox", align = "right" })
mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),
button({ }, 3, function () awful.layout.inc(layouts, -1) end),
button({ }, 4, function () awful.layout.inc(layouts, 1) end),
button({ }, 5, function () awful.layout.inc(layouts, -1) end) })
-- Create a taglist widget
mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)
-- Create a tasklist widget
mytasklist[s] = awful.widget.tasklist.new(function(c)
return awful.widget.tasklist.label.currenttags(c, s)
end, mytasklist.buttons)
-- Create the wibox
mywibox[s] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })
-- Add widgets to the wibox - order matters
mywibox[s].widgets = { mylauncher,
mytaglist[s],
mytasklist[s],
mypromptbox[s],
mytextbox,
mylayoutbox[s],
s == 1 and mysystray or nil }
mywibox[s].screen = s
end
-- {{{ Mouse bindings
awesome.buttons({
button({ }, 3, function () mymainmenu:toggle() end),
button({ }, 4, awful.tag.viewnext),
button({ }, 5, awful.tag.viewprev)
-- {{{ Key bindings
-- Bind keyboard digits
-- 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
for i = 1, keynumber do
keybinding({ modkey }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
awful.tag.viewonly(tags[screen][i])
end
end):add()
keybinding({ modkey, "Control" }, i,
function ()
local screen = mouse.screen
if tags[screen][i] then
tags[screen][i].selected = not tags[screen][i].selected
end
end):add()
keybinding({ modkey, "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.movetotag(tags[client.focus.screen][i])
end
end
end):add()
keybinding({ modkey, "Control", "Shift" }, i,
function ()
if client.focus then
if tags[client.focus.screen][i] then
awful.client.toggletag(tags[client.focus.screen][i])
end
end
end):add()
end
keybinding({ modkey }, "Left", awful.tag.viewprev):add()
keybinding({ modkey }, "Right", awful.tag.viewnext):add()
keybinding({ modkey }, "Escape", awful.tag.history.restore):add()
-- Standard program
keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()
keybinding({ modkey, "Control" }, "r", function ()
mypromptbox[mouse.screen].text =
awful.util.escape(awful.util.restart())
end):add()
keybinding({ modkey, "Shift" }, "q", awesome.quit):add()
-- Client manipulation
keybinding({ modkey }, "m", awful.client.maximize):add()
keybinding({ modkey }, "f", function () if client.focus then client.focus.fullscreen = not client.focus.fullscreen end end):add()
keybinding({ modkey, "Shift" }, "c", function () if client.focus then client.focus:kill() end end):add()
keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1); if client.focus then client.focus:raise() end end):add()
keybinding({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end):add()
keybinding({ modkey, "Shift" }, "k", function () awful.client.swap.byidx(-1) end):add()
keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()
keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()
keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()
keybinding({ modkey, "Control" }, "Return", function () if client.focus then client.focus:swap(awful.client.getmaster()) end end):add()
keybinding({ modkey }, "o", awful.client.movetoscreen):add()
keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()
keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()
keybinding({ modkey, "Shift" }, "r", function () if client.focus then client.focus:redraw() end end):add()
-- Layout manipulation
keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()
keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()
keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()
keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()
keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()
keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()
keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()
keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()
-- Prompt
keybinding({ modkey }, "F1", function ()
awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,
awful.util.getdir("cache") .. "/history")
end):add()
keybinding({ modkey }, "F4", function ()
awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,
awful.util.getdir("cache") .. "/history_eval")
end):add()
keybinding({ modkey, "Ctrl" }, "i", function ()
local s = mouse.screen
if mypromptbox[s].text then
mypromptbox[s].text = nil
elseif client.focus then
mypromptbox[s].text = nil
if client.focus.class then
mypromptbox[s].text = "Class: " .. client.focus.class .. " "
end
if client.focus.instance then
mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "
end
if client.focus.role then
mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role
end
end
end):add()
-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them
keybinding({ modkey }, "t", awful.client.togglemarked):add()
for i = 1, keynumber do
keybinding({ modkey, "Shift" }, "F" .. i,
function ()
local screen = mouse.screen
if tags[screen][i] then
for k, c in pairs(awful.client.getmarked()) do
awful.client.movetotag(tags[screen][i], c)
end
end
end):add()
end
-- {{{ Hooks
-- Hook function to execute when focusing a client.
awful.hooks.focus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_focus
end
end)
-- Hook function to execute when unfocusing a client.
awful.hooks.unfocus.register(function (c)
if not awful.client.ismarked(c) then
c.border_color = beautiful.border_normal
end
end)
-- Hook function to execute when marking a client
awful.hooks.marked.register(function (c)
c.border_color = beautiful.border_marked
end)
-- Hook function to execute when unmarking a client.
awful.hooks.unmarked.register(function (c)
c.border_color = beautiful.border_focus
end)
-- Hook function to execute when the mouse enters a client.
awful.hooks.mouse_enter.register(function (c)
-- Sloppy focus, but disabled for magnifier layout
if awful.layout.get(c.screen) ~= "magnifier"
and awful.client.focus.filter(c) then
client.focus = c
end
end)
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c)
if use_titlebar then
-- Add a titlebar
awful.titlebar.add(c, { modkey = modkey })
end
-- Add mouse bindings
c:buttons({
button({ }, 1, function (c) client.focus = c; c:raise() end),
button({ modkey }, 1, function (c) c:mouse_move() end),
button({ modkey }, 3, function (c) c:mouse_resize() end)
-- New client may not receive focus
-- if they're not focusable, so set border anyway.
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Check if the application should be floating.
local cls = c.class
local inst = c.instance
if floatapps[cls] then
c.floating = floatapps[cls]
elseif floatapps[inst] then
c.floating = floatapps[inst]
end
-- Check application->screen/tag mappings.
local target
if apptags[cls] then
target = apptags[cls]
elseif apptags[inst] then
target = apptags[inst]
end
if target then
c.screen = target.screen
awful.client.movetotag(tags[target.screen][target.tag], c)
end
-- Do this after tag mapping, so you don't see it on the wrong tag for a split second.
client.focus = c
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- awful.client.setslave(c)
-- Honor size hints: if you want to drop the gaps between windows, set this to false.
-- c.honorsizehints = false
end)
-- Hook function to execute when arranging the screen.
-- (tag switch, new client, etc)
awful.hooks.arrange.register(function (screen)
local layout = awful.layout.get(screen)
if layout then
mylayoutbox[screen].image = image(beautiful["layout_" .. layout])
else
mylayoutbox[screen].image = nil
end
-- Give focus to the latest client in history if no window has focus
-- or if the current window is a desktop or a dock one.
if not client.focus then
local c = awful.client.focus.history.get(screen, 0)
if c then client.focus = c end
end
-- Uncomment if you want mouse warping
if client.focus then
local c_c = client.focus:fullgeometry()
local m_c = mouse.coords()
if m_c.x < c_c.x or m_c.x >= c_c.x + c_c.width or
m_c.y < c_c.y or m_c.y >= c_c.y + c_c.height then
if table.maxn(m_c.buttons) == 0 then
mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})
end
end
end
end)
-- Hook called every second
awful.hooks.timer.register(1, function ()
-- For unix time_t lovers
mytextbox.text = " " .. os.time() .. " time_t "
-- Otherwise use:
-- mytextbox.text = " " .. os.date() .. " "
end)
Then if I try this one, I just get a black screen, I have all the required things:
-- Version 2
-- This config is for use with awesome 3.0 stable.
-- If you have any suggestions or questions, feel free
-- to pass me a message, find me in #awesome on OFTC, or
-- email me at <lucas[at]glacicle.com>
-- I use both wicked and eminent, so to use it,
-- you'll need to get both those helper libraries too.
-- Note that I use all-custom keybindings, so you might
-- want to copy the default rc.lua's keybindings
-- into here if you wish to use those, although you might
-- find you like mine better :P
---- {{{ Require lua libraries
-- Shipped with awesome
require("awful")
require("beautiful")
-- External
require("wicked") -- Widgets
require("eminent") -- Dynamic tagging
---- {{{ 'Beautiful' theme settings
-- Font
beautiful.font = "Dina 8"
-- Background
beautiful.bg_normal = '#414141'
beautiful.bg_focus = '#414141'
beautiful.bg_sbfocus = '#414141'
beautiful.bg_urgent = '#414141'
-- Foreground
beautiful.fg_normal = '#999999'
beautiful.fg_focus = '#335565'
beautiful.fg_urgent = '#A000000'
-- Border
beautiful.border_width = 2
beautiful.border_normal = '#414141'
beautiful.border_focus = '#335565'
beautiful.border_marked = '#91231c'
-- Wallpaper
-- wallpaper_cmd = awsetbg /storage/images/backgrounds/nature/looking.jpg
---- {{{ Modkeys
key = {}
key.none = {}
key.alt = {"Mod1"}
key.super = {"Mod4"}
key.shift = {"Shift"}
key.control = {"Control"}
key.super_alt = {key.super[1], key.alt[1]}
key.super_shift = {key.super[1], key.shift[1]}
key.super_control = {key.super[1], key.control[1]}
key.control_alt = {key.control[1], key.alt[1]}
key.shift_alt = {key.shift[1], key.alt[1]}
---- {{{ Settings
-- Initialise tables
settings = {}
settings.widget = {}
settings.apps = {}
settings.tag = {}
settings.bindings = {}
-- {{{ General
-- Widget spacer and separator
settings.widget_spacer = " "
settings.widget_separator = " "
-- Warp mouse
settings.warp_mouse = true
-- New become master
settings.new_become_master = false
-- Tag mwfact
settings.tag.mwfact = 0.618033988769
-- {{{ Applications
-- Terminal application
settings.apps.terminal = 'urxvt'
-- Command to lock the screen
settings.apps.lock_screen = 'xscreensaver-command -lock'
-- Command to turn screen off with DPMS
settings.apps.screen_off = 'sleep 1; xset dpms force off'
-- File manager application
settings.apps.filemanager = settings.apps.terminal..' -e zsh -c "vifm %s"'
-- {{{ Floating windows
settings.floating = {
["gimp"] = true,
["urxvtcnotify"] = true,
["MPlayer"] = true,
-- {{{ Other
-- Check what widget mode to use
settings.widget_mode = 'desktop'
-- Highlight statusbar of focussed screen on multiple-monitor setups
if screen.count() > 1 then
settings.statusbar_highlight_focus = {true, 1}
end
---- {{{ Keybindings
-- Initialise table
settings.bindings.wm = {}
settings.bindings.mouse = {}
-- {{{ Open the filemanager at specific locations
settings.bindings.filemanager = {
-- Alt+d: Data partition
["/storage"] = {key.alt, "#40"},
-- Alt+a: Home Directory
[os.getenv("HOME")] = {key.alt, "#38"},
-- {{{ Run specific commands
settings.bindings.commands = {
-- Alt+q: Open Terminal
[settings.apps.terminal] = {key.alt, "#24"},
-- Mod+k: GNU Screen
-- [settings.apps.gnu_screen] = {key.super, "#45"},
-- Mod+l: Lock screen
[settings.apps.lock_screen] = {key.super, "#46"},
-- Mod+o: Screen off with DPMS
[settings.apps.screen_off] = {key.super, "#32"},
-- {{{ Tag bindings
settings.bindings.wm.tag = {
-- Mod+a: Switch to previous tag
[function() eminent.tag.prev(mouse.screen) end] = {key.super, "#38"},
-- Mod+s: Switch to next tag
[function() eminent.tag.next(mouse.screen) end] = {key.super, "#39"},
-- Alt+\: Switch to float layout
[function() awful.layout.set('floating') end] = {key.alt, "#51"},
-- Alt+z: Switch to max layout
[function() awful.layout.set('max') end] = {key.alt, "#52"},
-- Alt+x: Switch to tile layout
[function() awful.layout.set('tile') end] = {key.alt, "#53"},
-- {{{ Prompt bindings
settings.bindings.prompt = {
-- Alt+w: Run prompt
[{awful.spawn, " Run: "}] = {key.alt, "#25"},
-- Mod+Alt+w: Lua eval prompt
[{awful.eval, " Run Lua: "}] = {key.super_alt, "#25"},
-- {{{ Miscellaneous bindings
settings.bindings.wm.misc = {
-- Mod+Alt+r: Restart awesome
[awesome.restart] = {key.super_alt, "#27"},
-- Mod+e: Switch focus to next screen
[function() awful.screen.focus(1) end] = {key.super, "#26"},
-- Mod+d: Switch focus to previous screen
[function() awful.screen.focus(-1) end] = {key.super, "#40"},
-- {{{ Keyboard digit bindings
settings.bindings.digits = {
-- Mod+##: View tag
[awful.tag.viewonly] = key.super,
-- Mod+Shift+##: Toggle tag view
[function(t) t.selected = not t.selected end] = key.super_shift,
-- Mod+Control+##: Move window to tag
[awful.client.movetotag] = key.super_control,
-- Mod+Alt+##: Toggle window on tag
[awful.client.toggletag] = key.super_alt,
-- {{{ Mouse bindings
settings.bindings.mouse.desktop = {
-- Right click on desktop: Open terminal
[function() awful.spawn(settings.apps.terminal) end] = {key.none, 3},
settings.bindings.mouse.client = {
-- Alt+Left: Move window
[function(c) c:mouse_move() end] = {key.alt, 1},
-- Alt+Right: Resize window
[function(c) c:mouse_resize({corner="bottomright"}) end] = {key.alt, 3},
---- {{{ Markup helper functions
-- Inline markup is a tad ugly, so use these functions
-- to dynamically create markup, we hook them into
-- the beautiful namespace for clarity.
beautiful.markup = {}
function beautiful.markup.bg(color, text)
return '<bg color="'..color..'" />'..text
end
function beautiful.markup.fg(color, text)
return '<span color="'..color..'">'..text..'</span>'
end
function beautiful.markup.font(font, text)
return '<span font_desc="'..font..'">'..text..'</span>'
end
function beautiful.markup.title(t)
return t
end
function beautiful.markup.title_normal(t)
return beautiful.title(t)
end
function beautiful.markup.title_focus(t)
return beautiful.markup.bg(beautiful.bg_focus, beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.title(t)))
end
function beautiful.markup.title_urgent(t)
return beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, beautiful.markup.title(t)))
end
function beautiful.markup.bold(text)
return '<b>'..text..'</b>'
end
function beautiful.markup.heading(text)
return beautiful.markup.fg(beautiful.fg_focus, beautiful.markup.bold(text))
end
---- {{{ Widgets
settings.statusbars = {}
settings.widgets = {}
settings.statusbars[1] = {{
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "mainstatusbar",
}, "all"}
settings.promptbar = {
position = "top",
height = 18,
fg = beautiful.fg_normal,
bg = beautiful.bg_normal,
name = "promptbar",
-- {{{ Taglist
maintaglist = widget({
type = 'taglist',
name = 'maintaglist'
function maintaglist.label(t)
return awful.widget.taglist.label.noempty(t)
end
maintaglist:mouse_add(mouse(key.none, 1, function (o, t) awful.tag.viewonly(t) end))
table.insert(settings.widgets, {1, maintaglist})
if settings.widget_mode ~= 'none' then
-- {{{ MPD Widget
mpdwidget = widget({
type = 'textbox',
name = 'mpdwidget',
align = 'right'
wicked.register(mpdwidget, wicked.widgets.mpd, function (widget, args)
-- I don't want the stream name on my statusbar, so I gsub it out,
-- feel free to remove this bit
return settings.widget_spacer..beautiful.markup.heading('MPD')..': '
..args[1]:gsub('AnimeNfo Radio | Serving you the best Anime music!: ','')
..settings.widget_spacer..settings.widget_separator end)
table.insert(settings.widgets, {1, mpdwidget})
-- {{{ GMail Widget
gmailwidget = widget({
type = 'textbox',
name = 'gmailwidget',
align = 'right'
gmailwidget:mouse_add(mouse(key.none, 1, function () wicked.update(gmailwidget) end))
function read_gmail_temp(format)
local f = io.open('/tmp/gmail-temp')
if f == nil then
return {'n/a'}
end
local n = f:read()
if n == nil or f == ' ' or f == '' then
f:close()
return {'n/a'}
end
return {n}
end
wicked.register(gmailwidget, read_gmail_temp, function (widget, args)
local n = args[1]
local out = settings.widget_spacer..beautiful.markup.heading('GMail')..': '
if n ~= "n/a" and tonumber(n) > 0 then
out = out..beautiful.markup.bg(beautiful.bg_urgent, beautiful.markup.fg(beautiful.fg_urgent, tostring(n)))
else
out = out..tostring(n)
end
out = out..settings.widget_spacer..settings.widget_separator
return out
end, 120)
-- Start timer to fill the temp file
awful.hooks.timer.register(110, function ()
-- Call GMail check script to check for new email
os.execute(os.getenv("HOME")..'/other/.gmail.py > /tmp/gmail-temp &')
end, true)
wicked.update(gmailwidget)
table.insert(settings.widgets, {1, gmailwidget})
-- {{{ Load Averages Widget
loadwidget = widget({
type = 'textbox',
name = 'loadwidget',
align = 'right'
function widget_loadavg(format)
-- Use /proc/loadavg to get the average system load on 1, 5 and 15 minute intervals
local f = io.open('/proc/loadavg')
local n = f:read()
f:close()
-- Find the third space
local pos = n:find(' ', n:find(' ', n:find(' ')+1)+1)
return {n:sub(1,pos-1)}
end
wicked.register(loadwidget, widget_loadavg,
settings.widget_spacer..beautiful.markup.heading('Load')..': $1'..settings.widget_spacer..settings.widget_separator, 2)
table.insert(settings.widgets, {1, loadwidget})
-- {{{ CPU Usage Widget
cputextwidget = widget({
type = 'textbox',
name = 'cputextwidget',
align = 'right'
wicked.register(cputextwidget, wicked.widgets.cpu,
settings.widget_spacer..beautiful.markup.heading('CPU')..': $1%'..settings.widget_spacer..settings.widget_separator,
nil, nil, 2)
table.insert(settings.widgets, {1, cputextwidget})
-- {{{ CPU Graph Widget
cpugraphwidget = widget({
type = 'graph',
name = 'cpugraphwidget',
align = 'right'
cpugraphwidget.height = 0.85
cpugraphwidget.width = 45
cpugraphwidget.bg = '#333333'
cpugraphwidget.border_color = '#0a0a0a'
cpugraphwidget.grow = 'left'
cpugraphwidget:plot_properties_set('cpu', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')
table.insert(settings.widgets, {1, cpugraphwidget})
-- {{{ Memory Usage Widget
memtextwidget = widget({
type = 'textbox',
name = 'memtextwidget',
align = 'right'
wicked.register(memtextwidget, wicked.widgets.mem,
settings.widget_spacer..beautiful.markup.heading('MEM')..': '..
'$1% ($2/$3)'..settings.widget_spacer..settings.widget_separator,
3, nil, {2, 4, 4})
table.insert(settings.widgets, {1, memtextwidget})
-- {{{ Memory Graph Widget
memgraphwidget = widget({
type = 'graph',
name = 'memgraphwidget',
align = 'right'
memgraphwidget.height = 0.85
memgraphwidget.width = 45
memgraphwidget.bg = '#333333'
memgraphwidget.border_color = '#0a0a0a'
memgraphwidget.grow = 'left'
memgraphwidget:plot_properties_set('mem', {
fg = '#AEC6D8',
fg_center = '#285577',
fg_end = '#285577',
vertical_gradient = false
wicked.register(memgraphwidget, wicked.widgets.mem, '$1', 1, 'mem')
table.insert(settings.widgets, {1, memgraphwidget})
-- {{{ Other Widget
settings.widget_spacerwidget = widget({ type = 'textbox', name = 'settings.widget_spacerwidget', align = 'right' })
settings.widget_spacerwidget.text = settings.widget_spacer..settings.widget_separator
table.insert(settings.widgets, {1, settings.widget_spacerwidget})
end
-- You shouldn't have to edit the code after this,
-- it takes care of applying the settings above.
---- {{{ Initialisations
-- Register beautiful with awful
awful.beautiful.register(beautiful)
-- Set default colors
awesome.colors_set({
fg = beautiful.fg_normal,
bg = beautiful.bg_normal })
-- Set default font
awesome.font_set(beautiful.font)
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
"tile",
"tileleft",
"tilebottom",
"tiletop",
"fairh",
"fairv",
"magnifier",
"max",
"fullscreen",
"spiral",
"dwindle",
"floating"
-- Define tag tables
tag_settings = {
{ name="main", layout=layouts[1] },
{ name="work", layout=layouts[1] },
{ name="float", layout=layouts[12] }
-- Initialize tags in awesome 3.1
tags = {}
for s = 1, screen.count() do
tags[s] = {}
for tagnumber = 1, 3 do
tags[s][tagnumber] = tag({ name = tag_settings[tagnumber].name, layout = tag_settings[tagnumber].layout })
tags[s][tagnumber].screen = s
awful.layout.set(layouts[1], tags[s][tagnumber])
end
tags[s][1].selected = true
end
---- {{{ Create statusbars
local mainstatusbar = {}
for i, b in pairs(settings.statusbars) do
mainstatusbar[i] = {}
for s=1,screen.count() do
this_screen = false
if b[2] ~= "all" then
for sc in pairs(b[2]) do
if sc == s then
this_screen = true
break
end
end
end
if b[2] == "all" or this_screen then
mainstatusbar[i][s] = statusbar(b[1])
local widgets = {}
for ii, w in pairs(settings.widgets) do
if w[1] == i then
table.insert(widgets, w[2])
end
end
mainstatusbar[i][s]:widgets(widgets)
mainstatusbar[i][s].screen = s
end
end
end
---- {{{ Create prompt statusbar
local mainpromptbar = statusbar(settings.promptbar)
local mainpromptbox = widget({type = "textbox", align = "left", name = "mainpromptbox"})
mainpromptbar:widgets({mainpromptbox})
mainpromptbar.screen = nil
---- {{{ Useful functions
-- {{{ Mouse warp function
function mouse_warp(c, force)
-- Allow skipping a warp
if warp_skip then
warp_skip = false
return
end
-- Get vars
local sel = c or client.focus
if sel == nil then return end
local coords = sel:coords()
local m = mouse.coords()
-- Settings
mouse_padd = 6
border_area = 5
-- Check if mouse is not already inside the window
if (( m.x < coords.x-border_area or
m.y < coords.y-border_area or
m.x > coords.x+coords.width+border_area or
m.y > coords.y+coords.height+border_area
) and (
table.maxn(m.buttons) == 0
)) or force
then
mouse.coords({ x=coords.x+mouse_padd, y=coords.y+mouse_padd})
end
end
-- {{{ Prompt with statusbar
function prompt_statusbar(s, callback, prompt)
if not callback then callback = awful.spawn end
if not prompt then prompt = " Run: " end
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if bb.screen == s then
bb.screen = nil
end
end
end
mainpromptbar.screen = s
awful.prompt.run({prompt = prompt}, mainpromptbox, callback,
awful.completion.bash, os.getenv("HOME") .. "/.cache/awesome_history", 50, function ()
mainpromptbar.screen = nil
for i, b in pairs(mainstatusbar) do
for ii, bb in pairs(b) do
if ii == s then
bb.screen = ii
end
end
end
end)
end
---- {{{ Create bindings
--- This reads the binding tables and turns them into actual keybindings
-- Always qwerty
-- WM Bindings
for i,table in pairs(settings.bindings.wm) do
for f, keys in pairs(table) do
keybinding(keys[1], keys[2], f):add()
end
end
-- Keyboard digit bindings
for i=1,9 do
for f, mod in pairs(settings.bindings.digits) do
keybinding(mod, i, function()
t = eminent.tag.getn(i, nil, true)
if not t then return end
f(t)
end):add()
end
end
-- Prompt Bindings
for prompt, keys in pairs(settings.bindings.prompt) do
keybinding(keys[1], keys[2], function() prompt_statusbar(mouse.screen, unpack(prompt)) end):add()
end
-- Filemanager bindings
for loc, keys in pairs(settings.bindings.filemanager) do
keybinding(keys[1], keys[2], function() awful.spawn(string.format(settings.apps.filemanager, loc)) end):add()
end
-- Custom command bindings
for command, keys in pairs(settings.bindings.commands) do
keybinding(keys[1], keys[2], function() awful.spawn(command) end):add()
end
-- Desktop mouse bindings
for f, keys in pairs(settings.bindings.mouse.desktop) do
awesome.mouse_add(mouse(keys[1], keys[2], f))
end
---- {{{ Set hooks
-- {{{ Focus hook
awful.hooks.focus.register(function (c)
-- Skip over my urxvtcnotify
if c.name and c.name:lower():find('urxvtcnotify') and awful.client.next(1) ~= c then
awful.client.focusbyidx(1)
return
end
-- Set border
c.border_color = beautiful.border_focus
-- Raise the client
c:raise()
-- Set statusbar color
if settings.statusbar_highlight_focus and settings.statusbar_highlight_focus[1] then
if last_screen == nil or last_screen ~= c.screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][c.screen].bg = beautiful.bg_sbfocus
if last_screen then
mainstatusbar[settings.statusbar_highlight_focus[2]][last_screen].bg = beautiful.bg_normal
end
end
last_screen = c.screen
end
end)
-- {{{ Unfocus hook
awful.hooks.unfocus.register(function (c)
-- Set border
c.border_color = beautiful.border_normal
end)
-- {{{ Mouseover hook
awful.hooks.mouseover.register(function (c)
-- Set focus for sloppy focus
client.focus = c
end)
-- {{{ Manage hook
awful.hooks.manage.register(function (c)
local class = ""
local name = ""
if c.class then
class = c.class:lower()
end
if c.name then
name = c.name:lower()
end
-- Create border
c.border_width = beautiful.border_width
c.border_color = beautiful.border_normal
-- Add mouse bindings
for f, keys in pairs(settings.bindings.mouse.client) do
c:mouse_add(mouse(keys[1], keys[2], f))
end
-- Check if floating
for app, i in pairs(settings.floating) do
if class:find(app) or name:find(app) then
c.floating = i
break
end
end
if name:find('urxvtcnotify') then
-- I got sick of libnotify/notification-daemon
-- and their dependencies, so I'm using a little
-- urxvtc window with some text in it as notifications :P
-- This makes it appear at the correct place,
-- feel free to remove the whole section, you probably
-- won't need it.
c.screen = 3
c:coords({
x = 1680*2+1400,
y = 18,
width = 276,
height = 106
c.border_color = beautiful.border_normal
local tags = {}
for i,t in pairs(eminent.tags[3]) do
if eminent.tag.isoccupied(3, t) then
table.insert(tags, t)
end
end
c:tags(tags)
return 0
end
-- Focus new clients
client.focus = c
-- Prevent new windows from becoming master
if not settings.new_become_master then
awful.client.swap(1, c)
end
-- Don't honor size hints
c.honorsizehints = false
end)
-- {{{ Arrange hook
awful.hooks.arrange.register(function(s)
-- Warp the mouse
if settings.warp_mouse then
mouse_warp()
end
-- Check focus
if not client.focus then
local c = awful.client.focus.history.get(s, 0)
if c then client.focus = c end
end
end)
-- vim: set filetype=lua fdm=marker tabstop=4 shiftwidth=4 expandtab smarttab autoindent smartindent nu:The most likely reason for you seeing the default settings, or nothing is that there is some error in the configuration file. You would have to take a look at the error output of xorg. Since I start X using startx I can look at it on the first sterminal (ALT - CTRL - F1). I don't know where the output would go if you use GDM or something similar.
If there are errors you could post them here and people might be able to help.
If the comment of the second config file is correct then the config most likely wont work with awesome 3.1 since the sytax of the config file changed between 3.0 and 3.1
Another possibility to get a working config would be to copy the default awesome config into your ~/.config/awesome folder and then gradually make changes to it, exchanging content for stuff from other configs, that way you'd know which change brakes something. -
Getting an error in deploying the SalesQuoteDemo application. Pls help.
As part of my project work, I have to understand BPM/SOA Suite. As part of this, I installed SalesQuoteDemo and all related softwares in my laptop. I have also configured the Weblogic/SalesQuotesDemo as given in the attached PDF documents. Finally, While deploying the application to Weblogic, I am getting this error. I am able to login to BPM Workspace as well as Worklist application. BPM Workspace is not showing this application (with in the application area) may be because of the error below.
I would appreciate any help/pointers from you in this regard. Many Thanks for reading through this mail and helping me.
As per HTTP error codes, this Http error (502) comes when server is overloaded. It is working fine and does not seems to be overloaded (though I have not verified CPU usage and memory graph).
Regards,
Sachin G
[07:36:41 PM] ---- Deployment started. ----
[07:36:41 PM] Target platform is (Weblogic 10.3).
[07:36:41 PM] Running dependency analysis...
[07:36:41 PM] Building...
[07:37:01 PM] Deploying profile...
[07:37:02 PM] Wrote Archive Module to C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\SalesQuoteProcess\deploy\sca_SalesQuoteProcess_rev1.0.jar
[07:37:02 PM] Running dependency analysis...
[07:37:02 PM] Building...
[07:37:35 PM] Deploying 4 profiles...
[07:37:39 PM] Wrote Web Application Module to C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\ApproveDealUI\deploy\ApproveDealUI.war
[07:37:41 PM] Wrote Web Application Module to C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\BPReviewUI\deploy\BPReviewUI.war
[07:37:45 PM] Wrote Web Application Module to C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\EnterQuoteUI\deploy\EnterQuoteUI.war
[07:37:46 PM] Wrote Enterprise Application Module to C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\deploy\RequestQuoteUI.ear
[07:37:46 PM] Deploying sca_SalesQuoteProcess_rev1.0.jar to partition "default" on server soa_server1 [Y.GUPTA-PC.in.oracle.com:8001]
[07:37:46 PM] Processing sar=/C:/BPM 11g Sales Quote Demo - Setup and Run/SalesQuoteDemo/SalesQuoteProcess/deploy/sca_SalesQuoteProcess_rev1.0.jar
[07:37:46 PM] Adding sar file - C:\BPM 11g Sales Quote Demo - Setup and Run\SalesQuoteDemo\SalesQuoteProcess\deploy\sca_SalesQuoteProcess_rev1.0.jar
[07:37:46 PM] Preparing to send HTTP request for deployment
[07:37:46 PM] Creating HTTP connection to host:Y.GUPTA-PC.in.oracle.com, port:8001
[07:37:47 PM] Sending internal deployment descriptor
[07:37:47 PM] Sending archive - sca_SalesQuoteProcess_rev1.0.jar
[07:37:47 PM] Received HTTP response from the server, response code=502
[07:37:47 PM] Problem in sending HTTP request to the server. Check standard HTTP response code for 502
[07:37:47 PM] Error deploying archive sca_SalesQuoteProcess_rev1.0.jar to partition "default" on server soa_server1 [Y.GUPTA-PC.in.oracle.com:8001]
[07:37:47 PM] HTTP error code returned [502]
[07:37:47 PM] No error message is returned from the server.
[07:37:47 PM] Error deploying archive sca_SalesQuoteProcess_rev1.0.jar to partition "default" on server soa_server1 [Y.GUPTA-PC.in.oracle.com:8001]
[07:37:47 PM] #### Deployment incomplete. ####
[07:37:47 PM] Error deploying archive file:/C:/BPM 11g Sales Quote Demo - Setup and Run/SalesQuoteDemo/SalesQuoteProcess/deploy/sca_SalesQuoteProcess_rev1.0.jar
(oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)This issue is resolved now. All i have to do to turn off the Proxy Server Settings from my Jdeveloper. I turned off the settings and deployment went well.
Thanks to Prasen for the solution. -
LabVIEW 8 does not close ref's the same as LabVIEW 7!?!
Hello!
I have been struggling with a difference between LabVIEW 7 and 8 in how the Close Reference functions for Active X objects. In order to fully understand the problem, let me first explain the process of how I got here.
I have an application in beta testing and we noticed a huge memory leak in LabVIEW 8, 8.2. I took a snippet of the code and worked on it a while to reduce the memory leak. I was closing every reference and could not explain it so I wrote the same code in VB and saw no memory leaks. I implemented the same code in LabVIEW 8 and still saw a memory leak. The code opens a graph control from a third party vendor and draws it. Each time the graph is drawn in LabVIEW 8, it costs about 30-40k. We have 8 graphs in our application bringing each iteration to 240-320k. The users are going to be reviewing between 96-384 samples in one sitting but we have no control over when the program quits. 384 samples reviewed in the graphs is 92,160k as a minimum. I was frustrated and about to send it to the thrid party vendor, AB Sciex, but they only had LabVIEW 7.1. So I converted it back to 8.0 and then to 7.1.1. I ran the code in 7.1.1 and there were little to no memory leaks! I even tried it in LabVIEW 7.0 and it worked the same as 7.1.1.
I monitored the memory of LabVIEW through the task monitor in Windows XP. I have tried it on a few XP machines and a 2000 machine and same answer on all. I also built a Task Monitor tool using .NET to graph the memory of the LabVIEW process. I verified that running the .NET example as an exe and the windows based task monitor behave the same and produce the same result.
So, I have an example that works in VB, LabVIEW 7.0 and 7.1.1. but 8.0 and 8.2 cause memory leaks! I have tried numerous things to force the removal of the references but nothing seems to have worked. Here is a list of things I have tried in LabVIEW 8 to force the closing of the reference:
- Error detection after each property node/invoke node to catch any errors for the mem leaks
- Deallocate Memory function is placed in every VI.
- All VIs running in the User interface thread to avoid thread collision, also tried running in the IO thread.
- Debugging turned off on all VIs.
- All references converted to controls (instead of constants) and made not visible on the front panel. I hoped this would not force an update to the FP or memory.
- All Open and Close references are in seperate SubVIs for memory deallocation.
- Time delay of 3 seconds in between each property node/invoke node to make sure deallocation can occur.
- Forced recompile and saved all. Rebooted in between all attempts and changes above.
- Put all code and ocx control in a SubVI and called it through the main program as a SubPanel. I can see memory deallocation, but its not a full deallocation. It deallocates about 40k, but the load eats up 80-90k. VB and LV7 deallocate about 20k, increase 55k for the load, then drops 30k after the load and results in about 3-4k in memory for LabVIEW.
I am hoping through this post that someone can help me out with understanding why LabVIEW 8 would handle closing references differently than that of LabVIEW 7. I feel as though i have attempted nearly everything I can to get LabVIEW 8 to work with this example. I have an open reference (ha thats funny) with NI to look at this but wanted to see if any of you had any thoughts? Thanks!
Try it out for yourself here please....
LabVIEW 7.1 Code (1.1Mb)
LabVIEW 8.2 Code (1.1Mb)
Third Party program(77MB)
Memory graphs between 7 and 8 (50k)
Memory Monitor Tool 8.2exe (700k)
Kevin Shirey
PVI Systems Inc.
Certified LabVIEW DeveloperThanks for the reply,
On the first issue, I believe this made sense as it made no difference, but was a recomendation from NI so I tried it.
On the second issue, I just put in a close ref on the input to the Variant to Data function. This ensures that the reference being passed iin will be empty. The Variant to Data function only creates a new instance of the type of reference being passed in. At this point in the code, the reference has already been closed from a previous VI and I am only using it as a type, as I know it doesn't replace the reference. This was a good check though and looked at all my other variant to data functions just in case but still the same results in LV82.
Third thing is that I tried the profiling tools but it didn't offer a way to track active x data or the memory leak at all. They offered me how much average memory and max they used.
thanks on the fourth. I put in some extra error dialogs now there in case something does happen.
As far as the error detection VIs, they work very well for what I need them for. I like to put in unique error tags in each VI. So long as the error check VIs are in place after each routine, I know exactly where the error occurs because of the error code. So when an error occurs, a dialog box comes up with the LabVIEW error code, VI path and unique error code. It also provides an option to debug which is very cool. It will open the vi with the error and pause it. Then open the block diagram and turn on the light bulb and wait for you to unpause it. This lets you see exactly where the error happened so you can come back to it. It also can record it to a log file or ignore all errors of this type. There is still some things I need to do to it, but its been a work in progress over the years.
What boggles my mind is that the code has no memory leak in LabVIEW 7, 7.1 but has a loss of 40-50k each iteration i LabVIEW 8,8.2. If you have any other suggestions, I am certainly open to trying them.
I am currently investigating a subpanel option to encapsulate all the active x code in another VI and calling it dynamically. Its too early to tell how much this will change things, but I believe the memory leak is because the ocx control of the graph on the main panel is not being released because the main VI never goes idle. If this is true, then the ocx control will be forced to close and deallocate memory because of the dynamic call. When I have the results, I will post em.
Thanks!!
Kevin Shirey
PVI Systems Inc.
Certified LabVIEW Developer -
160GB only shows 1001.1mb on itunes. can't sync. HELP and thanx in advance
my 160 shows up on itunes with only 1 gb. the ipod shows 146gb available. i restored the settings and it didn't change. the whole memory graph changed. it used to show how much memory was available as well as how much was used by video, music, photos,etc. now just shows 1001.4 mb total mem. and how much is used and available. i'm pretty much IT illiterate. i hope someone can help me. thanx again
my 160 shows up on itunes with only 1 gb.
1Gb of what?
the ipod shows 146gb available.
If the iPod is empty, that sounds about right. You don't have the full 160GB of storage space.
All hard drives never have the full advertised storage space, and as a general rule it's around 7% less than stated.
It's because hard drive manufacturers calculate hard drive space different than computers actually read it.
For a full technical explanation, see these.
Hard disk: Is it missing space?
To be honest, your post is a little confusing, and I'm not sure what the issue is you think you are having. -
Hi,
I am facing SNMP timeout issue with 3 of my Windows Servers (2008 R2 Enterprise Edition). I am using Network Monitoring System to monitor devices. The issue I am facing with these servers is that the NMS is not able to poll CPU and Memory graphs.
I have restarted the SNMP service many times but no use. I rebooted one server and Its problem is gone. But rest of the two servers are still with the same condition (not rebooted yet).
I used the "Paessler SNMP Tester" to check the issue but sometimes it passes and mostly gives "No response" or "Timeout".
I also used "SnmpWalk.exe" with command 'snmpwalk -r:<server ip> -c:community' but after processing few OID's it gives error "%Failed to get value of SNMP variable. Timeout."
Can anyone help to identify the problem and how to resolve it?Hi Zain,
Can you try to ping your server with the command "ping your server ip
-t"? It may be a network issue.
Besides, is there any warning or error related SNMP in the event viewer of the server? It may give some hints.
Here is a article about how to troubeshoot SNMP,
Troubleshooting SNMP
http://technet.microsoft.com/en-us/library/cc738839(v=WS.10).aspx
Best Regards.
Steven Lee
TechNet Community Support
Hi Steven,
Thank you for the response. I tested "SnmpWalk" both locally on the same server and from network as well but the response is same
"%Failed to get value of SNMP variable. Timeout.". However, I have checked the ping response and it is very much smooth. The server is actually an Active Directory Domain Controller.
The article you provided above applies to Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2. I have Windows Server 2008 R2 installed on servers.
Can you provide me the event id for any warning or error related to SNMP for Windows Server 2008 R2? It would be then easy for me to filter the alerts.
Thank you!
Maybe you are looking for
-
Installation Problem on CentOS
Hello guys, i am using an Centos 6.2 linux with installed oracle-xe. I have installed it from an rpm. I use always the default settings. After that i could start it normal and successful connect to apex. Now i want to create an database user. I conne
-
Screen is dark when light is low and I cannot use iphone
When light is low, I unlock my iphone4 and the screen quickly goes dark. I cannot use the phone because the screen is dark and I cannot use it.
-
Apple TV, PS3, Time Capsule compatibility
I have heard that to access your movies on iTunes with Apple TV iTunes must be open. But can an Apple TV access the movies on the time capsule hard drive to play them. Also can the PS3 access the movies on the time capsule?
-
Vsftpd: allow writeable root for anonymous user
Hi, I try to set up a simple FTP server which allows anonymous users to upload file into the root directory. I use the directive allow_writeable_chroot but I still get the following error: 500 OOPS: vsftpd: refusing to run with writable root inside c
-
Partial fix to hang in moving to 32 bit plu-in Nik editing
I have discovered a helpful - although still time consuming and bothersome- problem solver to RAW images with numerous adjustments simply hanging Aperture with spinning beach ball of death when I try to relaunch in 32 bit mode for filtering in plug-i