The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Install Taskwarrior from your Linux distribution’s package repository for the simplest setup, or build the current upstream 3.5.0 release when you need that exact version. Then verify the executable, let Taskwarrior create its initial files, inspect the resulting configuration, and run a small add–view–complete workflow.
Taskwarrior’s normal configuration file is ~/.taskrc. Its task data is kept separately, and Taskwarrior 3.5.0 uses a SQLite database named taskchampion.sqlite3. A single-device installation needs no synchronization; if you are upgrading from Taskwarrior 2, follow the migration procedure instead of replacing the old binary in place.
Choose an installation route
There are two sound ways to install Taskwarrior on Linux. A distribution package is quickest and receives updates through your normal package manager, but the repository may provide a version different from the current upstream release. A source build follows the upstream release directly, at the cost of installing build tools and meeting the dependencies listed by that release.
Recommended Free Tools
| Route | Best for | Version expectation | Trade-off |
|---|---|---|---|
| Distribution package | Most users and routine workstation installs | Determined by your distribution repository; it may differ from 3.5.0 | Fast setup, but release timing and package naming vary |
| Upstream source build | Users who need the upstream 3.5.0 release or repository-independent control | Builds the 3.5.0 source archive when you use that release | Requires CMake, a compiler, development libraries, and ongoing manual updates |
The Taskwarrior download page currently lists version 3.5.0, released on 2026-08-16. Treat that as upstream metadata, not a promise that your distribution has already packaged it. If a specific version matters to scripts or a team standard, check your distribution’s package metadata before installing.
#1 Best Overall
Install on Debian or Ubuntu
Use the package name taskwarrior:
sudo apt-get update
sudo apt-get install taskwarrior
The update step refreshes repository metadata; it does not select an upstream version. After installation, check what was actually installed:
task --version
Install on Fedora
Fedora’s package is commonly named task:
sudo dnf install task
task --version
Install on Arch Linux
Install the task package with pacman:
sudo pacman -S task
task --version
Install on openSUSE
openSUSE uses the package name taskwarrior:
sudo zypper install taskwarrior
task --version
If your command reports that no package exists, confirm the distribution release, enabled repositories, and the package name shown by your package manager. Linux packages are often named task, even though the project and executable are called Taskwarrior.
Build Taskwarrior 3.5.0 from source
Use a source build when the repository version is unsuitable or you need the upstream release directly. The release instructions are authoritative for dependencies; the getting-started documentation specifically calls out the UUID development library, often packaged as libuuid-dev or uuid-dev on Debian-family systems. Package names for CMake, the compiler, and other development libraries differ by distribution, so install the requirements named in the release’s INSTALL file before configuring.
After downloading the task-3.5.0.tar.gz archive, run the upstream build sequence:
- Extract the archive:
tar xzvf task-3.5.0.tar.gz - Enter the source directory:
cd task-3.5.0 - Generate a release build directory with CMake:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release - Compile the program:
cmake --build build - Install it system-wide:
sudo cmake --install build
Confirm that the installed executable is on your shell’s PATH and identify which copy is being run:
command -v task
task --version
If command -v task points to an older distribution package, your shell is not using the source-built executable. Resolve the PATH order before configuring Taskwarrior, otherwise you may edit one installation’s files while invoking another.
Complete the first run
On its first invocation, Taskwarrior looks for configuration and task data. If it cannot find them, it asks whether it may create them. Approve creation for a normal personal installation. The minimal configuration consists of one setting:
data.location=~/.task
Other settings have defaults, so do not copy a large configuration file before you know which behavior you want to change. Keeping the initial state small makes version changes and troubleshooting easier.
Understand the standard locations
~/.taskrcis the normal user configuration file.~/.taskis the default task-data directory whendata.locationis set as above.- Taskwarrior 3.5.0 stores its database as
taskchampion.sqlite3inside the task-data directory. - If
~/.taskrcdoes not exist, Taskwarrior also checks for$XDG_CONFIG_HOME/task/taskrc. - The
TASKRCenvironment variable selects an alternate configuration file. - The
TASKDATAenvironment variable changes the task-data directory.
These variables are useful for separate profiles, testing, or a deliberately managed home directory. They also explain why two shells can appear to use different task lists: compare TASKRC, TASKDATA, and XDG_CONFIG_HOME before changing files.
Inspect settings before changing them
Run:
task show
This displays the effective settings and checks for unrecognized setting names. An unknown-setting warning usually means a typo or an option removed in your installed version. Fix the name rather than suppressing the warning.
To persist an override, use:
task config name value
Replace name and value with the setting you intend to change. To remove a persisted override and return to the built-in default, omit the value:
Free tools Windows power users keep installed
One-click scans. No signup required.
task config name
Removing an override is not the same as storing an empty value. An empty value is a deliberate setting and can have different behavior, so use it only when the option’s documentation says an empty value is meaningful.
Use one-command overrides for experiments
For a temporary change that should not be written to ~/.taskrc, prefix the command with an rc. override:
task rc.name=value ...
This is useful for testing a setting, operating on an alternate data location, or diagnosing a configuration problem without editing the permanent file. Once the command exits, the temporary override is gone.
Configure only what you need
After confirming the defaults, add settings gradually. Common early customizations include selecting a preferred editor, including a theme fragment, and defining project defaults. Use the project’s documented setting names with task config, then run task show to verify the effective result.
Theme files and other configuration fragments can be included from the main configuration, which lets you keep a small personal file and separate visual or shared settings. Keep a copy of ~/.taskrc before making a series of edits; the task database and configuration are separate, so backing up only one does not protect the other.
Check the effective data directory
If commands show an unexpected task list, inspect the settings rather than creating another list by accident:
task show | grep -E 'data.location|rc|taskdata'
The exact display formatting can vary, so the important check is whether the effective configuration points to the directory you expect. Also inspect the environment variables described above. A shell startup file that exports TASKDATA can override what you thought was the default.
Run a safe smoke test
The quickest functional test is to create one disposable task, display it, complete it, and confirm the default report. Run these commands from the same account that will own your real task list:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minute- Add a clearly disposable item:
task add Test Taskwarrior installation - Display pending tasks with the explicit
nextreport:task next - Read the identifier printed for the new task. It may be a numeric ID in the report. Substitute that identifier for
<ID>and mark the item complete:task <ID> done - Run Taskwarrior without a command:
task
The project tutorial notes that next is the default report, so the final command should show your remaining actionable tasks. Because the test item is completed, it should not remain in that pending view. If you prefer to remove a test item without completing it, use the delete action for its printed ID instead; only delete a task you know is disposable.
What a successful test proves
- The shell can find the intended
taskexecutable. - Taskwarrior can read or create its configuration.
- The configured data directory is writable by your user.
- The database can accept a new record and update its status.
- The reporting command can read the resulting data.
This test does not configure synchronization, backups, recurring task policy, or a team workflow. Those are separate decisions and should not be introduced until local operation is working.
Rank #4
Understand Taskwarrior 3 storage
Taskwarrior 3.5.0 uses the TaskChampion database file taskchampion.sqlite3 in the task-data directory. It is not a collection of the old Taskwarrior 2 record files. Protect the entire task-data directory, including the database and any related files, when making a backup.
Do not place that directory under ordinary file synchronization. The project warns that tools such as Syncthing and rsync can appear to work while causing database corruption, and this usage is unsupported. A copied database is not a safe substitute for a documented synchronization protocol.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Upgrade from Taskwarrior 2 safely
A Taskwarrior 2 to 3 upgrade is a data migration, not a simple in-place binary replacement. Version 2 stored task records in .data files, while version 3 stores them in taskchampion.sqlite3. Version 3 also changed synchronization behavior.
Prepare a rollback
- Stop using the old installation while you prepare the migration so new changes are not split between two data sets.
- Make a complete backup of the Taskwarrior 2 configuration and data directories. Keep the backup somewhere outside the directory you will import.
- Record the old executable version and any synchronization arrangement, especially whether the old installation used
taskd. - Install Taskwarrior 3.3.0 or later. The current upstream release, 3.5.0, satisfies that minimum.
Import the old records
Run the version-3 import command with hooks disabled for that invocation:
task import-v2 rc.hooks=0
Disabling hooks prevents old automation from running unexpectedly during conversion. Read the current upgrade instructions for the release you install, follow any prompts, and verify the imported task count and representative tasks before deleting the backup.
Plan for the synchronization change
Taskwarrior 3 does not interface with the old taskd synchronization system. If your Taskwarrior 2 setup depended on taskd, do not assume that installing version 3 preserves that service. Decide on a supported version-3 synchronization method before treating the migration as complete, and keep the version-2 backup until the new workflow has been tested on every device.
Set up synchronization only when necessary
A single-device user can work indefinitely without synchronization. For multiple replicas, Taskwarrior documents the task sync command and supports either a cloud-storage provider or a TaskChampion sync server.
Best Value
Synchronization is a two-sided operation. In general, a change must be synchronized on the device where it was made and synchronized again on the destination before that destination receives it. Plan for both steps when testing a new device; seeing a successful sync on one machine does not prove that another replica has received the change.
Never synchronize the database directory directly
Do not point Syncthing, rsync, or a similar generic file-copy utility at the directory containing taskchampion.sqlite3. Concurrent or partial file operations can corrupt the database, and this arrangement is unsupported. Use a documented provider or TaskChampion sync server through Taskwarrior’s own synchronization commands.
Troubleshoot common installation problems
task is not found
Check the package installation result and your path:
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →command -v task
task --version
For a source build, verify that sudo cmake --install build completed and that its installation directory is on PATH. If another path appears first, adjust the shell’s path or remove the unintended older package before continuing.
The installed version is not 3.5.0
This usually means your distribution repository supplies a different release. That is normal. Decide whether the repository version meets your needs; if an exact upstream version is required, use the source-build route and verify the resulting executable with task --version.
Taskwarrior asks to create files every time
Inspect ~/.taskrc, the TASKRC variable, and XDG_CONFIG_HOME. You may be launching Taskwarrior with a different configuration path in each shell. Then run task show and confirm that data.location points to a writable directory.
Settings are ignored or reported as unknown
Run task show and compare each setting name with the documentation for your installed version. Remove obsolete or misspelled overrides with task config name. Remember that a temporary rc.name=value override affects only the command on which it appears.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallThe task list is unexpectedly empty
Do not immediately add replacement tasks. First compare the effective configuration and environment variables with the location used by your previous installation. A different TASKDATA, TASKRC, or XDG path can select a separate, perfectly valid database.
Quick Recap
A practical post-install checklist
- Run
task --versionand record the installed version. - Run
task showand confirm the configuration file and data location. - Confirm that
taskchampion.sqlite3is inside the intended task-data directory for version 3. - Complete the disposable add–next–done test and remove any test item you did not complete.
- Back up both the configuration and task-data directory before importing old data or changing synchronization.
- If migrating from version 2, use
task import-v2 rc.hooks=0and retain the old backup until verification is finished. - If using more than one device, choose a documented synchronization provider or TaskChampion server; never synchronize the database directory with generic file-sync tools.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

