diff --git a/README.md b/README.md deleted file mode 100644 index 27ef622..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# dotfiles \ No newline at end of file diff --git a/awesome/modules/autostart.lua b/awesome/modules/autostart.lua index d9a3378..2c3bdcd 100644 --- a/awesome/modules/autostart.lua +++ b/awesome/modules/autostart.lua @@ -13,14 +13,17 @@ awful.spawn("redshift") awful.spawn("sxhkd") if not is_laptop then - awful.spawn("discord", { screen = 3 }) + awful.spawn("vesktop") awful.spawn("vscodium") - awful.spawn("spotify", { tag = "2", screen = 3, urgent = false }) + awful.spawn("spotify") awful.spawn("firefox") + local side_monitor = screen:count() awful.spawn(terminal .. " -e fish -C \"sleep 5 && ncpamixer\"", - { tag = "3", screen = 3, urgent = false, focus = false }) - awful.spawn(terminal .. " -e fish -C btop", { tag = "4", screen = 3, urgent = false, focus = false }) - awful.spawn(terminal .. " -e fish -C \"sleep 5 && snoud\"", { tag = "5", screen = 3, urgent = false, focus = false }) - awful.spawn(terminal .. " -e fish -C \"sleep 2 && gomuks\"", { tag = "9", screen = 3, urgent = false, focus = false }) + { tag = "3", screen = side_monitor, urgent = false, focus = false }) + awful.spawn(terminal .. " -e fish -C btop", { tag = "4", screen = side_monitor, urgent = false, focus = false }) + awful.spawn(terminal .. " -e fish -C \"sleep 5 && snoud\"", + { tag = "5", screen = side_monitor, urgent = false, focus = false }) + awful.spawn(terminal .. " -e fish -C \"sleep 2 && gomuks\"", + { tag = "9", screen = side_monitor, urgent = false, focus = false }) end diff --git a/awesome/modules/special_keys.lua b/awesome/modules/special_keys.lua index 4f26caa..7f08ffa 100644 --- a/awesome/modules/special_keys.lua +++ b/awesome/modules/special_keys.lua @@ -35,6 +35,12 @@ special_keys = gears.table.join( end, { description = "Rofi", group = "launcher" }), + -- awful.key({ "Ctrl", "Shift" }, "E", function() + awful.key({ modkey }, "u", function() + awful.util.spawn(SCRIPTS_DIR .. "emoji_picker.sh") + end, + { description = "Emoji picker", group = "launcher" }), + -- Media Keys awful.key({}, "XF86AudioPlay", function() diff --git a/awesome/rc.lua b/awesome/rc.lua index 4400ef1..0b293da 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -51,7 +51,8 @@ end -- Theme local theme_path = CONFIG_DIR .. "/themes/default/" beautiful.init(theme_path .. "theme.lua") -naughty.notify({ title = "Theme loaded", text = tostring(theme_path), icon = theme_path .. "icon.png", screen = 1 }) +-- naughty.notify({ title = "Theme loaded", text = tostring(theme_path), icon = theme_path .. "icon.png", screen = 1 }) +-- naughty.notify({ title = "Screen count", text = tostring(screen:count()), icon = theme_path .. "icon.png", screen = 1 }) require("modules/brightness") require("modules/battery") @@ -97,8 +98,15 @@ local main_menu = awful.menu({ } }) + local launcher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = main_menu }) -local blahaj = awful.widget.launcher({ image = beautiful.blahaj, menu = {} }) +local blahaj = awful.widget.button({ + image = beautiful.blahaj, + menu = function() + awful.spawn( + "xdg-open https://www.ikea.com/se/sv/p/blahaj-mjukleksak-haj-30373588/") + end +}) -- Menubar configuration menubar.utils.terminal = terminal -- Set the terminal for applications that require it @@ -114,8 +122,31 @@ local juneday = awful.widget.watch(HOME_BIN .. "june", 600, function(widget, std widget.text = " [ " .. line .. " ] " break end +end) - widget.align = "center" +local kb_battery = awful.widget.watch(SCRIPTS_DIR .. "kb_battery.py", 60, function(widget, stdout) + for line in stdout:gmatch("[^\r\n]+") do + widget.text = " [ " .. line .. " ] " + break + end +end) + +local birthday = awful.widget.watch(SCRIPTS_DIR .. "bdays.sh", 600, function(widget, stdout) + widget.text = "" + for line in stdout:gmatch("[^\r\n]+") do + widget.text = widget.text .. line .. " " + end + if widget.text ~= "" then + widget.text = "[ Birthday: " .. widget.text .. "]" + end +end) + +local steamvr_status = awful.widget.watch("cat /tmp/steamvr_battery_status", 1, function(widget, stdout) + widget.text = "" + for line in stdout:gmatch("[^\r\n]+") do + widget.text = " [ " .. line .. "] " + break + end end) -- Create a textclock widget @@ -211,6 +242,9 @@ awful.screen.connect_for_each_screen(function(s) brightness.piechart, battery_widget, -- wibox.widget.systray(), + steamvr_status, + birthday, + kb_battery, juneday, textclock, --s.mylayoutbox, @@ -240,7 +274,7 @@ local globalkeys = gears.table.join( ), awful.key({ modkey }, "k", function() - awful.client.focus.byidx( -1) + awful.client.focus.byidx(-1) end, { description = "focus previous by index", group = "client" } ), @@ -250,19 +284,19 @@ local globalkeys = gears.table.join( { description = "reload awesome", group = "awesome" }), awful.key({ modkey }, "l", function() awful.tag.incmwfact(0.05) end, { description = "increase master width factor", group = "layout" }), - awful.key({ modkey }, "h", function() awful.tag.incmwfact( -0.05) end, + awful.key({ modkey }, "h", function() awful.tag.incmwfact(-0.05) end, { description = "decrease master width factor", group = "layout" }), awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1, nil, true) end, { description = "increase the number of master clients", group = "layout" }), - awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster( -1, nil, true) end, + awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1, nil, true) end, { description = "decrease the number of master clients", group = "layout" }), awful.key({ modkey, "Control" }, "h", function() awful.tag.incncol(1, nil, true) end, { description = "increase the number of columns", group = "layout" }), - awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol( -1, nil, true) end, + awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol(-1, nil, true) end, { description = "decrease the number of columns", group = "layout" }), awful.key({ modkey }, "space", function() awful.layout.inc(1) end, { description = "select next", group = "layout" }), - awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc( -1) end, + awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(-1) end, { description = "select previous", group = "layout" }), awful.key({ modkey, "Control" }, "n", @@ -286,8 +320,8 @@ local globalkeys = gears.table.join( { description = "open terminal", group = "launcher" }), -- alt-tab menu awful.key({ "Mod1" }, "Tab", function() - awful.spawn("rofi -show") - end, + awful.spawn("rofi -show") + end, { description = "rofi", group = "launcher" }) ) @@ -381,7 +415,8 @@ root.keys(globalkeys) -- Rules to apply to new clients (through the "manage" signal). awful.rules.rules = { -- All clients will match this rule. - { rule = {}, + { + rule = {}, properties = { border_width = beautiful.border_width, border_color = beautiful.border_normal, @@ -395,36 +430,44 @@ awful.rules.rules = { }, -- Floating clients. - { rule_any = { - instance = { - "pavucontrol", + { + rule_any = { + instance = { + "pavucontrol", + }, + class = { + "Arandr", + --"Godot_Engine", + }, + -- Note that the name property shown in xprop might be set slightly after creation of the client + -- and the name shown there might not match defined rules here. + name = { + "Event Tester", -- xev + "Steam", + "Friends List", + "Beataroni", + "ovr-utils", + "Godot", + }, }, - class = { - "Arandr", - --"Godot_Engine", - }, - -- Note that the name property shown in xprop might be set slightly after creation of the client - -- and the name shown there might not match defined rules here. - name = { - "Event Tester", -- xev - "Steam", - "Friends List", - "Beataroni", - "ovr-utils", - "Godot", - }, - }, properties = { floating = true, placement = awful.placement.no_offscreen } }, + properties = { floating = true, placement = awful.placement.no_offscreen } + }, -- Add titlebars to normal clients and dialogs - { rule_any = { type = { "normal", "dialog" } - }, properties = { titlebars_enabled = true } + { + rule_any = { type = { "normal", "dialog" } + }, + properties = { titlebars_enabled = true } }, - { rule_any = { name = { "Launching steam" } - }, properties = { focus = false, raise = false } - }, - { rule = { - class = "/home/crispypin/bin/ovr-utils/ovr-utils.x86_64", + { + rule_any = { name = { "Launching steam" } + }, + properties = { focus = false, raise = false } }, + { + rule = { + class = "/home/crispypin/bin/ovr-utils/ovr-utils.x86_64", + }, properties = { floating = true, width = 16, height = 16, tag = "9" } }, } diff --git a/btop.conf b/btop.conf index 7efd8cb..483eee4 100644 --- a/btop.conf +++ b/btop.conf @@ -54,7 +54,7 @@ update_ms = 1000 #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. -proc_sorting = "cpu lazy" +proc_sorting = "cpu direct" #* Reverse sorting order, True or False. proc_reversed = False diff --git a/fish/config.fish b/fish/config.fish index 41a8288..338f1a0 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -17,6 +17,7 @@ alias carr "cargo run --release" alias cacp "cargo clippy -- -W clippy::pedantic" alias tab "echo \"hard_tabs = true\" > rustfmt.toml" alias :3 "echo meow :3" +alias kill_vr "killall vrdashboard -9 & killall vrmonitor -9 & killall steamvrwebhelper -9 & killall vrcompositor -9" alias py python fish_add_path /home/crispypin/bin/ fish_add_path /home/crispypin/.cargo/bin diff --git a/kitty.conf b/kitty.conf index cac606b..7887952 100644 --- a/kitty.conf +++ b/kitty.conf @@ -8,6 +8,6 @@ font_size 12.0 foreground #ffffff background #222244 -background_opacity 0.75 +background_opacity 0.85 diff --git a/scripts/bdays.sh b/scripts/bdays.sh index 43a0eb7..63fa16b 100755 --- a/scripts/bdays.sh +++ b/scripts/bdays.sh @@ -2,5 +2,5 @@ date=$(date "+%-d\\/%-m") echo $(cat ~/documents/notes/bdays.md \ -| sed "/ $date/!d" \ +| sed "/ $date /!d" \ | cut -d "|" -f3) diff --git a/scripts/kb_battery.py b/scripts/kb_battery.py index f017151..e09dd89 100755 --- a/scripts/kb_battery.py +++ b/scripts/kb_battery.py @@ -10,4 +10,4 @@ for s in all_statuses: print(line.split(":")[1].strip()) exit(0) -print("no kb found") +print("conputer bad") diff --git a/scripts/mount_earth.sh b/scripts/mount_earth.sh deleted file mode 100755 index 33a9805..0000000 --- a/scripts/mount_earth.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -sshfs -o idmap=user -o transform_symlinks ilo:/ ~/ilo - diff --git a/scripts/vr_post_startup.sh b/scripts/vr_post_startup.sh new file mode 100755 index 0000000..b6ac4e2 --- /dev/null +++ b/scripts/vr_post_startup.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +sleep 4 +~/bin/steamvr-status/vr_status & diff --git a/steam/launch-options/steamvr-launch-options.md b/steam/launch-options/steamvr-launch-options.md index 1673930..51dedd5 100644 --- a/steam/launch-options/steamvr-launch-options.md +++ b/steam/launch-options/steamvr-launch-options.md @@ -1,3 +1,3 @@ needed when `"enableLinuxVulkanAsync" : false` is in the config, which in turn is needed to fix rendering latency in steamvr overlays -RADV_DEBUG=zerovram %command% +RADV_DEBUG=zerovram %command% & ~/dotfiles/scripts/vr_post_startup.sh diff --git a/tokipona_ibus.txt b/tokipona_ibus.txt new file mode 100644 index 0000000..8e25277 --- /dev/null +++ b/tokipona_ibus.txt @@ -0,0 +1,298 @@ +### File header must not be modified +### This file must be encoded into UTF-8. +### This table under LGPL +### comments start with ### not single # +### Derive from the format of SCIM Table, so you can modify the table from +### scim-tables' table +SCIM_Generic_Table_Phrase_Library_TEXT +VERSION_1_0 + +### Begin Table definition. +BEGIN_DEFINITION + +### License +LICENSE = LGPL + +### An unique id to distinguish this table among others. +### Use uuidgen to generate this kind of id. +UUID = e530f083-e20e-4e85-8d91-980019258c23 + +### A unique number indicates the version of this file. +### For example the last modified date of this file. +### This number must be less than 2^32. +### Just make your table version-able +SERIAL_NUMBER = 20240102 + +### ICON can be any format as long as your pygtk can recognized +### the most widely ones are "png" and "svg", letter one is recommended +ICON = ibus-table.svg + +### The symbol to be displayed in IM switchers +SYMBOL = 󱥬 + +### The default name of this table, this is needed +NAME = sitelen pona + +### The local names of this table, this is optional +### NAME.zh_CN = 形码 +### NAME.zh_HK = 形碼 +### NAME.zh_TW = 形碼 + +### Description +DESCRIPTION = sitelen pona input method for IBus + +### Supported languages of this table +### sigle "zh_CN" just be recognized as zh_CN, +### but "zh_CN, zh_HK" or more zh_XX will be recognized as zh; +### and "en_US, zh_CN" will be just ignored. +LANGUAGES = en_US + +### The author of this table +AUTHOR = jan Komi + +### Prompt string to be displayed in the status area, CN will be replaced by +### the gettext tools in runtime as 中. +STATUS_PROMPT = toki + +### Valid input chars. +VALID_INPUT_CHARS = abcdefghijklmnopqrstuvwxyz[](){}:.+-' + +### Layout +LAYOUT = us + +### The max number of input keys for every phrase or character. +MAX_KEY_LENGTH = 20 + +### Use auto_commit mode as default +AUTO_COMMIT = TRUE + +### Automatically selects the first phrase when typing +AUTO_SELECT = FALSE + +### Use full width punctuation by default +DEF_FULL_WIDTH_PUNCT = FALSE +### Not use full width letter by default +DEF_FULL_WIDTH_LETTER = FALSE + +### Whether user are allow to define phrase, default is true +### You have to define the word construction rules below. +### For input methods which do not input phrases, set this to False +USER_CAN_DEFINE_PHRASE = FALSE + +### Whether support PinYin Mode, default is true. +### this feature is just for Chinese, set it to False if your IM is not +### Chinese. +PINYIN_MODE = FALSE + +### If true then the phrases' frequencies will be adjusted dynamically +### according your using frequency. +DYNAMIC_ADJUST = TRUE + +### Some characters whose frequencies should be fix all the time, e.g. +### some punctuations +### NO_CHECK_CHARS = + +### Rules for constructing user defined phrase +### "ce" stands for "ci equal", a Chinese English :), means "phrase length +### equal to", thus ce2 -> phrase length equal to 2; and "ca" means "phrase +### length equal or above", so ca4 -> phrase length equal or above 4. +### p21 -> the 1st key of 2nd character in the phrase, and so on. +### Each rule separate via ";". +### Example below is a complete rule-set, +### becuase [2,2] ∩ [3,3] ∩ [4,+∞] = [2,+∞], which is the range of length +### of phrase. This have to be satisfied if you need ibus-table to build up +### your own inputed phrase via your daily using. +### RULES = ce2:p11+p12+p21+p22;ce3:p11+p21+p22+p31;ca4:p11+p21+p31+p41 + +### The key strokes to page up the lookup table. +### PAGE_UP_KEYS = Page_Up,KP_Page_Up,minus,comma + +### The key strokes to page down. +### PAGE_DOWN_KEYS = Page_Down,KP_Page_Down,equal,period + +### The key strokes to select candidiate phrases. +### Usually "1,2,3,4,5,6,7,8,9" but if this conflicts with +### characters one wants to use for input one can also +### use something like “F1,F2,F3,F4,F5,F6,F7,F8,F9” +SELECT_KEYS = 1,2,3,4,5,6,7,8,9 + +### The default orientation of the candidate list +### TRUE means the candidate list is vertical, FALSE means it is horizontal +ORIENTATION=TRUE + +END_DEFINITION + +### Begin Table data. +### Format of every line whose formated in "input_keys\tphrase\tfreq\n" is an +### entry. +### From left to right, the 1st column are the input key combination that you +### entered via keyboard; the 2nd column are presented character or phrase of +### the key combination you want; the 3rd column are frequency of the character +### or phrase. +BEGIN_TABLE +a 󱤀 1 +akesi 󱤁 1 +ala 󱤂 1 +alasa 󱤃 1 +ale 󱤄 1 +anpa 󱤅 1 +ante 󱤆 1 +anu 󱤇 1 +awen 󱤈 1 +e 󱤉 1 +en 󱤊 1 +esun 󱤋 1 +ijo 󱤌 1 +ike 󱤍 1 +ilo 󱤎 1 +insa 󱤏 1 +jaki 󱤐 1 +jan 󱤑 1 +jelo 󱤒 1 +jo 󱤓 1 +kala 󱤔 1 +kalama 󱤕 1 +kama 󱤖 1 +kasi 󱤗 1 +ken 󱤘 1 +kepeken 󱤙 1 +kili 󱤚 1 +kiwen 󱤛 1 +ko 󱤜 1 +kon 󱤝 1 +kule 󱤞 1 +kulupu 󱤟 1 +kute 󱤠 1 +la 󱤡 1 +lape 󱤢 1 +laso 󱤣 1 +lawa 󱤤 1 +len 󱤥 1 +lete 󱤦 1 +li 󱤧 1 +lili 󱤨 1 +linja 󱤩 1 +lipu 󱤪 1 +loje 󱤫 1 +lon 󱤬 1 +luka 󱤭 1 +lukin 󱤮 1 +lupa 󱤯 1 +ma 󱤰 1 +mama 󱤱 1 +mani 󱤲 1 +meli 󱤳 1 +mi 󱤴 1 +mije 󱤵 1 +moku 󱤶 1 +moli 󱤷 1 +monsi 󱤸 1 +mu 󱤹 1 +mun 󱤺 1 +musi 󱤻 1 +mute 󱤼 1 +nanpa 󱤽 1 +nasa 󱤾 1 +nasin 󱤿 1 +nena 󱥀 1 +ni 󱥁 1 +nimi 󱥂 1 +noka 󱥃 1 +o 󱥄 1 +olin 󱥅 1 +ona 󱥆 1 +open 󱥇 1 +pakala 󱥈 1 +pali 󱥉 1 +palisa 󱥊 1 +pan 󱥋 1 +pana 󱥌 1 +pi 󱥍 1 +pilin 󱥎 1 +pimeja 󱥏 1 +pini 󱥐 1 +pipi 󱥑 1 +poka 󱥒 1 +poki 󱥓 1 +pona 󱥔 1 +pu 󱥕 1 +sama 󱥖 1 +seli 󱥗 1 +selo 󱥘 1 +seme 󱥙 1 +sewi 󱥚 1 +sijelo 󱥛 1 +sike 󱥜 1 +sin 󱥝 1 +sina 󱥞 1 +sinpin 󱥟 1 +sitelen 󱥠 1 +sona 󱥡 1 +soweli 󱥢 1 +suli 󱥣 1 +suno 󱥤 1 +supa 󱥥 1 +suwi 󱥦 1 +tan 󱥧 1 +taso 󱥨 1 +tawa 󱥩 1 +telo 󱥪 1 +tenpo 󱥫 1 +toki 󱥬 1 +tomo 󱥭 1 +tu 󱥮 1 +unpa 󱥯 1 +uta 󱥰 1 +utala 󱥱 1 +walo 󱥲 1 +wan 󱥳 1 +waso 󱥴 1 +wawa 󱥵 1 +weka 󱥶 1 +wile 󱥷 1 +namako 󱥸 1 +kin 󱥹 1 +oko 󱥺 1 +kipisi 󱥻 1 +leko 󱥼 1 +monsuta 󱥽 1 +tonsi 󱥾 1 +jasima 󱥿 1 +kijetesantakalu 󱦀 1 +soko 󱦁 1 +meso 󱦂 1 +epiku 󱦃 1 +kokosila 󱦄 1 +lanpan 󱦅 1 +n 󱦆 1 +misikeke 󱦇 1 +ku 󱦈 1 +pake 󱦠 1 +apeja 󱦡 1 +majuna 󱦢 1 +powe 󱦣 1 +. 󱦜 1 +: 󱦝 1 +[ 󱦐 1 +] 󱦑 1 +( 󱦗 1 +) 󱦘 1 +{ 󱦚 1 +} 󱦛 1 +- 󱦖 1 ++ 󱦕 1 +END_TABLE + +### Since some input methods use different table for every character to make +### phrase, such as ZhengMa, they need explict define the goucima (the +### phrase-building code for the given character), the format of every entry is +### "character\tgoucima\n". +### For the input method which just use the full code as word-building code +### just skip this field. The ibus-table will build the codes needed from +### above TABLE. +### if you don't need different word-building code, please comment out the +### next few lines with ###, just like these lines you are look at now. +### BEGIN_GOUCI +### character_1 goucima_1 +### character_1 goucima_2 +### END_GOUCI diff --git a/vscodium.json b/vscodium.json index c7ec1fe..2bb2757 100644 --- a/vscodium.json +++ b/vscodium.json @@ -16,7 +16,7 @@ "liveServer.settings.root": "docs/", "liveServer.settings.donotVerifyTags": true, "editor.insertSpaces": false, - "editor.fontFamily": "\"-Wingdings\",\"-linja lipamanka\", sans, mono", + "editor.fontFamily": "\"-Wingdings\",\"-linja lipamanka\", sasns, mono, \"nasin\\-nanpa\"", "Lua.workspace.library": [ "~/proj/forks/awesome" ], @@ -41,8 +41,10 @@ "extensions.autoUpdate": false, "zenMode.hideLineNumbers": false, "editor.wordWrap": "on", - "editor.minimap.renderCharacters": false, "editor.inlayHints.enabled": "offUnlessPressed", + "diffEditor.ignoreTrimWhitespace": false, + "markdown.preview.breaks": true, + "git.openRepositoryInParentFolders": "always", "window.zoomLevel": 1, - "diffEditor.ignoreTrimWhitespace": false + "editor.minimap.renderCharacters": false } \ No newline at end of file diff --git a/xprofile b/xprofile index 317aae5..32d748b 100644 --- a/xprofile +++ b/xprofile @@ -1,9 +1,30 @@ #setxkbmap -layout se -xrandr --output DisplayPort-0 --primary --mode 1920x1080 --pos 1920x0 --rotate normal --set TearFree on \ +xrandr \ +--output DisplayPort-0 --primary --mode 1920x1080 --pos 1920x0 --rotate normal --set TearFree on \ --output DisplayPort-1 --off \ ---output DisplayPort-2 --mode 1920x1080 --pos 0x0 --rotate normal --set TearFree on \ ---output HDMI-A-0 --mode 1280x1024 --pos 3840x0 --rotate normal --set TearFree on +--output HDMI-A-1 --mode 1920x1080 --pos 0x0 --rotate normal --set TearFree on \ +--output VGA-1-1 --mode 1280x1024 --pos 3840x0 --rotate normal + + +# xrandr \ +# --output DisplayPort-0 --primary --mode 1920x1080 --pos 1920x0 --rotate normal --set TearFree on \ +# --output DisplayPort-1 --off \ +# --output HDMI-A-0 --mode 1280x1024 --pos 3840x0 --rotate normal --set TearFree on \ +# --output VGA-1-1 --mode 1920x1080 --pos 0x0 --rotate normal + +# --output DisplayPort-4 --mode 1920x1080 --pos 0x0 --rotate normal --set TearFree on \ + +# VGA doesn't allow tearfree :( + + +# xrandr +# --output DisplayPort-0 --off +# --output DisplayPort-1 --off +# --output DisplayPort-2 --off +# --output HDMI-A-0 --mode 1280x1024 --pos 1920x56 --rotate normal +# --output DisplayPort-3 --mode 1920x1080 --pos 0x0 --rotate normal +# --output DisplayPort-4 --off # bind super to super+esc, for menubar toggle with one key xcape -e "Super_L=Super_L|Escape"