Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support terminals other than windows terminal #83

Open
untoreh opened this issue May 16, 2021 · 7 comments
Open

Support terminals other than windows terminal #83

untoreh opened this issue May 16, 2021 · 7 comments
Labels
enhancement New feature or request investigating

Comments

@untoreh
Copy link

untoreh commented May 16, 2021

No description provided.

@flyingpie flyingpie changed the title support terminals other than windows terminal Support terminals other than windows terminal May 19, 2021
@flyingpie
Copy link
Owner

@untoreh Thank you for opening the issue.

For administrative purposes, this is about support for other terminals in general, specifically Wez's Terminal Emulator.

@flyingpie flyingpie added enhancement New feature or request investigating labels May 19, 2021
@flyingpie
Copy link
Owner

@untoreh First build with support for this feature is available:

https://github.com/flyingpie/windows-terminal-quake/releases/tag/v1.3

To make this work with other terminals, 2 settings need to be changed. I'm using the following setup:

{
	"$schema": "./windows-terminal-quake.schema.1.json",

	"Hotkeys": [
		{ "Modifiers": "Control", "Key": "Oemtilde" },
		{ "Modifiers": "Control", "Key": "Q" }
	],

	// Just some general stuff
	"Notifications": false,
	"Opacity": 80,
	"ToggleDurationMs": 150,
	"ToggleAnimationType": "EaseOutQuart",
	"VerticalScreenCoverage": 95,
	"HorizontalAlign": "Center",
	"HorizontalScreenCoverage": 100,
	"HideOnFocusLost": false,
	"PreferMonitor": "WithCursor",

	// "Move" works nicer for non-vertical monitor setups
	"ToggleMode": "Move",

	// These 2 settings are specific to this feature
	"ProcessProvider": "GenericProcessProvider",
	"WindowsTerminalCommand": "C:\\Downloads\\WezTerm-windows-20210502-154244-3f7122cb\\wezterm-gui.exe"
}

@untoreh
Copy link
Author

untoreh commented May 20, 2021

Thank you!, it works fine, maybe you also want an option to pass arguments to the process, shortcuts don't work.

Also about the window buttons on top right there is only one small unaligned red X.

@flyingpie
Copy link
Owner

@untoreh I have to admit that I'm not too familiar with Wez's Terminal, so I did notice the little cross, but looked "normal" to me :)

Could you perhaps show me what the terminal should look like, and perhaps tell me how you launch it (without win-term-quake) and what your configs/keyboard shortcuts/etc. look like?

Arguments: You should be able to pass command line arguments to windows-terminal-quake, and they should be passed on to the actual terminal.

Shortcuts: What kind of shortcuts do you mean?

Thanks in advance, these comments are really helpful in making this little app more useful.

@untoreh
Copy link
Author

untoreh commented May 21, 2021

For shortcuts I just meant windows .lnk files which you can add arguments to. Since as you mentioned windoes-terminal-quake forwards arguments to the terminal, this is not an issue anymore and anyway I can also configure default startup options from the terminal side.

For The X button I don't do anything out of the ordinary when I launch manually, and the window has proper top right buttons:

C:\Users\fra\scoop\apps\wezterm\current\wezterm-gui.exe start wsl.exe

However since this is a dropdown terminal, I can just disable window decorations from wezterm with:

return {
window_decorations = "NONE"
}

@flyingpie
Copy link
Owner

@untoreh Would it be possible to attach a set of config files or something so I can run pretty much the same thing you're running?

@untoreh
Copy link
Author

untoreh commented Jun 5, 2021

.wezterm.lua

local wezterm = require 'wezterm';
local launch_menu = {}

if wezterm.target_triple == "x86_64-pc-windows-msvc" then
  table.insert(launch_menu, {
                 label = "PowerShell",
                 args = {"powershell.exe", "-NoLogo"},
  })
end

