#!/bin/bash emacsclient -e '(message "")' 2>&1 >/dev/null || emacs --daemon & emacs_attached() { [ "$(emacsclient -e '(- (length (frame-list)) 1)')" = 0 ] && return 1 || return 0 } if emacs_attached; then # focus emacs swaymsg [con_id="$(swaymsg -t get_tree | jq -r '.nodes[1].nodes[].nodes[] | .. | (.id|tostring) + " " + .name?' | grep -e "[0-9]* ." | grep Emacs | awk '{print $1}')"] focus else emacsclient -c fi