Bug 510472

Summary: Kiosk mode (fullscreen, single window, single tab terminal) to support userspace VT features
Product: [Applications] konsole Reporter: Neal Gompa <ngompa>
Component: generalAssignee: Konsole Bugs <konsole-bugs-null>
Status: NEEDSINFO WAITINGFORINFO    
Severity: wishlist CC: dipesh, kdedev, nicolas.fella
Priority: NOR    
Version First Reported In: 25.08.2   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
See Also: https://invent.kde.org/utilities/konsole/-/issues/48
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: test.sh shell script
Version 2 of the shell script
Version 3 of the test.sh shell script

Description Neal Gompa 2025-10-10 21:55:57 UTC
SUMMARY
In Fedora, we're working on replacing the kernel VT (fbcon) with a Wayland-based one, and we want Konsole+KWin to be a supported option.

So I need a way to launch konsole, without menu/toolbar/tabs, and to disable features that won't work in a single-application wayland environment (like opening file Manager or URL).

Also the user launching konsole is a dummy user, without home folder.

Currently I can remove the main and session toolbar by going in the settings->Toobars Shown menu, and unchecking both toolbars, but it would be better to have a command line argument.

For reference, here is the current script to start kwin_wayland/konsole on a VT:
https://gitlab.com/kdj0c/userspacevt/-/blob/main/kdevt/usr/lib/systemd/system/kdevt@.service?ref_type=heads

And here is a test package for Fedora, so you can see what it looks like:
https://copr.fedorainfracloud.org/coprs/jfalempe/Userspacevt/


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Fedora KDE Plasma Desktop Edition 44
KDE Plasma Version: 6.4.91
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0

