แป้นพิมพ์ลัดของ GNOME เก็บอยู่ที่ไหน


53

ฉันมักจะโหลดเวอร์ชันใหม่สำหรับทุกรุ่นเพื่อให้ระบบปฏิบัติการของฉันสดในขณะที่รักษาเวอร์ชันล่าสุดไว้ในพาร์ติชันอื่นเป็นการสำรองข้อมูล ฉันยังใช้การจับคู่คีย์แบบกำหนดเองจำนวนมาก

ฉันพบวิธีถ่ายโอนการกำหนดค่าส่วนใหญ่ของฉันไปยังระบบต่าง ๆ จนถึงตอนนี้ แต่ฉันไม่สามารถทราบได้ว่าการจัดเก็บการแมปแป้นพิมพ์ลัดที่กำหนดเองนั้นอยู่ที่ไหน

มีใครรู้บ้างไหมว่าคำพังเพยเหล่านี้อยู่ที่ไหน มีการกำหนดค่าผู้ใช้ (เช่น ~ /) และการกำหนดค่าระบบ (เช่น / ฯลฯ ) แยกกันหรือไม่


2
คุณเปลี่ยนการตั้งค่าได้อย่างไร ใช้ GConf Editor ใช่ไหม ฉันเดาว่าคุณต้องการgconftool-2 --dump /apps/metacityหรืออะไรแบบนั้น
มิเคล

1
@Mikel ขอบคุณมัดสำหรับความคิดเห็นที่ จากสิ่งที่ฉันสามารถบอกได้ใน gconf-editor ปุ่มลัดส่วนใหญ่จะถูกเก็บไว้ภายใต้ / apps / metacity ขณะที่ส่วนที่เหลือจะกระจายไปทั่ว ฉันกำลังเขียนสคริปต์หลามนำเข้า / ส่งออกเพื่อทำการสำรอง / กู้คืนการโยงคีย์การดำเนินการด้วยคลิกเดียว
Evan Plaice

คำตอบ:


45

อูบุนตูเปลี่ยนไปเนื่องจากคำตอบอื่น ๆ ของคำถามนี้เขียน

ปุ่มลัดได้ย้ายจาก gconf ไปยัง dconf แล้ว gconf เก็บข้อมูลในไฟล์ XML และเข้าถึงได้โดยและgconf-editor gconf-tool2Dconf เก็บข้อมูลในรูปแบบไบนารีและมีการเข้าถึงโดยและdconf-editorgsettings

จำนวนของสถานที่ที่จัดเก็บการโยงคีย์จะลดลง ขณะนี้มีพา ธ dconf แบบรวมศูนย์เพื่อจัดเก็บ keybindings manager window ( org.gnome.desktop.wm.keybindings) มีไฟล์การแมปในไดเรกทอรี/usr/share/gnome-control-center/keybindings/ที่แสดงวิธีการนำไฟล์เหล่านี้ไปใช้ขึ้นอยู่กับโปรแกรมจัดการหน้าต่างที่คุณใช้งานอยู่ (Compiz หรือ metacity)

ชุดที่สองของการโยงคีย์ที่เกี่ยวข้องกับผู้จัดการหน้าต่างจะถูกเก็บไว้ในพา ธ dconf org.gnome.settings-daemon.plugins.media-keys

มีชุดที่สามของ keybindings org.gnome.settings-daemon.plugins.powerเกี่ยวข้องกับปุ่มไฟฟ้าที่ถูกเก็บไว้ในเส้นทาง ขณะนี้มีข้อผิดพลาดใน GUI ที่ให้คุณกำหนดค่าการโยงคีย์ ไม่ทราบเกี่ยวกับการตั้งค่าเหล่านี้ ฉันมีปุ่ม "นอน" บนคีย์บอร์ดของฉัน หากฉันต้องการมอบหมายให้ฟังก์ชันการทำงานอื่นฉันต้องปิดการตั้งค่าorg.gnome.settings-daemon.plugins.powerด้วยตนเอง GUI ไม่ได้ทำเพื่อฉัน (แม้ว่าจะกำหนดฟังก์ชั่นใหม่ได้ดี)

