diff --git a/Rakefile b/Rakefile index 51b7d79..609f522 100644 --- a/Rakefile +++ b/Rakefile @@ -1,8 +1,37 @@ +require 'tempfile' require 'cucumber/rake/task' require 'rspec/core/rake_task' +XEPHYR_DISPLAY = ':42' +XEPHYR_CMD = "$(command -v Xephyr) #{XEPHYR_DISPLAY} -ac -br -noreset".freeze +XEPHYR_SCREENS = '-screen 1436x400'.freeze +XEPHYR_SCREENS_XINERAMA = + '+xinerama -origin 0,0 -screen 1920x400 -origin 1920,0 -screen 1920x400'.freeze + task default: %i[features spec] Cucumber::Rake::Task.new(:features) RSpec::Core::RakeTask.new + +desc 'Run uhwm in a Xephyr X server' +task :run do + Tempfile.create('uhwm_xinitrc') do |xinitrc| + xinitrc.write <<-eoh +[ -f $HOME/.Xdefaults ] && xrdb $HOME/.Xdefaults +#xkbcomp #{ENV['DISPLAY']} #{XEPHYR_DISPLAY} +xmodmap -display #{ENV['DISPLAY']} -pke | xmodmap - +xsetroot -solid SpringGreen +echo "######## UHWM START ########" +./bin/uhwm -d +echo "######## UHWM END ##########" + eoh + xinitrc.flush + sh "xinit #{xinitrc.path} -- %s" % [ + XEPHYR_CMD, + ENV.key?('UHWM_XINERAMA') ? + XEPHYR_SCREENS_XINERAMA : + XEPHYR_SCREENS + ].join(' ') + end +end