ADDITIONAL INFORMATION
This was originally filed in https://invent.kde.org/utilities/konsole/-/issues/48
Comment 1 Nicolas Fella 2025-10-17 09:45:50 UTC
It might make more sense to start with a minimal application around konsolepart. That way we don't have any toolbars etc to remove in the first place
Comment 2 Bug Janitor Service 2025-12-22 17:39:46 UTC
A possibly relevant merge request was started @ https://invent.kde.org/utilities/konsole/-/merge_requests/1158
Comment 3 Sebastian Sauer 2025-12-22 17:43:08 UTC
(In reply to Bug Janitor Service from comment #2)
> A possibly relevant merge request was started @
> https://invent.kde.org/utilities/konsole/-/merge_requests/1158

With that MR merged it will be possible to just use something like:

```
konsole --hide-toolbars --hide-tabbar --hide-menubar --fullscreen
```
Comment 4 Christoph Cullmann 2026-01-10 19:28:41 UTC
Git commit 8ab98bb083a7d1a1f3649a9d99e41b529668acc7 by Christoph Cullmann, on behalf of Sebastian Sauer.
Committed on 10/01/2026 at 19:17.
Pushed by cullmann into branch 'master'.

Add commandline arguments to show/hide toolbars

There exist already commandline arguments to show/hide the
menubar and the tabbar. What is missing is the possibility
to also show/hide toolbars using commandline arguments.

M  +15   -2    src/Application.cpp
M  +15   -4    src/MainWindow.cpp
M  +9    -4    src/MainWindow.h

https://invent.kde.org/utilities/konsole/-/commit/8ab98bb083a7d1a1f3649a9d99e41b529668acc7
Comment 5 Sebastian Sauer 2026-01-12 09:20:50 UTC
The MR for the command line argument was merged and will be available in 6.6.0. What is still missing is this part:

> disable features that won't work in a single-application wayland environment (like opening file Manager or URL).
Comment 6 Sebastian Sauer 2026-01-13 14:33:51 UTC
> disable features that won't work in a single-application wayland environment (like opening file Manager or URL).

Did try and this already works as described at:
https://develop.kde.org/docs/administration/kiosk/keys/

Reference for available actions:
https://invent.kde.org/utilities/konsole/-/blob/master/desktop/konsoleui.rc?ref_type=heads
https://invent.kde.org/utilities/konsole/-/blob/master/desktop/partui.rc?ref_type=heads
https://invent.kde.org/utilities/konsole/-/blob/master/desktop/sessionui.rc?ref_type=heads

For testing adjust for example your $HOME/.config/konsolerc and:

To disable specific actions like "Open Folder With", the websearch, etc use something like:

```
[KDE Action Restrictions][$i]
action/openwith=false
action/web-search=false
action/open-browser=false
action/switch-profile=false
action/edit-current-profile=false
action/allow-mouse-tracking=false
```

To just disable all actions:
```
action/file=false
action/edit=false
action/view=false
action/bookmark=false
action/plugins=false
action/settings=false
action/help=false
action/session-popup-menu=false
```

So marking the bug resolved then or is there something else left or am I missing something?
Comment 7 Neal Gompa 2026-01-14 15:12:24 UTC
This can't be done via config file, because it would affect the user profile in either the VT-replacement case or the full desktop one.
Comment 8 Sebastian Sauer 2026-01-16 14:02:54 UTC
Created attachment 188588 [details]
test.sh shell script

> This can't be done via config file, because it would affect the user profile in either the VT-replacement case or the full desktop one.

I attached the test.sh shell script which looks like this (inlining to make it discoverable via search):

> #!/bin/bash -e
> prev_XDG_CONFIG_HOME=$XDG_CONFIG_HOME
> prev_XDG_DATA_HOME=$XDG_DATA_HOME
> prev_XDG_STATE_HOME=$XDG_STATE_HOME
> prev_XDG_CACHE_HOME=$XDG_CACHE_HOME
> export XDG_CONFIG_HOME=$HOME/.kiosk/.config
> export XDG_DATA_HOME=$HOME/.kiosk/.local/share
> export XDG_STATE_HOME=$HOME/.kiosk/.local/state
> export XDG_CACHE_HOME=$HOME/.kiosk/.cache
> konsolerc=$XDG_CONFIG_HOME/konsolerc
> kioskprofile=$XDG_DATA_HOME/konsole/KonsoleKiosk.profile
> mkdir -p $XDG_CONFIG_HOME 2>/dev/null
> mkdir -p $XDG_DATA_HOME/konsole 2>/dev/null
> /bin/cat <<EOM >$konsolerc
> [Desktop Entry]
> DefaultProfile=KonsoleKiosk.profile
> [General]
> ConfigVersion=1
> [MainWindow]
> MenuBar=Enabled
> [Notification Messages]
> CloseAllEmptyTabs=true
> CloseAllTabs=true
> [TabBar]
> CloseTabButton=None
> CloseTabOnMiddleMouseButton=true
> TabBarVisibility=AlwaysShowTabBar
> [UiSettings]
> ColorScheme=
> EOM
> /bin/cat <<EOM >$kioskprofile
> [General]
> Environment=TERM=xterm-256color,COLORTERM=truecolor,XDG_CONFIG_HOME=$prev_XDG_CONFIG_HOME,XDG_DATA_HOME=$prev_XDG_DATA_HOME,XDG_STATE_HOME=$prev_XDG_STATE_HOME,XDG_CACHE_HOME=$prev_XDG_CACHE_HOME
> Name=KonsoleKiosk
> Parent=FALLBACK/
> EOM
> konsole --hide-menubar --hide-toolbars --hide-tabbar --notransparency &

That works for me as expected.

What it does is to use different XDG environments for KonsoleKiosk vs KonsoleNormal what
means they will not affect each other. Also with that solution KonsoleKiosk can be
preconfigured and the config+profile will always be restored.

@ngompa Is that an acceptable solution? If not then it would be good to know why and/or
how it should be so I understand better what is missing and what changes are needed to
konsole and/or kiosk. Thanks in advance and best regards.
Comment 9 Sebastian Sauer 2026-01-16 15:14:48 UTC
Created attachment 188592 [details]
Version 2 of the shell script
Comment 10 Sebastian Sauer 2026-01-16 15:15:31 UTC
Created attachment 188593 [details]
Version 3 of the test.sh shell script
Comment 11 Bug Janitor Service 2026-01-16 15:23:10 UTC
A possibly relevant merge request was started @ https://invent.kde.org/utilities/konsole/-/merge_requests/1169
Comment 12 Christoph Cullmann 2026-01-17 18:51:17 UTC
Git commit 581755fdb70249fe9d5e0a521c04c3f7e3639528 by Christoph Cullmann, on behalf of Sebastian Sauer.
Committed on 17/01/2026 at 18:45.
Pushed by cullmann into branch 'master'.

Fix nullptr-deref crashes when kiosk is used to disable menus

factory()->container() returns a nullptr when the menu is not defined
in the (konsoleui|partui|sessionui).rc file or when the menu was
disabled using Kiosk. In that case Konsole crashes due to nullptr
deref. Fix that.

M  +24   -21   src/MainWindow.cpp

https://invent.kde.org/utilities/konsole/-/commit/581755fdb70249fe9d5e0a521c04c3f7e3639528
Comment 13 Sebastian Sauer 2026-01-23 12:35:27 UTC
Alternate way:

An example that implements Nicolas suggestion to load the konsole kpart into your own minimal app is done in 44 lines of code at:
https://invent.kde.org/saueseb/konsolekpart

Closing again in the hope that either one of the two suggested solutions do the job xor get more feedback.
Comment 14 Bug Janitor Service 2026-02-07 03:50:51 UTC
๐Ÿ›๐Ÿงน โš ๏ธ This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information, then set the bug status to REPORTED. If there is no change for at least 30 days, it will be automatically closed as RESOLVED WORKSFORME.

For more information about our bug triaging procedures, please read https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging.

Thank you for helping us make KDE software even better for everyone!
Comment 15 Neal Gompa 2026-02-11 18:51:04 UTC
I'm going to take a crack at these options. Thanks for the advice.