#!/bin/sh # This script, much like startx, starts a wayland session. # Startup programs, configuration and environment variables all # reside in $HOME/.local/share/startw # # PRELIMINARY CONFIGURATION # # Variable definitions STARTW_ROOT=$HOME/.local/share/startw DOTS_ROOT=$STARTW_ROOT/conf STARTW_LOG_FILE=$STARTW_ROOT/"err-$(date +%F).log" # Padding for systemd-less systems if test -z "${XDG_RUNTIME_DIR}"; then XDG_RUNTIME_DIR=/tmp/$(id -u)-runtime-dir export XDG_RUNTIME_DIR if ! test -d "${XDG_RUNTIME_DIR}"; then mkdir "${XDG_RUNTIME_DIR}" chmod 0700 "${XDG_RUNTIME_DIR}" fi fi # Start a local dbus daemon (required for mako) if ! pgrep -f "dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus" then dbus-daemon --session --address=unix:path="$XDG_RUNTIME_DIR"/bus 2>&1 | "$STARTW_ROOT"/addts >> "$STARTW_LOG_FILE" & fi # # APPLY USER CONFIG # # Remove broken links find -L "$HOME" -maxdepth 1 -type l -delete find -L "$HOME/.config" -maxdepth 1 -type l -delete # The conf folder contains two subfolders home # and config, everything in the home folder will # be symlinked to $HOME as a hidden file/folder, # whereas everything in the config folder will be # symlinked to $HOME/.config as-is # Dotfiles in these folder will be ignored for f in "$DOTS_ROOT"/home/* ; do # If the filename already exists and it is not a link override it if [ -e "$HOME/.$(basename "$f")" ]; then if [ ! -L "$HOME/.$(basename "$f")" ]; then rm -rf "$HOME/.$(basename "$f")" fi fi ln -sf "$f" "$HOME/.$(basename "$f")" done for f in "$DOTS_ROOT"/config/* ; do # If the filename already exists and it is not a link override it if [ -e "$HOME/.config/$(basename "$f")" ]; then if [ ! -L "$HOME/.config/$(basename "$f")" ]; then rm -rf "$HOME/.config/$(basename "$f")" fi fi ln -sf "$f" "$HOME/.config/" done # # SET ENVIRONMENT VARIABLES # # Enable wayland native support export _JAVA_AWT_WM_NONREPARENTING=1 # Breaks gtk dialog box as of 10-04-2020 export MOZ_ENABLE_WAYLAND=1 export MOZ_WEBRENDER=1 export SDL_VIDEODRIVER=wayland export QT_QPA_PLATFORM=wayland-egl export QT_WAYLAND_FORCE_DPI=physical export BEMENU_BACKEND=wayland # Set the hardware acceleration driver export LIBVA_DRIVER_NAME=radeonsi export VDPAU_DRIVER=radeonsi # Set the default interface used by wpa_cli export WPA_CLI_INTERFACE=wlp2s0 # Set the editor export EDITOR=vim export VISUAL=vim # Application compatibility export GIO_USE_VFS="local" export GIO_USE_VOLUME_MONITOR="unix" # XDG specification variables export XDG_CURRENT_DESKTOP=Unity export XDG_DATA_HOME=$HOME/.local/share export XDG_CACHE_HOME=$HOME/.cache export XDG_CONFIG_HOME=$HOME/.config xdg-user-dirs-update & # Clean home directory export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc export ATOM_HOME="$XDG_DATA_HOME"/atom export BASH_COMPLETION_USER_FILE="$XDG_CONFIG_HOME"/bash-completion/bash_completion export CARGO_HOME="$XDG_DATA_HOME"/cargo # Set user script dir export SCRIPT_DIR="$XDG_CONFIG_HOME"/scripts # Set WM variable for ufetch export WM=sway # Wallpaer export WALLPAPER="$HOME/Pictures/walls/waves.jpg" # Lock screen config export LOCK_SCREEN_WALLPAPER=$WALLPAPER export LOCK_SCREEN_COMMAND="swaylock -f -i $LOCK_SCREEN_WALLPAPER" # Do NOT uncomment this, breaks stuff # export GDK_BACKEND=wayland # export XDG_DESKTOP_DIR="$HOME/Desktop" # export XDG_DOCUMENTS_DIR="$HOME/Documents" # export XDG_DOWNLOAD_DIR="$HOME/Downloads" # export XDG_MUSIC_DIR="$HOME/Music" # export XDG_PICTURES_DIR="$HOME/Pictures" # export XDG_PUBLICSHARE_DIR="$HOME/Public" # export XDG_TEMPLATES_DIR="$HOME/Templates" # export XDG_VIDEOS_DIR="$HOME/Videos" # # LAUNCH APPLICATIONS # if ! pgrep -x "devmon" > /dev/null then devmon 2>&1 | "$STARTW_ROOT"/addts >> "$STARTW_LOG_FILE" & fi # Swaybg needs to run after sway is launched # killall swaybg # swaybg -o "*" -i "$HOME"/Images/walls/roses.jpg -m tile # # START COMPOSITOR # # create a log file touch "$STARTW_LOG_FILE" exec sway 2>&1 | "$STARTW_ROOT"/addts >> "$STARTW_LOG_FILE" # exec wayfire