Updated 291 Days AgoPublic

A twin panel file manager. Written in C++11 with Qt5 and KF5.

Useful links


  • Forum (same purpose as user mailing list)



  • Repositories
    • Source code
      • Read-only: git://
      • Developer access:
      • Web-based browser
      • GitHub mirror (read-only, no pull requests accepted)
    • Website
      • Read-only: git://
      • Developer access:
      • Web-based browser
  • Jenkins (automatic build server, supports an RSS feed for the build status of origin/master)
  • Krazy (static code analysis service)
  • Coding Style (KDE Frameworks coding style is preferred for Krusader project)


  • IRC-channel: (good place for quick questions regarding everything KDE related)
  • Freedesktop icon names (official standard icon names, try to use these instead of names only included in Breeze to be more independent from the icon theme used)


I want to contribute. How to submit my first patch?


  1. Get a KDE identity account
  2. Create a new Diff:
  3. Wait for somebody to review and accept your diff.
My patch has been accepted, what now?

See workflow documentation, for your first patches you will usually have to ask your reviewers to land them.

I want to fix a bug but there is no bug report for it yet. Do I need to file one?

No, not if you are certain that it really is a bug. Feel free to just submit a review.

I am unsure about the right approach to solve an issue, what is the best place to discuss?

Ask us on the developer mailing list.

I want to know when a Krusader bug report is created (or changed)

To know when a Krusader bug report is created (or when an existing bug report is changed):

  • You must have an account in, then you can go to « > Preferences > Email preferences» and on the "User Watching" section you can add:

Commit/Patch guidelines

Familiarize yourself with commit message style by reading several commit messages in the repository. Notice that for simple changes we use single commits and for multiple related changes we use branches and merge them into master with a descriptive merge commit message.

If your commit/patch fixes a bug reported on, use both the FIXED: keyword with the bug number in square brackets and bug title, and 'BUG:' keyword that triggers the Git hook to close the bug. Refer to an example below.

Your change must be reviewed and approved before you can push it to master branch. We currently use Phabricator platform for code reviews.

Your commit (or branch merge if your change is a series of commits) must contain the code review link. It's recommended to place it on the last line and separate it from summary with an empty line. For example:

One-line commit title

Description of the change. The change description

FIXED: [ 123456 ] Bug title in case you fixed a bug
BUG: 123456

Differential Revision:

Once you push the commit to the repository, it will be automatically discovered by the Phabricator and it will close your code review (aka Differential) and put references to your commits.

If your changes are important enough to be included in the ChangeLog, please add a line to the commit message (summary text for the Differential on Phabricator for patches) beginning with one of these keywords {FIXED:, ADDED:, CHANGED:, REMOVED:} and a description. For example:

CHANGED: When the big red button is pressed, foo is activated and not bar anymore

This line should not be the title of the commit message/differential. Check git history and ChangeLog for more examples of using the keywords.

Best practice "Git vs. Phabricator" workflow

NOTE: this is only a guideline. You can use your own workflow but be sure it is "good". If you are new to Phabricator (or Git), better do as it is described here. If you are new to Krusader development and have suggestions on how to modify it, please contact krusader-devel group.

Phabricator has a major design flaw: it alters Git commits. When a differential diff is created with arc diff, the last commit message is modified with potentially a huge unformatted summary text and information specific to Phabricator. These are definitely NOT good commit messages. Second, when landing the diff, all commits are squashed into one. This is against the "split changes into logical chunks"-rule for version control systems. This is default and can be changed (with the --merge flag). It is still annoying.

Here is are workflow for circumventing unwanted modifications:

  • Create a new feature branch:

git checkout -b feature/new-foobar-widget

  • Make your changes/commits normally you would in Git
  • When done, you can upload your changes to Phabricator for review but before copy your feature branch for arc:

git checkout -b feature/new-foobar-widget-arc

  • Now upload with nice information:

arc diff --reviewers "#krusader"

Added new foobar widget

Bla, Bla, Bla Mr. Freeman.

NOTE: If your base branch is not master, specify the base branch as well. For example, arc diff --reviewers "#krusader" stable.
  • In case you need to make updates based on reviewer comment or further testing, commit changes to the arc branch and run arc diff <base-branch>. Revision will be updated with your changes. Cherry-pick your commits to non-arc branch.
  • Wait until your changes are accepted. Merge the non-arc branch with master (or simply cherry-pick and amend your commit in case of a single commit).

git checkout master && git merge feature/new-foobar-widget
Make sure you add code review link and keywords according to commit guidelines. The link and the keywords should go to either your single commit or branch merge commit, i.e. only appear once in history.

If your change contains multiple commits and you are still on top of master, please use --no-ff to keep it as a branch merge:
git checkout master && git merge --no-ff feature/new-foobar-widget

NOTE: Substitute master with your base branch if needed.

Example of branch merge commit:

Added new foobar widget

Merge branch 'feature/new-foobar-widget'

Differential Revision:

Done with git pull! The Differential diff should be automatically be closed (because of the reference).

Last Author
Krusader, abika