ริ้วรอยอื่น ๆ คือการผูกกุญแจที่กำหนดเอง เหล่านี้ถูกเก็บไว้ใน dconf โดยใช้สคีมา relocatable มันทำแบบนี้เพราะมันมีจำนวนตามอำเภอใจ วิธีการที่สมเหตุสมผล แต่ทำให้การแสดงรายการหรือแก้ไขผ่านบรรทัดคำสั่งหนักกว่าที่ควรจะเป็น

ฉันยังพบว่า GUI ที่อนุญาตให้คุณกำหนด keybindings มีข้อ จำกัด ในทางที่ทำให้ฉันรำคาญ GUI อนุญาตให้กำหนดหนึ่งการโยงคีย์ให้กับแต่ละการดำเนินการ ใน dconf คุณสามารถตั้งค่าอาร์เรย์ของการผูกสำหรับการกระทำเดียว สิ่งนี้มีประโยชน์สำหรับฉัน ตัวอย่างเช่นฉันต้องการให้มีการกระทำ "ปิดหน้าต่าง" เพื่อกำหนดให้กับปุ่มกด Alt-F4 แบบดั้งเดิมเช่นเดียวกับการกดปุ่มเดียวบนแป้นพิมพ์ได้ง่ายขึ้น

ฉันได้เขียนสคริปต์ Perl เพื่อทิ้งการโยงคีย์ทั้งหมดไปยังไฟล์ csv หรือเรียกคืนจากไฟล์ csv ตัวอย่างเช่นการดัมพ์การโยงคีย์ที่คุณอาจใช้:

./keybindings.pl -e /tmp/keys.csv

และเพื่อกู้คืนพวกเขาคุณอาจใช้:

./keybindings.pl -i /tmp/keys.csv

#!/usr/bin/perl

use strict;

my $action = '';
my $filename = '-';

for my $arg (@ARGV){
    if ($arg eq "-e" or $arg eq "--export"){
        $action = 'export';
    } elsif ($arg eq "-i" or $arg eq "--import"){
        $action = 'import';
    } elsif ($arg eq "-h" or $arg eq "--help"){
        print "Import and export keybindings\n";
        print " -e, --export <filename>\n";
        print " -i, --import <filename>\n";
        print " -h, --help\n";
        exit;
    } elsif ($arg =~ /^\-/){
        die "Unknown argument $arg";
    } else {
        $filename = $arg;
        if (!$action){
            if ( -e $filename){
                $action='import';
            } else {
                $action='export';
            }
        }
    }
}

$action='export' if (!$action);
if ($action eq 'export'){
    &export();
} else {
    &import();
}

