Applications on Wayfire

Setup Wayfire Basic Environment

[ App Menu ] (wofi)

yay -S wofi
# ~/.config/wayfire.ini
    ...
# Start your launcher
# https://hg.sr.ht/~scoopta/wofi
# Note: Add mode=run or mode=drun to ~/.config/wofi/config.
# You can also specify the mode with --show option.
binding_launcher = <super> KEY_D # <-- Change key binding
command_launcher = wofi --show drun # <-- Change exec command
    ...

[ Web Browser ] (firefox)

yay -S firefox

Now you can use Wofi to open Firefox

[ Notification ] (dunst)

yay -S dunst libnotify

Dunst’s config file => ~/.config/dunst/dunstrc

mkdir ~/.config/dunst
cp /etc/dunst/dunstrc ~/.config/dunst/dunstrc

Change notification app to dunst

# ~/.config/wayfire.ini
    ...
# Notifications
# https://wayland.emersion.fr/mako/
notifications = mako # <-- change to dunst
    ...

After restarting Wayfire, you can try sending notification

dunstify "hello!"

[ Autostart Script ]

You can store your script anywhere, but I prefer store it in ~/.config/wayfire/autostart.sh

mkdir ~/.config/wayfire
touch ~/.config/wayfire/autostart.sh
chmod +x ~/.config/wayfire/autostart.sh

You need to specify script in ~/.config/wayfire.ini

# ~/.config/wayfire.ini
    ...
# Startup commands ─────────────────────────────────────────────────────────────

[autostart]

# Automatically start background and panel.
# Set to false if you want to override the default clients.
autostart_wf_shell = true # <-- You can set false
my_autostart = ~/.config/wayfire/autostart.sh # <-- Add this line
    ...

[ Wallpaper ] (swaybg)

yay -S swaybg

Our wallpaper should execute during Wayfire starting process, so we need to execute swaybg command in our autostart script.

# ~/.config/wayfire/autostart.sh

### Wallpaper
swaybg -i <your_wallpaper> &

[ XDG-DESKTOP-PORTAL and Audio]

yay -S xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk

The main reason setting up xdg-desktop-portal is to using desktop recorder such as Obs Studio
So, we need to start xdg-desktop-portal service and audio service in autostart script.

# ~/.config/wayfire/autostart.sh
    ...
### XDG-DESKTOP-PORTAL
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
systemctl --user stop pipewire pipewire-pulse wireplumber xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk
systemctl --user start pipewire pipewire-pulse wireplumber xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtk

For xdg-desktop-portal service, you can install obs-studio and try desktop recording
For audio service, you can run wpctl status and check the ouput.

# Ouput of 'wpctl status'
    ...
Audio
  |- Devices:
  | ...
  |- Sinks:
  |      * <something_here> ... [vol: 1.00]
    ...

[ Bar ] (waybar)

yay -S waybar

You may need some special fonts to show icon.

# Nerd Fonts - Ubuntu
yay -S ttf-ubuntu-nerd

You can copy two default config files in any place you want

cp /etc/xdg/waybar/config.jsonc ~/.config/wayfire/waybar-config.jsonc
cp /etc/xdg/waybar/style.css ~/.config/wayfire/waybar-style.css

Put waybar command in autostart script

# ~/.config/wayfire/autostart.sh
    ...
### Waybar
waybar -c <your_waybar_config> -s <your_waybar_style> &

[ Network Applet ] (network-manager-applet)

network-manager-applet is a small tool to configure your network connection in GUI

yay -S network-manager-applet

Add command in your autostart script

# ~/.config/wayfire/autostart.sh
    ...
### NetworkManager Applet
nm-applet &

[ Audio Control ] (pavucontrol)

pavucontrol is a small tool to configure your audio optput device in GUI

yay -S pavucontrol

[ Bluetooth ] (bluez bluez-obex blueman)

yay -S bluez bluez-obex blueman

Enable bluez service

systemctl enable bluetooth.service
systemctl start bluetooth.service

Edit your autostart script

# ~/.config/wayfire/autostart.sh
    ...
### Bluetooth
systemctl --user restart dbus-org.bluez.obex.service
systemctl --user restart blueman-applet.service

Edit your Dunst’s config file (For bluetooth message actions)

# ~/.config/dunst/dunstrc
    ...
    ### Misc/Advanced ###

    # dmenu path.
    dmenu = /usr/bin/wofi -dmenu # <-- Change here to wofi
    ...

By default, mouse middle click event triggers notify action

# ~/.config/dunst/dunstrc
    ...
    ### mouse

    # Defines list of actions for each mouse event
    # Possible values are:
    # * none: Don't do anything.
    # * do_action: Invoke the action determined by the action_name rule. If there is no
    #              such action, open the context menu.
    # * open_url: If the notification has exactly one url, open it. If there are multiple
    #             ones, open the context menu.
    # * close_current: Close current notification.
    # * close_all: Close all notifications.
    # * context: Open context menu for the notification.
    # * context_all: Open context menu for all notifications.
    # These values can be strung together for each mouse event, and
    # will be executed in sequence.
    mouse_left_click = close_current
    mouse_middle_click = do_action, close_current # <-- Here
    mouse_right_click = close_all
    ...

(For Chinese User) [ Fcitx5 ]

You may want read wiki link

# For Pinyin
yay -S fcitx5 fcitx5-qt fcitx5-gtk fcitx5-chinese-addons fcitx5-configtool
# For Chewing
yay -S fcitx5 fcitx5-qt fcitx5-gtk fcitx5-chinese-addons fcitx5-configtool fcitx5-chewing

You can edit your ~/.bashrc (For Bash User) or ~/.zshrc (For Zsh User) to add fcitx5 environment variables

# ~/.bashrc
    ...
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"
export SDL_IM_MODULE="fcitx"
export INPUT_METHOD="fcitx"

Do not forget source ~/.bashrc or source ~/.zshrc
Edit your wayfire config to enable input method plugin

# ~/.config/wayfire.ini
    ...
# List of plugins to be enabled.
# See the Configuration document for a complete list.
plugins = \
  alpha \
  animate \
  autostart \
  command \
  cube \
  decoration \
  expo \
  fast-switcher \
  fisheye \
  foreign-toplevel \
  grid \
  gtk-shell \
  idle \
  invert \
  move \
  oswitch \
  place \
  resize \
  switcher \
  vswitch \
  wayfire-shell \
  window-rules \
  wm-actions \
  wobbly \
  wrot \
  zoom \
  input-method-v1  # <-- add this line

Finally, add Fcitx5 in your autostart script

# ~/.config/wayfire/autostart.sh
    ...
### Fcitx5
fcitx5 --replace -d &