mirror of
https://github.com/anotherhadi/settuings.git
synced 2026-10-05 16:18:24 +02:00
@@ -0,0 +1,145 @@
|
||||
package input
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Layout struct {
|
||||
Code string
|
||||
Name string
|
||||
}
|
||||
|
||||
var Layouts = []Layout{
|
||||
{"al", "Albanian"},
|
||||
{"et", "Amharic"},
|
||||
{"am", "Armenian"},
|
||||
{"ara", "Arabic"},
|
||||
{"eg", "Arabic (Egypt)"},
|
||||
{"iq", "Arabic (Iraq)"},
|
||||
{"ma", "Arabic (Morocco)"},
|
||||
{"sy", "Arabic (Syria)"},
|
||||
{"az", "Azerbaijani"},
|
||||
{"ml", "Bambara"},
|
||||
{"bd", "Bangla"},
|
||||
{"by", "Belarusian"},
|
||||
{"be", "Belgian"},
|
||||
{"dz", "Berber (Algeria, Latin)"},
|
||||
{"ba", "Bosnian"},
|
||||
{"brai", "Braille"},
|
||||
{"bg", "Bulgarian"},
|
||||
{"mm", "Burmese"},
|
||||
{"cn", "Chinese"},
|
||||
{"hr", "Croatian"},
|
||||
{"cz", "Czech"},
|
||||
{"dk", "Danish"},
|
||||
{"af", "Dari"},
|
||||
{"mv", "Dhivehi"},
|
||||
{"nl", "Dutch"},
|
||||
{"bt", "Dzongkha"},
|
||||
{"au", "English (Australia)"},
|
||||
{"cm", "English (Cameroon)"},
|
||||
{"gh", "English (Ghana)"},
|
||||
{"nz", "English (New Zealand)"},
|
||||
{"ng", "English (Nigeria)"},
|
||||
{"za", "English (South Africa)"},
|
||||
{"gb", "English (UK)"},
|
||||
{"us", "English (US)"},
|
||||
{"epo", "Esperanto"},
|
||||
{"ee", "Estonian"},
|
||||
{"fo", "Faroese"},
|
||||
{"ph", "Filipino"},
|
||||
{"fi", "Finnish"},
|
||||
{"fr", "French"},
|
||||
{"ca", "French (Canada)"},
|
||||
{"cd", "French (Democratic Republic of the Congo)"},
|
||||
{"tg", "French (Togo)"},
|
||||
{"ge", "Georgian"},
|
||||
{"de", "German"},
|
||||
{"at", "German (Austria)"},
|
||||
{"ch", "German (Switzerland)"},
|
||||
{"gr", "Greek"},
|
||||
{"il", "Hebrew"},
|
||||
{"hu", "Hungarian"},
|
||||
{"is", "Icelandic"},
|
||||
{"in", "Indian"},
|
||||
{"id", "Indonesian (Latin)"},
|
||||
{"ie", "Irish"},
|
||||
{"it", "Italian"},
|
||||
{"jp", "Japanese"},
|
||||
{"kz", "Kazakh"},
|
||||
{"kh", "Khmer (Cambodia)"},
|
||||
{"kr", "Korean"},
|
||||
{"kg", "Kyrgyz"},
|
||||
{"la", "Lao"},
|
||||
{"lv", "Latvian"},
|
||||
{"lt", "Lithuanian"},
|
||||
{"mk", "Macedonian"},
|
||||
{"my", "Malay (Jawi, Arabic Keyboard)"},
|
||||
{"mt", "Maltese"},
|
||||
{"md", "Moldavian"},
|
||||
{"mn", "Mongolian"},
|
||||
{"me", "Montenegrin"},
|
||||
{"np", "Nepali"},
|
||||
{"gn", "N'Ko (AZERTY)"},
|
||||
{"no", "Norwegian"},
|
||||
{"ir", "Persian"},
|
||||
{"pl", "Polish"},
|
||||
{"pt", "Portuguese"},
|
||||
{"br", "Portuguese (Brazil)"},
|
||||
{"ro", "Romanian"},
|
||||
{"ru", "Russian"},
|
||||
{"rs", "Serbian"},
|
||||
{"lk", "Sinhala (phonetic)"},
|
||||
{"sk", "Slovak"},
|
||||
{"si", "Slovenian"},
|
||||
{"es", "Spanish"},
|
||||
{"latam", "Spanish (Latin American)"},
|
||||
{"ke", "Swahili (Kenya)"},
|
||||
{"tz", "Swahili (Tanzania)"},
|
||||
{"se", "Swedish"},
|
||||
{"tw", "Taiwanese"},
|
||||
{"tj", "Tajik"},
|
||||
{"th", "Thai"},
|
||||
{"bw", "Tswana"},
|
||||
{"tm", "Turkmen"},
|
||||
{"tr", "Turkish"},
|
||||
{"ua", "Ukrainian"},
|
||||
{"pk", "Urdu (Pakistan)"},
|
||||
{"uz", "Uzbek"},
|
||||
{"vn", "Vietnamese"},
|
||||
{"sn", "Wolof"},
|
||||
}
|
||||
|
||||
func LayoutName(code string) string {
|
||||
for _, l := range Layouts {
|
||||
if l.Code == code {
|
||||
return l.Name
|
||||
}
|
||||
}
|
||||
return code
|
||||
}
|
||||
|
||||
// getOptionResp is the shape of `hyprctl getoption <name> -j`.
|
||||
type getOptionResp struct {
|
||||
Str string `json:"str"`
|
||||
Float float64 `json:"float"`
|
||||
}
|
||||
|
||||
func CurrentLayout() (string, error) {
|
||||
out, err := run("getoption", "input:kb_layout", "-j")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
var resp getOptionResp
|
||||
if err := json.Unmarshal([]byte(out), &resp); err != nil {
|
||||
return "", fmt.Errorf("parse getoption input:kb_layout: %w", err)
|
||||
}
|
||||
return strings.TrimSpace(resp.Str), nil
|
||||
}
|
||||
|
||||
func SetLayout(code string) error {
|
||||
_, err := run("keyword", "input:kb_layout", code)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user