UniTasker is a desktop app for students managing tasks and courses, optimized for use via a Command Line Interface (CLI).
add
delete
mark
unmark
list
list categorylist todolist deadlinelist limitlist rangeeventrecurringoccurrencereorder
prioritysort todofindlimitremindercourse
undoexitUniTasker from here.cd into the folder you put the jar file in, and
use the java -jar UniTasker.jar command to run the applicationadd category command first as tasks can only be added inside a category.addAdds a new item to the list. The add command supports multiple task types: category, todo, deadline, event, and recurring.
add categoryAdds a new category.
Format: add category [name]
name: Name of the categoryExample:
add category School
add todoAdds a todo item under a specific category.
Format: add todo [CATEGORYINDEX] [DESCRIPTION] /p [PRIORITYVALUE]
categoryIndex: Integer value corresponding to the categorydescription: Description of the task/p: Optional priority flag to add a todo with set priority value. Default value is 0.priorityValue: Integer value for priority. Only 0 to 5 inclusive is allowed.Examples:
add todo 1 finish tutorial
add todo 1 reply email /p 5
add deadlineAdds a deadline with a specified due date and time (optional). If no time is given, time is defaulted to 2359.
Format: add deadline [CATEGORYINDEX] [DESCRIPTION] /by [DATE TIME]
categoryIndex: Integer value corresponding to the categorydescription: Description of the task/by: Keyword indicating deadlinedate time: Format dd-MM-yyyy HHmm , dd-MM-yyyyExample:
add deadline 1 Homework /by 25-05-2026 1800
add deadline 1 Homework /by 25-05-2026
Note: Adding a deadline will increase total incomplete task on particular date
add eventAdds an event with a start and end time.
Format: add event [CATEGORYINDEX] [DESCRIPTION] /from [START] /to [END]
categoryIndex: Integer value corresponding to the categorydescription: Description of the event/from: Keyword indicating event start time/to: Keyword indicating event end timestart and end: Format dd-MM-yyyy HHmmExample:
add event 1 meeting /from 25-05-2026 1400 /to 25-05-2026 1600
Note:
start must be earlier than endend if time is not specified, default time 2359 is used but start date and time must be specifiedadd recurringAdds a weekly recurring event.
Format: add recurring [CATEGORYINDEX] [DESCRIPTION] /from [DAY TIME] /to [DAY TIME] (/date or /month) [END DURATION]
categoryIndex: Integer value corresponding to the categorydescription: Description of the event/from: Start day and time (e.g. Friday 1600)/to: End day and timeday time: Format EEEE HHmm where EEE is Monday, Tuesday, Wednesday, Thursday, Friday. Saturday, Sunday/date or /month : (optional) end duration for the recurring groupend duration : (optional) number of months or end date , Format for end date: dd-MM-yyyy______________________________________________________________________
add recurring 1 lecture /from Friday 1030 /to Friday 1130 /month 2
______________________________________________________________________
This recurring event has been added:
[RE][ ] lecture (from: Friday 1030 to: Friday 1130)
______________________________________________________________________
add recurring 1 CS2113 lecture /from Friday 1600 /to Friday 1800 /date 24-04-2026
______________________________________________________________________
This recurring event has been added:
[RE][ ] CS2113 lecture (from: Friday 1600 to: Friday 1800)
______________________________________________________________________
Examples:
add recurring 1 CS2113 lecture /from Friday 1600 /to Friday 1800
Note:
/from must be earlier than end day and time specified after /to/date or /month but not both to set the end duration.
/date or /month is used without stating the number of months or stating the number of months with other words will set default duration (1 month).deleteDelete an existing item on the list. delete can be used to delete the following: category, todo, deadline, event, recurring
delete categoryFormat: delete category [CATEGORYINDEX]
Example: delete category 1
delete markedDeletes all marked tasks.
Format: delete marked
Example: delete marked
delete [TASKTYPE]Format: delete [TASKTYPE] [CATEGORYINDEX] [TASKINDEX]
todo, deadlineExamples:
delete deadline 1 1
delete deadline 1 all
Note: Use delete todo/deadline categoryIndex all to delete all todos/deadlines in specific category
Note: Deleting a deadline will affect the total number of incomplete task and completed task on particular date. This is applicable to delete deadline categoryIndex all but total completed and incomplete task per date will not be shown
delete [EVENTTYPE]Format: delete [EVENTTYPE] [CATEGORYINDEX] [UIINDEX]
event, recurring,occurrencelist event → then list occurrence [CATEGORYINDEX] [UIINDEX] → then delete occurrence [CATEGORYINDEX] [UIINDEX]list recurring → then delete recurring [CATEGORYINDEX] [UIINDEX]list event or list event /all or list event /normal → then delete event [CATEGORYINDEX] [UIINDEX]Sample portion of outputs:
______________________________________________________________________
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][ ] meeting (from: 04-04-2026 1000 to: 04-04-2026 1100)
2. [E][ ] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
3. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
4. [RE]lecture (from: Friday 1030 to: Friday 1130)
5. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
6. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
delete event 1 1
______________________________________________________________________
This event has been deleted:
[E][ ] meeting (from: 04-04-2026 1000 to: 04-04-2026 1100)
______________________________________________________________________
______________________________________________________________________
list recurring
______________________________________________________________________
ALL RECURRING EVENTS
______________________________________________________________________
[1]school:
1. [RE]lecture (from: Friday 1030 to: Friday 1130)
2. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
3. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
delete recurring 1 1
______________________________________________________________________
This recurring event has been deleted:
[RE]lecture (from: Friday 1030 to: Friday 1130)
______________________________________________________________________
______________________________________________________________________
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][ ] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
2. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
3. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
4. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
list occurrence 1 3
______________________________________________________________________
OCCURRENCES FOR: CS2113 lecture
______________________________________________________________________
[1]school:
1. [RE][ ] CS2113 lecture (from: 10-04-2026 1600 to: 10-04-2026 1800)
2. [RE][ ] CS2113 lecture (from: 17-04-2026 1600 to: 17-04-2026 1800)
3. [RE][ ] CS2113 lecture (from: 24-04-2026 1600 to: 24-04-2026 1800)
______________________________________________________________________
delete occurrence 1 1
______________________________________________________________________
This recurring event has been deleted:
[RE][ ] CS2113 lecture (from: 10-04-2026 1600 to: 10-04-2026 1800)
______________________________________________________________________
Examples:
delete occurrence 1 1
delete recurring 1 1
delete event 1 all
Note:
delete event categoryIndex all to delete all events in specific categorydelete event categoryIndex all but total incomplete and completed task per date will not be shownmarkmark [TASKTYPE]Mark existing task(s) (todos and deadlines) in a category.
Format: mark [TASKTYPE] [CATEGORYINDEX] [TASKINDEX]...
todo, deadlineExamples:
mark todo 1 1mark todo 1 1 2 3 4Note: Marking a deadline will increase total completed task and decrease total incomplete task on particular date
mark [EVENTTYPE]Mark existing event(s) in the category.
Format: mark [EVENTTYPE] [CATEGORYINDEX] [UIINDEX]...
event, occurrencelist event→ then list occurrence [CATEGORYINDEX] [UIINDEX] → then mark occurrence [CATEGORYINDEX] [UIINDEX]list event or list event /all or list event /normal
→ then mark event [CATEGORYINDEX] [UIINDEX]Sample portion of output:
______________________________________________________________________
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][ ] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
2. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
3. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
4. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
mark event 1 1
______________________________________________________________________
This task is marked as done:
[E][X] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
______________________________________________________________________
Marked 1 event(s) successfully.
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][X] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
2. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
3. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
4. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
list occurrence 1 3
______________________________________________________________________
OCCURRENCES FOR: CS2113 lecture
______________________________________________________________________
[1]school:
1. [RE][ ] CS2113 lecture (from: 10-04-2026 1600 to: 10-04-2026 1800)
2. [RE][ ] CS2113 lecture (from: 17-04-2026 1600 to: 17-04-2026 1800)
3. [RE][ ] CS2113 lecture (from: 24-04-2026 1600 to: 24-04-2026 1800)
______________________________________________________________________
mark occurrence 1 2
______________________________________________________________________
This task is marked as done:
[RE][X] CS2113 lecture (from: 17-04-2026 1600 to: 17-04-2026 1800)
______________________________________________________________________
Marked 1 event(s) successfully.
Examples:
mark event 1 1 mark occurrence 1 1
mark event 1 1 3 mark occurrence 1 1 2
Note:
mark event 1 1 3 if 3/1 is a recurring group it will not be markedunmarkunmark [TASKTYPE]Unmark existing task(s) (todos and deadlines) in the category.
Format: unmark [TASKTYPE] [CATEGORYINDEX] [TASKINDEX]...
todo, deadline,Examples:
unmark deadline 1 1unmark deadline 1 1 2 3 4Note: Unmarking a deadline will increase total incomplete task and decrease total completed task on particular date
unmark [EVENTTYPE]Unmark existing event(s) in the category.
Format: unmark [EVENTTYPE] [CATEGORYINDEX] [UIINDEX]...
event, occurrencelist event→ then list occurrence [CATEGORYINDEX] [UIINDEX] -> then unmark occurrence [CATEGORYINDEX] [UIINDEX]list event or list event /all or list event /normal -> then unmark event [CATEGORYINDEX] [UIINDEX]Sample portion of output:
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][X] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
2. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
3. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
4. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
unmark event 1 1
______________________________________________________________________
This task is marked as not done:
[E][ ] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
______________________________________________________________________
Unmarked 1 event(s) successfully.
list event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][ ] consultation (from: 10-04-2026 1800 to: 10-04-2026 1900)
2. [E][ ] session (from: 11-04-2026 1800 to: 11-04-2026 1900)
3. [RE]CS2113 lecture (from: Friday 1600 to: Friday 1800)
4. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
list occurrence 1 3
______________________________________________________________________
OCCURRENCES FOR: CS2113 lecture
______________________________________________________________________
[1]school:
1. [RE][ ] CS2113 lecture (from: 10-04-2026 1600 to: 10-04-2026 1800)
2. [RE][X] CS2113 lecture (from: 17-04-2026 1600 to: 17-04-2026 1800)
3. [RE][ ] CS2113 lecture (from: 24-04-2026 1600 to: 24-04-2026 1800)
______________________________________________________________________
unmark occurrence 1 2
______________________________________________________________________
This task is marked as not done:
[RE][ ] CS2113 lecture (from: 17-04-2026 1600 to: 17-04-2026 1800)
______________________________________________________________________
Unmarked 1 event(s) successfully.
Example:
unmark event 1 1 unmark occurrence 1 1
mark event 1 1 3 mark occurrence 1 1 2
Note:
unmark event 1 1 3 if 3/1 is a recurring group it will not be unmarkedlistDisplays a list of tasks. The list command can be used with the following keywords:
category, todo, deadline, range, limit, event, recurring, occurrence
list categoryList all categories or one selected category.
Format: list category [CATEGORYINDEX]
Examples: list category, list category 1
list todoLists all todos in every category
Format: list todo
Example: list todo
list deadlineLists all deadlines in every category
Format: list deadline
Example: list deadline
list limitShows the current year range and daily task limit.
Format: list limit
list limitlist rangeShows all deadlines and/or events within a date range
Format: list range [START] [END] [FLAG]
/deadline or /eventExamples:
list range 25-06-2026 27-06-2026
list range 25-06-2026 27-06-2026 /deadline
list range 25-06-2026 27-06-2026 /event
list eventFormat: list event [TYPE]
/normal, /alllist event /normal shows non-recurring events
list event /all shows expanded view of recurring events
list event shows both non-recurring events and recurring events (collapsed view)
Examples:
list event /normal list event /all list event
Note:
list recurringList recurring shows groups of recurring events.
Format : list recurring
Examples:
list recurring
Note: Anything after ‘recurring’ will be ignored
list occurrenceList occurrence shows all events within a recurring group.
Format: list occurrence [CATEGORYINDEX] [UIINDEX]
list event or list event /alllist event
______________________________________________________________________
ALL EVENTS
______________________________________________________________________
[1]school:
1. [E][ ] meeting (from: 04-04-2026 1000 to: 04-04-2026 1100)
2. [RE]CS2113 seminar (from: Friday 2000 to: Friday 2100)
______________________________________________________________________
list occurrence 1 2
______________________________________________________________________
OCCURRENCES FOR: CS2113 seminar
______________________________________________________________________
[1]school:
1. [RE][ ] CS2113 seminar (from: 03-04-2026 2000 to: 03-04-2026 2100)
2. [RE][ ] CS2113 seminar (from: 10-04-2026 2000 to: 10-04-2026 2100)
3. [RE][ ] CS2113 seminar (from: 17-04-2026 2000 to: 17-04-2026 2100)
4. [RE][ ] CS2113 seminar (from: 24-04-2026 2000 to: 24-04-2026 2100)
______________________________________________________________________
Examples:
list occurrence 1 1
Note: Must use list event before using this list command
reorderChange the ordering of the following: category or todo.
reorder categoryFormat: reorder category [FROMINDEX] [TOINDEX]
FROMINDEX and TOINDEX: Integer value up to number of categories addedExample: reorder category 1 2
reorder todoFormat: reorder todo [CATEGORYINDEX] [FROMINDEX] [TOINDEX]
CATEGORYINDEX: Integer value up to number of categories addedFROMINDEX and TOINDEX: Integer value up to number of todos addedExample: reorder todo 1 1 2
prioritySet the priority value of a todo.
Format: priority todo [CATEGORYINDEX] [TODOINDEX] [PRIORITYVALUE]
CATEGORYINDEX: Positive integer value up to number of categories added.TODOINDEX: Positive integer value up to number of todos added.PRIORITYVALUE: Integer value within 0 to 5 inclusive.Example: priority todo 1 1 5
sort todoSort todos within a category by priority value.
Format: sort todo [CATEGORYINDEX]
CATEGORYINDEX: Positive integer value up to number of categories added.Example: sort todo 1
findFind any task (todos, deadlines and events) that contains the substring entered.
Format: find [SUBSTRING]
SUBSTRING: Any string.Example: find assignment
limitSets a limit on the following: task, year
Allow user to set the limit for the following: Task, Year
Format: limit [KEYWORD] [INT]
task, yearExamples:
limit task 5
limit year 2035
Note 1: Year refers to the furthest year that can be accessed/added to from the list
Note 2: Cannot further reduce year x if there is a task in the year x
Note 3: Latest Year is set to 2100 and Max task is set to 24
Note 4: Task refers to timed task: deadline, event
reminderShows the pending tasks (deadlines and events) for the day
Format:
reminder
Note: Anything after ‘reminder’ will be ignored
courseManages your course grading structure. Supports adding/deleting courses and assessments, recording scores, and viewing weighted grades.
course addAdds a new course to the tracker.
Format: course add [COURSE_CODE]
COURSE_CODE: The course code (e.g. CS2113). Case-insensitive, stored in uppercase.Example:
course add CS2113
course deleteDeletes an existing course from the tracker.
Format: course delete [COURSE_CODE]
Example:
course delete CS2113
course listLists all courses currently tracked.
Format: course list
course viewDisplays all assessments and scores for a specific course.
Format: course view [COURSE_CODE]
Example:
course view CS2113
course add-assessmentAdds an assessment component to a course.
Format: course add-assessment [COURSE_CODE] /n [NAME] /w [WEIGHTAGE] /ms [MAX_SCORE]
COURSE_CODE: The course code/n: Assessment name/w: Weightage as a percentage (e.g. 40 for 40%). Total weightage across all assessments cannot exceed 100%./ms: Maximum score for the assessmentExample:
course add-assessment CS2113 /n Finals /w 40 /ms 100
course scoreRecords your score for an assessment.
Format: course score [COURSE_CODE] /n [NAME] /s [SCORE]
SCORE: Must not exceed the maximum score of the assessmentExample:
course score CS2113 /n Finals /s 85
course delete-assessmentDeletes an assessment from a course.
Format: course delete-assessment [COURSE_CODE] /n [NAME]
Example:
course delete-assessment CS2113 /n Finals
undoUndoes the most recent course command that modified data.
Format: undo
course add, course delete, course add-assessment)course list, course view) are not undoableExample:
course add CS2113 followed by undo will remove CS2113.
Note: Undo is currently supported for course commands only.
exitExits the program
Format:
exit
Note: Anything after ‘exit’ will be ignored
UniTasker data is saved automatically to the same folder after any change to the data. If the save data file exists, data will also be loaded automatically into the program.
UniTasker data is saved as text files in the same directory as the JAR file.
Advanced users may edit these files directly, but should copy and edit existing entries to maintain the correct format.
Note: If changes to the data file makes its format invalid, data loading can behave unexpectedly. For example, invalid lines may result in wrong information loaded or the entire line being skipped completely.
Additional characters behind a correct complete command will almost always be ignored, allowing most command to succeed without error message. This gives user some “additional room” for accidental error.
Q: How do I transfer my data to another computer?
A: Copy all the .txt files inside the folder with UniTasker and paste in the same folder where UniTasker.jar is located in the other computer.
| Action | Format, Examples | |
|---|---|---|
| help | help |
|
| add | add category [DESC], add todo [CATEGORYINDEX] [DESCRIPTION] /p [PRIORITYVALUE], add deadline [CATEGORYINDEX] [DESCRIPTION] /by [DATE TIME], add event [CATEGORYINDEX] [DESCRIPTION] /from [START] /to [END], add recurring [CATEGORYINDEX] [DESCRIPTION] /from [DAY TIME] /to [DAY TIME] |
|
| delete | delete [KEYWORD] [CATEGORYINDEX] [TASKINDEX], delete [KEYWORD] [CATEGORYINDEX] all |
|
| list | list category [CATEGORYINDEX], list todo, list deadline, list limit, list range [START] [END] [FLAG], list event [TYPE], list recurring, list occurrence [CATEGORYINDEX] [UIINDEX] |
|
| mark/unmark | mark [TASKTYPE] [CATEGORYINDEX] [TASKINDEX], unmark [TASKTYPE] [CATEGORYINDEX] [TASKINDEX] |
|
| reorder | reorder category [FROMINDEX] [TOINDEX], reorder todo [CATEGORYINDEX] [FROMINDEX] [TOINDEX] |
|
| priority | priority todo [CATEGORYINDEX] [TODOINDEX] [PRIORITYVALUE] |
|
| sort | sort todo [CATEGORYINDEX] |
|
| find | find [SUBSTRING] |
|
| limit | limit [KEYWORD] [INT] |
|
| reminder | reminder |
|
| course | course add [COURSE_CODE], course delete [COURSE_CODE], course list, course view [COURSE_CODE], course add-assessment [COURSE_CODE] /n [NAME] /w [WEIGHTAGE] /ms [MAX_SCORE], course score [COURSE_CODE] /n [NAME] /s [SCORE], course delete-assessment [COURSE_CODE] /n [NAME] |
|
| undo | undo |
|
| exit | exit |