| Welcome! | English (UK) ![]() |
| Welcome! | English (UK) ![]() |
says:I've created a small script to display lists to the left (with number of tasks) http://userscripts.org/scripts/show/32518

Posted at 4:51am on September 12, 2008
Really Nice! My only problem with it is that is messes up the layout of the other elements on the page, probably because I have RTM Enhanced userscript adusting the page layout. If you could get it to work with RTM Enhanced, I'd love it.
For the details, here are screenshots with and without your script
Only "RTM enhanced" script
"RTM enhanced" and "A Bit Better RTM" scripts
Notice the overlapping element in the second shot, as well as the much wider margins.
HTH,
Andrew
Posted at 2:58pm on September 12, 2008
Before this script, I had
*Remember The Milk widely(1200px)
*Remember The Milk - Tag Cloud Colorizer
*Remember The Milk - Keep Cloud Visible
I had the same issues as Andrew. However, disabling the first one, it removed the overlapping issue. I believe RememberTheMilkEnhanced uses some of the same code as widely does.
This looks like a script if a lot of promise! I could do without widely as it looks like this script would help to fill in the space created by the fixed width, however the margins are still MUCH wider which causes wasted space IMO. I even tried the 1000px version (http://userstyles.org/styles/3265) and still had the overlapping issue.
I do MUCH prefer this then the tabs! Kudos!
I look forward to a way to reduce those margins ;)
Posted at 9:30pm on September 12, 2008
Found enough settings to move everything around to fit again. yay!
I know enough to play with stylish and any GM scripts that accompish things stylish can do, but actual scripting and "doing things" I get a bit lost.
Question... Would there be a way to hide empty smart lists? It's retrieving the count if items, so I would think it might be possible... thoughts?
Posted at 1:33am on September 13, 2008
I played with the scripts for a while and got something I really like; thanks for the great script!

