#!/usr/bin/env python3

from libqtile.config import Key
from libqtile.command import lazy
from libqtile.config import Click, Drag


class MyKeys():
    def __init__(self,mod,browser,term,editor):
        self.mod = mod
        self.browser = browser
        self.term = term
        self.editor = editor


    def init_keys(self):
        my_keys = [
                Key([self.mod], "Return",
                    lazy.spawn(self.term),
                    ),
                Key([self.mod, "shift"], "a",
                    lazy.spawn('anki'),
                    ),
                Key([self.mod, "shift"], "m",
                    lazy.spawn("spotify"),
                    ),
                Key([self.mod], "Tab",
                    lazy.spawn("rofi -show drun"),
                    ),
                Key([self.mod], "r",
                    lazy.spawn("rofi -show run"),
                    ),
                Key([self.mod], "w",
                    lazy.spawn("rofi -show window"),
                    ),
                Key([self.mod], "p",
                    lazy.spawn("passmenu -p 'Password for: '"),
                    ),
                Key([self.mod], "b",
                    lazy.spawn(self.browser),
                    ),
                Key([self.mod, "shift"], "c",
                    lazy.next_layout(),
                    ),
                Key([self.mod], "q",
                    lazy.window.kill(),
                    ),
                Key([self.mod, "shift"], "r",
                    lazy.restart(),
                    ),
                Key([self.mod, "shift"], "0",
                    lazy.shutdown(),
                    ),
                Key([self.mod, "shift"], "e",
                    lazy.spawn(self.editor),
                    ),
                ### Switch focus of monitors
                Key([self.mod], "period",
                    lazy.next_screen(),
                    ),
                ### Treetab controls
                Key([self.mod, "shift"], "h",
                    lazy.layout.move_left(),
                    ),
                Key([self.mod, "shift"], "l",
                    lazy.layout.move_right(),
                    ),
                ### Window controls
                Key([self.mod], "j",
                    lazy.layout.down(),
                    ),
                Key([self.mod], "k",
                    lazy.layout.up(),
                    ),
                Key([self.mod, "shift"], "j",
                    lazy.layout.shuffle_down(),
                    lazy.layout.section_down(),
                    ),
                Key([self.mod, "shift"], "k",
                    lazy.layout.shuffle_up(),
                    lazy.layout.section_up(),
                    ),
                Key([self.mod], "h",
                    lazy.layout.shrink(),
                    lazy.layout.decrease_nmaster(),
                    ),
                Key([self.mod], "l",
                    lazy.layout.grow(),
                    lazy.layout.increase_nmaster(),
                    ),
                Key([self.mod], "n",
                    lazy.layout.normalize(),
                    ),
                Key([self.mod], "m",
                    lazy.layout.maximize(),
                    ),
                Key([self.mod, "shift"], "f",
                    lazy.window.toggle_floating(),
                    ),
                Key([self.mod], "f",
                    lazy.window.toggle_fullscreen(),
                    ),
                ### Stack controls
                Key([self.mod, "shift"], "Tab",
                    lazy.layout.rotate(),
                    lazy.layout.flip(),
                    ),
                Key([self.mod, "shift"], "space",
                    lazy.layout.toggle_split(),
                    ),
                ### Volume controls
                Key([], "XF86AudioLowerVolume",
                    lazy.spawn('amixer sset Master 5%-'),
                ),
                Key([], "XF86AudioRaiseVolume",
                    lazy.spawn('amixer sset Master 5%+'),
                ),
                ### Spotify
                Key([self.mod, "shift"], "p",
                    lazy.spawn("spotify-control play-pause"),
                ),
                Key([self.mod, "shift"], "n",
                    lazy.spawn("spotify-control next"),
                ),
                Key([self.mod, "shift"], "b",
                    lazy.spawn("spotify-control previous"),
                ),
                ### Change languages
                Key([self.mod], "F1",
                lazy.spawn("setxkbmap us -option caps:swapescape"),
                ),
                Key([self.mod],"F2",
                lazy.spawn("setxkbmap gr"),
                ),
            ]

        return my_keys

    def init_mouse(self):
        mouse_keys = [
            Drag([self.mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()),
            Drag([self.mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()),
            Click([self.mod], "Button2", lazy.window.bring_to_front()),
        ]
        return mouse_keys