sub export(){
    my $gsettingsFolders = [
        ['org.gnome.desktop.wm.keybindings','.'],
        ['org.gnome.settings-daemon.plugins.power','button'],
        ['org.gnome.settings-daemon.plugins.media-keys','.'],
    ];

    my $customBindings = [
    ];

    $filename = ">$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    for my $folder (@$gsettingsFolders){
        my @keylist = split(/\n/, `gsettings list-recursively $folder->[0]`);
        foreach my $line (@keylist){
            if ($line =~ /^([^ ]+) ([^ ]+)(?: \@[a-z]+)? (.*)/){
                my ($path, $name, $value) = ($1,$2,$3);
                if ($name eq "custom-keybindings"){
                    $value =~ s/[\[\]\' ]//g;
                    my @c = split(/,/, $value);
                    $customBindings = \@c;
                } elsif ($name =~ /$folder->[1]/){
                    if ($value =~ /^\[|\'/){
                        if ($value =~ /^\[\'(?:disabled)?\'\]$/){
                            $value = '[]';
                        } 
                        print $fh "$path\t$name\t$value\n";
                    }
                }        
            } else {
                die "Could note parse $line";
            }
        }
    }   

    for my $folder (@$customBindings){
        my $gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$folder`;
        my ($binding) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\'[^\n]+\')/g;
        my ($command) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\'[^\n]+\')/g;
        my ($name) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\'[^\n]+\')/g;
        $command =~ s/\"/\\\"/g;
        $command =~ s/^'(.*)'$/$1/g;
        $command =~ s/\'/\'\\\'\'/g;
        $command = "\'$command\'";
        print $fh "custom\t$name\t$command\t$binding\n"    
    }

    close($fh);
}

sub import(){

    $filename = "<$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    my $customcount=0;

    while (my $line = <$fh>){
        chomp $line;
        if ($line){
            my @v = split(/\t/, $line);
            if (@v[0] eq 'custom'){
                my ($custom, $name, $command, $binding) = @v;
                print "Installing custom keybinding: $name\n";
                    print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ name \"$name\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ command \"$command\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ binding \"$binding\"`;
                $customcount++;
            } else {
                my ($path, $name, $value) = @v;
                print "Importing $path $name\n";
                print `gsettings set \"$path\" \"$name\" \"$value\"`;
            }
        }       
    }
    if ($customcount > 0){
        my $customlist = "";
        for (my $i=0; $i<$customcount; $i++){
            $customlist .= "," if ($customlist);
            $customlist .= "'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$i/'";            
        }
        $customlist = "[$customlist]";
        print "Importing list of custom keybindings.\n";
        print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \"$customlist\"`;
    }

    close($fh);
}

ซึ่งรวมถึงการแก้ไขโดยuser2589537เพื่อให้คำสั่งที่กำหนดเองด้วยคำพูดในพวกเขา


2
ฉันยื่นข้อบกพร่องสองข้อต่อแป้นพิมพ์ลัดของ ubuntu gnome-control-center ฉันพบพวกเขาในขณะที่สร้างสคริปต์นี้ bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/ …และbugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/ …
สตีเฟน Ostermiller

1
ขอบคุณสำหรับสคริปต์ @Stephen เพิ่งลองใช้ Ubuntu 13.10 และใช้งานได้! สร้างส่วนสำคัญสำหรับการแบ่งปันได้ง่าย: gist.github.com/elgalu/8511861#file-keybindings-pl
Leo Gallucci

ผลงานยอดเยี่ยมและงานบันทึกที่ดีโดยเฉพาะ
Evan Plaice

2
ยังคงใช้งานได้บน Ubuntu GNOME 3.2 - ขอบคุณ!
klequis

1
"ผลงาน" ในทางเทคนิคสำหรับฉัน แต่อาจจะต้องดูส่วน dconf แตกต่างกันสำหรับอูบุนตู-MATE (เช่น[org/mate/marco/global-keybindings], [org/mate/marco/window-keybindings], ... )
แฟรงก์ Nocke

17

วิธีสำรองข้อมูลการตั้งค่า dconf เช่นแป้นพิมพ์ลัด

  1. ทิ้งข้อมูลทั้งหมดลงในไฟล์:

    dconf dump / >~/.config/dconf/user.conf
    
  2. เปิดไฟล์นั้นในโปรแกรมแก้ไขข้อความและเลือกการตั้งค่าที่คุณสนใจ:

    editor ~/.config/dconf/user.conf
    

    หากคุณใช้ Vim คุณจะต้องการไฮไลต์ไวยากรณ์นี้

    ท่านจะถามตัวเองว่าสิ่งที่เป็น<Primary>

  3. หากคุณไม่ทราบชื่อของการตั้งค่า แต่รู้วิธีการแก้ไขจาก GUI ที่ชอบunity-control-centerให้รัน:

    dconf watch /
    

    แล้วปรับเปลี่ยนพวกเขา การตั้งค่าที่แน่นอนจะปรากฏขึ้นบนเครื่อง

  4. เมื่อคุณต้องการคืนค่าการตั้งค่าเหล่านี้ให้เรียกใช้:

    dconf load / <~/.config/dconf/user.conf
    
  5. Git ติดตามไฟล์ปรับแต่งเพื่อไม่ให้สูญหาย https://github.com/andsens/homeshickเป็นวิธีที่ฉันโปรดปรานในปัจจุบัน