Posted at 6:04pm on September 13, 2008
@kanntara: In tweaking this great script even further, I figured out how to manipulate empty lists (both real & smart, but not one or the other). Around line 275 of the script (hard to say, because I've tweaked it, but around there), you'll see the lines
if (tasksCount > 0)
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
Add these lines after it and un-comment the actions you want:
else {
//listItems[i].style.textAlign = "right";
//listItems[i].style.textDecoration = "line-through";
//listItems[i].style.cssFloat = "right";
//listItems[i].style.display = "none";
}
For some reason, the line " listItems[i].style.color = "#ececec"; " didn't work. Well, give it a try and let me know what works for you!
Posted at 6:29pm on September 13, 2008
Thanks Andrew P. for the script, and Andrew B. for suggesting the changes. I tried my hand at some modifications myself and came up with something that seems to work well for me. Perhaps it will give others on ways to modify their own version.
First, I did some tweaking of the widths so that my leftside box that contains the different lists is wider AND the entire content area is wider.
But mostly what I did was take off from what Andrew B. suggested and have it changing font sizes based on task counts and also the actual name of the list. For example, I have project lists that are prefixed with a p. I made them so that instead of showing up as p. TPS Report, they show up as Project: TPS Report. I suppose I could just rename the project, but whatever. I also prefixed my next action lists in the same way ("@Home becomes Next Action: @Home).
But while the usefulness of the above changes are questionable, what really seems useful is changing the font size based on the task count. I change the font by making it pretty large in order to call attention to it. I tried changing the font weight and the color, but couldn't seem to get those to work predictably or at all. Specifically, if my inbox has any tasks in it, I make the font pretty large, because it means I need to deal with stuff that I haven't processed yet, which to me I figure is pretty high priority. Secondly, I have a "Misstagged" smartlist that tries to catch tasks that haven't been tagged properly according to my system (based on GTD). So if that list has any tasks, it similarly gets a large font. Thirdly, if any of my project lists have one task or less, it means that they aren't really "projects" at that point, and so probably shouldn't be set up that way. So, again, their font is made large. I also make the next action lists larger in font then others (but not REALLY large) because those are the items that get priority in a GTD system. When a list is empty I use the strike-out, but I also decrease the font so it doesn't distract me at all.
What I would love to be able to add to this: Indenting all the next action lists under a kind of "Next Action" header, and doing something similar with projects and perhaps grouping the other GTD-related lists (Watiing For, SomeTime-Maybe, etc.). I realize this would require reordering the lists, and I don't know how feasible this is. I could probably figure it out if given the time, but that's the problem - no time! It would also be nice to order the lists in some way other than alphabetically.
Anyway, here is some of the code that deals with these font and text changes for the lists:
if (listItems[i].firstChild.innerHTML == "Inbox")
{
if (tasksCount > 0)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "35px";
}
else
{
listItems[i].style.fontSize = "16px";
}
}
else if (listItems[i].firstChild.innerHTML == "Misstagged")
{
if (tasksCount > 0)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "35px";
}
else
{
listItems[i].style.fontSize = "16px";
}
}
else if (listItems[i].firstChild.innerHTML.indexOf("p.") == 0)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "p.", "Project: ");
if (tasksCount > 1)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
}
else
{
listItems[i].style.fontSize="35px";
}
}
else if (listItems[i].firstChild.innerHTML.indexOf("@") == 0)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "@", "Next Action: @");
if (tasksCount > 1)
{
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "22px";
}
else
{
listItems[i].style.textDecoration = "line-through";
listItems[i].style.fontSize = "9px";
}
}
else if (tasksCount > 0)
{
listItems[i].style.fontSize="16px";
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
}
else
{
// listItems[i].style.textAlign = "right";
listItems[i].style.textDecoration = "line-through";
listItems[i].style.fontSize = "9px";
// listItems[i].style.cssFloat = "right";
// listItems[i].style.display = "none";
}
Posted at 3:40pm on September 14, 2008
Oops, still tweaking. for the misstagged smartlist, it seems to make more sense to remove the list entirely rather than display it in a smaller font...
Posted at 1:03am on September 15, 2008
says:I discovered this script a few hours ago and I absolutely love it - I'm not a tags person, so I have lots of lists, and the mess of tabs at the top of the page was getting unwieldy. This is much, much nicer.
Unfortunately, the script doesn't seem to work in WebKit browsers. I'd love to make use of it in a Fluid SSB. Is there any chance that you could port it over to Webkit? As I've never written a script like this before, I have no idea how hard it would be, but if you could do it, that would be really, really cool.
Thanks!
Posted at 5:43am on September 15, 2008
@dws90, I don't know much about Webkit, but the little research I just did seems to indicate that it doesn't have extensions/plugins/etc. This script runs via a Firefox plugin (or add-on they are calling them now), that lets you kind of rescript a specific site. If there's no such equivelent on the Webkit browser, this won't be possible...
Posted at 11:05am on September 15, 2008
says:@lwallach - There is actually - something called "Greasekit". In addition, a number of Webkit-based browsers, such as Fluid that I mentioned, have built-in support for Greasemonkey-type scripts.
The problem, I think, involves differences in the JavaScript implementation between the two browsers. Your script loads just fine in Greasekit - it just doesn't do anything.
Posted at 2:19pm on September 15, 2008
@Iwallach - great ideas with the font and text changes! I poked around with trying to reorder the lists, but nothing worked well. However, using your idea of character-replacement, a few other tweaks, and making the alphabetizing work for me, I came up with this:
I just added listItems[i].style.backgroundColor = "yourColour"; after the lines that figure out what kind of list it is. Because lists are alphabetized, similarly prefixed lists will group together. I also coloured the "Project:" and "next Action:" prefixes black, just by added around them.
If anyone else can figure out how to really reorder lists, I'd love it!
Andrew
Posted at 5:44pm on September 15, 2008
Thanks, Andrew! Good ideas! Mind posting some of your code to save us a little time?
Posted at 7:45pm on September 15, 2008
@Iwallach - Not at all, although I've customized some of your text and font size options. Here's my modified version of the code you posted, with my significant changes in bold.
Hope this helps!
Andrew
NOTE: I had to change the "" on the span tags to "[" and "]", so that they would show up after posting it.
if (listItems[i].firstChild.innerHTML == "Inbox") {
if (tasksCount > 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "13px";
}
else {
listItems[i].style.fontSize = "9px";
listItems[i].style.textDecoration = "line-through";
//listItems[i].style.cssFloat = "right";
}
}
else if (listItems[i].firstChild.innerHTML.indexOf("!!") == 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "!!", " ");
listItems[i].style.backgroundColor = "#ececec";
if (tasksCount > 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "13px";
}
else {
listItems[i].style.textDecoration = "line-through";
listItems[i].style.fontSize = "13px";
//listItems[i].style.cssFloat = "right";
}
}
else if (listItems[i].firstChild.innerHTML == "! Misassigned or Overdue Tasks !") {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "E", " E");
if (tasksCount > 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "13px";
listItems[i].style.fontVariant = "italic";
}
else {
listItems[i].style.display = "none";
//listItems[i].style.fontSize = "9px";
//listItems[i].style.cssFloat = "right";
}
}
else if (listItems[i].firstChild.innerHTML.indexOf("p.") == 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "p.", "[span style='#000']Project:[/span] ");
listItems[i].style.backgroundColor = "#FFFFCC";
if (tasksCount > 1) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize="13px";
}
else {
listItems[i].style.fontSize="9px";
//listItems[i].style.cssFloat = "right";
}
}
else if (listItems[i].firstChild.innerHTML.indexOf("@") == 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML.replace( "@", "[span style='#000']Next Action:[/span] @");
listItems[i].style.backgroundColor = "#9ECEFF";
if (tasksCount > 0) {
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
listItems[i].style.fontSize = "13px";
}
else {
listItems[i].style.textDecoration = "line-through";
listItems[i].style.fontSize = "9px";
//listItems[i].style.cssFloat = "right";
}
}
else if (tasksCount > 0) {
listItems[i].style.fontSize="13px";
listItems[i].firstChild.innerHTML = listItems[i].firstChild.innerHTML + " (" + tasksCount + ")";
}
else {
// listItems[i].style.textAlign = "right";
//listItems[i].style.textDecoration = "line-through";
//listItems[i].style.fontSize = "9px";
//listItems[i].style.cssFloat = "right";
listItems[i].style.display = "none";
}
Posted at 12:59am on September 16, 2008
Thanks Andrew. I started working on my own mods before you posted this. I did a bunch with indenting by setting up a variable to see when the first next action, project, etc, was. This seems to work well. The code is a bit messy and I'm using some depricated stuff (font tag) so I should probably clean things up. But it works. Here's a screenshot:
I've uploaded my whole script here:
http://dvdmon.com/a_bit_better_rtm.user.js.txt
Unfortunately Google thinks my site has malware on it, which it doesn't. I'm trying to get them to review the site, but in any case, you won't see anything anyway because this is a link to the script - I made it have a plain txt extension so that it doesn't jack with anyone's browser - you should just be able to cut and paste it or for that matter just right-click the link above and to a save as...
Posted at 8:11pm on September 16, 2008
Forgot to mention that I couldn't get the project list at the top of the projects section because my project list is a smartlist whereas each individual list for a given project is actually a hard list. I'm not even sure if I need a list to hold project names if they are all going to be displayed like this anyway! Projects that are empty get made really big (font that is) to call attention to themselves, and the Inbox gets big to call attention to itself as well, but otherwise the list should look about the same plus or minus your own project titles - next action lists and the "other bucket" lists dissapear when they don't have anything in them (I found making them small or crossing them out too distracting...)
Posted at 8:51pm on September 16, 2008
says:Wow, this is an elegant userscript! Very usefull, thank you!!! To make it perfect I'd like to add headers as shown above, but I think I'll manage that...
Posted at 7:56pm on October 12, 2008
Hello All,
3 day newbie here, but a heavy GTD user. Love the product an have fully integrated it into all my devices. Will open a Pro account shortly.
Stupid question - how can I make use of this hack? Where do we access the code? (pro only?)
Cheers,
Neil
Posted at 10:29pm on October 16, 2008
says:Hello Neil,
Firstly you need to install greasemonkey firefox addon https://addons.mozilla.org/en-US/firefox/addon/748
Then you'll be able to install the script http://userscripts.org/scripts/show/32518
Hope it helps
Posted at 3:59am on October 17, 2008
says:Hello All,
I've updated the script a bit.
Added two small features:
- quick 'GO TO' list
- quick 'MOVE TO' list
Details can be find here http://userscripts.org/scripts/show/32518
Best regards,
Andrew
Posted at 4:03am on October 17, 2008
I love it. Great job! I had so many lists the tabs were getting overwhelming. I am a big minimalist and this fits the bill. Thank you!!!
Posted at 2:19pm on October 21, 2008
says:Hello All,
I've added possibility to hide useless lists through Settings -> Lists dialog.
As usual see http://userscripts.org/scripts/show/32518 for more details
Best regards,
Andrew
Posted at 5:26am on October 23, 2008
Is there a way to display the smart lists above the regular lists?
Posted at 9:29pm on November 9, 2008
says:Thomas, I'll consider your request and will try to implement it in one of the nearest version of the script.
Posted at 4:18am on November 10, 2008
says:This should be the default UX. It's a million times better. Thanks!
Posted at 2:16am on November 13, 2008
says:Sorry for the off-topic thread, but I'm just wondering if I can boldface, italicize, or underline in a comment ...
Posted at 7:55pm on November 15, 2008
says:Andrew,
I'm on an 9" Eee PC. I love your script. Is there any way that I can make the Task list itself (the box in the middle) less wide? As of right now, "Print" is just off the screen to the right.
Thanks!
Posted at 10:18pm on November 17, 2008
says:Hello Russ,
You need to find a line in code with 973 number in it, change the number to 803 and add this two lines of code right below the line:
document.getElementById("listbox").style.width = "500px";
document.getElementById("list").style.width = "500px";
The result should look like this:
content.style.width = (803 + leftColumn.clientWidth) + "px";
document.getElementById("listbox").style.width = "500px";
document.getElementById("list").style.width = "500px";
You can change the numbers to fit your screen.
Hope this helps.
Best regards,
Andrew
Posted at 5:04am on November 18, 2008
I am trying to get the smart lists to the top of the list of lists. My original thought was to name the smart lists to start with @ or something so they could be sorted alphabetically. Then, looking at the code, I think this should be done in showTasksCount by calling listItems.sort() but this is screwing up the entire list - removing all the task counts. Is listItems not a sortable list? Is there another way to do this?
Posted at 11:15pm on November 19, 2008
says:Hello Thomas,
You can check this script http://www.rememberthemilk.com/forums/tips/5592/ . Seems it applies some basic sorting of the list.
By the way, I'm working on a new version and I'm going to add manual sorting feature.
Posted at 4:43am on November 20, 2008
says:hello all
Andrew. this the tool that ever i wanna use
I really like all your job!
I'm trying to expertize a little bit more before
implement something
i'm more newbie than Neil 'cause i'd have no idea about GTD
thanks a lot!
Best regards
Josep
Posted at 9:08pm on December 1, 2008
says:Hi Andrew,
Still on the 9" Eee PC. Any way to make the task list wider to the left? Anchor the right side, but push everything else left, thereby widening the task list. I have about a half-inch margin of white space on the left side of the list box that I'd like to use more efficiently.
Thanks,
Russ
Posted at 2:56am on December 2, 2008
says:Hi Russ,
I didn't find a way to make task list wider to the left. Seems it's not that easy.
Posted at 4:08am on December 2, 2008
says:Andrew,
Any way you could incorporate the ability to create a new list into the Tasks view?
Thanks,
Russ
Posted at 9:15pm on December 28, 2008
says:Hi Russ,
Nice idea, I'll try to implement it
Posted at 4:21am on December 29, 2008
says:This is seriously cool, thank you for your efforts on this Andrew. It's also the first time I've been exposed to GreaseMonkey and user scripts - so now I have something new to explore and tinker with ;)
Thanks again.
Posted at 11:53pm on December 30, 2008
says:This script is terrific! I have implemented it on my home computer (using FF). Unfortunately, work only allows us to use IE. I did find a Greasemonkey for IE add-on, but can't seem to get this script working in that environment. Has anyone had any luck with that? A little tutorial would be much appreciated!!!
Posted at 5:59pm on June 3, 2009
Fantastic.
Posted at 2:24am on June 21, 2009
says:Grab a USB stick, install Portable Apps and run Firefox from your stick.
Posted at 3:38pm on June 24, 2009
says:This script appears to slow down keyboard shortcuts in FF3.5 anyone else having this issue?
Posted at 7:58pm on July 15, 2009
says:I'm having a lot of trouble with it!
It doesn't work on fluid.app
Posted at 2:23pm on August 14, 2009
also having problems with FF3.5 upgrade, reverting back to v3.0
Posted at 1:47am on August 16, 2009
says:kutyshalev, I have the same problem, for example, it reacts very slow to "s", freezing Firefox for long seconds...
Posted at 6:19pm on August 17, 2009
This script looks nice. Does anyone have it working with Chrome? I am using Chrome 2.0 and can get various scripts to work, but this one isn't doing anything for me.
Thanks
Posted at 9:10pm on August 22, 2009
says:Hi Todd,
I guess the script won't work with Chrome (for now). It uses GreaseMonkey API calls, which aren't supported in Chrome.
Sorry for that,
Andrew
Posted at 6:29am on August 23, 2009
says:Hi there,
I prepared a new version of the script. Mostly to fight the slowness introduced in FF3.5.x. Also added "Quick Add List" feature and unique URLs for lists and tasks.
See more details here http://userscripts.org/scripts/show/32518
Thanks,
Andrew
Posted at 6:31am on August 23, 2009
Thanks Andrew. Hopefully Google will get full GM support at some point.
Todd
Posted at 5:06pm on August 23, 2009
Andrew - just launched with your script in FF. Nice! I think I'll run FF just to get your script ;-)
Todd
Posted at 5:20pm on August 23, 2009
says:Having to refresh the page in order to see an updated task count. Anyone else seeing this?
Posted at 7:43pm on September 24, 2009
says:Also having trouble getting it working in fluid....
Posted at 3:53am on November 4, 2009
says:Seemed to cause Firefox to crash often. Since removing it i've not had a problem.
Posted at 11:43pm on November 15, 2009
says:Still in love with this. It's basicly the only thing keeping me from moving to Google Chrome, since I find RTM more or less unuseable without it.
Not sure if you check this often (Andrew), but I have a bug, and a request.
Request: Is it possible to add in the functionality of Keep Tag Cloud Visible? Extensions are easier to deal with that Userscripts, and since you made the move, the only other RTM script I'm running is that one. It also seems like a simple thing to add, and with your preference menu, you could also easily turn it off if people didn't like it.
Bug: The script is causing the Sort By window to pop up in the wrong location. Pretty weird. Here's a screenshot:
http://img.skitch.com/20091118-xwdxc8npwy69thjgjqsi6mpa1a.jpg
If this is able to be ported into a chrome extension, that would be SICK. Any plans on that?
Posted at 5:41pm on November 18, 2009