Nova Flow OS
KDE Developer Platform
KDE Developer Platform
  • KDE Developer Platform
    • Getting started
      • Building KDE software
        • KDE software
        • Where to find the development team
        • Learning more
        • Choose what to work on
        • Source code cross-referencing
        • Installing build dependencies
        • Set up a development environment
        • Building KDE software with kdesrc-build
        • Basic troubleshooting
        • Tips and tricks
        • IDE Configuration
          • Setting up an IDE for KDE development
          • Visual Studio Code
          • Qt Creator
          • Kate
          • KDevelop
          • CLion
          • Sublime Text
        • Building KDE software manually
        • Building KDE software with distrobox and podman
      • Kirigami
        • KDE is ours
        • Setting up and getting started
        • Explaining pages
        • Layouts, ListViews, and Cards
        • Adding actions
        • Adding a dialog
        • Using separate files
        • Next steps
        • Colors and themes in Kirigami
        • Typography
        • Actions based components
        • Page rows and page stacks
        • Scrollable pages and list views
        • Cards
        • Drawers
        • Chips
        • Dialog types
        • Controls and interactive elements
        • Form layouts
        • Inline messages
        • Action toolbars
        • Progress bars and indicators
        • List views
        • Understanding CMakeLists
        • Figuring out main.cpp
        • Connect logic to your QML user interface
        • Connect models to your QML user interface
        • About page
        • Introduction to Kirigami Addons
        • FormCard About pages
        • Form delegates in your settings pages
      • KXmlGui
        • Getting started with KXmlGui
        • Hello World!
        • Creating the main window
        • Using actions
        • Saving and loading
        • Command line interface
      • Python with Kirigami
        • Apps with QML and Python
        • Your first Python + Kirigami application
        • Creating a Python package
        • Creating a Flatpak
      • Common programming mistakes
      • Adding a new KDE project
    • Features
      • Icons
      • Configuration
        • The KConfig Framework
        • Introduction to KConfig
        • Using KConfig XT
        • KDE Frameworks 6 porting guide
        • Settings module (KCM) development
        • KConfigDialog
      • D-Bus
        • What is D-Bus practically useful for?
        • Introduction to D-Bus
        • Accessing D-Bus interfaces
        • Intermediate D-Bus
        • Creating D-Bus interfaces
        • Using custom types with D-Bus
        • D-Bus autostart services
      • Create your own mouse cursor theme
      • Session management
      • Archives
      • Desktop file
      • KAuth
        • Privilege Escalation
        • Using actions in your applications
      • KIdleTime
      • Akonadi: personal information management
        • Debugging Akonadi Resources
        • Using Akonadi in applications
      • Concurrent programming
      • Solid
      • Sonnet
    • Plasma themes and plugins
      • Getting started
      • Plasma Widget tutorial
        • How to create a plasmoid
        • Setup
        • Porting Plasmoids to KF6
        • Testing
        • QML
        • Plasma's QML API
        • Widget Properties
        • Configuration
        • Translations / i18n
        • Examples
        • C++ API
      • KWin Effects
      • Plasma Desktop scripting
        • Javascript Interaction With Plasma Shells
        • Templates
        • Examples
        • API documentation
        • Configuration keys
      • Plasma Style tutorial
        • Creating a Plasma Style quickstart
        • Understanding Plasma Styles
        • SVG elements and Inkscape
        • Background SVG format
        • System and accent colors
        • Theme elements reference
        • Porting themes to Plasma 5
        • Porting themes to Plasma 6
      • Aurorae window decorations
      • KWin scripting tutorial
        • Quick start
        • KWin scripting API
      • Wallpapers
      • Plasma comic
        • Tutorial
        • Testing and debugging
        • Examples
      • Create a custom Window Switcher
      • KRunner C++ Plugin
        • Basic Anatomy of a Runner
        • KRunner metadata format
    • Applications
      • Creating sensor faces
      • Dolphin
        • Creating Dolphin service menus
      • Kate
        • Kate plugin tutorial
      • KMines
        • Making a KMines theme
      • Writing tests
        • Appium automation testing
    • Packaging
      • Android
        • KDE on Android
        • Building applications for Android
        • Packaging and publishing applications for Android
        • Publishing on Google Play
          • Introduction
          • Packaging your app
          • Adding your app to Google Play
          • Publishing your app
          • Releasing new versions of old apps
        • Porting applications to Android
          • Basic porting
          • Making applications run well on Android
          • Metadata
      • Windows
        • Packaging and publishing applications for Windows
        • Publish your app in the Microsoft Store
          • Packaging your app for the Microsoft Store
          • Submitting your app to the Microsoft Store
      • Plasma Mobile
        • KDE on mobile devices
        • Porting a new device to Plasma Mobile
        • KDE Telephony stack
          • General Overview
          • Kernel layer
          • System daemons
            • General overview
            • Developing Telephony functionality
            • ModemManager Telephony functions
          • Session daemons
          • QML declarative plugin layer
          • KDE application layer
        • Execute applications
      • Distributing KDE software as Flatpak
        • Your first Flatpak
        • Extending your package
        • Nightly Flatpaks and Flathub
        • Testing your Flatpak
    • System administration
      • Shell scripting with KDE dialogs
      • Kiosk: Simple configuration management for large deployment
        • Abstract
        • Introduction to Kiosk
        • Kiosk keys
    • Contribute to the documentation
    • About
      • Readme
      • License
        • Creative Commons Attribution-ShareAlike 4.0 International
        • GNU General Public License 3.0 or later