ทดสอบบน Ubuntu 15.10 เคล็ดลับดัดแปลงมาจาก: http://catern.com/2014/12/21/plain-text-configuration-gnome.html

น่าเสียดายที่เทอร์มินัล Gnome สามารถทนต่อการแก้ไขดังกล่าวได้เนื่องจากรหัสโปรไฟล์ที่ไม่สามารถคาดเดาได้: แก้ไขโปรไฟล์ Gnome-Terminal จากบรรทัดคำสั่งใน 18.04


15

แป้นพิมพ์ลัดไม่ได้เก็บไว้ในที่เดียว

แอปพลิเคชันแป้นพิมพ์ลัดอาจมีชื่อแตกต่างกันใน GUI แต่ขึ้นอยู่กับรุ่น distro ของคุณ แต่ในบรรทัดคำสั่งควรเรียกว่า 'gnome-keybinding-properties' ปรากฎว่าแอปพลิเคชั่นเล็ก ๆ ที่ประณีตนี้นำทางลัดทั้งหมดเข้าไว้ในที่เดียวเพื่อให้ผู้ใช้แก้ไข

เนื่องจากไม่มีเครื่องมือส่งออก / นำเข้าแบบคลิกเดียวสำหรับ keybindings ใน Ubuntu ฉันจึงเขียนหนึ่งใน python:

นี่คือลิงค์ไปยังสคริปต์

การส่งออกจะดึงการตั้งค่าจากระบบ โดยพื้นฐานแล้วมันจะมีรายการของตำแหน่งการเชื่อมโยงทั้งหมดที่กำหนดไว้ในพจนานุกรมในสคริปต์ สคริปต์จะแจกแจงรายการและเรียกใช้คำสั่ง "gconftool-2 - รับ [ตำแหน่ง]" สำหรับทุก ๆ คีย์และเก็บค่าไว้ในพจนานุกรมพร้อมกับคีย์ จากนั้นเมื่อคุณระบุตำแหน่งที่จะบันทึกการตั้งค่ามันจะบันทึกพจนานุกรมลงในไฟล์ในรูปแบบ json

สคริปต์นำเข้าย้อนกลับกระบวนการนี้ มันโหลดพจนานุกรมจากไฟล์ json จากนั้นมันจะแจงผ่านสิ่งเหล่านี้และรันคำสั่ง "gconftool-2 - สตริงประเภท - ตั้งค่า [สถานที่] [ค่า]" เพื่อเรียกคืนการตั้งค่าที่บันทึกไว้ทั้งหมด

หนึ่งช็อตที่ปลายทั้งสองข้างและมันจะบันทึก / เรียกคืนแป้นพิมพ์ลัดทุกปุ่มเดียวโดยไม่ต้องแตะการตั้งค่าระบบใด ๆ

การอ้างอิงเฉพาะสำหรับสคริปต์เหล่านี้คือ:

  • python (ทดสอบและทำงานใน 2.6, 2.7 และ 3.1)
  • gconftool-2 (มาพร้อมกับมาตรฐานติดตั้ง Ubuntu)
  • zenity (มาพร้อมมาตรฐานพร้อมการติดตั้ง Ubuntu)

จำเป็นต้องใช้ Python ในการเรียกใช้สคริปต์โดยใช้ gconftool-2 เพื่อรับ / ตั้งการตั้งค่าจำเป็นต้องใช้ zenity สำหรับไฟล์โหลด / บันทึกกล่องโต้ตอบ gui

ฉันได้สร้างรายการบน Ubuntu ระดมสมองและกำลังดำเนินการเพื่อนำคุณลักษณะนี้มาสู่เมนู GUI 'gnome-keybinding-Properties'

ปรับปรุง:

