Merge pull request #2945 from stapelberg/i3-config
simplify tests which use launch_with_config precisely once
This commit is contained in:
commit
98a7baf16e
|
@ -49,6 +49,11 @@ sub activate_i3 {
|
||||||
die "could not fork()";
|
die "could not fork()";
|
||||||
}
|
}
|
||||||
if ($pid == 0) {
|
if ($pid == 0) {
|
||||||
|
# Start a process group so that in the parent, we can kill the entire
|
||||||
|
# process group and immediately kill i3bar and any other child
|
||||||
|
# processes.
|
||||||
|
setpgrp;
|
||||||
|
|
||||||
$ENV{LISTEN_PID} = $$;
|
$ENV{LISTEN_PID} = $$;
|
||||||
$ENV{LISTEN_FDS} = 1;
|
$ENV{LISTEN_FDS} = 1;
|
||||||
delete $ENV{DESKTOP_STARTUP_ID};
|
delete $ENV{DESKTOP_STARTUP_ID};
|
||||||
|
|
|
@ -47,12 +47,9 @@ sub worker {
|
||||||
|
|
||||||
$worker->{ipc} = $ipc_child;
|
$worker->{ipc} = $ipc_child;
|
||||||
|
|
||||||
|
# Preload the i3test module: reduces user CPU from 25s to 18s
|
||||||
require i3test;
|
require i3test;
|
||||||
# TODO: recycle $x
|
|
||||||
# unfortunately this fails currently with:
|
|
||||||
# Could not get reply for: xcb_intern_atom_reply at X11/XCB/Atom.pm line 22.
|
|
||||||
|
|
||||||
# $i3test::x = bless $x, 'i3test::X11';
|
|
||||||
worker_wait($worker, $outdir);
|
worker_wait($worker, $outdir);
|
||||||
exit 23;
|
exit 23;
|
||||||
|
|
||||||
|
@ -86,11 +83,11 @@ sub worker_wait {
|
||||||
|
|
||||||
exit unless $file;
|
exit unless $file;
|
||||||
|
|
||||||
die "tried to launch nonexistend testfile $file: $!\n"
|
die "tried to launch nonexistent testfile $file: $!\n"
|
||||||
unless -e $file;
|
unless -e $file;
|
||||||
|
|
||||||
# start a new and self contained process:
|
# start a new and self contained process:
|
||||||
# whatever happens in the testfile should *NOT* effect us.
|
# whatever happens in the testfile should *NOT* affect us.
|
||||||
|
|
||||||
my $pid = fork // die "could not fork: $!";
|
my $pid = fork // die "could not fork: $!";
|
||||||
if ($pid == 0) {
|
if ($pid == 0) {
|
||||||
|
|
|
@ -100,14 +100,8 @@ my $i3_pid;
|
||||||
my $i3_autostart;
|
my $i3_autostart;
|
||||||
|
|
||||||
END {
|
END {
|
||||||
|
# Skip the remaining cleanup for testcases which set i3_autostart => 0:
|
||||||
# testcases which start i3 manually should always call exit_gracefully
|
return if !defined($i3_pid) && !$i3_autostart;
|
||||||
# on their own. Let’s see, whether they really did.
|
|
||||||
if (! $i3_autostart) {
|
|
||||||
return unless $i3_pid;
|
|
||||||
|
|
||||||
$tester->ok(undef, 'testcase called exit_gracefully()');
|
|
||||||
}
|
|
||||||
|
|
||||||
# don't trigger SIGCHLD handler
|
# don't trigger SIGCHLD handler
|
||||||
local $SIG{CHLD};
|
local $SIG{CHLD};
|
||||||
|
@ -126,7 +120,7 @@ END {
|
||||||
exit_gracefully($i3_pid, "/tmp/nested-$ENV{DISPLAY}");
|
exit_gracefully($i3_pid, "/tmp/nested-$ENV{DISPLAY}");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
kill(9, $i3_pid)
|
kill(-9, $i3_pid)
|
||||||
or $tester->BAIL_OUT("could not kill i3");
|
or $tester->BAIL_OUT("could not kill i3");
|
||||||
|
|
||||||
waitpid $i3_pid, 0;
|
waitpid $i3_pid, 0;
|
||||||
|
@ -138,8 +132,9 @@ sub import {
|
||||||
my $pkg = caller;
|
my $pkg = caller;
|
||||||
|
|
||||||
$i3_autostart = delete($args{i3_autostart}) // 1;
|
$i3_autostart = delete($args{i3_autostart}) // 1;
|
||||||
|
my $i3_config = delete($args{i3_config}) // '-default';
|
||||||
|
|
||||||
my $cv = launch_with_config('-default', dont_block => 1)
|
my $cv = launch_with_config($i3_config, dont_block => 1)
|
||||||
if $i3_autostart;
|
if $i3_autostart;
|
||||||
|
|
||||||
my $test_more_args = '';
|
my $test_more_args = '';
|
||||||
|
@ -793,14 +788,7 @@ sub get_socket_path {
|
||||||
if ($cache && defined($_cached_socket_path)) {
|
if ($cache && defined($_cached_socket_path)) {
|
||||||
return $_cached_socket_path;
|
return $_cached_socket_path;
|
||||||
}
|
}
|
||||||
|
my $socketpath = i3test::Util::get_socket_path($x);
|
||||||
my $atom = $x->atom(name => 'I3_SOCKET_PATH');
|
|
||||||
my $cookie = $x->get_property(0, $x->get_root_window(), $atom->id, GET_PROPERTY_TYPE_ANY, 0, 256);
|
|
||||||
my $reply = $x->get_property_reply($cookie->{sequence});
|
|
||||||
my $socketpath = $reply->{value};
|
|
||||||
if ($socketpath eq "/tmp/nested-$ENV{DISPLAY}") {
|
|
||||||
$socketpath .= '-activation';
|
|
||||||
}
|
|
||||||
$_cached_socket_path = $socketpath;
|
$_cached_socket_path = $socketpath;
|
||||||
return $socketpath;
|
return $socketpath;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,13 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use v5.10;
|
use v5.10;
|
||||||
|
|
||||||
|
use X11::XCB qw(GET_PROPERTY_TYPE_ANY);
|
||||||
|
use X11::XCB::Connection;
|
||||||
|
|
||||||
use Exporter qw(import);
|
use Exporter qw(import);
|
||||||
our @EXPORT = qw(
|
our @EXPORT = qw(
|
||||||
slurp
|
slurp
|
||||||
|
get_socket_path
|
||||||
);
|
);
|
||||||
|
|
||||||
=encoding utf-8
|
=encoding utf-8
|
||||||
|
@ -38,6 +42,25 @@ sub slurp {
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=head2 get_socket_path([X11::XCB::Connection])
|
||||||
|
|
||||||
|
Gets the socket path from the C<I3_SOCKET_PATH> atom stored on the X11 root
|
||||||
|
window.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
sub get_socket_path {
|
||||||
|
my ($x) = @_;
|
||||||
|
$x //= X11::XCB::Connection->new();
|
||||||
|
my $atom = $x->atom(name => 'I3_SOCKET_PATH');
|
||||||
|
my $cookie = $x->get_property(0, $x->get_root_window(), $atom->id, GET_PROPERTY_TYPE_ANY, 0, 256);
|
||||||
|
my $reply = $x->get_property_reply($cookie->{sequence});
|
||||||
|
my $socketpath = $reply->{value};
|
||||||
|
if ($socketpath eq "/tmp/nested-$ENV{DISPLAY}") {
|
||||||
|
$socketpath .= '-activation';
|
||||||
|
}
|
||||||
|
return $socketpath;
|
||||||
|
}
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Michael Stapelberg <michael@i3wm.org>
|
Michael Stapelberg <michael@i3wm.org>
|
||||||
|
|
|
@ -5,7 +5,8 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use v5.10;
|
use v5.10;
|
||||||
|
|
||||||
use i3test i3_autostart => 0;
|
use Test::More;
|
||||||
|
use i3test::Util qw(get_socket_path);
|
||||||
use lib qw(@abs_top_srcdir@/AnyEvent-I3/blib/lib);
|
use lib qw(@abs_top_srcdir@/AnyEvent-I3/blib/lib);
|
||||||
use AnyEvent::I3;
|
use AnyEvent::I3;
|
||||||
use ExtUtils::PkgConfig;
|
use ExtUtils::PkgConfig;
|
||||||
|
|
|
@ -11,7 +11,6 @@ BEGIN {
|
||||||
IPC::Run
|
IPC::Run
|
||||||
ExtUtils::PkgConfig
|
ExtUtils::PkgConfig
|
||||||
Inline
|
Inline
|
||||||
Test::More
|
|
||||||
);
|
);
|
||||||
for my $dep (@deps) {
|
for my $dep (@deps) {
|
||||||
use_ok($dep) or BAIL_OUT(qq|The Perl module "$dep" could not be loaded. Please see http://build.i3wm.org/docs/testsuite.html#_installing_the_dependencies|);
|
use_ok($dep) or BAIL_OUT(qq|The Perl module "$dep" could not be loaded. Please see http://build.i3wm.org/docs/testsuite.html#_installing_the_dependencies|);
|
||||||
|
|
|
@ -18,22 +18,16 @@
|
||||||
# the time of launching the new one. Also make sure that focusing containers
|
# the time of launching the new one. Also make sure that focusing containers
|
||||||
# in other workspaces work even when there is a fullscreen container.
|
# in other workspaces work even when there is a fullscreen container.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Screen setup looks like this:
|
|
||||||
# +----+----+
|
|
||||||
# | S1 | S2 |
|
|
||||||
# +----+----+
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
# Screen setup looks like this:
|
||||||
my $pid = launch_with_config($config);
|
# +----+----+
|
||||||
|
# | S1 | S2 |
|
||||||
my $i3 = i3(get_socket_path());
|
# +----+----+
|
||||||
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
|
@ -331,6 +325,4 @@ verify_move(2, 'prevented move to workspace by position');
|
||||||
|
|
||||||
# TODO: Tests for "move to output" and "move workspace to output".
|
# TODO: Tests for "move to output" and "move workspace to output".
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,17 +19,13 @@
|
||||||
# Wrong behaviour manifested itself up to (including) commit
|
# Wrong behaviour manifested itself up to (including) commit
|
||||||
# f78caf8c5815ae7a66de9e4b734546fd740cc19d
|
# f78caf8c5815ae7a66de9e4b734546fd740cc19d
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
assign [title="testcase"] targetws
|
assign [title="testcase"] targetws
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path(0));
|
my $i3 = i3(get_socket_path(0));
|
||||||
|
|
||||||
cmd 'workspace targetws';
|
cmd 'workspace targetws';
|
||||||
|
@ -51,6 +47,4 @@ cmd 'focus parent';
|
||||||
open_window(name => "testcase");
|
open_window(name => "testcase");
|
||||||
is_num_children('targetws', 3, 'new window opened next to last one');
|
is_num_children('targetws', 3, 'new window opened next to last one');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -15,9 +15,7 @@
|
||||||
# (unless you are already familiar with Perl)
|
# (unless you are already familiar with Perl)
|
||||||
#
|
#
|
||||||
# Verifies that the IPC 'mode' event is sent when modes are changed.
|
# Verifies that the IPC 'mode' event is sent when modes are changed.
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -30,8 +28,6 @@ mode "with spaces" {
|
||||||
}
|
}
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path(0));
|
my $i3 = i3(get_socket_path(0));
|
||||||
$i3->connect->recv;
|
$i3->connect->recv;
|
||||||
|
|
||||||
|
@ -52,6 +48,4 @@ $t = AnyEvent->timer(after => 0.5, cb => sub { $cv->send(0); });
|
||||||
|
|
||||||
ok($cv->recv, 'Mode event received');
|
ok($cv->recv, 'Mode event received');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -20,20 +20,13 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use Time::HiRes qw(sleep);
|
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
force_display_urgency_hint 500ms
|
force_display_urgency_hint 500ms
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
use Time::HiRes qw(sleep);
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Initial setup: one window on ws1, empty ws2
|
# Initial setup: one window on ws1, empty ws2
|
||||||
|
@ -145,6 +138,4 @@ sync_with_i3;
|
||||||
sleep(0.6);
|
sleep(0.6);
|
||||||
is(count_total_urgent(get_ws($tmp3)), 0, "no more urgent windows on workspace $tmp3");
|
is(count_total_urgent(get_ws($tmp3)), 0, "no more urgent windows on workspace $tmp3");
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
||||||
# (unless you are already familiar with Perl)
|
# (unless you are already familiar with Perl)
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test;
|
||||||
use IPC::Run qw(run);
|
use IPC::Run qw(run);
|
||||||
use File::Temp;
|
use File::Temp;
|
||||||
|
|
||||||
|
@ -22,14 +22,8 @@ use File::Temp;
|
||||||
# 1: test that shared memory logging does not work yet
|
# 1: test that shared memory logging does not work yet
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
my $config = <<EOT;
|
# NB: launch_with_config (called in i3test) sets --shmlog-size=0 because the
|
||||||
# i3 config file (v4)
|
# logfile gets redirected via stdout redirection anyways.
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
EOT
|
|
||||||
|
|
||||||
# NB: launch_with_config sets --shmlog-size=0 because the logfile gets
|
|
||||||
# redirected via stdout redirection anyways.
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $stdout;
|
my $stdout;
|
||||||
my $stderr;
|
my $stderr;
|
||||||
|
@ -82,6 +76,4 @@ run [ 'i3-dump-log' ],
|
||||||
like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
|
like($stderr, qr#^i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled\.#,
|
||||||
'shm logging not enabled');
|
'shm logging not enabled');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# criteria for windows on non-visible workspaces.
|
# criteria for windows on non-visible workspaces.
|
||||||
# Ticket: #1027
|
# Ticket: #1027
|
||||||
# Bug still in: 4.5.1-90-g6582da9
|
# Bug still in: 4.5.1-90-g6582da9
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<'EOT';
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -28,8 +26,6 @@ assign [class="^special$"] → mail
|
||||||
for_window [class="^special$"] floating enable, floating disable
|
for_window [class="^special$"] floating enable, floating disable
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $window = open_window(
|
my $window = open_window(
|
||||||
name => 'Borderless window',
|
name => 'Borderless window',
|
||||||
wm_class => 'special',
|
wm_class => 'special',
|
||||||
|
@ -43,6 +39,4 @@ cmd '[class="^special$"] focus';
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -20,7 +20,12 @@
|
||||||
#
|
#
|
||||||
# Ticket: #1086
|
# Ticket: #1086
|
||||||
# Bug still in: 4.6-62-g7098ef6
|
# Bug still in: 4.6-62-g7098ef6
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
assign [class="special"] nonvisible
|
||||||
|
EOT
|
||||||
|
|
||||||
sub open_special {
|
sub open_special {
|
||||||
my %args = @_;
|
my %args = @_;
|
||||||
|
@ -38,14 +43,6 @@ sub open_special {
|
||||||
return $window;
|
return $window;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
assign [class="special"] nonvisible
|
|
||||||
EOT
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
ok((scalar grep { $_ eq 'nonvisible' } @{get_workspace_names()}) == 0,
|
ok((scalar grep { $_ eq 'nonvisible' } @{get_workspace_names()}) == 0,
|
||||||
|
@ -60,6 +57,4 @@ ok((scalar grep { $_ eq 'nonvisible' } @{get_workspace_names()}) > 0,
|
||||||
my @urgent = grep { $_->{urgent} } @{get_ws_content('nonvisible')};
|
my @urgent = grep { $_->{urgent} } @{get_ws_content('nonvisible')};
|
||||||
isnt(@urgent, 0, 'urgent window(s) found on destination workspace');
|
isnt(@urgent, 0, 'urgent window(s) found on destination workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,18 +18,11 @@
|
||||||
# client.
|
# client.
|
||||||
# Ticket: #1201
|
# Ticket: #1201
|
||||||
# Bug still in: 4.7.2-107-g9b03be6
|
# Bug still in: 4.7.2-107-g9b03be6
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<'EOT';
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
|
||||||
$i3->connect()->recv;
|
|
||||||
|
|
||||||
my $window = open_window(
|
my $window = open_window(
|
||||||
wm_class => 'special',
|
wm_class => 'special',
|
||||||
window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK'),
|
window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK'),
|
||||||
|
@ -39,6 +32,4 @@ cmd('[class="special"] resize grow height 160 px or 16 ppt');
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,16 +18,13 @@
|
||||||
# and that they keep their geometry.
|
# and that they keep their geometry.
|
||||||
# Ticket: #1263
|
# Ticket: #1263
|
||||||
# Bug still in: 4.7.2-200-g570b572
|
# Bug still in: 4.7.2-200-g570b572
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
for_window [instance=__i3-test-window] floating enable, border pixel 1
|
for_window [instance=__i3-test-window] floating enable, border pixel 1
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
my $window = open_window(wm_class => '__i3-test-window');
|
my $window = open_window(wm_class => '__i3-test-window');
|
||||||
|
@ -46,6 +43,4 @@ $floating_win = $nodes->{floating_nodes}->[0]->{nodes}->[0];
|
||||||
is($floating_win->{fullscreen_mode}, 1, 'floating window still in fullscreen mode');
|
is($floating_win->{fullscreen_mode}, 1, 'floating window still in fullscreen mode');
|
||||||
is_deeply($floating_win->{geometry}, $old_geometry, 'floating window geometry still the same');
|
is_deeply($floating_win->{geometry}, $old_geometry, 'floating window geometry still the same');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,9 +19,7 @@
|
||||||
# which can lead to complications
|
# which can lead to complications
|
||||||
# Ticket: #1283
|
# Ticket: #1283
|
||||||
# Bug still in: 4.8-24-g60070de
|
# Bug still in: 4.8-24-g60070de
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<'EOT';
|
||||||
|
|
||||||
my $config = <<'EOT';
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -29,8 +27,6 @@ for_window [class="^special_kill$"] kill
|
||||||
for_window [class="^special_scratchpad$"] move scratchpad
|
for_window [class="^special_scratchpad$"] move scratchpad
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $win = open_window;
|
my $win = open_window;
|
||||||
|
|
||||||
my $scratch_window = open_window(
|
my $scratch_window = open_window(
|
||||||
|
@ -53,6 +49,4 @@ sync_with_i3;
|
||||||
is($x->input_focus, $win->{id},
|
is($x->input_focus, $win->{id},
|
||||||
'an assignment that kills a window should not disturb focus');
|
'an assignment that kills a window should not disturb focus');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# assigned to an invisible workspace) will not crash i3.
|
# assigned to an invisible workspace) will not crash i3.
|
||||||
# Ticket: #1338
|
# Ticket: #1338
|
||||||
# Bug still in: 4.8-91-g294d52e
|
# Bug still in: 4.8-91-g294d52e
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -28,8 +26,6 @@ assign [title=".*"] 1
|
||||||
for_window [title=".*"] layout tabbed, focus
|
for_window [title=".*"] layout tabbed, focus
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
# Switch away from workspace 1
|
# Switch away from workspace 1
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
|
@ -37,6 +33,4 @@ my $win = open_window;
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# Decorations are disabled to avoid floating_enable's logic which shifts
|
# Decorations are disabled to avoid floating_enable's logic which shifts
|
||||||
# windows upwards dependent on their decoration height.
|
# windows upwards dependent on their decoration height.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -28,8 +26,6 @@ new_window none
|
||||||
new_float none
|
new_float none
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Open a floating window, verifying that its initial position is
|
# Open a floating window, verifying that its initial position is
|
||||||
# centered, and also verify that both centering methods leave it in
|
# centered, and also verify that both centering methods leave it in
|
||||||
|
@ -101,6 +97,4 @@ my $child = $fourth->rect;
|
||||||
is($new->{x}, $child->{x}, 'x coordinates match');
|
is($new->{x}, $child->{x}, 'x coordinates match');
|
||||||
is($new->{y}, $child->{y}, 'y coordinates match');
|
is($new->{y}, $child->{y}, 'y coordinates match');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
# Ensures that 'move workspace $new, floating enable' on a marked window
|
# Ensures that 'move workspace $new, floating enable' on a marked window
|
||||||
# leaves the window centered on the new workspace.
|
# leaves the window centered on the new workspace.
|
||||||
# Bug still in: 4.10.2-137-ga4f0ed6
|
# Bug still in: 4.10.2-137-ga4f0ed6
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -27,8 +25,6 @@ new_window none
|
||||||
new_float none
|
new_float none
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Open a tiled window, and then simultaneously move it to another
|
# Open a tiled window, and then simultaneously move it to another
|
||||||
# workspace and float it, ensuring that it ends up centered.
|
# workspace and float it, ensuring that it ends up centered.
|
||||||
|
@ -48,6 +44,4 @@ is(int($pos->{x} + $pos->{width} / 2), int($x->root->rect->width / 2),
|
||||||
is(int($pos->{y} + $pos->{height} / 2), int($x->root->rect->height / 2),
|
is(int($pos->{y} + $pos->{height} / 2), int($x->root->rect->height / 2),
|
||||||
'y coordinates match');
|
'y coordinates match');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,7 +18,12 @@
|
||||||
# to focus_on_window_activation=urgent), hence the application not clearing it.
|
# to focus_on_window_activation=urgent), hence the application not clearing it.
|
||||||
# Ticket: #1825
|
# Ticket: #1825
|
||||||
# Bug still in: 4.10.3-253-g03799dd
|
# Bug still in: 4.10.3-253-g03799dd
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
focus_on_window_activation urgent
|
||||||
|
EOT
|
||||||
|
|
||||||
sub send_net_active_window {
|
sub send_net_active_window {
|
||||||
my ($id) = @_;
|
my ($id) = @_;
|
||||||
|
@ -35,15 +40,6 @@ sub send_net_active_window {
|
||||||
$x->send_event(0, $x->get_root_window(), X11::XCB::EVENT_MASK_SUBSTRUCTURE_REDIRECT, $msg);
|
$x->send_event(0, $x->get_root_window(), X11::XCB::EVENT_MASK_SUBSTRUCTURE_REDIRECT, $msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $config = <<'EOT';
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
focus_on_window_activation urgent
|
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $i3 = i3(get_socket_path(0));
|
|
||||||
my $ws = fresh_workspace;
|
my $ws = fresh_workspace;
|
||||||
my $first = open_window;
|
my $first = open_window;
|
||||||
my $second = open_window;
|
my $second = open_window;
|
||||||
|
@ -64,6 +60,4 @@ cmd '[urgent=latest] focus';
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
is($x->input_focus, $second->id, 'second window still focused');
|
is($x->input_focus, $second->id, 'second window still focused');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,17 +17,13 @@
|
||||||
# Verifies that "move container to output" works correctly when
|
# Verifies that "move container to output" works correctly when
|
||||||
# used with command criteria.
|
# used with command criteria.
|
||||||
# Bug still in: 4.10.4-349-gee5db87
|
# Bug still in: 4.10.4-349-gee5db87
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 800x600+0+0,800x600+800+0,800x600+0+600,800x600+800+600
|
fake-outputs 800x600+0+0,800x600+800+0,800x600+0+600,800x600+800+600
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $ws_top_left = fresh_workspace(output => 0);
|
my $ws_top_left = fresh_workspace(output => 0);
|
||||||
my $ws_top_right = fresh_workspace(output => 1);
|
my $ws_top_right = fresh_workspace(output => 1);
|
||||||
my $ws_bottom_left = fresh_workspace(output => 2);
|
my $ws_bottom_left = fresh_workspace(output => 2);
|
||||||
|
@ -45,6 +41,4 @@ is_num_children($ws_top_right, 1, 'one container on the upper right workspace');
|
||||||
is_num_children($ws_bottom_left, 0, 'no containers on the lower left workspace');
|
is_num_children($ws_bottom_left, 0, 'no containers on the lower left workspace');
|
||||||
is_num_children($ws_bottom_right, 1, 'one container on the lower right workspace');
|
is_num_children($ws_bottom_right, 1, 'one container on the lower right workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,7 +19,14 @@
|
||||||
# Ticket: #2062
|
# Ticket: #2062
|
||||||
# Bug still in: 4.11-103-gc8d51b4
|
# Bug still in: 4.11-103-gc8d51b4
|
||||||
# Bug introduced with commit 0e5180cae9e9295678e3f053042b559e82cb8c98
|
# Bug introduced with commit 0e5180cae9e9295678e3f053042b559e82cb8c98
|
||||||
use i3test i3_autostart => 0;
|
use i3test
|
||||||
|
i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
bindsym Print nop Print
|
||||||
|
bindsym Mod4+Return nop Mod4+Return
|
||||||
|
EOT
|
||||||
use i3test::XTEST;
|
use i3test::XTEST;
|
||||||
use ExtUtils::PkgConfig;
|
use ExtUtils::PkgConfig;
|
||||||
|
|
||||||
|
@ -29,16 +36,6 @@ SKIP: {
|
||||||
skip "setxkbmap not found", 1 if
|
skip "setxkbmap not found", 1 if
|
||||||
system(q|setxkbmap -print >/dev/null|) != 0;
|
system(q|setxkbmap -print >/dev/null|) != 0;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
bindsym Print nop Print
|
|
||||||
bindsym Mod4+Return nop Mod4+Return
|
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
start_binding_capture;
|
start_binding_capture;
|
||||||
|
|
||||||
system(q|setxkbmap us,ru -option grp:alt_shift_toggle|);
|
system(q|setxkbmap us,ru -option grp:alt_shift_toggle|);
|
||||||
|
@ -92,8 +89,6 @@ is(scalar @i3test::XTEST::binding_events, 4, 'Received exactly 4 binding events'
|
||||||
# Disable the grp:alt_shift_toggle option, as we use Alt+Shift in other testcases.
|
# Disable the grp:alt_shift_toggle option, as we use Alt+Shift in other testcases.
|
||||||
system(q|setxkbmap us -option|);
|
system(q|setxkbmap us -option|);
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,15 +19,7 @@
|
||||||
# Ticket: #2002
|
# Ticket: #2002
|
||||||
# Bug still in: 4.11-103-gc8d51b4
|
# Bug still in: 4.11-103-gc8d51b4
|
||||||
# Bug introduced with commit bf3cd41b5ddf1e757515ab5fbf811be56e5f69cc
|
# Bug introduced with commit bf3cd41b5ddf1e757515ab5fbf811be56e5f69cc
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use i3test::XTEST;
|
|
||||||
use ExtUtils::PkgConfig;
|
|
||||||
|
|
||||||
SKIP: {
|
|
||||||
skip "libxcb-xkb too old (need >= 1.11)", 1 unless
|
|
||||||
ExtUtils::PkgConfig->atleast_version('xcb-xkb', '1.11');
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -38,8 +30,12 @@ bindsym --release Control+Print nop Control+Print
|
||||||
bindsym Mod1+b nop Mod1+b
|
bindsym Mod1+b nop Mod1+b
|
||||||
bindsym --release Mod1+Shift+b nop Mod1+Shift+b release
|
bindsym --release Mod1+Shift+b nop Mod1+Shift+b release
|
||||||
EOT
|
EOT
|
||||||
|
use i3test::XTEST;
|
||||||
|
use ExtUtils::PkgConfig;
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
SKIP: {
|
||||||
|
skip "libxcb-xkb too old (need >= 1.11)", 1 unless
|
||||||
|
ExtUtils::PkgConfig->atleast_version('xcb-xkb', '1.11');
|
||||||
|
|
||||||
start_binding_capture;
|
start_binding_capture;
|
||||||
|
|
||||||
|
@ -90,8 +86,6 @@ is(listen_for_binding(
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
is(scalar @i3test::XTEST::binding_events, 4, 'Received exactly 4 binding events');
|
is(scalar @i3test::XTEST::binding_events, 4, 'Received exactly 4 binding events');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# binding mode.
|
# binding mode.
|
||||||
# Ticket: #2228
|
# Ticket: #2228
|
||||||
# Bug still in: 4.11-262-geb631ce
|
# Bug still in: 4.11-262-geb631ce
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -28,8 +26,6 @@ mode "othermode" {
|
||||||
}
|
}
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
cmd 'mode othermode';
|
cmd 'mode othermode';
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path(0));
|
my $i3 = i3(get_socket_path(0));
|
||||||
|
@ -51,6 +47,4 @@ $t = AnyEvent->timer(after => 0.5, cb => sub { $cv->send(0); });
|
||||||
|
|
||||||
ok($cv->recv, 'Mode event received');
|
ok($cv->recv, 'Mode event received');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,14 +16,15 @@
|
||||||
#
|
#
|
||||||
# Verifies that command or config criteria does not match dock clients
|
# Verifies that command or config criteria does not match dock clients
|
||||||
# Bug still in: 4.12-38-ge690e3d
|
# Bug still in: 4.12-38-ge690e3d
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
for_window [class="dock"] move workspace current
|
for_window [class="dock"] move workspace current
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
bar {
|
||||||
|
# Disable i3bar, which is also a dock client.
|
||||||
|
i3bar_command :
|
||||||
|
}
|
||||||
|
EOT
|
||||||
|
|
||||||
my $ws = fresh_workspace();
|
my $ws = fresh_workspace();
|
||||||
|
|
||||||
|
@ -67,5 +68,4 @@ is(get_dock_clients, 2, "created second docked client");
|
||||||
is_num_children($ws, 0, 'no container on the current workspace');
|
is_num_children($ws, 0, 'no container on the current workspace');
|
||||||
|
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -14,21 +14,18 @@
|
||||||
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
||||||
# (unless you are already familiar with Perl)
|
# (unless you are already familiar with Perl)
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
for_window [tiling] mark tiled
|
||||||
|
for_window [floating] mark floated
|
||||||
|
EOT
|
||||||
use X11::XCB qw(PROP_MODE_REPLACE);
|
use X11::XCB qw(PROP_MODE_REPLACE);
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
# 13: check that the tiling / floating criteria work.
|
# 13: check that the tiling / floating criteria work.
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
my $config = <<"EOT";
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
for_window [tiling] mark tiled
|
|
||||||
for_window [floating] mark floated
|
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
open_window;
|
open_window;
|
||||||
|
@ -42,8 +39,6 @@ is_deeply($nodes[0]->{marks}, [ 'tiled' ], "mark set for 'tiling' criterion");
|
||||||
cmp_ok(@nodes, '==', 1, 'one floating container on this workspace');
|
cmp_ok(@nodes, '==', 1, 'one floating container on this workspace');
|
||||||
is_deeply($nodes[0]->{nodes}[0]->{marks}, [ 'floated' ], "mark set for 'floating' criterion");
|
is_deeply($nodes[0]->{nodes}[0]->{marks}, [ 'floated' ], "mark set for 'floating' criterion");
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,7 +17,11 @@
|
||||||
# Regression: Checks if focus is stolen when a window is managed which is
|
# Regression: Checks if focus is stolen when a window is managed which is
|
||||||
# assigned to an invisible workspace
|
# assigned to an invisible workspace
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
assign [class="special"] targetws
|
||||||
|
EOT
|
||||||
|
|
||||||
sub open_special {
|
sub open_special {
|
||||||
my %args = @_;
|
my %args = @_;
|
||||||
|
@ -38,14 +42,6 @@ sub open_special {
|
||||||
# start a window and see that it does not get assigned with an empty config
|
# start a window and see that it does not get assigned with an empty config
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
assign [class="special"] targetws
|
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
|
|
||||||
ok(@{get_ws_content($tmp)} == 0, 'no containers yet');
|
ok(@{get_ws_content($tmp)} == 0, 'no containers yet');
|
||||||
|
@ -70,8 +66,6 @@ ok(@{get_ws_content($tmp)} == 0, 'special window not on current workspace');
|
||||||
ok(@{get_ws_content('targetws')} == 1, 'special window on targetws');
|
ok(@{get_ws_content('targetws')} == 1, 'special window on targetws');
|
||||||
ok(get_ws($tmp)->{focused}, 'current workspace still focused');
|
ok(get_ws($tmp)->{focused}, 'current workspace still focused');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
$window->destroy;
|
$window->destroy;
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# not applied when the default tiling border is set to a pixel value.
|
# not applied when the default tiling border is set to a pixel value.
|
||||||
# Ticket: #1305
|
# Ticket: #1305
|
||||||
# Bug still in: 4.8-62-g7381b50
|
# Bug still in: 4.8-62-g7381b50
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -28,8 +26,6 @@ new_window pixel 5
|
||||||
new_float normal
|
new_float normal
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $ws = fresh_workspace;
|
my $ws = fresh_workspace;
|
||||||
|
|
||||||
my $float_window = open_floating_window;
|
my $float_window = open_floating_window;
|
||||||
|
@ -38,6 +34,4 @@ my @floating = @{get_ws($ws)->{floating_nodes}};
|
||||||
|
|
||||||
is($floating[0]->{nodes}[0]->{border}, 'normal', 'default floating border is `normal`');
|
is($floating[0]->{nodes}[0]->{border}, 'normal', 'default floating border is `normal`');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,16 +19,12 @@
|
||||||
# in criteria selection
|
# in criteria selection
|
||||||
# Ticket: #1052
|
# Ticket: #1052
|
||||||
# Bug still in: 4.8-73-g6bf7f8e
|
# Bug still in: 4.8-73-g6bf7f8e
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use X11::XCB qw(PROP_MODE_REPLACE);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
for_window [class="Special"] mark special_class_mark
|
for_window [class="Special"] mark special_class_mark
|
||||||
EOT
|
EOT
|
||||||
|
use X11::XCB qw(PROP_MODE_REPLACE);
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
sub change_window_class {
|
sub change_window_class {
|
||||||
my ($window, $class, $length) = @_;
|
my ($window, $class, $length) = @_;
|
||||||
|
@ -73,6 +69,4 @@ $con = @{get_ws_content($ws)}[0];
|
||||||
is($con->{window_properties}->{class}, 'a',
|
is($con->{window_properties}->{class}, 'a',
|
||||||
'Non-null-terminated strings should be handled correctly');
|
'Non-null-terminated strings should be handled correctly');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
#
|
#
|
||||||
# Test that the binding event works properly
|
# Test that the binding event works properly
|
||||||
# Ticket: #1210
|
# Ticket: #1210
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -30,16 +28,9 @@ SKIP: {
|
||||||
|
|
||||||
skip 'xdotool is required to test the binding event. `[apt-get install|pacman -S] xdotool`', 1 if $?;
|
skip 'xdotool is required to test the binding event. `[apt-get install|pacman -S] xdotool`', 1 if $?;
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
|
||||||
$i3->connect->recv;
|
|
||||||
|
|
||||||
qx(xdotool key r);
|
qx(xdotool key r);
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,16 +18,12 @@
|
||||||
# unfocused window within a tabbed container.
|
# unfocused window within a tabbed container.
|
||||||
# Ticket: #1484
|
# Ticket: #1484
|
||||||
# Bug still in: 4.9.1-124-g856e1f9
|
# Bug still in: 4.9.1-124-g856e1f9
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
workspace_layout tabbed
|
workspace_layout tabbed
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
open_window;
|
open_window;
|
||||||
open_window;
|
open_window;
|
||||||
|
|
||||||
|
@ -39,6 +35,4 @@ cmd '[con_mark=foo] floating enable, floating disable';
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,18 +17,15 @@
|
||||||
# Verifies that mouse bindings work on the root window if
|
# Verifies that mouse bindings work on the root window if
|
||||||
# --whole-window is set.
|
# --whole-window is set.
|
||||||
# Ticket: #2115
|
# Ticket: #2115
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use i3test::XTEST;
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
workspace_auto_back_and_forth no
|
workspace_auto_back_and_forth no
|
||||||
bindsym --whole-window button4 workspace special
|
bindsym --whole-window button4 workspace special
|
||||||
EOT
|
EOT
|
||||||
|
use i3test::XTEST;
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
fresh_workspace;
|
fresh_workspace;
|
||||||
|
|
||||||
xtest_button_press(4, 50, 50);
|
xtest_button_press(4, 50, 50);
|
||||||
|
@ -37,6 +34,4 @@ sync_with_i3;
|
||||||
|
|
||||||
is(focused_ws(), 'special', 'the binding was triggered');
|
is(focused_ws(), 'special', 'the binding was triggered');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
#
|
#
|
||||||
# Tests the swap command.
|
# Tests the swap command.
|
||||||
# Ticket: #917
|
# Ticket: #917
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -26,14 +24,11 @@ for_window[class="mark_A"] mark A
|
||||||
for_window[class="mark_B"] mark B
|
for_window[class="mark_B"] mark B
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my ($pid);
|
|
||||||
my ($ws, $ws1, $ws2, $ws3);
|
my ($ws, $ws1, $ws2, $ws3);
|
||||||
my ($nodes, $expected_focus, $A, $B, $F);
|
my ($nodes, $expected_focus, $A, $B, $F);
|
||||||
my ($result);
|
my ($result);
|
||||||
my @urgent;
|
my @urgent;
|
||||||
|
|
||||||
$pid = launch_with_config($config);
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Invalid con_id should not crash i3
|
# Invalid con_id should not crash i3
|
||||||
# See issue #2895.
|
# See issue #2895.
|
||||||
|
@ -425,6 +420,4 @@ kill_all_windows;
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,15 +17,12 @@
|
||||||
# Tests that the provided X-Server to the t/5??-*.t tests is actually providing
|
# Tests that the provided X-Server to the t/5??-*.t tests is actually providing
|
||||||
# multiple monitors.
|
# multiple monitors.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
|
|
||||||
|
@ -39,6 +36,5 @@ my @outputs = map { $_->{name} } @{$tree->{nodes}};
|
||||||
is_deeply(\@outputs, [ '__i3', 'fake-0', 'fake-1' ],
|
is_deeply(\@outputs, [ '__i3', 'fake-0', 'fake-1' ],
|
||||||
'multi-monitor outputs ok');
|
'multi-monitor outputs ok');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,17 +18,12 @@
|
||||||
# ticket #596, bug present until up to commit
|
# ticket #596, bug present until up to commit
|
||||||
# 89dded044b4fffe78f9d70778748fabb7ac533e9.
|
# 89dded044b4fffe78f9d70778748fabb7ac533e9.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Open a workspace on the second output, put a window to scratchpad, display
|
# Open a workspace on the second output, put a window to scratchpad, display
|
||||||
|
@ -113,6 +108,4 @@ $second = fresh_workspace(output => 0);
|
||||||
|
|
||||||
verify_scratchpad_switch($first, $second);
|
verify_scratchpad_switch($first, $second);
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,16 +16,13 @@
|
||||||
#
|
#
|
||||||
# Verifies the 'focus output' command works properly.
|
# Verifies the 'focus output' command works properly.
|
||||||
|
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use List::Util qw(first);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
use List::Util qw(first);
|
||||||
|
|
||||||
my $tmp = fresh_workspace;
|
my $tmp = fresh_workspace;
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
|
@ -89,6 +86,4 @@ is(focused_output, 'fake-1', 'focus on second output');
|
||||||
cmd 'focus output fake-0';
|
cmd 'focus output fake-0';
|
||||||
is(focused_output, 'fake-0', 'focus on first output');
|
is(focused_output, 'fake-0', 'focus on first output');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,15 +17,12 @@
|
||||||
# Tests whether 'workspace next_on_output' and the like work correctly.
|
# Tests whether 'workspace next_on_output' and the like work correctly.
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Setup workspaces so that they stay open (with an empty container).
|
# Setup workspaces so that they stay open (with an empty container).
|
||||||
|
@ -100,6 +97,4 @@ sync_with_i3;
|
||||||
cmd 'workspace prev_on_output';
|
cmd 'workspace prev_on_output';
|
||||||
is(focused_ws, '2', 'workspace 2 focused');
|
is(focused_ws, '2', 'workspace 2 focused');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,19 +17,19 @@
|
||||||
# Tests whether the 'move workspace <ws> to [output] <output>' command works
|
# Tests whether the 'move workspace <ws> to [output] <output>' command works
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
|
||||||
|
bar {
|
||||||
|
# Disable i3bar.
|
||||||
|
i3bar_command :
|
||||||
|
}
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
# TODO: get rid of smartmatch in this test
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Setup workspaces so that they stay open (with an empty container).
|
# Setup workspaces so that they stay open (with an empty container).
|
||||||
|
@ -181,5 +181,4 @@ ok($ws1 ~~ @$x0, 'ws1 on fake-0');
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,17 +17,12 @@
|
||||||
# Verifies that scratchpad windows don’t move due to floating point caulcation
|
# Verifies that scratchpad windows don’t move due to floating point caulcation
|
||||||
# errors when repeatedly hiding/showing, no matter what display resolution.
|
# errors when repeatedly hiding/showing, no matter what display resolution.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 683x768+0+0,1024x768+683+0
|
fake-outputs 683x768+0+0,1024x768+683+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
|
||||||
|
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
$x->root->warp_pointer(0, 0);
|
$x->root->warp_pointer(0, 0);
|
||||||
|
@ -84,6 +79,4 @@ sync_with_i3;
|
||||||
my $third = fresh_workspace(output => 1);
|
my $third = fresh_workspace(output => 1);
|
||||||
verify_scratchpad_doesnt_move($third);
|
verify_scratchpad_doesnt_move($third);
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,19 +19,12 @@
|
||||||
# Bug still in: 4.3-78-g66b389c
|
# Bug still in: 4.3-78-g66b389c
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Setup workspaces so that they stay open (with an empty container).
|
# Setup workspaces so that they stay open (with an empty container).
|
||||||
|
@ -43,6 +36,4 @@ cmd 'move workspace to output fake-1';
|
||||||
|
|
||||||
does_i3_live;
|
does_i3_live;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,27 +17,20 @@
|
||||||
# Tests whether workspace_layout is properly set after startup.
|
# Tests whether workspace_layout is properly set after startup.
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0
|
fake-outputs 1024x768+0+0
|
||||||
workspace_layout tabbed
|
workspace_layout tabbed
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Test that workspace_layout is properly set
|
# Test that workspace_layout is properly set
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
is(focused_ws, '1', 'starting on workspace 1');
|
is(focused_ws, '1', 'starting on workspace 1');
|
||||||
my $ws = get_ws(1);
|
my $ws = get_ws(1);
|
||||||
is($ws->{workspace_layout}, 'tabbed', 'workspace layout is "tabbed"');
|
is($ws->{workspace_layout}, 'tabbed', 'workspace layout is "tabbed"');
|
||||||
|
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,19 +17,12 @@
|
||||||
# Tests that switching workspaces via 'focus $dir' never leaves a floating
|
# Tests that switching workspaces via 'focus $dir' never leaves a floating
|
||||||
# window focused.
|
# window focused.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0,1024x768+0+768,1024x768+1024+768
|
fake-outputs 1024x768+0+0,1024x768+1024+0,1024x768+0+768,1024x768+1024+768
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $s0_ws = fresh_workspace;
|
my $s0_ws = fresh_workspace;
|
||||||
my $first = open_window;
|
my $first = open_window;
|
||||||
|
@ -144,6 +137,4 @@ cmd "workspace $s2_ws";
|
||||||
cmd 'focus up';
|
cmd 'focus up';
|
||||||
is($x->input_focus, $second->id, 'second window focused');
|
is($x->input_focus, $second->id, 'second window focused');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,21 +17,13 @@
|
||||||
# Tests that ConfigureRequests don’t make windows fall out of the scratchpad.
|
# Tests that ConfigureRequests don’t make windows fall out of the scratchpad.
|
||||||
# Ticket: #898
|
# Ticket: #898
|
||||||
# Bug still in: 4.4-15-g770ead6
|
# Bug still in: 4.4-15-g770ead6
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $left_ws = fresh_workspace(output => 0);
|
my $left_ws = fresh_workspace(output => 0);
|
||||||
my $right_ws = fresh_workspace(output => 1);
|
my $right_ws = fresh_workspace(output => 1);
|
||||||
|
|
||||||
|
@ -49,6 +41,4 @@ is(scalar @{$ws->{floating_nodes}}, 0, 'scratchpad window still in scratchpad af
|
||||||
$ws = get_ws($right_ws);
|
$ws = get_ws($right_ws);
|
||||||
is(scalar @{$ws->{floating_nodes}}, 0, 'scratchpad window still in scratchpad after ConfigureRequest');
|
is(scalar @{$ws->{floating_nodes}}, 0, 'scratchpad window still in scratchpad after ConfigureRequest');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,21 +18,13 @@
|
||||||
# E.g. when you have a container on the right output and you move it to the
|
# E.g. when you have a container on the right output and you move it to the
|
||||||
# right, it should appear on the left output.
|
# right, it should appear on the left output.
|
||||||
# Bug still in: 4.4-106-g3cd4b8c
|
# Bug still in: 4.4-106-g3cd4b8c
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $right = fresh_workspace(output => 1);
|
my $right = fresh_workspace(output => 1);
|
||||||
my $left = fresh_workspace(output => 0);
|
my $left = fresh_workspace(output => 0);
|
||||||
|
|
||||||
|
@ -51,6 +43,4 @@ cmd 'move container to output right';
|
||||||
is_num_children($left, 1, 'one container on left workspace');
|
is_num_children($left, 1, 'one container on left workspace');
|
||||||
is_num_children($right, 0, 'no containers on right workspace');
|
is_num_children($right, 0, 'no containers on right workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -15,21 +15,13 @@
|
||||||
# (unless you are already familiar with Perl)
|
# (unless you are already familiar with Perl)
|
||||||
#
|
#
|
||||||
# Tests whether moving workspaces between outputs works correctly.
|
# Tests whether moving workspaces between outputs works correctly.
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use List::Util qw(first);
|
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
use List::Util qw(first);
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
sub workspaces_per_screen {
|
sub workspaces_per_screen {
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
|
@ -92,6 +84,4 @@ cmd '[id="' . $win1->id . '"] focus';
|
||||||
($nodes, $focus) = get_ws_content('5');
|
($nodes, $focus) = get_ws_content('5');
|
||||||
is($nodes->[1]->{window}, $win1->id, 'window 1 on workspace 5 after moving');
|
is($nodes->[1]->{window}, $win1->id, 'window 1 on workspace 5 after moving');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,20 +17,12 @@
|
||||||
# Ticket: #990
|
# Ticket: #990
|
||||||
# Bug still in: 4.5.1-23-g82b5978
|
# Bug still in: 4.5.1-23-g82b5978
|
||||||
|
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
|
|
||||||
$i3->connect()->recv;
|
$i3->connect()->recv;
|
||||||
|
@ -73,6 +65,4 @@ ok($event, 'Workspace "focus" event received');
|
||||||
is($event->{current}->{id}, $current_ws->{id}, 'Event gave correct current workspace');
|
is($event->{current}->{id}, $current_ws->{id}, 'Event gave correct current workspace');
|
||||||
is($event->{old}->{id}, $old_ws->{id}, 'Event gave correct old workspace');
|
is($event->{old}->{id}, $old_ws->{id}, 'Event gave correct old workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
# Tests that new workspace names are taken from the config,
|
# Tests that new workspace names are taken from the config,
|
||||||
# then from the first free number starting with 1.
|
# then from the first free number starting with 1.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -27,7 +25,6 @@ fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
|
||||||
bindsym 1 workspace 1: eggs
|
bindsym 1 workspace 1: eggs
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
my $ws = $i3->get_workspaces->recv;
|
my $ws = $i3->get_workspaces->recv;
|
||||||
|
@ -35,6 +32,4 @@ my $ws = $i3->get_workspaces->recv;
|
||||||
is($ws->[0]->{name}, '1: eggs', 'new workspace uses config name');
|
is($ws->[0]->{name}, '1: eggs', 'new workspace uses config name');
|
||||||
is($ws->[1]->{name}, '2', 'naming continues with next free number');
|
is($ws->[1]->{name}, '2', 'naming continues with next free number');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,13 +16,7 @@
|
||||||
#
|
#
|
||||||
# Tests if a simple 'move <direction>' command will move containers across outputs.
|
# Tests if a simple 'move <direction>' command will move containers across outputs.
|
||||||
#
|
#
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -34,7 +28,9 @@ workspace right-bottom output fake-2
|
||||||
workspace left-bottom output fake-3
|
workspace left-bottom output fake-3
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
# Ensure the pointer is at (0, 0) so that we really start on the first
|
||||||
|
# (the left) workspace.
|
||||||
|
$x->root->warp_pointer(0, 0);
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Try to move a single window across outputs in each direction
|
# Try to move a single window across outputs in each direction
|
||||||
|
@ -101,6 +97,4 @@ is(scalar @{get_ws_content('left-top')}, 1, 'moved some window to left-bottom wo
|
||||||
$compare_window = shift @{get_ws_content('left-top')};
|
$compare_window = shift @{get_ws_content('left-top')};
|
||||||
is($social_window->name, $compare_window->{name}, 'moved correct window to left-bottom workspace');
|
is($social_window->name, $compare_window->{name}, 'moved correct window to left-bottom workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# ipc event required for i3bar to be properly updated and redrawn.
|
# ipc event required for i3bar to be properly updated and redrawn.
|
||||||
#
|
#
|
||||||
# Bug still in: 4.6-195-g34232b8
|
# Bug still in: 4.6-195-g34232b8
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -29,8 +27,6 @@ workspace ws-left output fake-0
|
||||||
workspace ws-right output fake-1
|
workspace ws-right output fake-1
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
$i3->connect()->recv;
|
$i3->connect()->recv;
|
||||||
|
|
||||||
|
@ -78,6 +74,4 @@ ok($event, 'moving from workspace with one window triggered focus ipc event');
|
||||||
is($event->{current}->{name}, 'ws-right', 'focus event gave the right workspace');
|
is($event->{current}->{name}, 'ws-right', 'focus event gave the right workspace');
|
||||||
is(@{$event->{current}->{nodes}}, 2, 'focus event gave the right number of windows on the workspace');
|
is(@{$event->{current}->{nodes}}, 2, 'focus event gave the right number of windows on the workspace');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# assign any workspace of that number to the specified output.
|
# assign any workspace of that number to the specified output.
|
||||||
# Ticket: #1238
|
# Ticket: #1238
|
||||||
# Bug still in: 4.7.2-147-g3760a48
|
# Bug still in: 4.7.2-147-g3760a48
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -32,7 +30,6 @@ workspace 2:override output fake-1
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
$i3->connect->recv;
|
$i3->connect->recv;
|
||||||
|
|
||||||
|
@ -72,6 +69,4 @@ is(get_output_for_workspace('1:override'), 'fake-0',
|
||||||
'Assignment rules should not be affected by the order assignments are declared')
|
'Assignment rules should not be affected by the order assignments are declared')
|
||||||
or diag 'Since workspace "1:override" is assigned by name to fake-0, it should open on fake-0';
|
or diag 'Since workspace "1:override" is assigned by name to fake-0, it should open on fake-0';
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -11,21 +11,16 @@
|
||||||
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
|
||||||
# (unless you are already familiar with Perl)
|
# (unless you are already familiar with Perl)
|
||||||
|
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
mouse_warping none
|
mouse_warping none
|
||||||
EOT
|
EOT
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
my $i3 = i3(get_socket_path());
|
# Ensure the pointer is at (0, 0) so that we really start on the first
|
||||||
|
# (the left) workspace.
|
||||||
|
$x->root->warp_pointer(0, 0);
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
# Open one workspace with one window on both outputs #
|
# Open one workspace with one window on both outputs #
|
||||||
|
@ -47,6 +42,4 @@ $x->root->warp_pointer(0, 0);
|
||||||
# Ensure focus is still on workspace 2
|
# Ensure focus is still on workspace 2
|
||||||
is(focused_ws, '2', 'warped mouse cursor to (0, 0), focus still in workspace 2');
|
is(focused_ws, '2', 'warped mouse cursor to (0, 0), focus still in workspace 2');
|
||||||
|
|
||||||
# Exit gracefully
|
|
||||||
exit_gracefully($pid);
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
# Ensure that `focus [direction]` will focus an existing floating con when no
|
# Ensure that `focus [direction]` will focus an existing floating con when no
|
||||||
# tiling con exists on the output in [direction] when focusing across outputs
|
# tiling con exists on the output in [direction] when focusing across outputs
|
||||||
# Bug still in: 4.7.2-204-g893dbae
|
# Bug still in: 4.7.2-204-g893dbae
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -31,8 +29,6 @@ mouse_warping none
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
cmd 'workspace ws_left';
|
cmd 'workspace ws_left';
|
||||||
my $win = open_window();
|
my $win = open_window();
|
||||||
|
|
||||||
|
@ -43,6 +39,4 @@ cmd 'focus left';
|
||||||
is($x->input_focus, $win->id,
|
is($x->input_focus, $win->id,
|
||||||
'Focusing across outputs with `focus [direction]` should focus an existing floating con when no tiling con exists on the output in [direction].');
|
'Focusing across outputs with `focus [direction]` should focus an existing floating con when no tiling con exists on the output in [direction].');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# properly on the root window. We interpret this as a list of x/y coordinate
|
# properly on the root window. We interpret this as a list of x/y coordinate
|
||||||
# pairs for the upper left corner of the respective outputs of the workspaces
|
# pairs for the upper left corner of the respective outputs of the workspaces
|
||||||
# Ticket: #1241
|
# Ticket: #1241
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -30,8 +28,6 @@ workspace 1 output fake-1
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
sub get_desktop_viewport {
|
sub get_desktop_viewport {
|
||||||
# Make sure that i3 pushed its changes to X11 before querying.
|
# Make sure that i3 pushed its changes to X11 before querying.
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
|
@ -90,6 +86,4 @@ cmd 'workspace 0';
|
||||||
is_deeply(\@desktop_viewport, \@expected_viewport,
|
is_deeply(\@desktop_viewport, \@expected_viewport,
|
||||||
'it should be updated when a workspace is emptied');
|
'it should be updated when a workspace is emptied');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,9 +19,7 @@
|
||||||
# are renamed to an assigned name.
|
# are renamed to an assigned name.
|
||||||
# Ticket: #1473
|
# Ticket: #1473
|
||||||
|
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
@ -32,7 +30,6 @@ workspace 3:foo output fake-1
|
||||||
workspace baz output fake-1
|
workspace baz output fake-1
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
$i3->connect->recv;
|
$i3->connect->recv;
|
||||||
|
|
||||||
|
@ -85,6 +82,4 @@ cmd 'rename workspace to baz';
|
||||||
is(get_output_for_workspace('baz'), 'fake-1',
|
is(get_output_for_workspace('baz'), 'fake-1',
|
||||||
'Renaming the workspace to a number and name should move it to the assigned output');
|
'Renaming the workspace to a number and name should move it to the assigned output');
|
||||||
|
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
# the appropriate output.
|
# the appropriate output.
|
||||||
# Ticket: #1211
|
# Ticket: #1211
|
||||||
# Bug still in: 4.9.1-108-g037cb31
|
# Bug still in: 4.9.1-108-g037cb31
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -30,8 +28,6 @@ workspace left output fake-0
|
||||||
workspace right output fake-1
|
workspace right output fake-1
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Verify that 'move position center' on a floating window does not
|
# Verify that 'move position center' on a floating window does not
|
||||||
# move it to another output.
|
# move it to another output.
|
||||||
|
@ -58,6 +54,4 @@ sync_with_i3;
|
||||||
is(scalar @{get_ws('left')->{floating_nodes}}, 0, 'no floating nodes on left ws');
|
is(scalar @{get_ws('left')->{floating_nodes}}, 0, 'no floating nodes on left ws');
|
||||||
is(scalar @{get_ws('right')->{floating_nodes}}, 1, 'one floating node on right ws');
|
is(scalar @{get_ws('right')->{floating_nodes}}, 1, 'one floating node on right ws');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -19,9 +19,7 @@
|
||||||
# Ticket: #1603
|
# Ticket: #1603
|
||||||
# Bug still in: 4.10.1-40-g0ad097e
|
# Bug still in: 4.10.1-40-g0ad097e
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -35,8 +33,6 @@ workspace left-bottom output fake-3
|
||||||
workspace_layout stacked
|
workspace_layout stacked
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Create two windows in the upper left workspace and move them
|
# Create two windows in the upper left workspace and move them
|
||||||
# clockwise around the workspaces until the end up where they began.
|
# clockwise around the workspaces until the end up where they began.
|
||||||
|
@ -94,6 +90,4 @@ cmd '[class="first"] move up';
|
||||||
is_num_children('left-bottom', 0, 'no children on left-bottom');
|
is_num_children('left-bottom', 0, 'no children on left-bottom');
|
||||||
is_num_children('left-top', 2, 'two children on left-top');
|
is_num_children('left-top', 2, 'two children on left-top');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,16 +16,7 @@
|
||||||
#
|
#
|
||||||
# Ensures that mouse bindings on the i3bar work correctly.
|
# Ensures that mouse bindings on the i3bar work correctly.
|
||||||
# Ticket: #1695
|
# Ticket: #1695
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use i3test::XTEST;
|
|
||||||
|
|
||||||
my ($cv, $timer);
|
|
||||||
sub reset_test {
|
|
||||||
$cv = AE::cv;
|
|
||||||
$timer = AE::timer(1, 0, sub { $cv->send(0); });
|
|
||||||
}
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
|
@ -41,8 +32,14 @@ bar {
|
||||||
bindsym button5 focus left
|
bindsym button5 focus left
|
||||||
}
|
}
|
||||||
EOT
|
EOT
|
||||||
|
use i3test::XTEST;
|
||||||
|
|
||||||
|
my ($cv, $timer);
|
||||||
|
sub reset_test {
|
||||||
|
$cv = AE::cv;
|
||||||
|
$timer = AE::timer(1, 0, sub { $cv->send(0); });
|
||||||
|
}
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
$i3->connect()->recv;
|
$i3->connect()->recv;
|
||||||
my $ws = fresh_workspace;
|
my $ws = fresh_workspace;
|
||||||
|
@ -63,8 +60,32 @@ $i3->subscribe({
|
||||||
},
|
},
|
||||||
})->recv;
|
})->recv;
|
||||||
|
|
||||||
my $con = $cv->recv;
|
my $con;
|
||||||
ok($con, 'i3bar appeared');
|
|
||||||
|
sub i3bar_present {
|
||||||
|
my ($nodes) = @_;
|
||||||
|
|
||||||
|
for my $node (@{$nodes}) {
|
||||||
|
my $props = $node->{window_properties};
|
||||||
|
if (defined($props) && $props->{class} eq 'i3bar') {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0 if !@{$nodes};
|
||||||
|
|
||||||
|
my @children = (map { @{$_->{nodes}} } @{$nodes},
|
||||||
|
map { @{$_->{'floating_nodes'}} } @{$nodes});
|
||||||
|
|
||||||
|
return i3bar_present(\@children);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i3bar_present($i3->get_tree->recv->{nodes})) {
|
||||||
|
ok(1, 'i3bar present');
|
||||||
|
} else {
|
||||||
|
$con = $cv->recv;
|
||||||
|
ok($con, 'i3bar appeared');
|
||||||
|
}
|
||||||
|
|
||||||
my $left = open_window;
|
my $left = open_window;
|
||||||
my $right = open_window;
|
my $right = open_window;
|
||||||
|
@ -108,6 +129,4 @@ $con = $cv->recv;
|
||||||
is($con->{window}, $left->{id}, 'button 5 moves focus left');
|
is($con->{window}, $left->{id}, 'button 5 moves focus left');
|
||||||
reset_test;
|
reset_test;
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,9 +16,19 @@
|
||||||
#
|
#
|
||||||
# Test reconfiguration of dock clients.
|
# Test reconfiguration of dock clients.
|
||||||
# Ticket: #1883
|
# Ticket: #1883
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
my ($config, $pid, $window, $rect);
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
|
||||||
|
bar {
|
||||||
|
# Disable i3bar, which is also a dock client.
|
||||||
|
i3bar_command :
|
||||||
|
}
|
||||||
|
EOT
|
||||||
|
|
||||||
|
my ($window, $rect);
|
||||||
my (@docks);
|
my (@docks);
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -27,14 +37,6 @@ my (@docks);
|
||||||
# moved to the correct position.
|
# moved to the correct position.
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
$config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
|
||||||
EOT
|
|
||||||
$pid = launch_with_config($config);
|
|
||||||
|
|
||||||
$window = open_window({
|
$window = open_window({
|
||||||
window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK')
|
window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK')
|
||||||
});
|
});
|
||||||
|
@ -50,8 +52,6 @@ is(@docks, 1, 'there is still exactly one dock');
|
||||||
|
|
||||||
is($docks[0]->{rect}->{x}, 1024, 'dock client has moved to the other screen');
|
is($docks[0]->{rect}->{x}, 1024, 'dock client has moved to the other screen');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,7 +17,12 @@
|
||||||
# Tests whether 'workspace next' works correctly.
|
# Tests whether 'workspace next' works correctly.
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
EOT
|
||||||
|
|
||||||
sub assert_next {
|
sub assert_next {
|
||||||
my ($expected) = @_;
|
my ($expected) = @_;
|
||||||
|
@ -43,14 +48,6 @@ sub assert_prev {
|
||||||
is(focused_ws, $expected, "workspace $expected focused");
|
is(focused_ws, $expected, "workspace $expected focused");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
|
||||||
EOT
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
$x->root->warp_pointer(0, 0);
|
$x->root->warp_pointer(0, 0);
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
|
@ -124,6 +121,4 @@ assert_prev('2');
|
||||||
assert_prev('1');
|
assert_prev('1');
|
||||||
|
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,7 +16,14 @@
|
||||||
#
|
#
|
||||||
# Tests for _NET_WM_DESKTOP.
|
# Tests for _NET_WM_DESKTOP.
|
||||||
# Ticket: #2153
|
# Ticket: #2153
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
bar {
|
||||||
|
status_command i3status
|
||||||
|
}
|
||||||
|
EOT
|
||||||
use X11::XCB qw(:all);
|
use X11::XCB qw(:all);
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -78,19 +85,6 @@ sub open_window_with_net_wm_desktop {
|
||||||
return $window;
|
return $window;
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
bar {
|
|
||||||
status_command i3status
|
|
||||||
}
|
|
||||||
EOT
|
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Upon managing a window which does not set _NET_WM_DESKTOP, the property is
|
# Upon managing a window which does not set _NET_WM_DESKTOP, the property is
|
||||||
# set on the window.
|
# set on the window.
|
||||||
|
@ -296,6 +290,4 @@ kill_all_windows;
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,9 +16,7 @@
|
||||||
#
|
#
|
||||||
# Ticket: #2229
|
# Ticket: #2229
|
||||||
# Bug still in: 4.11-262-geb631ce
|
# Bug still in: 4.11-262-geb631ce
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -26,7 +24,6 @@ fake-outputs 400x400+0+0,400x400+400+0
|
||||||
workspace_auto_back_and_forth no
|
workspace_auto_back_and_forth no
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
my $i3 = i3(get_socket_path());
|
my $i3 = i3(get_socket_path());
|
||||||
|
|
||||||
# Set it up such that workspace 3 is on the left output and
|
# Set it up such that workspace 3 is on the left output and
|
||||||
|
@ -43,8 +40,7 @@ cmd 'move workspace to output left';
|
||||||
# ensure that workspace 3 has now vanished
|
# ensure that workspace 3 has now vanished
|
||||||
my $get_ws = $i3->get_workspaces->recv;
|
my $get_ws = $i3->get_workspaces->recv;
|
||||||
my @ws_names = map { $_->{name} } @$get_ws;
|
my @ws_names = map { $_->{name} } @$get_ws;
|
||||||
|
# TODO get rid of smartmatch
|
||||||
ok(!('3' ~~ @ws_names), 'workspace 3 has been closed');
|
ok(!('3' ~~ @ws_names), 'workspace 3 has been closed');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,17 +16,13 @@
|
||||||
#
|
#
|
||||||
# Tests that fullscreen windows appear on the output indicated by
|
# Tests that fullscreen windows appear on the output indicated by
|
||||||
# their geometry
|
# their geometry
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
use List::Util qw(first);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
EOT
|
EOT
|
||||||
|
use List::Util qw(first);
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
# Helper functions
|
# Helper functions
|
||||||
sub fullscreen($) {
|
sub fullscreen($) {
|
||||||
|
@ -70,6 +66,4 @@ my $node2 = find_window($tree->{nodes}, $win_on_second_output->{id});
|
||||||
is($node1->{fullscreen_mode}, 1, "first window is fullscreen");
|
is($node1->{fullscreen_mode}, 1, "first window is fullscreen");
|
||||||
is($node2->{fullscreen_mode}, 1, "second window is fullscreen");
|
is($node2->{fullscreen_mode}, 1, "second window is fullscreen");
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -18,13 +18,7 @@
|
||||||
# over an unfocused workspace.
|
# over an unfocused workspace.
|
||||||
# Ticket: #2681
|
# Ticket: #2681
|
||||||
# Bug still in: 4.13-210-g80c23afa
|
# Bug still in: 4.13-210-g80c23afa
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
|
||||||
# Ensure the pointer is at (0, 0) so that we really start on the first
|
|
||||||
# (the left) workspace.
|
|
||||||
$x->root->warp_pointer(0, 0);
|
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
# i3 config file (v4)
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
@ -33,8 +27,6 @@ fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
cmd 'focus output fake-0';
|
cmd 'focus output fake-0';
|
||||||
my $s0_ws = fresh_workspace;
|
my $s0_ws = fresh_workspace;
|
||||||
|
|
||||||
|
@ -56,6 +48,4 @@ my $reply = $x->query_pointer_reply($cookie->{sequence});
|
||||||
cmp_ok($reply->{root_x}, '<', 1024, 'pointer still on fake-0');
|
cmp_ok($reply->{root_x}, '<', 1024, 'pointer still on fake-0');
|
||||||
cmp_ok($reply->{root_y}, '<', 768, 'pointer still on fake-0');
|
cmp_ok($reply->{root_y}, '<', 768, 'pointer still on fake-0');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -17,7 +17,12 @@
|
||||||
# Tests whether 'workspace next' works correctly.
|
# Tests whether 'workspace next' works correctly.
|
||||||
#
|
#
|
||||||
use List::Util qw(first);
|
use List::Util qw(first);
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
EOT
|
||||||
|
|
||||||
sub assert_next {
|
sub assert_next {
|
||||||
my ($expected) = @_;
|
my ($expected) = @_;
|
||||||
|
@ -43,14 +48,6 @@ sub assert_prev {
|
||||||
is(focused_ws, $expected, "workspace $expected focused");
|
is(focused_ws, $expected, "workspace $expected focused");
|
||||||
}
|
}
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
|
||||||
EOT
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
$x->root->warp_pointer(0, 0);
|
$x->root->warp_pointer(0, 0);
|
||||||
sync_with_i3;
|
sync_with_i3;
|
||||||
|
@ -124,6 +121,4 @@ assert_prev('2');
|
||||||
assert_prev('1');
|
assert_prev('1');
|
||||||
|
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
|
@ -16,7 +16,19 @@
|
||||||
#
|
#
|
||||||
# Tests for _NET_WM_DESKTOP.
|
# Tests for _NET_WM_DESKTOP.
|
||||||
# Ticket: #2153
|
# Ticket: #2153
|
||||||
use i3test i3_autostart => 0;
|
use i3test i3_config => <<EOT;
|
||||||
|
# i3 config file (v4)
|
||||||
|
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||||
|
|
||||||
|
workspace "0" output "fake-0"
|
||||||
|
workspace "1" output "fake-0"
|
||||||
|
workspace "2" output "fake-0"
|
||||||
|
workspace "10" output "fake-1"
|
||||||
|
workspace "11" output "fake-1"
|
||||||
|
workspace "12" output "fake-1"
|
||||||
|
|
||||||
|
fake-outputs 1024x768+0+0,1024x768+1024+0
|
||||||
|
EOT
|
||||||
use X11::XCB qw(:all);
|
use X11::XCB qw(:all);
|
||||||
|
|
||||||
sub get_net_wm_desktop {
|
sub get_net_wm_desktop {
|
||||||
|
@ -38,27 +50,11 @@ sub get_net_wm_desktop {
|
||||||
return unpack("L", $reply->{value});
|
return unpack("L", $reply->{value});
|
||||||
}
|
}
|
||||||
|
|
||||||
my $config = <<EOT;
|
|
||||||
# i3 config file (v4)
|
|
||||||
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
|
||||||
|
|
||||||
workspace "0" output "fake-0"
|
|
||||||
workspace "1" output "fake-0"
|
|
||||||
workspace "2" output "fake-0"
|
|
||||||
workspace "10" output "fake-1"
|
|
||||||
workspace "11" output "fake-1"
|
|
||||||
workspace "12" output "fake-1"
|
|
||||||
|
|
||||||
fake-outputs 1024x768+0+0,1024x768+1024+0
|
|
||||||
EOT
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# _NET_WM_DESKTOP is updated when the window is moved to another workspace
|
# _NET_WM_DESKTOP is updated when the window is moved to another workspace
|
||||||
# on another output.
|
# on another output.
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
my $pid = launch_with_config($config);
|
|
||||||
|
|
||||||
cmd 'workspace 0';
|
cmd 'workspace 0';
|
||||||
open_window;
|
open_window;
|
||||||
cmd 'workspace 10';
|
cmd 'workspace 10';
|
||||||
|
@ -70,6 +66,4 @@ cmd 'move window to workspace 10';
|
||||||
|
|
||||||
is(get_net_wm_desktop($con), 1, '_NET_WM_DESKTOP is updated when moving the window');
|
is(get_net_wm_desktop($con), 1, '_NET_WM_DESKTOP is updated when moving the window');
|
||||||
|
|
||||||
exit_gracefully($pid);
|
|
||||||
|
|
||||||
done_testing;
|
done_testing;
|
||||||
|
|
Loading…
Reference in New Issue