Powered by GitBook
On this page
  • Installation
  • Setup
  • Working on a project
  • Troubleshooting
  • Tips
  • Notes
  1. KDE Developer Platform
  2. Getting started
  3. Building KDE software
  4. IDE Configuration

Visual Studio Code

Popular, customizable, has support for many programming languages.

PreviousSetting up an IDE for KDE developmentNextQt Creator

Last updated 8 months ago

Microsoft Visual Studio Code (VS Code) is a popular cross-platform, general-purpose, open source IDE. Thanks to its powerful extensions ecosystem it supports many languages as well as deep customization options for themes, fonts, keyboard controls, and more.

A screen recording version is available

Installation

sudo pacman -S vscode

| | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Fedora |

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
dnf check-update
sudo dnf install code

|

Setup

To enable this feature, first ensure that kdesrc-build is installed and configured; then enable the feature in the kdesrc-build configuration file (located at ~/.config/kdesrc-buildrc by default) - ensure these options are in the global section and set to true:

global
    # ... other settings ...

    compile-commands-linking true
    compile-commands-export true

    generate-vscode-project-config true
end global

With these settings, projects built by kdesrc-build will have the hidden .vscode folder created in their source directory; for example, for KCalc this would be kde/src/kcalc/.vscode.

The configuration files are generated when a project is built or rebuilt with kdesrc-build. If you have already built the project you want to work on before enabling the generate-vscode-project-config option, make sure to rebuild it before opening it in VS Code.

Working on a project

Tip The [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#\_command-palette) (`Ctrl+Shift+P`) is your friend. It allows you to search for and run commands and it is a great way to discover features.

Opening the project

The project can be opened as a workspace in vs code by opening the src directory as a folder:

  • File -> Open Folder...

  • Select the project's source code directory: ~/kde/src/kcalc

If you have the kdesrc-build configuration set up as described above, VS Code will automatically detect the .vscode folder and load the project with the correct settings.

The following configuration sections will only need to be done the first time you open a new project in VS Code.

Installing extensions

A notification popup at the bottom-right of the window will ask if you want to install the recommended extensions for working on this project:

These extensions add support to VS Code for technologies commonly used in KDE projects, such as CMake, C++, Qt, and more.

Click Install.

Configuring the project

After the extensions have been installed:

  • If a notification prompt asks if you want to switch to a pre-release version of the C++ extension, click No.

  • A notification prompt will ask Would you like to configure project "kcalc"? Click Yes.

A prompt will open at the top-middle of the window asking to choose a kit (a set of predefined configurations used when building and running the project). Select Unspecified to have the kit chosen automatically based on the project and system configuration:

The integrated terminal will open at the bottom of the window, and if the project was configured successfully, the last line should say:

[cmake] -- Build files have been written to: /home/<username>/kde/build/kcalc

You are ready to start working on the code with VS Code! 🎉

Debugging

To start debugging, click on the Run and Debug icon on the left sidebar, then click on the green play button to start debugging.

If the project has multiple targets it will open a prompt at the top-middle of the window asking to choose a target. Select the target you want to debug; in this case, kcalc:

We should now be running a debug session of the kcalc project. 🚀

To later change the target, open the Command Palette (Ctrl+Shift+P) and run the CMake: Set Debug Target command.

Debugging KCMs

Note

The configurations for KCMs are only generated by the newer kde-builder build tool, and not by the legacy kdesrc-build tool.

Note

The configurations for KCMs are only generated by the newer kde-builder build tool, and not by the legacy kdesrc-build tool.

We'll use the plasma-workspace project as an example, as it contains many KDE Configuration Modules (KCMs).

Open the build target selector by clicking the button (defaults to all):

Filter for KCMs by typing kcm_ in the popup, and choose one of the options marked MODULE_LIBRARY that represents a KCM:

Now you can start debugging the KCM by selecting the kcm launch configuration and clicking the green play button:

The KCM will open in a new window, and the debugger will hit breakpoints in the C++ code. Breakpoints in QML are sadly not possible.

Debugging with external executables

When developing a library, it may be convenient to launch an application that uses it from the current project. For example, working with Ark's libraries used in Dolphin context menu actions. You can set your run configuration to launch a custom binary, such as dolphin.

To do that, follow these steps:

  1. Open your launch.json file (Run -> Open Configurations).

  2. Copy the existing launch configuration from the configurations entry in launch.json and paste it as a new one.

  3. In the name field, use something meaningful; for example "Launch Dolphin" so you will recognize it from the run configuration dialog.

  4. In the program field, use the path to the executable to be run. For example, /home/username/kde/usr/bin/dolphin.

  5. Save the launch.json file.

Example of edited launch.json
         },