ฉันอัปเดตรวมสคริปต์การนำเข้าและส่งออกเป็นหนึ่งเดียวเพิ่มฟังก์ชันบรรทัดคำสั่งแบบเต็ม (รวมถึง - ข้อมูลช่วยเหลือ) และทำให้สามารถใช้งานได้ทั้ง python2x และ python3k เพิ่มลิงก์ไปยังแนวคิดระดมสมองของ Ubuntu


การระดมสมองเป็นสถานที่ที่ไม่ค่อยเหมาะสำหรับการปรับปรุงจริง ๆ ของ Ubuntu - ปัญหา 10 อันดับแรกเท่านั้นที่ได้รับความสนใจจากนักพัฒนา ฉันขอแนะนำให้คุณหาหน้า Launchpad gnome-keybinding-propertiesและโพสต์แพตช์ด้วยสคริปต์ของคุณ
Oxwivi

สคริปต์ของคุณดีสำหรับทางลัดที่อยู่ในรายการ / จัดการโดย gconftool-2 / gconf-editor ... และฉันคิดว่ามันขึ้นอยู่กับสิ่งที่เรียกว่าแป้นพิมพ์ลัดของ GNOME ... แต่มันไม่ได้เพิ่มทางลัดสำหรับผู้ใช้ทั่วทั้งระบบ โดยKeyboard Shortcutsคือ gnome-keybinding-properties... หรือปุ่มลัดอื่น ๆ ที่เพิ่มโดยเช่นXbindkeys... ดังนั้นฉันสงสัยว่า gconf 'ไม่ใช่ที่ทางลัดทั้งระบบ sysetem ที่พวกเขา "เก็บไว้" แต่มันเป็นส่วนต่อประสานกับบางสิ่ง / บางที่ลึกกว่า ... (ฉัน หาสถานที่นั้น .. :) บางทีฉันเพียงแค่ต้องเก็บ 3 'ส่งออก' รายการตอนนี้ ...
Peter.O

@ fred.bear ฉันค่อนข้างแน่ใจว่าพวกเขาทั้งหมดถูกเก็บไว้ใน gconf แต่ฉันพบว่ามีการเพิ่ม keybindings ใหม่เข้าไปในคุณสมบัติ gnome-keybinding- เมื่อคุณเปลี่ยนจากค่าเริ่มต้นในแผงควบคุม สคริปต์ปัจจุบันจะทำช็อตคัตเริ่มต้นที่พบใน GUI แต่จะไม่สามารถรองรับช็อตคัตทั้งหมดโดยไม่ต้องรวมเข้าไปใน GUI ขณะนี้มีพิมพ์เขียวเปิดอยู่สำหรับสิ่งนี้ดังนั้นฉันจึงพยายามติดต่อกับผู้พัฒนารายอื่นที่เสนอเรื่องนี้เพื่อหารายละเอียดเกี่ยวกับ launchpad สำหรับตอนนี้ ... ใช้งานได้
Evan Plaice

3

ใน 11.10 ที่รัน Gnome classic ฉันพบชุดไดเรกทอรี (Custom0, Custom1 ... ) ใต้

$HOME/.gconf/desktop/gnome/keybindings

ฉันคัดลอกไดเรกทอรีเหล่านั้นไปยังโฟลเดอร์เดียวกันในการติดตั้ง 12.04 ใหม่ทั้งหมด (ทำงานอีกครั้งด้วย Gnome fallback) ออกจากระบบและลงชื่อเข้าใช้อีกครั้ง ปุ่มลัดได้รับการเปลี่ยนแปลงเล็กน้อย (มีบางอย่างตลกเกิดขึ้นกับตัวดัดแปลง SUPER) แต่อย่างอื่นพวกมันอยู่ที่นั่น


2

มีปัญหาเล็กน้อยกับคำตอบที่ยอมรับเนื่องจากมันไม่สามารถจัดการคำสั่งที่กำหนดเองด้วยอัญประกาศได้ ฉันเปลี่ยนการประมวลผลคำสั่งที่กำหนดเองเพื่อสร้างผลลัพธ์ที่ถูกต้องเท่านั้น

