#!/usr/bin/env perl use strict; use warnings; use utf8; use Tk; die unless $^O=~/linux/i; my $mainframe = new MainWindow; $mainframe->configure (-width=>"640",-height=>"480"); my $listbox = $mainframe->Listbox( -relief => 'sunken', -width => -1, # -1 == Shrink to fit -setgrid => 1, -selectmode => 'single', )->grid( -row=>0, -column=>0 ); my $scroll = $mainframe->Scrollbar(-command => [ 'yview', $listbox ]); $listbox->configure(-yscrollcommand => [ 'set', $scroll ]); $scroll->grid(-column=>1, -row=>0, -rowspan=>2, -sticky =>'nes'); $listbox->bind('', sub{ my $temp = $listbox->get($listbox->curselection()); if( -d $temp){ $listbox->delete(0, $listbox->size()); opendir(DIR, "./$temp"); readDir(); close(DIR); chdir("$temp"); }else{ `xdg-open "$temp"`; } }); opendir(DIR, "./"); readDir(); close DIR; $mainframe->Button( -text=>"Exit", -command=>sub{ exit; })->grid( -row=>1, -column=>0 ); MainLoop(); sub readDir{ my @all = readdir(DIR); for my $x (sort (@all)){ next if($x =~ /^\.$/); $listbox->insert('end', $x); if(-d $x){ print "$x\n"; $listbox->itemconfigure($listbox->size()-1, -foreground=>"#F00"); } } }