+        {
+            "name": "Launch Dolphin",
+            "type": "cppdbg",
+            "request": "launch",
+            "program": "/home/andrew/kde6/usr/bin/dolphin",
+            "args": [],
+            "preLaunchTask": "KDE Builder pre-launch task",
+            "stopAtEntry": false,
+            "cwd": "${workspaceFolder}",
+            "environment": [
+                {
+                    "name": "PATH",
+                    "value": "/home/andrew/kde6/usr/bin:${env:PATH}"
+                },
+                {
+                    "name": "XDG_DATA_DIRS",
+                    "value": "/home/andrew/kde6/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
+                },
+                {
+                    "name": "XDG_CONFIG_DIRS",
+                    "value": "/home/andrew/kde6/usr/etc/xdg:${env:XDG_CONFIG_DIRS}:/etc/xdg"
+                },
+                {
+                    "name": "QT_PLUGIN_PATH",
+                    "value": "/home/andrew/kde6/usr/lib/plugins:${env:QT_PLUGIN_PATH}"
+                },
+                {
+                    "name": "QML2_IMPORT_PATH",
+                    "value": "/home/andrew/kde6/usr/lib/qml:${env:QML2_IMPORT_PATH}"
+                },
+                {
+                    "name": "QT_QUICK_CONTROLS_STYLE_PATH",
+                    "value": "/home/andrew/kde6/usr/lib/qml/QtQuick/Controls.2/:${env:QT_QUICK_CONTROLS_STYLE_PATH}"
+                },
+                {
+                    "name": "MANPATH",
+                    "value": "/home/andrew/kde6/usr/share/man:${MANPATH:-/usr/local/share/man:/usr/share/man}"
+                },
+                {
+                    "name": "SASL_PATH",
+                    "value": "/home/andrew/kde6/usr/lib/sasl2:$SASL_PATH"
+                }
+            ],
+            "envFile": "/home/andrew/kde6/qt_logging_environment.sh", // cannot be a script, see https://github.com/microsoft/vscode-cpptools/issues/9329 feature request.
+            "externalConsole": false,
+            "MIMode": "gdb",
+            "setupCommands": [
+                {
+                    "description": "Enable pretty-printing for gdb",
+                    "text": "-enable-pretty-printing",
+                    "ignoreFailures": true
+                }
+            ]
+        },
         {
             // Debug a KCM.
             "name": "kcm",
             "type": "cppdbg",

When you debug with this configuration Ark will be built, but Dolphin will be launched, and the IDE can still hit breakpoints in the Ark code.

Troubleshooting

  • Reloading the window (Command Palette -> Developer: Reload Window) can fix some issues, and cause notifications/prompts to reappear if they were missed.

  • Command Palette -> CMake: Delete Cache and Reconfigure or CMake: Reset CMake Tools Extension State (For troubleshooting) can be useful if things are not working as expected.

Note

In case something goes wrong in config generation, if using kde-builder, you can use the ide_project_configs logger. Create the file ~/.config/kde-builder-logging.yaml with the following content:

loggers:
  ide_project_configs:
    level: DEBUG
    handlers: [console-named]

After that, run kde-builder as normal, and you will see corresponding debug messages.

Tips

  • There is extensive documentation available for VS Code at https://code.visualstudio.com/docs.

  • There are first-party video tutorials available at https://code.visualstudio.com/docs/getstarted/introvideos.

Notes

| , |

The KDE build tool can automatically generate the configuration files needed for VS Code to work with KDE projects.

We will use as an example.

Now open "Run" from the Activity Bar. Select newly appeared "Launch Dolphin" configuration.

The (Ctrl+Shift+P) is your friend. It allows you to search for and run commands, and is a great way to discover features.

The templates for the .vscode configuration files are available if you need to reference them or create them manually.

Manjaro
Arch
kdesrc-build
KCalc
view
Command Palette
here
Screenshot of the prompt to install recommended extensions
Screenshot of the prompt to configure the project
Screenshot of the prompt to select a kit
Screenshot of the terminal showing successful configuration
Screenshot of how to start a debug session
Screenshot of the prompt to select a target
Screenshot of the debug session
Screenshot of button to choose the build configuration
Screenshot filtering build targets for available KCMs
Screenshot of choosing the kcm launch configuration
Screenshot of kcm running