 The more I go down this rabbit hole that is emacs the more I discover customization options and extensibility options that I Didn't know existed and quite frankly amazed me and one of the big features of emacs Of course is org mode and there are so many emacs programs Extensions plugins that you can build around org mode one of the most common org tools is the org agenda You can think of it essentially as your org mode scheduling application where you create to do this You create your agenda for the week or the day or the year whatever it happens to be now for me I'm not a scheduler. I don't like scheduling myself tasks to be completed by a certain amount of time I don't work that way. I've never worked that way I I typically take things as they come I find that works for me. I know a lot of people have to keep schedules Like like that's how they work. That's how their brain is wired, right? And that's their workflow in some cases their entire life demands that they set a schedule for themselves and keep that Schedule and because of that those kinds of people especially are gonna love something like org agenda now org agenda has some customization options that I've been exploring for the past few days and I want to share a little bit of what I've discovered So let me go ahead and open Doom emacs here So do me max of course is a distribution of emacs that I prefer to use it uses the evil key bindings So all of your standard them key bindings work, of course in doom emacs And I'm gonna go ahead and let me open my doom config my config is my config org So it's a org file and in my if I go to the top I've got a table of contents here. You'll find my doom emacs config on my dot files repository on my get lab But I've tried to organize things in a nice orderly fashion. That's a literate config if you go to org mode There's several subsections here. One of them is org agenda where I basically set a location for this agenda file The agenda org is what I've named it. I could have named it in anything I could have placed it in any folder right now I have it in NC, which is a next cloud folder that sync between various machines of mine that way I've got the same agenda no matter if I'm at the office or you know at home or whatever So I've got a lot of things that sync to a next cloud server and Slash org slash agenda org. So that is my org agenda file. I can do a vertical split here I'll show you the agenda org so Quick search if I can spell agenda correctly So this is an example of an agenda org file So the way an agenda file works is or anything that where you're setting a to-do list They have to be Header levels in a org file So my to-do list was a top level header right a single asterisk and then I typed my to-do list Let me hit enter and I'm gonna do two asterisks for a second level header And if I want to prepend this with some kind of to-do tag such as to-do you can see it changes the font a little bit It's like a compressed kind of font. It also changes the color And so this is a to-do item and item one for example, and then if I hit control enter I get another second level header with already a to-do tag on it and item two Let me write that and if I hit space o Capital a here in doom emacs. I get the agenda menu you see that split at the bottom where I have various Keys I could press to get different views of an agenda and the first one a is the agenda for the current day or the week if I Hit a there is my agenda for this week now. Nothing is here It's a 10 day agenda, but I don't have anything here and the reason I don't have anything here if I go back to my Agenda org is because I didn't actually specify a time for any of these obviously They can't be on my agenda of the week until I give them some kind of time now if I do meta x and I do org time snap so space MDT is the key binding or I could just hit enter here And I get this calendar in a bottom split here and this horizontal split and in the calendar either with the mouse or the Keyboard I could select a date to schedule one of these items. Maybe item one here Needs to be done on the six. So there is the time stamp. Let me put a little space there I'll write that and now if I do space o Capital a to get to the agenda menu and a one more time for agenda for the current day or week Now you see on Friday the 6th. There is to do item one Now one neat thing you can do with org agenda is you can set these to do items to have priority So for example this very first to do item item one that I set for tomorrow I scheduled for tomorrow. I can give it a priority if you don't know the command for setting a priority You could do meta x and search for org Org dash priority now do me max has a key binding for it space mpp So I'll use the key binding space mpp And I get this question here at the bottom priority a through c space to remove So you have three priority levels a is the highest b is the second highest and c is the lowest priority I'm going to give this the highest priority. So I'll do a capital a and now you see I have this flag in front of item one Easily, let's me know that that has the highest priority I can actually change that icon if I want to something else and we may do that in just a second But let me go ahead and write that I'm going to do space Space o capital a and then lowercase a to get to the Agenda view here and now you can see that to do item also has the little flag in front of it letting me know that's a high priority item If I go back to the previous buffer with space b p for buffer previous Let me go ahead and set the priority for this. So remember the key binding space mpp for priority I'll set this priority for b or the the middle priority right and you see it has an icon here this arrow here And let me write that I'm going to do space O capital a lowercase a again And this doesn't appear in this view because again, we didn't give that second item a date But there are other agenda views if I do space o capital a And then looking at the list t for list all to do items So these don't have to be a specific date This is to do items whether they've got a date or not So this is just a list view of all your to-do items that are in your agenda dot org And you can see there are both items and you can see they've got the priorities And we've got the time snap next to the one that is scheduled now so far This is all kind of standard stuff with org agenda But what I wanted to do is I I've seen some people Screenshots on the internet where they've had their like 10 day agenda here You know the standard agenda view here Where they've had it broken up into different categories based on priority based on custom tags and things like that And I wanted to customize this view of my agenda here So the first thing I'm going to do is I'm just going to create a new agenda dot org file with various priorities and various custom tags That way, uh, I'm all set for for customizing this view based on those priorities and tags So I'm going to do space bp for previous buffer to go back to my agenda dot org here And let me go ahead and delete all of that and I'm going to go ahead and have a new section I'm going to call it high priority to do Items and then let's go ahead and create a second level header And I'm going to give this a different to do tag instead of to do I'm going to give it this tag here video because in my Config.org I have a variety of to do kind of tags and one of them is video because I plan on scheduling a video for today And the video is going to be about org agenda Let's go ahead and do the time stamp as well So what was this time stamp key binding space md t and then we get the calendar It was already highlighting today for the date, which is actually the correct date So I just need to hit enter on that and then control enter to get a new Second level header right below this one and then the video for tomorrow. I don't know Maybe I'll talk about the latest Dtos or something tomorrow. I don't that's not actually probably what I'll do tomorrow But space md t. Let's get a time stamp and let me get down Uh into the calendar here if I do shift and then the arrow keys. I'll shift over to friday the sixth I've got the time stamp there I still doesn't space that out the way I want it and then I'll schedule a video for saturday saturday I actually do have something scheduled. I'm going to do a co-lab With dark zero of zero linux So space md t. Let me go ahead and get the date on that and get the time stamp there So that these are all going to be high priority to do items But of course, I did not set them for high priority. How do I set them for high priority? Move the cursor to the item and what was the key binding to set the priority space mpp And that's going to ask what priority and I'm going to do a which is the highest then move down a line space mpp A and then move down a line space mpp a So they have all been set to the highest priority items here and then I could do some uh medium priority To do items as well And then create a second level header here and this will just be a standard to do kind of item I don't know. Maybe I need to uh Do some grocery shopping or something. I don't know We'll do that and we can do that with a time stamp as well We'll do that time stamp for today because I probably do need to pick up some stuff from the grocery store today And then let's go ahead and set the medium priority, which will be the b priority, right? So space mpp and then b for its priority and let's go ahead Create another to do item and maybe also this week I need to I don't know mow the yard, which I don't need to do it's winter time But we're just going to create something here and let's go ahead And I'll schedule that for tomorrow here the to do item and then let's give it a priority So space mpp and then capital b to give it a b priority Maybe that's all I want to do for this and then let's do some low priority And for the low priority to do items I just copied these down here But I need to change the priority level so space mpp these will be c priority levels So space mpp c space mpp c and you can see the icon for the c It's just the the green little box and you can see the icon for the medium priority The b level is the arrow and then of course we still have the red flags for the highest priority So now that I've got that in my agenda.org let me write that I'm going to go back to my doom emacs config and let's go ahead and configure org agenda a little more So I'm going to create some space here. So I'm going to go ahead and do set q set q is your Assigning a value to a variable here the variable you could look this up in the documentation But I'm going to do org dash agenda dash custom dash commands Then I'm going to do a new line here and for sake of time. I'm just going to go ahead and copy paste This here instead of having to type it all out But what I have done here is the org agenda custom commands allows you To break down your org agenda view into different categories based on some parameters such as tags So tags and you could have any kind of custom tags out to the side of any item for example I could tag this with I don't know Something I don't know some word right some single word, you know wrapped in colons That's a tag and you could actually search your agenda based on a tag Well, you already have three default tags and that's the priority a priority b and priority c tags So you can see I'm going to split my org agenda tags priority a that's the highest priority And I'm going to give it a title high priority unfinished tags I know this is a little hard to read in the split view. Let me close this frame here Yeah, that should be much easier to see what I'm doing So we're going to split things based on the tag for priority a the tag for priority b the tag for priority c Some of the other stuff we're going to do org agenda skip function I don't want you to list every to-do item on my org agenda So if it's a to-do item that I've marked as done meaning I've completed it I really don't need to see it in that org agenda view. So if it's marked as done Skip it. Don't list it for me and then org agenda overriding header. What is the header? Or that particular section of my agenda view. So if tags priority a I want the header to read High priority unfinished task colon and then for priority b medium priority unfinished tasks and specify unfinished tasks because if they're marked as done, of course, they'll no longer appear And then priority c low priority Unfinished tags and then we also have two other sections the standard agenda section, right that 10 day kind of Outlook for my next week and a half or whatever and then the next section will be all to do one word All to do means just a give me a list of all of my to-do items So we're going to have five different sections to my org agenda now And one thing I should also mention is I specified a key binding for this new custom org agenda view I use the key binding v So when you do space o capital a for the agenda menu, you should see an entry for the key binding v as well And I gave it a description a better agenda view. So now let me write that So now I also need to reload my doom emacs config because I changed the config.org here So space h r r will restart doom emacs with this new config And the config has reloaded successfully. So there were no errors. So space o capital a gets me the agenda view And now I have the entry v for a better agenda view. Well, let's check it out So that is my new org agenda view and you can see high priority tasks And you can see the three high priority tasks are here medium priority tasks and I had two of them It also included the headers the the top level headers because if you don't specify A particular header in an agenda view with a priority It assumes its medium priority. That's kind of the default So I need to go back and actually fix that then you have the low priority unfinished tasks And then you have your standard 10 day agenda and then the global list of all to-do items So this is everything all the to-do items in one list not split up in any sort of way So let me do a space w v here for a vertical split because what I want to do is I want to go back into my agenda.org since I I need to set a priority for these top level headers this and this and this because by default all of these will be medium priority level b priority, but I probably need to go ahead and make that priority a That one will need to be priority b and that one Will need to be priority c now. Let me write that Now let me get back into this other split here And I'm going to go ahead and space bk to kill that buffer and I'm going to relaunch it space o capital a v and now Yeah, and now they are in the correct place as far as the top level headers You can see the high priority to do items medium priority to do items low priority to do items You can see the sections by default. They are separated by Like a equal sign that goes across now you can specify the separator character It can be any standard keyboard character. It can be any kind of uticode cliff or even emojis Emacs has support for pretty much all of that as long as whatever font you're using supports that particular character You can use it as a separator. So if I go back to my config.org Let me show you how we can do this. Let me Close that window again. So in my org agenda section here. I mean I could Do a new set queue and maybe what I want to do is org agenda block separator And yes, I had to look up that particular variable and the default character is 61 61 is just uh In emacs characters or keyboard characters. They can be the actual character on the keyboard They can also be assigned numbers as well 61 is actually the equal sign If you wanted to verify that I could type an equal sign here And now that my cursor is on it. There's actually a a function in emacs for describe Character and you can see it doom emacs has that uh for a key binding space h and then a single apostrophe But if I describe that character because my cursor remember was on the equal sign You actually will get this right here the second line that's in the parentheses You got three different values. You got 61 the numeral and then you got a couple of hex values these all work as A substitute for equals so emacs understands all three of those codes, but it just is easier sometimes to work with the numbers Let me kill that split there So instead of the equal sign if you wanted that separator to be I don't know maybe a dash again Just type a dash and if I did space h apostrophe, you know will tell me what the appropriate values for a Dash or a hyphen or you can see and that is the numeral 45 is what that would be So if I change 61 to 45 write that space h r r to restart zoom emacs And now space o capital a v and now instead of the equals we have dashes as separators So let me kill that buffer one of the things I uh played around with with some special glyphs and emojis And I found this one here worked for me 8,411 this particular Glyph here space h r r What this is is like three dots in a row, but they're not They're they're toward the top of the line. There were some kind of special glyph, but I thought worked really well here So if I do space o capital a v And you can see that is a nice separator especially because by default You know, it's a blank line and then the glyph or whatever character you're using and by having these special dots at the top It's almost like an overline a dotted overline Because if it's a standard like underline, it would be right up against like the 10 day agenda here in this case And it looks kind of odd. So that actually makes the spacing a little easier on that glyph So I think I'm going to keep that I also mentioned that you could change the Symbols the icons for your a priority b priority c priority. Let me show you how to do that So we've already got this new code block here. So I'll just Separate this out a little bit and I'll do a quick copy and paste here But what I've done is I've added these variables here org fancy priorities list So this is your priorities and fancy priorities is a package that allows you to Put any kind of symbol or whatever in front of the items based on priority now the default values for Your priorities is typically a b and c wrapped In brackets. So I put that here Kind of as a default look and then you can actually specify the colors for them as well using the org priority faces Tag and then you specify foreground color and weight. I'm going to make them bold now that I've done that Let me write that space h r r to reload our new config and restart do me max Then space o capital av to go back to our agenda view and now you can see high priority items now have the a It's a red a because I specified that b has a green b and then c as a purple c That's nice, but you know for high priority items. I might want something that stands out a little more than just a capital a so what I'm going to do is I'm going to go back here I'm going to change that Let me go ahead and paste this colored emoji here. So this of course is a red exclamation And this hopefully works as I expect it to Now that we've reloaded our config space o capital av For my new orga agenda view and you can see the high priority items That really stands out that red exclamation. So yeah, I like that space b k to kill that buffer One thing I thought about doing is I kind of like having just a square box. It's plain It's it's simple, you know, I thought about doing something like having three colored emojis as far as boxes red obviously would be the highest priority orange medium And then yellow would be a low priority. So That might be what I do. Let me go to the beginning of this line I'm going to comment That out and I'll use these new symbols. So space hr or to restart do me max Then space o capital av once again and yeah I think that's what I'm going to go with because honestly, I kind of like the look at that That's very clean high priority tests medium priority tests low priority tests our 10 day agenda And then a global list of everything kind of mixed up one other thing I did want to show you Let me space bk to kill that buffer is if you didn't want to do just tags for a b and c Maybe you had custom tags that you were using you could do that as well For example, uh, let me space fr for recent files and agenda dot org And let's create a new section here. So I'll do Custom tags and I'll create a new to do item this to do item And I'm going to say custom to do item And I'm going to give it this tag all one word custom tag wrapped in colons, right? So I think I added an extra space there. So now I'm going to have this item It's going to have a custom tag. Let me write that Space bp for buffer previous to go back here. And then all I need to do is just create a new section here So what I'll do is I'll just copy all of that And tags in this case will simply be Custom tag all one word And then we need to create a overriding header and I'm going to say task Marked with custom tag colon Let's write that space hr r Now space o capital a and v And now I have hyper already tasks medium priority tasks low priority tasks and tasks marked with custom tag So that is pretty cool. And of course from here you could highlight an item or just put the cursor on an item hit t for task Essentially, and you know, I've got to do blog gem project video But I can also go ahead and mark things as either done or cancel a task here for example this video I'm recording it right now. It's essentially done. I could go ahead and hit d on the keyboard to mark that as done But you know, that's just standard org agenda kind of stuff I have shown some of that on video before so that's just a little bit of how you can customize your org agenda view Now, of course, I'm going to go ahead and push my new config over to my dot file So I get back into my config dot org You're actually going to see this new org agenda section in my config and you guys can go ahead and and play with it edited You obviously you may have to do some customization for different custom tags that you want to use Maybe you don't want to use the same separator I was using Maybe you don't want to use the same colored emojis for the priority listings or whatever Obviously, you take my config you configure it you rework it to your heart's content And hopefully you come up with something that you know, pleases you for me This is actually kind of a nice kind of scheduling application that I think I could work with Now before I go I need to thank a few special people I need to thank the producers of this episode and of course I'm talking about brian gabe james matt maxim mimit michael paul S. Y. Y. Ball homie alex armor dragon chuck commander angry dieokai george lee marstrom nadar hian alexander paul peace archon fedora polytech realities for less red prophet roland steven tools devler and willy These guys they're my highest tiered patrons over on patreon without these guys this episode would not have been possible The show is also brought to you by each and every one of these fine ladies and gentlemen all these names you're seeing on the screen right now These are all my supporters over on patreon because I don't have any corporate sponsors I'm sponsored by you guys the community if you like my work I want to see more videos about linux and for an open source software and emacs subscribe to distro tube over on patreon peace Let's add a to-do item for this evening pick up some beer