return {
  window_decorations = "NONE",
  font = wezterm.font("Hack"),
  color_scheme = "Dracula",
  scrollback_lines = 9000,
  enable_scroll_bar = true,
  launch_menu = launch_menu,
  default_prog =  {"wsl.exe", "-e", "bash", "-li"},
  keys = {
    {key="|", mods="CTRL|SHIFT", action=wezterm.action{SplitHorizontal={domain="CurrentPaneDomain"}}},
    {key="q", mods="CTRL|SHIFT",
     action=wezterm.action{CloseCurrentPane={confirm=true}}},
    {key="_", mods="CTRL|SHIFT", action=wezterm.action{SplitVertical={domain="CurrentPaneDomain"}}},
    {key="h", mods="CTRL|SHIFT", action=wezterm.action{ActivatePaneDirection="Left"}},
    {key="j", mods="CTRL|SHIFT", action=wezterm.action{ActivatePaneDirection="Down"}},
    {key="k", mods="CTRL|SHIFT", action=wezterm.action{ActivatePaneDirection="Up"}},
    {key="l", mods="CTRL|SHIFT", action=wezterm.action{ActivatePaneDirection="Right"}},
    {key="h", mods="CTRL|SHIFT|ALT", action=wezterm.action{AdjustPaneSize={"Left", 1}}},
    {key="j", mods="CTRL|SHIFT|ALT", action=wezterm.action{AdjustPaneSize={"Down", 1}}},
    {key="k", mods="CTRL|SHIFT|ALT", action=wezterm.action{AdjustPaneSize={"Up", 1}}},
    {key="l", mods="CTRL|SHIFT|ALT", action=wezterm.action{AdjustPaneSize={"Right", 1}}} ,
    {key="{", mods="SHIFT|ALT", action=wezterm.action{ActivateTabRelative=-1}},
    {key="}", mods="SHIFT|ALT", action=wezterm.action{ActivateTabRelative=1}},
    {key="p", mods="SHIFT|ALT", action=wezterm.action{ScrollToPrompt=-1}},
    {key="n", mods="SHIFT|ALT", action=wezterm.action{ScrollToPrompt=1}},
    {key="u", mods="CTRL|SHIFT", action=wezterm.action{ScrollByPage=-1}},
    {key="d", mods="CTRL|SHIFT", action=wezterm.action{ScrollByPage=1}},
    {key="j", mods="SHIFT|ALT", action=wezterm.action{ScrollByLine=1}},
    {key="k", mods="SHIFT|ALT", action=wezterm.action{ScrollByLine=-1}},
    {key="l", mods="SHIFT|ALT", action="ShowLauncher"},
    {key="a", mods="CTRL|SHIFT", action=wezterm.action{
       SpawnCommandInNewTab={
         args={"wsl.exe", "-d", "Arch", "-e", "bash", "-li"}}}},
    {key="p", mods="CTRL|SHIFT", action=wezterm.action{
       SpawnCommandInNewTab={
         args={"powershell.exe", "/NoLogo"}}}}

  },
}

windows-terminal-quake.json

{

	"$schema": "./windows-terminal-quake.schema.1.json",
	"WindowsTerminalCommand": "C:\\Users\\fra\\scoop\\apps\\wezterm\\current\\wezterm-gui.exe",
	"ProcessProvider": "GenericProcessProvider",
	// The keys that can be used to toggle the terminal.
	// See "HotKeys" bellow for possible values.
	"HotKeys": [
		{
			"Modifiers": "Windows",
			"Key": "OemTilde"
		}
	],

	// Whether to show notifications when the app starts and when the settings are reloaded.
	"Notifications": false,

	// Make the window see-through (applies to the entire window, including the title bar).
	// 0 (invisible) - 100 (opaque)
	"Opacity": 99,

	// How long the toggle up/down takes in milliseconds.
	"ToggleDurationMs": 45,

	//"ToggleAnimationType": "EaseOutQuart",

	// How long each frame in the toggle animation takes in milliseconds.
	// The lower this value, the smoother the animation, though values lower than 15 are not supported.
	"ToggleAnimationFrameTimeMs": 15,

	// How much room to leave between the top of the terminal and the top of the screen.
	"VerticalOffset": 30,

	// How far the terminal should come down, in percentage (eg. 50 = half way, 100 = full screen).
	"VerticalScreenCoverage": 80,

	// When "HorizontalScreenCoverage" is below 100, this setting determines where the terminal is place horizontally.
	// "Center", "Left" or "Right".
	"HorizontalAlign": "Center",

	// How much horizontal space the terminal should use. When this is below 100, the terminal is centered.
	// This can also be above 100, which can be useful to compensate for the window not always taking a 100% of the screen width,
	// due to the terminal being bound to column widths (eg. try 100.5 or 101).
	"HorizontalScreenCoverage": 100,

	// When clicking or alt-tabbing away to another app, the terminal will automatically (and instantly) hide.
	"HideOnFocusLost": true,

	// Whether to keep the terminal window always on top (requires restart).
	"AlwaysOnTop": false,

	// Whether to hide the terminal window immediately after app start.
	"StartHidden": true,

	// What monitor to preferrably drop the terminal
	// "WithCursor" (default), "Primary" or "AtIndex"
	"PreferMonitor": "WithCursor",

	// If "PreferMonitor" is set to "AtIndex", this setting determines what monitor to choose.
	// Zero based, eg. 0, 1, etc.
	"MonitorIndex": 1,
	// "Move" works nicer for non-vertical monitor setups
	"ToggleMode": "Move",


	// # HotKeys
	// ## Modifiers
	// Alt, Control, Shift, Windows
	//
	// ## Key
	// ### Special keys
	// Alt, Back, CapsLock, Control, Escape, LControlKey, LShiftKey, LWin, RControlKey, RShiftKey, RWin, Shift, Space, Tab
	//
	// ### Middle part of the keyboard
	// Delete, End, Home, Insert, PageDown, PageUp, PrintScreen
	// Down, Left, Right, Up
	//
	// ### Number keys
	// D0 - D9
	//
	// ### Letters
	// A-Z
	//
	// ### Numpad
	// NumPad0 - NumPad9
	// Add, Decimal, Divide, Multiply, NumLock, Separator, Subtract
	//
	// ### Function keys
	// F1 - F24
	//
	// ### Special characters
	// OemBackslash, OemClear, OemCloseBrackets, Oemcomma, OemMinus, OemOpenBrackets,
	// OemPeriod, OemPipe, Oemplus, OemQuestion, OemQuotes, OemSemicolon, Oemtilde
	// Oem1 - Oem8, Oem102
}

edit:
tried building myself from the generic process branch merged on master, the MainWindowHandle still gives problem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request investigating
Projects
None yet
Development

No branches or pull requests

2 participants