/i3-pager

Plasmoid pager for integrating i3 with KDE Plasma

Primary LanguageQMLGNU General Public License v3.0GPL-3.0

i3-pager

A plasmoid for integrating i3 with KDE Plasma.

image

Installation

  • Install system dependencies: libsigc++-2.0 libjsoncpp extra-cmake-modules qt-labs-qmlmodels make cmake

    • For Debian based distros:

      sudo apt install -y libsigc++-2.0-dev libjsoncpp-dev extra-cmake-modules qml-module-qt-labs-qmlmodels make cmake
  • Build and install i3-pager:

    git clone https://github.com/duvholt/i3-pager.git --recurse-submodules
    cd i3-pager
    cmake -DCMAKE_INSTALL_PREFIX=$(kf5-config --prefix) -DCMAKE_BUILD_TYPE=Release -B build
    make -j $(nproc) -C build
    sudo make -C build install
  • Add i3-pager plasmoid to either Plasma dock or Latte-dock.

Features

  • Shows current mode
  • Shows workspaces
    • Allows filtering by the current screen
    • Show workspace icons using Font Awesome

Configuration

Multiple screens

If you have multiple screens you need to either put i3-pager on both or you need to disable Filter workspaces by current screen in the plasmoid setting. Otherwise you are only going to see the workspaces on the current screen.

Workspace name and icon

i3-pager supports setting name and icon per workspace using Font Awesome.

# <ws number>:<ws name>:<Font Awesome unicode glyph>
set $ws1 "1:General:�~J�"
set $ws2 "2:Chat:�~B~F"
set $ws3 "3:Code:�~D�"
set $ws4 "4:Terminal:�~D| "

# Use $ws1 etc as you normally would e.g:
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4

Available icons are listed here.

Select an icon and click Copy Unicode Glyph.

If you can't see any icons make sure Font Awesome is installed as Font Awesome 5 Free Solid. Try running fc-match "Font Awesome 5 Free Solid" and see if you get a match.

You can choose to hide workspace names in the plasmoid settings.

Development

Build with debug mode:

cmake -DCMAKE_INSTALL_PREFIX=$(kf5-config --prefix) -DCMAKE_BUILD_TYPE=Debug -B build
make -C build
sudo make -C build install

This will install the plasmoid globally as I'm not aware of a way to access the plasmoid C++ plugin without globally installing it. To see changes restart Plasma:

killall plasmashell; kstart5 plasmashell

Plasmoid

The plasmoid folder contains the code for the widget and settings.

To quickly prototype changes use plasmoidviewer:

plasmoidviewer --applet plasmoid

For better logging override QT's log format:

QT_MESSAGE_PATTERN="[%{type}] (%{function}:%{line}) - %{message}" plasmoidviewer --applet plasmoid

To see changes in plasmoidviewer has to be restarted, but there is no need to run make unless there are changes in the C++ plugin.