#!/usr/bin/perl

use strict;

my $action = '';
my $filename = '-';

for my $arg (@ARGV){
    if ($arg eq "-e" or $arg eq "--export"){
        $action = 'export';
    } elsif ($arg eq "-i" or $arg eq "--import"){
        $action = 'import';
    } elsif ($arg eq "-h" or $arg eq "--help"){
        print "Import and export keybindings\n";
        print " -e, --export <filename>\n";
        print " -i, --import <filename>\n";
        print " -h, --help\n";
        exit;
    } elsif ($arg =~ /^\-/){
        die "Unknown argument $arg";
    } else {
        $filename = $arg;
        if (!$action){
            if ( -e $filename){
                $action='import';
            } else {
                $action='export';
            }
        }
    }
}

$action='export' if (!$action);
if ($action eq 'export'){
    &export();
} else {
    &import();
}

sub export(){
    my $gsettingsFolders = [
        ['org.gnome.desktop.wm.keybindings','.'],
        ['org.gnome.settings-daemon.plugins.power','button'],
        ['org.gnome.settings-daemon.plugins.media-keys','.'],
    ];

    my $customBindings = [
    ];

    $filename = ">$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    for my $folder (@$gsettingsFolders){
        my @keylist = split(/\n/, `gsettings list-recursively $folder->[0]`);
        foreach my $line (@keylist){
            if ($line =~ /^([^ ]+) ([^ ]+)(?: \@[a-z]+)? (.*)/){
                my ($path, $name, $value) = ($1,$2,$3);
                if ($name eq "custom-keybindings"){
                    $value =~ s/[\[\]\' ]//g;
                    my @c = split(/,/, $value);
                    $customBindings = \@c;
                } elsif ($name =~ /$folder->[1]/){
                    if ($value =~ /^\[|\'/){
                        if ($value =~ /^\[\'(?:disabled)?\'\]$/){
                            $value = '[]';
                        } 
                        print $fh "$path\t$name\t$value\n";
                    }
                }        
            } else {
                die "Could note parse $line";
            }
        }
    }   

    for my $folder (@$customBindings){
        my $gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$folder`;
        my ($binding) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\'[^\n]+\')/g;
        my ($command) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\'[^\n]+\')/g;
        my ($name) = $gs =~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\'[^\n]+\')/g;
        $command =~ s/\"/\\\"/g;
        $command =~ s/^'(.*)'$/$1/g;
        $command =~ s/\'/\'\\\'\'/g;
        $command = "\'$command\'";
        print $fh "custom\t$name\t$command\t$binding\n"    
    }

    close($fh);
}

sub import(){

    $filename = "<$filename";
    open (my $fh, $filename) || die "Can't open file $filename: $!";

    my $customcount=0;

    while (my $line = <$fh>){
        chomp $line;
        if ($line){
            my @v = split(/\t/, $line);
            if (@v[0] eq 'custom'){
                my ($custom, $name, $command, $binding) = @v;
                print "Installing custom keybinding: $name\n";
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ name \"$name\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ command \"$command\"`;
                print `gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$customcount/ binding \"$binding\"`;
                $customcount++;
            } else {
                my ($path, $name, $value) = @v;
                print "Importing $path $name\n";
                print `gsettings set \"$path\" \"$name\" \"$value\"`;
            }
        }       
    }
    if ($customcount > 0){
        my $customlist = "";
        for (my $i=0; $i<$customcount; $i++){
            $customlist .= "," if ($customlist);
            $customlist .= "'/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$i/'";            
        }
        $customlist = "[$customlist]";
        print "Importing list of custom keybindings.\n";
        print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \"$customlist\"`;
    }

    close($fh);
}

คำตอบแรกที่ยอดเยี่ยมใน AskUbuntu! ยินดีด้วย!
Fabby

ฉันได้รวมการเปลี่ยนแปลงของคุณเข้ากับคำตอบที่ยอมรับแล้ว
Stephen Ostermiller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.